From 8fa985517111c1aee47ccdb820241c857b011c9a Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 22 Mar 2019 23:00:21 -0400 Subject: [PATCH] get_config for #713 --- ...ngine_configuration_generated_structures.h | 36 ++++++++++-- firmware/controllers/algo/rusefi_generated.h | 36 ++++++++++-- firmware/tunerstudio/rusefi.ini | 55 +++++++++++++++++-- .../models/src/com/rusefi/config/Fields.java | 35 ++++++++++-- 4 files changed, 138 insertions(+), 24 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h index 46b01ed441..fa9893d4d8 100644 --- a/firmware/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Mar 21 20:25:30 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Mar 22 22:56:39 EDT 2019 // begin #ifndef ENGINE_CONFIGURATION_GENERATED_H_ #define ENGINE_CONFIGURATION_GENERATED_H_ @@ -707,10 +707,10 @@ typedef struct { bool useNoiselessTriggerDecoder : 1; /** offset 144 bit 24 */ - bool unused_board_984_24 : 1; + bool useIdleTimingPidControl : 1; /** offset 144 bit 25 */ - bool unused_board_984_25 : 1; + bool useTPSBasedVeTable : 1; /** offset 144 bit 26 */ bool unused_board_984_26 : 1; @@ -1752,7 +1752,7 @@ typedef struct { */ int16_t startUpFuelPumpDuration; /** - * If RPM is close enough let's leave IAC alone + * If RPM is close enough let's leave IAC alone, and maybe engage timing PID correction * offset 1914 */ int16_t idlePidRpmDeadZone; @@ -2334,9 +2334,33 @@ typedef struct { */ etb_io etb2; /** + * See useIdleTimingPidControl * offset 3992 */ - int mainUnusedEnd[622]; + pid_s idleTimingPid; + /** + * The timing correction works only if RPM is close enough, otherwise the IAC correction works + * offset 4012 + */ + int16_t idleTimingPidWorkZone; + /** + * If RPM is too perfect, let's leave the advance angle alone to avoid oscillation + * offset 4014 + */ + int16_t idleTimingPidDeadZone; + /** + * Added to the work zone for smooth correction falloff + * offset 4016 + */ + int16_t idlePidFalloffDeltaRpm; + /** + * offset 4018 + */ + int16_t unusedIdleTimingPid; + /** + * offset 4020 + */ + int mainUnusedEnd[615]; /** total size 6480*/ } engine_configuration_s; @@ -2583,4 +2607,4 @@ typedef struct { #endif // end -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Mar 21 20:25:30 EDT 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Mar 22 22:56:39 EDT 2019 diff --git a/firmware/controllers/algo/rusefi_generated.h b/firmware/controllers/algo/rusefi_generated.h index d2dc12e738..fc5abd4f64 100644 --- a/firmware/controllers/algo/rusefi_generated.h +++ b/firmware/controllers/algo/rusefi_generated.h @@ -618,10 +618,10 @@ #define useIacTableForCoasting_offset_hex 2e8 #define useNoiselessTriggerDecoder_offset 744 #define useNoiselessTriggerDecoder_offset_hex 2e8 -#define unused_board_984_24_offset 744 -#define unused_board_984_24_offset_hex 2e8 -#define unused_board_984_25_offset 744 -#define unused_board_984_25_offset_hex 2e8 +#define useIdleTimingPidControl_offset 744 +#define useIdleTimingPidControl_offset_hex 2e8 +#define useTPSBasedVeTable_offset 744 +#define useTPSBasedVeTable_offset_hex 2e8 #define unused_board_984_26_offset 744 #define unused_board_984_26_offset_hex 2e8 #define unused_board_984_27_offset 744 @@ -1658,8 +1658,32 @@ #define etb2_controlPin1_offset_hex f96 #define etb2_controlPin2_offset 3991 #define etb2_controlPin2_offset_hex f97 -#define mainUnusedEnd_offset 3992 -#define mainUnusedEnd_offset_hex f98 +#define idleTimingPid_offset 3992 +#define idleTimingPid_offset_hex f98 +#define idleTimingPid_pFactor_offset 3992 +#define idleTimingPid_pFactor_offset_hex f98 +#define idleTimingPid_iFactor_offset 3996 +#define idleTimingPid_iFactor_offset_hex f9c +#define idleTimingPid_dFactor_offset 4000 +#define idleTimingPid_dFactor_offset_hex fa0 +#define idleTimingPid_offset_offset 4004 +#define idleTimingPid_offset_offset_hex fa4 +#define idleTimingPid_periodMs_offset 4006 +#define idleTimingPid_periodMs_offset_hex fa6 +#define idleTimingPid_minValue_offset 4008 +#define idleTimingPid_minValue_offset_hex fa8 +#define idleTimingPid_maxValue_offset 4010 +#define idleTimingPid_maxValue_offset_hex faa +#define idleTimingPidWorkZone_offset 4012 +#define idleTimingPidWorkZone_offset_hex fac +#define idleTimingPidDeadZone_offset 4014 +#define idleTimingPidDeadZone_offset_hex fae +#define idlePidFalloffDeltaRpm_offset 4016 +#define idlePidFalloffDeltaRpm_offset_hex fb0 +#define unusedIdleTimingPid_offset 4018 +#define unusedIdleTimingPid_offset_hex fb2 +#define mainUnusedEnd_offset 4020 +#define mainUnusedEnd_offset_hex fb4 #define cltCrankingCorrBins_offset 6480 #define cltCrankingCorrBins_offset_hex 1950 #define cltCrankingCorr_offset 6512 diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index f2b0de13da..17e5e15b81 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -7,15 +7,20 @@ ; 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 -#unset tuneByMAF +;#unset tuneByMAF -;[SettingGroups] +[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 + settingGroup = tuneVeMode, "VE Autotune Mode" + settingOption = tuneByTPS, "TPS-Based (See Injection -> Inj.Settings)" + settingOption = tuneByMAF, "MAF-Based" + settingOption = tuneByLoad, "Load-Based (Default)" + ; settingGroup = fAlgorithmSetting, "Fuel Logic / Tables" ; settingOption = FA_PLAIN_MAF, "Plain MAF" ; settingOption = FA_TPS, "AlphaN/TPS" @@ -63,7 +68,7 @@ enable2ndByteCanID = false ; see PAGE_0_SIZE in C source code ; CONFIG_DEFINITION_START -; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Mar 22 15:52:39 EDT 2019 +; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Mar 22 22:56:39 EDT 2019 pageSize = 20000 page = 1 @@ -324,8 +329,8 @@ page = 1 coastingFuelCutEnabled = bits, U32, 744, [21:21], "false", "true" useIacTableForCoasting = bits, U32, 744, [22:22], "false", "true" useNoiselessTriggerDecoder= bits, U32, 744, [23:23], "false", "true" - unused_board_984_24 = bits, U32, 744, [24:24], "false", "true" - unused_board_984_25 = bits, U32, 744, [25:25], "false", "true" + useIdleTimingPidControl = bits, U32, 744, [24:24], "false", "true" + useTPSBasedVeTable = bits, U32, 744, [25:25], "false", "true" unused_board_984_26 = bits, U32, 744, [26:26], "false", "true" unused_board_984_27 = bits, U32, 744, [27:27], "false", "true" unused_board_984_28 = bits, U32, 744, [28:28], "false", "true" @@ -828,7 +833,18 @@ page = 1 etb2_directionPin2 = bits, U08, 3989, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" etb2_controlPin1 = bits, U08, 3990, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" etb2_controlPin2 = bits, U08, 3991, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" -;no TS info - skipping mainUnusedEnd offset 3992 + idleTimingPid_pFactor = scalar, F32, 3992, "", 1, 0, -10000, 10000, 7 + idleTimingPid_iFactor = scalar, F32, 3996, "", 1, 0, -10000, 10000, 7 + idleTimingPid_dFactor = scalar, F32, 4000, "", 1, 0, -10000, 10000, 7 + idleTimingPid_offset = scalar, S16, 4004, "", 1, 0, 0, 1000, 0 + idleTimingPid_periodMs = scalar, S16, 4006, "ms", 1, 0, 0, 3000, 0 + idleTimingPid_minValue = scalar, S16, 4008, "", 1, 0, -30000, 30000.0, 0 + idleTimingPid_maxValue = scalar, S16, 4010, "", 1, 0, -30000, 30000.0, 0 + idleTimingPidWorkZone = scalar, S16, 4012, "RPM", 1, 0, 0, 1000, 0 + idleTimingPidDeadZone = scalar, S16, 4014, "RPM", 1, 0, 0, 1000, 0 + idlePidFalloffDeltaRpm = scalar, S16, 4016, "RPM", 1, 0, 0, 1000, 0 +;no TS info - skipping unusedIdleTimingPid offset 4018 +;no TS info - skipping mainUnusedEnd offset 4020 cltCrankingCorrBins = array, F32, 6480, [8], "C", 1, 0, -100.0, 250.0, 2 cltCrankingCorr = array, F32, 6512, [8], "%", 1, 0, 0.0, 500.0, 2 idleAdvanceBins = array, F32, 6544, [8], "RPM", 1, 0, 0.0, 18000, 2 @@ -1576,7 +1592,11 @@ fileVersion = { 20171101 } table = veTableTbl, veTableMap, "VE Table", 1 ; constant, variable xBins = veRpmBins, RPMValue +#if tuneByTPS + yBins = ignitionTpsBins, TPSValue +#else yBins = veLoadBins, MAPValue +#endif zBins = veTable ; gridHeight = 2.0 gridOrient = 250, 0, 340 ; Space 123 rotation of grid in degrees. @@ -1991,6 +2011,7 @@ menuDialog = main subMenu = idleVeCurve, "Idle VE", 0, {useSeparateVeForIdle == 1} subMenu = idleAdvanceCurve, "Idle Ignition Advance", 0, {useSeparateAdvanceForIdle == 1} subMenu = std_separator + subMenu = idleTimingPidCorrDialog, "Closed-loop Idle timing correction" subMenu = cltIdleCurve, "Warmup Idle multiplier" subMenu = iacCoastingCurve, "Coasting IAC Position for Auto-Idle", 0, {useIacTableForCoasting == 1} @@ -2182,6 +2203,12 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Mode", injectionMode, {isInjectionEnabled == 1} field = "#Batch injection with individual wiring" field = "Two wire batch emulation", twoWireBatchInjection, {isInjectionEnabled == 1 && injectionMode == 2} +#if tuneByTPS + field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {isInjectionEnabled == 1 && fuelAlgorithm == LM_SPEED_DENSITY} +#else + field = "#Enabled for TPS-Based 'VE Autotune Mode' in Project Settings" + field = "Use TPS instead of Load for VE table", useTPSBasedVeTable, {0} +#endif dialog = ignitionSettings, "Ignition Settings" field = "Enabled", isIgnitionEnabled @@ -2695,6 +2722,22 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "#See Warmup idle multiplier" slider = "Manual IAC Position", manIdlePosition, horizontal + dialog = idleTimingPidCorrDialog, "", yAxis + field = "!This timing correction mode is Alpha Version" + field = "Use Auto-PID ignition advance control", useIdleTimingPidControl + field = "#See Idle Target RPM Curve" + field = "P-factor", idleTimingPid_pFactor, {useIdleTimingPidControl == 1} + field = "I-factor", idleTimingPid_iFactor, {useIdleTimingPidControl == 1} + field = "D-factor", idleTimingPid_dFactor, {useIdleTimingPidControl == 1} + field = "Offset", idleTimingPid_offset, {useIdleTimingPidControl == 1} + field = "Min Delta", idleTimingPid_minValue, {useIdleTimingPidControl == 1} + field = "Max Delta", idleTimingPid_maxValue, {useIdleTimingPidControl == 1} + field = "period", idleTimingPid_periodMs, {useIdleTimingPidControl == 1} + field = "#See RPM dead zone to deactivate IAC pid" + field = "RPM working zone for timing pid", idleTimingPidWorkZone, {useIdleTimingPidControl == 1} + field = "RPM working zone falloff", idlePidFalloffDeltaRpm, {useIdleTimingPidControl == 1} + field = "RPM dead zone to deactivate timing pid", idleTimingPidDeadZone, {useIdleTimingPidControl == 1} + ; Engine->Fan Settings dialog = fanSetting, "Fan Settings" field = "Fan On Temperature", fanOnTemperature diff --git a/java_console/models/src/com/rusefi/config/Fields.java b/java_console/models/src/com/rusefi/config/Fields.java index d195620864..c14202954c 100644 --- a/java_console/models/src/com/rusefi/config/Fields.java +++ b/java_console/models/src/com/rusefi/config/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config; -// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Tue Mar 12 21:36:19 EDT 2019 +// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Mar 22 22:56:39 EDT 2019 public class Fields { public static final int LE_COMMAND_LENGTH = 200; public static final int BLOCKING_FACTOR = 400; @@ -418,8 +418,8 @@ public class Fields { public static final int coastingFuelCutEnabled_offset = 744; public static final int useIacTableForCoasting_offset = 744; public static final int useNoiselessTriggerDecoder_offset = 744; - public static final int unused_board_984_24_offset = 744; - public static final int unused_board_984_25_offset = 744; + public static final int useIdleTimingPidControl_offset = 744; + public static final int useTPSBasedVeTable_offset = 744; public static final int unused_board_984_26_offset = 744; public static final int unused_board_984_27_offset = 744; public static final int unused_board_984_28_offset = 744; @@ -1046,7 +1046,19 @@ public class Fields { public static final int etb2_directionPin2_offset = 3989; public static final int etb2_controlPin1_offset = 3990; public static final int etb2_controlPin2_offset = 3991; - public static final int mainUnusedEnd_offset = 3992; + public static final int idleTimingPid_offset = 3992; + public static final int idleTimingPid_pFactor_offset = 3992; + public static final int idleTimingPid_iFactor_offset = 3996; + public static final int idleTimingPid_dFactor_offset = 4000; + public static final int idleTimingPid_offset_offset = 4004; + public static final int idleTimingPid_periodMs_offset = 4006; + public static final int idleTimingPid_minValue_offset = 4008; + public static final int idleTimingPid_maxValue_offset = 4010; + public static final int idleTimingPidWorkZone_offset = 4012; + public static final int idleTimingPidDeadZone_offset = 4014; + public static final int idlePidFalloffDeltaRpm_offset = 4016; + public static final int unusedIdleTimingPid_offset = 4018; + public static final int mainUnusedEnd_offset = 4020; public static final int cltCrankingCorrBins_offset = 6480; public static final int cltCrankingCorrBins_offset_hex = 1950; public static final int cltCrankingCorr_offset = 6512; @@ -1436,8 +1448,8 @@ public class Fields { public static final Field COASTINGFUELCUTENABLED = Field.create("COASTINGFUELCUTENABLED", 744, FieldType.BIT, 21); public static final Field USEIACTABLEFORCOASTING = Field.create("USEIACTABLEFORCOASTING", 744, FieldType.BIT, 22); public static final Field USENOISELESSTRIGGERDECODER = Field.create("USENOISELESSTRIGGERDECODER", 744, FieldType.BIT, 23); - public static final Field UNUSED_BOARD_984_24 = Field.create("UNUSED_BOARD_984_24", 744, FieldType.BIT, 24); - public static final Field UNUSED_BOARD_984_25 = Field.create("UNUSED_BOARD_984_25", 744, FieldType.BIT, 25); + public static final Field USEIDLETIMINGPIDCONTROL = Field.create("USEIDLETIMINGPIDCONTROL", 744, FieldType.BIT, 24); + public static final Field USETPSBASEDVETABLE = Field.create("USETPSBASEDVETABLE", 744, FieldType.BIT, 25); public static final Field UNUSED_BOARD_984_26 = Field.create("UNUSED_BOARD_984_26", 744, FieldType.BIT, 26); public static final Field UNUSED_BOARD_984_27 = Field.create("UNUSED_BOARD_984_27", 744, FieldType.BIT, 27); public static final Field UNUSED_BOARD_984_28 = Field.create("UNUSED_BOARD_984_28", 744, FieldType.BIT, 28); @@ -1904,6 +1916,17 @@ public class Fields { public static final Field ETB2_DIRECTIONPIN2 = Field.create("ETB2_DIRECTIONPIN2", 3989, FieldType.INT, brain_pin_e); public static final Field ETB2_CONTROLPIN1 = Field.create("ETB2_CONTROLPIN1", 3990, FieldType.INT, brain_pin_e); public static final Field ETB2_CONTROLPIN2 = Field.create("ETB2_CONTROLPIN2", 3991, FieldType.INT, brain_pin_e); + public static final Field IDLETIMINGPID_PFACTOR = Field.create("IDLETIMINGPID_PFACTOR", 3992, FieldType.FLOAT); + public static final Field IDLETIMINGPID_IFACTOR = Field.create("IDLETIMINGPID_IFACTOR", 3996, FieldType.FLOAT); + public static final Field IDLETIMINGPID_DFACTOR = Field.create("IDLETIMINGPID_DFACTOR", 4000, FieldType.FLOAT); + public static final Field IDLETIMINGPID_OFFSET = Field.create("IDLETIMINGPID_OFFSET", 4004, FieldType.INT); + public static final Field IDLETIMINGPID_PERIODMS = Field.create("IDLETIMINGPID_PERIODMS", 4006, FieldType.INT); + public static final Field IDLETIMINGPID_MINVALUE = Field.create("IDLETIMINGPID_MINVALUE", 4008, FieldType.INT); + public static final Field IDLETIMINGPID_MAXVALUE = Field.create("IDLETIMINGPID_MAXVALUE", 4010, FieldType.INT); + public static final Field IDLETIMINGPIDWORKZONE = Field.create("IDLETIMINGPIDWORKZONE", 4012, FieldType.INT); + public static final Field IDLETIMINGPIDDEADZONE = Field.create("IDLETIMINGPIDDEADZONE", 4014, FieldType.INT); + public static final Field IDLEPIDFALLOFFDELTARPM = Field.create("IDLEPIDFALLOFFDELTARPM", 4016, FieldType.INT); + public static final Field UNUSEDIDLETIMINGPID = Field.create("UNUSEDIDLETIMINGPID", 4018, FieldType.INT); public static final Field FSIOFORMULAS1 = Field.create("FSIOFORMULAS1", 6672, FieldType.INT); public static final Field FSIOFORMULAS2 = Field.create("FSIOFORMULAS2", 6872, FieldType.INT); public static final Field FSIOFORMULAS3 = Field.create("FSIOFORMULAS3", 7072, FieldType.INT);