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);
|
||||
break;
|
||||
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;
|
||||
case PID_STFT_BANK1:
|
||||
obdSendValue(_1_MODE, pid, 1, 128 * ENGINE(engineState.running.pidCorrection));
|
||||
|
@ -148,7 +148,7 @@ static void handleGetDataRequest(const CANRxFrame& rx) {
|
|||
break;
|
||||
}
|
||||
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;
|
||||
case PID_INTAKE_MAF:
|
||||
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 */
|
||||
|
||||
#define ODB_RPM_MULT 4
|
||||
#define ODB_TEMP_EXTRA 40
|
||||
|
|
|
@ -86,7 +86,9 @@ EXTERN_ENGINE;
|
|||
|
||||
static Logging * logger;
|
||||
|
||||
RpmCalculator::RpmCalculator() {
|
||||
RpmCalculator::RpmCalculator() :
|
||||
rpmSensor(SensorType::Rpm, 0)
|
||||
{
|
||||
#if !EFI_PROD_CODE
|
||||
mockRpm = MOCK_UNDEFINED;
|
||||
#endif /* EFI_PROD_CODE */
|
||||
|
@ -132,6 +134,11 @@ void RpmCalculator::assignRpmValue(float floatRpmValue DECLARE_ENGINE_PARAMETER_
|
|||
previousRpmValue = rpmValue;
|
||||
// we still persist integer RPM! todo: figure out the next steps
|
||||
rpmValue = floatRpmValue;
|
||||
|
||||
if (!CONFIG(consumeObdSensors)) {
|
||||
rpmSensor.Register();
|
||||
}
|
||||
|
||||
if (rpmValue <= 0) {
|
||||
oneDegreeUs = NAN;
|
||||
} else {
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include "globalaccess.h"
|
||||
#include "scheduler.h"
|
||||
#include "stored_value_sensor.h"
|
||||
|
||||
// we use this value in case of noise on trigger input lines
|
||||
#define NOISY_RPM -1
|
||||
|
@ -65,6 +66,8 @@ public:
|
|||
|
||||
bool checkIfSpinning(efitick_t nowNt DECLARE_ENGINE_PARAMETER_SUFFIX) const;
|
||||
|
||||
StoredValueSensor rpmSensor;
|
||||
|
||||
/**
|
||||
* This accessor is used in unit-tests.
|
||||
*/
|
||||
|
|
|
@ -5,12 +5,16 @@
|
|||
* @author Matthew Kennedy, (c) 2020
|
||||
*/
|
||||
|
||||
#include "global.h"
|
||||
#include "engine_configuration.h"
|
||||
|
||||
#if EFI_CAN_SUPPORT
|
||||
#include "can_sensor.h"
|
||||
#include "can.h"
|
||||
|
||||
EXTERN_CONFIG
|
||||
;
|
||||
|
||||
|
||||
#define TIMEOUT MS2NT(100)
|
||||
|
||||
CanSensor<int16_t, PACK_MULT_PERCENT> canPedalSensor(
|
||||
|
@ -18,15 +22,24 @@ CanSensor<int16_t, PACK_MULT_PERCENT> canPedalSensor(
|
|||
SensorType::AcceleratorPedal, TIMEOUT
|
||||
);
|
||||
|
||||
ObdCanSensor<int16_t, ODB_RPM_MULT> obdCltSensor(
|
||||
ObdCanSensor<int16_t, ODB_RPM_MULT> obdRpmSensor(
|
||||
PID_RPM,
|
||||
SensorType::Rpm, TIMEOUT
|
||||
);
|
||||
|
||||
ObdCanSensor<int16_t, 1> obdCltSensor(
|
||||
PID_COOLANT_TEMP,
|
||||
SensorType::Clt, TIMEOUT
|
||||
);
|
||||
|
||||
|
||||
void initCanSensors() {
|
||||
#if EFI_CANBUS_SLAVE
|
||||
registerCanSensor(canPedalSensor);
|
||||
registerCanSensor(obdCltSensor);
|
||||
if (CONFIG(consumeObdSensors)) {
|
||||
registerCanSensor(obdRpmSensor);
|
||||
registerCanSensor(obdCltSensor);
|
||||
}
|
||||
|
||||
#endif // EFI_CANBUS_SLAVE
|
||||
}
|
||||
|
|
|
@ -69,15 +69,17 @@ static void configureTempSensor(FunctionalSensor &sensor,
|
|||
}
|
||||
|
||||
void initThermistors(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
||||
configureTempSensor(clt,
|
||||
if (!CONFIG(consumeObdSensors)) {
|
||||
configureTempSensor(clt,
|
||||
fclt,
|
||||
CONFIG(clt),
|
||||
CONFIG(useLinearCltSensor));
|
||||
|
||||
configureTempSensor(iat,
|
||||
configureTempSensor(iat,
|
||||
fiat,
|
||||
CONFIG(iat),
|
||||
CONFIG(useLinearIatSensor));
|
||||
}
|
||||
|
||||
configureTempSensor(aux1,
|
||||
faux1,
|
||||
|
|
|
@ -886,7 +886,7 @@ custom maf_sensor_type_e 4 bits, S32, @OFFSET@, [0:1], @@maf_sensor_type_e_enum@
|
|||
bit enableSoftwareKnock
|
||||
bit verboseVVTDecoding;enable vvt_details
|
||||
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 knockBankCyl2,Channel 2,Channel 1;
|
||||
bit knockBankCyl3,Channel 2,Channel 1;
|
||||
|
|
|
@ -1391,7 +1391,7 @@ menuDialog = main
|
|||
subMenu = lcdScreen, "LCD" @@if_ts_show_lcd
|
||||
subMenu = joystickPanel, "Joystick" @@if_ts_show_joystick
|
||||
subMenu = spiFunction, "SPI"@@if_ts_show_spi
|
||||
subMenu = monitoringSettings, "rusEfi console"
|
||||
subMenu = monitoringSettings, "rusEFI console"
|
||||
subMenu = std_separator
|
||||
|
||||
subMenu = canBusMain, "CAN Bus Communication"
|
||||
|
@ -1428,7 +1428,7 @@ menuDialog = main
|
|||
|
||||
|
||||
menu = "Help"
|
||||
subMenu = helpGeneral, "rusEfi Info"
|
||||
subMenu = helpGeneral, "rusEFI Info"
|
||||
|
||||
|
||||
[ControllerCommands]
|
||||
|
@ -1654,8 +1654,8 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
|||
|
||||
|
||||
dialog = triggerConfiguration
|
||||
panel = triggerConfiguration_settings, North
|
||||
panel = triggerInputs, South
|
||||
panel = triggerConfiguration_settings, North, { consumeObdSensors == 0 }
|
||||
panel = triggerInputs, South, { consumeObdSensors == 0 }
|
||||
|
||||
; Engine->Injection Settings
|
||||
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"
|
||||
field = "Can Read Enabled", canReadEnabled
|
||||
field = "Can Write Enabled", canWriteEnabled
|
||||
field = "consumeObdSensors", consumeObdSensors, { canReadEnabled == 1 && canWriteEnabled == 1}
|
||||
field = "Can Nbc Type", canNbcType
|
||||
field = "Can Baud Rate", canBaudRate
|
||||
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 = "RX pin", canRxPin @@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 Baud Rate", can2BaudRate
|
||||
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 = "RX pin", can2RxPin @@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
|
||||
|
||||
|
||||
dialog = monitoringSettings, "rusEfi Console Settings"
|
||||
dialog = monitoringSettings, "rusEFI Console Settings"
|
||||
field = "Sensor Sniffer", sensorChartMode
|
||||
field = " Threshold", sensorSnifferRpmThreshold
|
||||
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"
|
||||
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 = "#2", fsioFormulas2
|
||||
field = "#3", fsioFormulas3
|
||||
|
@ -3013,8 +3014,8 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00"
|
|||
panel = testMisc, East
|
||||
|
||||
dialog = engineTypeDialog, "Popular vehicles"
|
||||
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 = "!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"
|
||||
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 NB2 MAP", cmd_set_engine_type_Frankenso_Miata_NB2@@if_show_Frankenso_presets
|
||||
|
|
Loading…
Reference in New Issue