wideband/firmware/ini/rusefi_wb_f1_dual.ini

330 lines
16 KiB
INI

; This is a TunerStudio project for the rusEFI.com engine management system
; this should stop TS from looking for the CAN ID in the 2nd byte location and allow the page reads to work correctly.
enable2ndByteCanID = false
[SettingGroups]
; the referenceName will over-ride previous, so if you are creating a
; settingGroup with a reference name of lambdaSensor, it will replace the
; setting group defined in the settingGroups.xml of the TunerStudio config
; folder. If is is an undefined referenceName, it will be added.
; keyword = referenceName, DisplayName
[MegaTune]
; https://rusefi.com/forum/viewtopic.php?p=36201#p36201
signature = "rusEFI 2022.05.29.wideband_dual"
[TunerStudio]
queryCommand = "S"
versionInfo = "V" ; firmware version for title bar.
signature = "rusEFI 2022.05.29.wideband_dual" ; signature is expected to be 7 or more characters.
; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C
useLegacyFTempUnits = false
ignoreMissingBitOptions = true
; Optimize comms for fast rusEFI ECUs
noCommReadDelay = true;
defaultRuntimeRecordPerSec = 100;
maxUnusedRuntimeRange = 1000;
; Set default IP/port to our IP/port
defaultIpAddress = 192.168.10.1;
defaultIpPort = 29000;
[Constants]
; new packet serial format with CRC
messageEnvelopeFormat = msEnvelope_1.0
endianness = little
nPages = 1
pageIdentifier = "\x00\x00"
pageReadCommand = "R%2o%2c"
burnCommand = "B"
pageActivate = "P"
pageValueWrite = "W%2o%v"
pageChunkWrite = "C%2o%2c%v"
crc32CheckCommand = "k%2o%2c"
retrieveConfigError = "e"
; communication settings
pageActivationDelay = 500
; e.g. put writeblocks off and add an interwrite delay
writeBlocks = on
interWriteDelay = 10
blockReadTimeout = 3000; Milliseconds general timeout
; delayAfterPortOpen = 500
blockingFactor = 256 ; max chunk size
; end communication settings
; name = bits, type, offset, bits
; name = array, type, offset, shape, units, scale, translate, lo, hi, digits
; name = scalar, type, offset, units, scale, translate, lo, hi, digits
; CONFIG_DEFINITION_START
pageSize = 256
page = 1
; name = class, type, offset, [shape], units, scale, translate, min, max, digits
; First four bytes are used for internal tag. Should not be accessable from TS
CanIndexOffset = scalar, U08, 4, "", 1, 0, 0, 255, 0
Aux0OutBins = array, F32, 5, [8], "", 1, 0, 0, 1500, 2
Aux1OutBins = array, F32, 37, [8], "", 1, 0, 0, 1500, 2
Aux0Out = array, F32, 69, [8], "V", 1, 0, 0, 5.0, 2
Aux1Out = array, F32, 101, [8], "V", 1, 0, 0, 5.0, 2
Aux0InputSel = bits, U08, 133, [0:3], "AFR 0", "AFR 1", "EGT 0", "EGT 1"
Aux1InputSel = bits, U08, 134, [0:3], "AFR 0", "AFR 1", "EGT 0", "EGT 1"
; total TS size = 1
[SettingContextHelp]
; SettingContextHelpEnd
[Tuning]
[LoggerDefinition]
; valid logger types: composite, tooth, trigger, csv
; loggerDef = compositeLogger, "Primary Trigger Logger", tooth
loggerDef = compositeLogger, "Trigger Logger", composite
startCommand = "l\x01"
stopCommand = "l\x02"
dataReadCommand = "L"
dataReadTimeout = 10000 ; time in ms
dataReadyCondition = { toothLogReady }
continuousRead = true
; each packet is 5 and we have 500 of those
dataLength = 1250
; recordDef = headerLen, footerLen, recordLen
recordDef = 0, 0, 5
; these names are hard-coded inside TS
recordField = priLevel, "PriLevel", 0, 1, 1.0, "Flag"
recordField = secLevel, "SecLevel", 1, 1, 1.0, "Flag"
recordField = trigger, "Trigger", 2, 1, 1.0, "Flag"
recordField = sync, "Sync", 3, 1, 1.0, "Flag"
recordField = coil, "Coil", 4, 1, 1.0, "Flag"
recordField = inj, "Injector", 5, 1, 1.0, "Flag"
recordField = time, "Time", 8, 32, 0.001, "ms"
; it seems that TS also needs to know the diff.size of a tooth
calcField = toothTime, "ToothTime", "ms", { time - pastValue(time, 1) }
;
; in order to add new TunerStudio gauge you need to chagne two places
; 1) add a line here in '[OutputChannels]'
; 2) in rusEFI firmware make a change to output_channels.txt
[OutputChannels]
ochGetCommand = "O%2o%2c"
; see TS_OUTPUT_SIZE in console source code
ochBlockSize = 1016
; Common
TestValue = scalar, U32, 0, "na", 1, 0, 0, 65535, 0
VBatt = scalar, F32, 4, "V", 1, 0, 0.0, 30.0, 2
; AFR0
AFR0_in = scalar, F32, 32, "", 14.7, 0, 0.0, 20.0, 2
AFR0_temp = scalar, F32, 36, "C", 1, 0, 0.0, 1050.0, 0
AFR0_Nernst = scalar, F32, 40, "V", 1, 0, 0.0, 1.0, 2
AFR0_PumpITarget = scalar, F32, 44, "mA", 1, 0, -5.0, 5.0, 2
AFR0_PumpIMeasure = scalar, F32, 48, "mA", 1, 0, -5.0, 5.0, 2
AFR0_HeaterDuty = scalar, F32, 52, "%", 100, 0, 0.0, 100.0, 0
AFR0_fault = scalar, U08, 56, "", 1, 0, 0, 6, 0
AFR0_heater = scalar, U08, 57, "", 1, 0, 0, 4, 0
; AFR1
AFR1_in = scalar, F32, 64, "", 14.7, 0, 0.0, 20.0, 2
AFR1_temp = scalar, F32, 68, "C", 1, 0, 0.0, 1050.0, 0
AFR1_Nernst = scalar, F32, 72, "V", 1, 0, 0.0, 1.0, 2
AFR1_PumpITarget = scalar, F32, 76, "mA", 1, 0, -5.0, 5.0, 2
AFR1_PumpIMeasure = scalar, F32, 80, "mA", 1, 0, -5.0, 5.0, 2
AFR1_HeaterDuty = scalar, F32, 84, "%", 100, 0, 0.0, 100.0, 0
AFR1_fault = scalar, U08, 88, "", 1, 0, 0, 6, 0
AFR1_heater = scalar, U08, 89, "", 1, 0, 0, 4, 0
; EGT0
EGT0_temp = scalar, F32, 96, "C", 1, 0, -250.0, 1600.0, 0
EGT0_coldJunction = scalar, F32, 100, "C", 1, 0, -55.0, 127.0, 0
EGT0_state = scalar, U08, 104, "", 1, 0, 0, 4, 0
; EGT1
EGT1_temp = scalar, F32, 112, "C", 1, 0, -250.0, 1600.0, 0
EGT1_coldJunction = scalar, F32, 116, "C", 1, 0, -55.0, 127.0, 0
EGT1_state = scalar, U08, 120, "", 1, 0, 0, 4, 0
seconds = scalar, U32, 124, "sec", 1, 0
Aux0InputSig = { (Aux0InputSel == 0) ? AFR0_in : ((Aux0InputSel == 1) ? AFR1_in : ((Aux0InputSel == 2) ? EGT0_temp : EGT1_temp)) }
Aux1InputSig = { (Aux1InputSel == 0) ? AFR0_in : ((Aux1InputSel == 1) ? AFR1_in : ((Aux1InputSel == 2) ? EGT0_temp : EGT1_temp)) }
;Aux0InputSigMax = { (Aux0InputSel == 0) ? 25 : ((Aux0InputSel == 1) ? 25 : 1500 }
;Aux1InputSigMax = { (Aux1InputSel == 0) ? 25 : ((Aux1InputSel == 1) ? 25 : 1500 }
[PcVariables]
; Keep in sync with Max31855State enum from max31855.h
EgtStatesList = bits, U08, [0:7], "Ok", "Open Circuit", "Short to GND", "Short to VCC", "No reply"
; Keep in sync with WBO::Fault from ../for_rusefi/wideband_can.h
AfrFaultList = bits, U08, [0:7], "Ok", "Unk", "Unk", "Failed to heat", "Overheat", "Underheat", "No supply"
; Keep in sync with HeaterState from heater_control.h
HeaterStatesList = bits, U08, [0:7], "Preheat", "Warmup", "Close loop", "Stopped", "No supply"
[CurveEditor]
curve = auxOut0Curve, "AUX output 0 voltage"
columnLabel = "Input", "Output"
xAxis = { (Aux0InputSel < 2) ? 7 : 300 }, { (Aux0InputSel < 2) ? 25 : 1500 }, 13
yAxis = 0, 5, 6
xBins = Aux0OutBins, Aux0InputSig
yBins = Aux0Out
showTextValues = true
curve = auxOut1Curve, "AUX output 1 voltage"
columnLabel = "Input", "Output"
xAxis = { (Aux1InputSel < 2) ? 7 : 300 }, { (Aux1InputSel < 2) ? 19 : 1500 }, 13
yAxis = 0, 5, 6
xBins = Aux1OutBins, Aux1InputSig
yBins = Aux1Out
showTextValues = true
[TableEditor]
[GaugeConfigurations]
gaugeCategory = Common
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
TestGauge = TestValue, "TestValue", "", -10000.0, 10000.0, -10000.0, 10000.0, -10000.0, 10000.0, 3, 3
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
VBattGauge = VBatt, "Battery", "V", 3.0, 24.0, 9.0, 11.0, 15.0, 16.0, 2, 2
; AFR0
gaugeCategory = AFR channel 0
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
AFR0_Gauge = AFR0_in, "0: AFR", "", 6.5, 20.0, 9.0, 10.0, 16.0, 17.0, 2, 2
AFR0_TempGauge = AFR0_temp, "0: AFR t", "C", 500, 1050, 500, 650, 800, 950, 2, 2
AFR0_NernstGauge = AFR0_Nernst, "0: nernst", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 2, 2
AFR0_HeaterDutyGauge = AFR0_HeaterDuty, "0: Heater", "%", 0.0, 100.0, 1.0, 3.0, 90, 95, 2, 2
AFR0_PumpITargetGauge = AFR0_PumpITarget, "0: Ipump Target", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR0_PumpIMeasureGauge = AFR0_PumpIMeasure, "0: Ipump Actual", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR0_FaultGauge = AFR0_fault, "0: AFR fault", "", 0.0, 6.0, 0.0, 0.0, 0.5, 0.5, 2, 2
AFR0_HeaterGauge = AFR0_heater, "0: AFR heater state", "", 0.0, 4.0, 0.0, 1.5, 2.5, 2.5, 2, 2
; AFR1
gaugeCategory = AFR channel 1
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
AFR1_Gauge = AFR1_in, "1: AFR", "", 6.5, 20.0, 9.0, 10.0, 16.0, 17.0, 2, 2
AFR1_TempGauge = AFR1_temp, "1: AFR t", "C", 500, 1050, 500, 650, 800, 950, 2, 2
AFR1_NernstGauge = AFR1_Nernst, "1: nernst", "V", 0.0, 1.0, 0.0, 0.0, 0.9, 0.95, 2, 2
AFR1_HeaterDutyGauge = AFR1_HeaterDuty, "1: Heater", "%", 0.0, 100.0, 1.0, 3.0, 90, 95, 2, 2
AFR1_PumpITargetGauge = AFR1_PumpITarget, "1: Ipump Target", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR1_PumpIMeasureGauge = AFR1_PumpIMeasure, "1: Ipump Actual", "mA", -5.0, 5.0, -4.0, -3.0, 3.0, 4.0, 2, 2
AFR1_FaultGauge = AFR1_fault, "1: AFR fault", "", 0.0, 6.0, 0.0, 0.0, 0.5, 0.5, 2, 2
AFR1_HeaterGauge = AFR1_heater, "1: AFR heater state", "", 0.0, 4.0, 0.0, 1.5, 2.5, 2.5, 2, 2
; EGT0
gaugeCategory = EGT channel 0
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
EGT0_Gauge = EGT0_temp, "0: EGT", "C", 0.0, 1600.0, 100.0, 250.0, 900.0, 1000.0, 2, 2
EGT0_ColdJunctionGauge = EGT0_coldJunction, "0: EGT CJ", "C", 0.0, 130.0, -55.0, -20.0, 95.0, 105.0, 2, 2
EGT0_StateGauge = EGT0_state, "0: EGT state", "", 0.0, 5.0, 0.0, 0.0, 0.5, 0.5, 2, 2
; EGT1
gaugeCategory = EGT channel 1
; Name = Channel, Title, Units, Lo, Hi, LoD, LoW, HiW, HiD, vd, ld, Active
EGT1_Gauge = EGT1_temp, "1: EGT", "C", 0.0, 1600.0, 100.0, 250.0, 900.0, 1000.0, 2, 2
EGT1_ColdJunctionGauge = EGT1_coldJunction, "1: EGT CJ", "C", 0.0, 130.0, -55.0, -20.0, 95.0, 105.0, 2, 2
EGT1_StateGauge = EGT1_state, "1: EGT state", "", 0.0, 5.0, 0.0, 0.0, 0.5, 0.5, 2, 2
; AUX outputs
Aux0InputGuge = { (Aux0InputSel == 0) ? AFR0_Gauge : ((Aux0InputSel == 1) ? AFR1_Gauge : ((Aux0InputSel == 2) ? EGT0_Gauge : EGT1_Gauge)) }
Aux1InputGuge = { (Aux1InputSel == 0) ? AFR0_Gauge : ((Aux1InputSel == 1) ? AFR1_Gauge : ((Aux1InputSel == 2) ? EGT0_Gauge : EGT1_Gauge)) }
[FrontPage]
; Gauges are numbered left to right, top to bottom.
;
; 1 2 3 4
; 5 6 7 8
gauge1 = AFR0_TempGauge
gauge2 = AFR0_Gauge
gauge3 = AFR1_Gauge
gauge4 = AFR1_TempGauge
gauge5 = VBattGauge
gauge6 = EGT0_Gauge
gauge7 = EGT1_Gauge
gauge8 = TestGauge
indicator = { EGT0_state }, "EGT0 ok", { EGT0: bitStringValue(EgtStatesList, EGT0_state)}, green, black, red, black
indicator = { AFR0_fault }, "AFR0 ok", { AFR0: bitStringValue(AfrFaultList, AFR0_fault)}, green, black, red, black
indicator = { (AFR0_heater != 2) }, "AFR0 Heater CL", { AFR0 heater: bitStringValue(HeaterStatesList, AFR0_heater)}, green, black, red, black
indicator = { (AFR1_heater != 2) }, "AFR1 Heater CL", { AFR1 heater: bitStringValue(HeaterStatesList, AFR1_heater)}, green, black, red, black
indicator = { AFR1_fault }, "AFR1 ok", { AFR1: bitStringValue(AfrFaultList, AFR1_fault)}, green, black, red, black
indicator = { EGT1_state }, "EGT1 ok", { EGT1: bitStringValue(EgtStatesList, EGT1_state)}, green, black, red, black
[KeyActions]
[Datalog]
; Channel Label Type Format
entry = time, "Time", float, "%.3f"
entry = TestValue, "TestValue", int, "%d"
[Menu]
menuDialog = main
menu = "&Base &Engine"
menu = "Fuel"
menu = "Ignition"
menu = "&Cranking"
menu = "&Idle"
menu = "&View"
subMenu = can_settings, "CAN Settings"
menu = "Outputs"
subMenu = auxOut0, "AUX analog output 0"
subMenu = auxOut1, "AUX analog output 1"
menu = "&Advanced"
menu = "&Sensors"
[ControllerCommands]
; commandName = command1, command2, commandn...
; command in standard ini format, a command name can be assigned to 1 to n commands that will be executed in order.
; This does not include any resultant protocol envelope data, only the response data itself.
; WARNING!! These commands bypass TunerStudio's normal memory synchronization. If these commands
; alter mapped settings (Constant) memory in the controller, TunerStudio will have an out of sync condition
; and may create error messages.
; It is expected that these commands would not typically alter any ram mapped to a Constant.
; reboot ECU
cmd_reset_controller = "Z\x00\xbb\x00\x00"
; jump to DFU mode
cmd_dfu = "Z\x00\xba\x00\x00"
[UserDefined]
dialog = can_settings, "CAN Settings"
field = "CAN message ID offset", CanIndexOffset
dialog = auxOut0, "AUX analog out 0 Settings"
field = "Signal", Aux0InputSel
panel = auxOut0Curve
dialog = auxOut1, "AUX analog out 1 Settings"
field = "Signal", Aux1InputSel
panel = auxOut1Curve
[Tools]