ETB progress

This commit is contained in:
rusEfi 2019-08-31 20:17:17 -04:00
parent 6ca8216705
commit 47bbd6ebe4
8 changed files with 81 additions and 46 deletions

View File

@ -95,11 +95,11 @@ static void setupEtb() {
// set_fsio_output_pin 7 PC8
#if EFI_FSIO
// set_rpn_expression 7 "1"
// set_rpn_expression 8 "1"
// disable ETB by default
setFsio(7, GPIOC_8, "1" PASS_CONFIG_PARAMETER_SUFFIX);
// enable ETB
// set_rpn_expression 7 "0"
// set_rpn_expression 8 "0"
//setFsio(7, GPIOC_8, "0" PASS_CONFIG_PARAMETER_SUFFIX);
#endif /* EFI_FSIO */

View File

@ -237,38 +237,8 @@ void setFrankensoBoardTestConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
boardConfiguration->ignitionPins[8] = GPIOE_0; // brain board, not discovery
boardConfiguration->ignitionPins[9] = GPIOE_1; // brain board, not discovery
}
void setBoschVNH2SP30Curve(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->etbBiasBins[0] = 0;
engineConfiguration->etbBiasBins[1] = 1;
engineConfiguration->etbBiasBins[2] = 5;
/**
* This specific throttle has default position of about 7% open
*/
engineConfiguration->etbBiasBins[3] = 7;
engineConfiguration->etbBiasBins[4] = 14;
engineConfiguration->etbBiasBins[5] = 65;
engineConfiguration->etbBiasBins[6] = 66;
engineConfiguration->etbBiasBins[7] = 100;
/**
* Some negative bias for below-default position
*/
engineConfiguration->etbBiasValues[0] = -15;
engineConfiguration->etbBiasValues[1] = -15;
engineConfiguration->etbBiasValues[2] = -10;
/**
* Zero bias for index which corresponds to default throttle position, when no current is applied
* This specific throttle has default position of about 7% open
*/
engineConfiguration->etbBiasValues[3] = 0;
engineConfiguration->etbBiasValues[4] = 19;
engineConfiguration->etbBiasValues[5] = 20;
engineConfiguration->etbBiasValues[6] = 26;
engineConfiguration->etbBiasValues[7] = 28;
}
// ETB_BENCH_ENGINE
// set engine_type 58
@ -294,9 +264,6 @@ void setEtbTestConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
#if EFI_ELECTRONIC_THROTTLE_BODY
setBoschVNH2SP30Curve(PASS_CONFIG_PARAMETER_SIGNATURE);
// setDefaultEtbParameters(PASS_CONFIG_PARAMETER_SIGNATURE);
// values are above 100% since we have feedforward part of the total summation
engineConfiguration->etb.minValue = -200;
engineConfiguration->etb.maxValue = 200;
#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
engineConfiguration->tps1_1AdcChannel = EFI_ADC_2; // PA2
@ -407,10 +374,6 @@ void setTle8888TestConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
engineConfiguration->etb.dFactor = 0;
engineConfiguration->etb.offset = 0;
#if EFI_PROD_CODE
engineConfiguration->etb.periodMs = (1000 / DEFAULT_ETB_LOOP_FREQUENCY);
engineConfiguration->etbFreq = DEFAULT_ETB_PWM_FREQUENCY;
#endif
engineConfiguration->etb_iTermMin = -300;
engineConfiguration->etb_iTermMax = 300;

View File

@ -373,6 +373,40 @@ void setEtbOffset(int value) {
showEthInfo();
}
void setBoschVNH2SP30Curve(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->etbBiasBins[0] = 0;
engineConfiguration->etbBiasBins[1] = 1;
engineConfiguration->etbBiasBins[2] = 5;
/**
* This specific throttle has default position of about 7% open
*/
engineConfiguration->etbBiasBins[3] = 7;
engineConfiguration->etbBiasBins[4] = 14;
engineConfiguration->etbBiasBins[5] = 65;
engineConfiguration->etbBiasBins[6] = 66;
engineConfiguration->etbBiasBins[7] = 100;
/**
* Some negative bias for below-default position
*/
engineConfiguration->etbBiasValues[0] = -15;
engineConfiguration->etbBiasValues[1] = -15;
engineConfiguration->etbBiasValues[2] = -10;
/**
* Zero bias for index which corresponds to default throttle position, when no current is applied
* This specific throttle has default position of about 7% open
*/
engineConfiguration->etbBiasValues[3] = 0;
engineConfiguration->etbBiasValues[4] = 19;
engineConfiguration->etbBiasValues[5] = 20;
engineConfiguration->etbBiasValues[6] = 26;
engineConfiguration->etbBiasValues[7] = 28;
// values are above 100% since we have feedforward part of the total summation
engineConfiguration->etb.minValue = -200;
engineConfiguration->etb.maxValue = 200;
}
void setDefaultEtbParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
CONFIG(etbIdleThrottleRange) = 5;

