OBD CAN sensors #1733
This commit is contained in:
parent
675cce3854
commit
bc115e70a0
|
@ -127,7 +127,7 @@ static void handleGetDataRequest(const CANRxFrame& rx) {
|
||||||
obdSendValue(_1_MODE, pid, 1, getFuelingLoad(PASS_ENGINE_PARAMETER_SIGNATURE) * 2.55f);
|
obdSendValue(_1_MODE, pid, 1, getFuelingLoad(PASS_ENGINE_PARAMETER_SIGNATURE) * 2.55f);
|
||||||
break;
|
break;
|
||||||
case PID_COOLANT_TEMP:
|
case PID_COOLANT_TEMP:
|
||||||
obdSendValue(_1_MODE, pid, 1, Sensor::get(SensorType::Clt).value_or(0) + 40.0f);
|
obdSendValue(_1_MODE, pid, 1, Sensor::get(SensorType::Clt).value_or(0) + ODB_TEMP_EXTRA);
|
||||||
break;
|
break;
|
||||||
case PID_STFT_BANK1:
|
case PID_STFT_BANK1:
|
||||||
obdSendValue(_1_MODE, pid, 1, 128 * ENGINE(engineState.running.pidCorrection));
|
obdSendValue(_1_MODE, pid, 1, 128 * ENGINE(engineState.running.pidCorrection));
|
||||||
|
@ -148,7 +148,7 @@ static void handleGetDataRequest(const CANRxFrame& rx) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PID_INTAKE_TEMP:
|
case PID_INTAKE_TEMP:
|
||||||
obdSendValue(_1_MODE, pid, 1, Sensor::get(SensorType::Iat).value_or(0) + 40.0f);
|
obdSendValue(_1_MODE, pid, 1, Sensor::get(SensorType::Iat).value_or(0) + ODB_TEMP_EXTRA);
|
||||||
break;
|
break;
|
||||||
case PID_INTAKE_MAF:
|
case PID_INTAKE_MAF:
|
||||||
obdSendValue(_1_MODE, pid, 2, getRealMaf(PASS_ENGINE_PARAMETER_SIGNATURE) * 100.0f); // grams/sec (A*256+B)/100
|
obdSendValue(_1_MODE, pid, 2, getRealMaf(PASS_ENGINE_PARAMETER_SIGNATURE) * 100.0f); // grams/sec (A*256+B)/100
|
||||||
|
|
|
@ -44,3 +44,4 @@ void obdOnCanPacketRx(const CANRxFrame& rx);
|
||||||
#endif /* HAL_USE_CAN */
|
#endif /* HAL_USE_CAN */
|
||||||
|
|
||||||
#define ODB_RPM_MULT 4
|
#define ODB_RPM_MULT 4
|
||||||
|
#define ODB_TEMP_EXTRA 40
|
||||||
|
|
|
@ -86,7 +86,9 @@ EXTERN_ENGINE;
|
||||||
|
|
||||||
static Logging * logger;
|
static Logging * logger;
|
||||||
|
|
||||||
RpmCalculator::RpmCalculator() {
|
RpmCalculator::RpmCalculator() :
|
||||||
|
rpmSensor(SensorType::Rpm, 0)
|
||||||
|
{
|
||||||
#if !EFI_PROD_CODE
|
#if !EFI_PROD_CODE
|
||||||
mockRpm = MOCK_UNDEFINED;
|
mockRpm = MOCK_UNDEFINED;
|
||||||
#endif /* EFI_PROD_CODE */
|
#endif /* EFI_PROD_CODE */
|
||||||
|
@ -132,6 +134,11 @@ void RpmCalculator::assignRpmValue(float floatRpmValue DECLARE_ENGINE_PARAMETER_
|
||||||
previousRpmValue = rpmValue;
|
previousRpmValue = rpmValue;
|
||||||
// we still persist integer RPM! todo: figure out the next steps
|
// we still persist integer RPM! todo: figure out the next steps
|
||||||
rpmValue = floatRpmValue;
|
rpmValue = floatRpmValue;
|
||||||
|
|
||||||
|
if (!CONFIG(consumeObdSensors)) {
|
||||||
|
rpmSensor.Register();
|
||||||
|
}
|
||||||
|
|
||||||
if (rpmValue <= 0) {
|
if (rpmValue <= 0) {
|
||||||
oneDegreeUs = NAN;
|
oneDegreeUs = NAN;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
#include "globalaccess.h"
|
#include "globalaccess.h"
|
||||||
#include "scheduler.h"
|
#include "scheduler.h"
|
||||||
|
#include "stored_value_sensor.h"
|
||||||
|
|
||||||
// we use this value in case of noise on trigger input lines
|
// we use this value in case of noise on trigger input lines
|
||||||
#define NOISY_RPM -1
|
#define NOISY_RPM -1
|
||||||
|
@ -65,6 +66,8 @@ public:
|
||||||
|
|
||||||
bool checkIfSpinning(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) const;
|
bool checkIfSpinning(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) const;
|
||||||
|
|
||||||
|
StoredValueSensor rpmSensor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This accessor is used in unit-tests.
|
* This accessor is used in unit-tests.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,12 +5,16 @@
|
||||||
* @author Matthew Kennedy, (c) 2020
|
* @author Matthew Kennedy, (c) 2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "global.h"
|
#include "engine_configuration.h"
|
||||||
|
|
||||||
#if EFI_CAN_SUPPORT
|
#if EFI_CAN_SUPPORT
|
||||||
#include "can_sensor.h"
|
#include "can_sensor.h"
|
||||||
#include "can.h"
|
#include "can.h"
|
||||||
|
|
||||||
|
EXTERN_CONFIG
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
#define TIMEOUT MS2NT(100)
|
#define TIMEOUT MS2NT(100)
|
||||||
|
|
||||||
CanSensor<int16_t, PACK_MULT_PERCENT> canPedalSensor(
|
CanSensor<int16_t, PACK_MULT_PERCENT> canPedalSensor(
|
||||||
|
@ -18,15 +22,24 @@ CanSensor<int16_t, PACK_MULT_PERCENT> canPedalSensor(
|
||||||
SensorType::AcceleratorPedal, TIMEOUT
|
SensorType::AcceleratorPedal, TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
ObdCanSensor<int16_t, ODB_RPM_MULT> obdCltSensor(
|
ObdCanSensor<int16_t, ODB_RPM_MULT> obdRpmSensor(
|
||||||
PID_RPM,
|
PID_RPM,
|
||||||
SensorType::Rpm, TIMEOUT
|
SensorType::Rpm, TIMEOUT
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ObdCanSensor<int16_t, 1> obdCltSensor(
|
||||||
|
PID_COOLANT_TEMP,
|
||||||
|
SensorType::Clt, TIMEOUT
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
void initCanSensors() {
|
void initCanSensors() {
|
||||||
#if EFI_CANBUS_SLAVE
|
#if EFI_CANBUS_SLAVE
|
||||||
registerCanSensor(canPedalSensor);
|
registerCanSensor(canPedalSensor);
|
||||||
|
if (CONFIG(consumeObdSensors)) {
|
||||||
|
registerCanSensor(obdRpmSensor);
|
||||||
registerCanSensor(obdCltSensor);
|
registerCanSensor(obdCltSensor);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // EFI_CANBUS_SLAVE
|
#endif // EFI_CANBUS_SLAVE
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ static void configureTempSensor(FunctionalSensor &sensor,
|
||||||
}
|
}
|
||||||
|
|
||||||
void initThermistors(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
void initThermistors(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
||||||
|
if (!CONFIG(consumeObdSensors)) {
|
||||||
configureTempSensor(clt,
|
configureTempSensor(clt,
|
||||||
fclt,
|
fclt,
|
||||||
CONFIG(clt),
|
CONFIG(clt),
|
||||||
|
@ -78,6 +79,7 @@ void initThermistors(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
||||||
fiat,
|
fiat,
|
||||||
CONFIG(iat),
|
CONFIG(iat),
|
||||||
CONFIG(useLinearIatSensor));
|
CONFIG(useLinearIatSensor));
|
||||||
|
}
|
||||||
|
|
||||||
configureTempSensor(aux1,
|
configureTempSensor(aux1,
|
||||||
faux1,
|
faux1,
|
||||||
|
|
|
@ -886,7 +886,7 @@ custom maf_sensor_type_e 4 bits, S32, @OFFSET@, [0:1], @@maf_sensor_type_e_enum@
|
||||||
bit enableSoftwareKnock
|
bit enableSoftwareKnock
|
||||||
bit verboseVVTDecoding;enable vvt_details
|
bit verboseVVTDecoding;enable vvt_details
|
||||||
bit invertCamVVTSignal;get invertCamVVTSignal
|
bit invertCamVVTSignal;get invertCamVVTSignal
|
||||||
bit consumeObdSensors;enable consumeObdSensors
|
bit consumeObdSensors;+This property is useful if using rusEFI as TCM or BCM only\nenable consumeObdSensors
|
||||||
bit knockBankCyl1,Channel 2,Channel 1;
|
bit knockBankCyl1,Channel 2,Channel 1;
|
||||||
bit knockBankCyl2,Channel 2,Channel 1;
|
bit knockBankCyl2,Channel 2,Channel 1;
|
||||||
bit knockBankCyl3,Channel 2,Channel 1;
|
bit knockBankCyl3,Channel 2,Channel 1;
|
||||||
|
|
|
@ -1391,7 +1391,7 @@ menuDialog = main
|
||||||
subMenu = lcdScreen, "LCD" @@if_ts_show_lcd
|
subMenu = lcdScreen, "LCD" @@if_ts_show_lcd
|
||||||
subMenu = joystickPanel, "Joystick" @@if_ts_show_joystick
|
subMenu = joystickPanel, "Joystick" @@if_ts_show_joystick
|
||||||
subMenu = spiFunction, "SPI"@@if_ts_show_spi
|
subMenu = spiFunction, "SPI"@@if_ts_show_spi
|
||||||
subMenu = monitoringSettings, "rusEfi console"
|
subMenu = monitoringSettings, "rusEFI console"
|
||||||
subMenu = std_separator
|
subMenu = std_separator
|
||||||
|
|
||||||
subMenu = canBusMain, "CAN Bus Communication"
|
subMenu = canBusMain, "CAN Bus Communication"
|
||||||
|
@ -1428,7 +1428,7 @@ menuDialog = main
|
||||||
|
|
||||||
|
|
||||||
menu = "Help"
|
menu = "Help"
|
||||||
subMenu = helpGeneral, "rusEfi Info"
|
subMenu = helpGeneral, "rusEFI Info"
|
||||||
|
|
||||||
|
|
||||||
[ControllerCommands]
|
[ControllerCommands]
|
||||||
|
@ -1654,8 +1654,8 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
|
|
||||||
|
|
||||||
dialog = triggerConfiguration
|
dialog = triggerConfiguration
|
||||||
panel = triggerConfiguration_settings, North
|
panel = triggerConfiguration_settings, North, { consumeObdSensors == 0 }
|
||||||
panel = triggerInputs, South
|
panel = triggerInputs, South, { consumeObdSensors == 0 }
|
||||||
|
|
||||||
; Engine->Injection Settings
|
; Engine->Injection Settings
|
||||||
dialog = injChars, "Injector Settings", yAxis
|
dialog = injChars, "Injector Settings", yAxis
|
||||||
|
@ -2587,10 +2587,11 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
dialog = canBus, "CAN Bus"
|
dialog = canBus, "CAN Bus"
|
||||||
field = "Can Read Enabled", canReadEnabled
|
field = "Can Read Enabled", canReadEnabled
|
||||||
field = "Can Write Enabled", canWriteEnabled
|
field = "Can Write Enabled", canWriteEnabled
|
||||||
|
field = "consumeObdSensors", consumeObdSensors, { canReadEnabled == 1 && canWriteEnabled == 1}
|
||||||
field = "Can Nbc Type", canNbcType
|
field = "Can Nbc Type", canNbcType
|
||||||
field = "Can Baud Rate", canBaudRate
|
field = "Can Baud Rate", canBaudRate
|
||||||
field = "Enable rusEFI CAN broadcast", enableVerboseCanTx
|
field = "Enable rusEFI CAN broadcast", enableVerboseCanTx
|
||||||
field = "rusEfi CAN data base address", verboseCanBaseAddress
|
field = "rusEFI CAN data base address", verboseCanBaseAddress
|
||||||
field = "Can Sleep Period", canSleepPeriodMs
|
field = "Can Sleep Period", canSleepPeriodMs
|
||||||
field = "RX pin", canRxPin @@if_ts_show_can_pins
|
field = "RX pin", canRxPin @@if_ts_show_can_pins
|
||||||
field = "TX pin", canTxPin @@if_ts_show_can_pins
|
field = "TX pin", canTxPin @@if_ts_show_can_pins
|
||||||
|
@ -2601,7 +2602,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
field = "Can Nbc Type", can2NbcType
|
field = "Can Nbc Type", can2NbcType
|
||||||
field = "Can Baud Rate", can2BaudRate
|
field = "Can Baud Rate", can2BaudRate
|
||||||
field = "Enable rusEFI CAN broadcast", enableVerboseCan2Tx
|
field = "Enable rusEFI CAN broadcast", enableVerboseCan2Tx
|
||||||
field = "rusEfi CAN data base address", verboseCan2BaseAddress
|
field = "rusEFI CAN data base address", verboseCan2BaseAddress
|
||||||
field = "Can Sleep Period", can2SleepPeriodMs
|
field = "Can Sleep Period", can2SleepPeriodMs
|
||||||
field = "RX pin", can2RxPin @@if_ts_show_can_pins
|
field = "RX pin", can2RxPin @@if_ts_show_can_pins
|
||||||
field = "TX pin", can2TxPin @@if_ts_show_can_pins
|
field = "TX pin", can2TxPin @@if_ts_show_can_pins
|
||||||
|
@ -2653,7 +2654,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
panel = gpsReceiver @@if_ts_show_gps
|
panel = gpsReceiver @@if_ts_show_gps
|
||||||
|
|
||||||
|
|
||||||
dialog = monitoringSettings, "rusEfi Console Settings"
|
dialog = monitoringSettings, "rusEFI Console Settings"
|
||||||
field = "Sensor Sniffer", sensorChartMode
|
field = "Sensor Sniffer", sensorChartMode
|
||||||
field = " Threshold", sensorSnifferRpmThreshold
|
field = " Threshold", sensorSnifferRpmThreshold
|
||||||
field = " Each X cycle", sensorChartFrequency
|
field = " Each X cycle", sensorChartFrequency
|
||||||
|
@ -2822,7 +2823,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
|
|
||||||
dialog = fsioFormulas, "FSIO Formulas"
|
dialog = fsioFormulas, "FSIO Formulas"
|
||||||
field = "!FSIO uses Reverse Polish Notation. Please read http://rusefi.com/s/fsio"
|
field = "!FSIO uses Reverse Polish Notation. Please read http://rusefi.com/s/fsio"
|
||||||
field = "#fsioinfo command in rusEfi console could be useful while troubleshooting those"
|
field = "#fsioinfo command in rusEFI console could be useful while troubleshooting those"
|
||||||
field = "#1", fsioFormulas1
|
field = "#1", fsioFormulas1
|
||||||
field = "#2", fsioFormulas2
|
field = "#2", fsioFormulas2
|
||||||
field = "#3", fsioFormulas3
|
field = "#3", fsioFormulas3
|
||||||
|
@ -3013,8 +3014,8 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
||||||
panel = testMisc, East
|
panel = testMisc, East
|
||||||
|
|
||||||
dialog = engineTypeDialog, "Popular vehicles"
|
dialog = engineTypeDialog, "Popular vehicles"
|
||||||
field = "!These buttons send a command to rusEfi controller to apply preset values"
|
field = "!These buttons send a command to rusEFI controller to apply preset values"
|
||||||
field = "!Once you send the command, please reconnect to rusEfi controller in order to read fresh values"
|
field = "!Once you send the command, please reconnect to rusEFI controller in order to read fresh values"
|
||||||
commandButton = "Frankenso Miata NA6 Stage 0", cmd_set_engine_type_Frankenso_Miata_NA6_VAF@@if_show_Frankenso_presets
|
commandButton = "Frankenso Miata NA6 Stage 0", cmd_set_engine_type_Frankenso_Miata_NA6_VAF@@if_show_Frankenso_presets
|
||||||
commandButton = "Frankenso Miata NA6 Stage 1", cmd_set_engine_type_Frankenso_Miata_NA6_MAP@@if_show_Frankenso_presets
|
commandButton = "Frankenso Miata NA6 Stage 1", cmd_set_engine_type_Frankenso_Miata_NA6_MAP@@if_show_Frankenso_presets
|
||||||
commandButton = "Frankenso Miata NB2 MAP", cmd_set_engine_type_Frankenso_Miata_NB2@@if_show_Frankenso_presets
|
commandButton = "Frankenso Miata NB2 MAP", cmd_set_engine_type_Frankenso_Miata_NB2@@if_show_Frankenso_presets
|
||||||
|
|
Loading…
Reference in New Issue