View File

@ -16,6 +16,7 @@
void initElectronicThrottle(void);
void setDefaultEtbBiasCurve(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void setDefaultEtbParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void setBoschVNH2SP30Curve(DECLARE_ENGINE_PARAMETER_SIGNATURE);
void setEtbPFactor(float value);
void setEtbIFactor(float value);
void setEtbDFactor(float value);

View File

@ -812,6 +812,6 @@ int getRusEfiVersion(void) {
if (initBootloader() != 0)
return 123;
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
return 20190829;
return 20190830;
}
#endif /* EFI_UNIT_TEST */

View File

@ -23,7 +23,8 @@ public class CommandsPanel {
JPanel testParameters = new JPanel(new VerticalFlowLayout());
testParameters.setBorder(BorderFactory.createTitledBorder("Try PID settings"));
EtbTestSequence etbTestSequence = new EtbTestSequence();
testParameters.add(UiUtils.wrap(etbTestSequence.getButton()));
testParameters.add(etbTestSequence.getButton());
testParameters.add(UiUtils.wrap(etbTestSequence.getCancelButton()));
testParameters.add(etbTestSequence.getResult());
testParameters.add(new JLabel("To change setting use following commands:"));
testParameters.add(new JLabel("set etb_p X"));

View File

@ -7,6 +7,8 @@ import com.rusefi.etb.StandardTestSequence;
import com.rusefi.etb.TestSequenceStep;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicInteger;
@ -36,10 +38,17 @@ public class EtbTestSequence {
private final JButton button = new JButton(BUTTON_TEXT);
private final JLabel result = new JLabel("Result: N/A");
private final JButton cancelButton = new JButton("Cancel");
private boolean isCancelled;
public EtbTestSequence() {
cancelButton.setEnabled(false);
button.addActionListener(e -> {
isCancelled = false;
button.setEnabled(false);
cancelButton.setEnabled(true);
// 3000 data points at 10Hz should be 300 seconds worth of data
StandardTestSequence.metric.start(/* buffer size: */durationSeconds * frequencyHz,
/*period, ms: */ 1000 / frequencyHz);
@ -50,10 +59,7 @@ public class EtbTestSequence {
TestSequenceStep lastStep = new TestSequenceStep(SECOND, EtbTarget.Condition.YES) {
@Override
protected void doJob() {
button.setEnabled(true);
button.setText(BUTTON_TEXT);
double finalValue = StandardTestSequence.metric.getStandardDeviation();
result.setText(String.format("Final Result: %.3f", finalValue));
endTestSequence();
}
};
@ -65,13 +71,38 @@ public class EtbTestSequence {
});
TestSequenceStep firstStep = new EtbTarget(10 * SECOND, 4, /*position*/onEachStep, TestSequenceStep.Condition.YES);
TestSequenceStep result = StandardTestSequence.addSequence(firstStep, onEachStep, TestSequenceStep.Condition.YES);
TestSequenceStep result = StandardTestSequence.addSequence(firstStep, onEachStep, new TestSequenceStep.Condition() {
@Override
public boolean shouldRunTask() {
if (isCancelled)
endTestSequence();
return !isCancelled;
}
});
result.addNext(lastStep);
totalSteps.set(TestSequenceStep.count(firstStep));
firstStep.execute(executor);
});
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
isCancelled = true;
cancelButton.setEnabled(false);
}
});
}
private void endTestSequence() {
button.setEnabled(true);
cancelButton.setEnabled(false);
button.setText(BUTTON_TEXT);
double finalValue = StandardTestSequence.metric.getStandardDeviation();
result.setText(String.format("Final Result: %.3f", finalValue));
}
public JButton getButton() {
@ -81,4 +112,8 @@ public class EtbTestSequence {
public JLabel getResult() {
return result;
}
public JComponent getCancelButton() {
return cancelButton;
}
}

View File

@ -203,6 +203,7 @@ public class LiveDocPanel {
liveDocs.add(createPanel("Idle", "", Fields.LDS_ENGINE_STATE_INDEX,
EngineState.VALUES, IdleThreadMeta.CONTENT), CONSTRAINTS);
// todo: fix the defect - we request ETB structure but decode it as EngineState
liveDocs.add(createPanel("ETB", "", Fields.LDS_ETB,
EngineState.VALUES, ElectronicThrottleMeta.CONTENT), CONSTRAINTS);