PJSC(Pump Jet Solenoid Controller)はArduinoを使用したバイク用燃料噴射コントローラです。このプロジェクトは、オープンソースECUプロジェクト『Speeduino』をベースにしています。
Preparing for dual fuel load.
| @@ -53,6 +53,7 @@ | ||
| 53 | 53 | algorithmNames = bits, U08, [0:2], $loadSourceNames |
| 54 | 54 | ;algorithmUnits = bits, U08, [0:2], $loadSourceUnits |
| 55 | 55 | algorithmUnits = bits, U08, [0:2], "kPa", "% TPS", "%", "% TPS", "INVALID", "INVALID", "INVALID", "INVALID" |
| 56 | + algorithmUnits2 = bits, U08, [3:5], "kPa", "% TPS", "%", "% TPS", "INVALID", "INVALID", "INVALID", "INVALID" ;[PJSC v1.10] For Secondary Fuel | |
| 56 | 57 | algorithmLimits= array, U16, [8], "", 1.0, 0, 0, 511, 0, noMsqSave |
| 57 | 58 | #define all_IO_Pins = "Board Default", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" |
| 58 | 59 | #define IO_Pins_no_def = "INVALID", "INVALID", "INVALID", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "INVALID" |
| @@ -318,22 +319,19 @@ | ||
| 318 | 319 | pjscFreq = scalar, U08, 70, "Hz", 2.0, 0.0, 10, 511, 0 ;[PJSC] |
| 319 | 320 | exValvePosMin = scalar, U08, 71, "ADC", 1.0, 0.0, 0.0, 255.0, 0 ; | |
| 320 | 321 | exValvePosMax = scalar, U08, 72, "ADC", 1.0, 0.0, 0.0, 255.0, 0 ; | |
| 321 | - exTrigHysteresis = scalar, U08, 73, "deg", 1.0, 0.0, 0.0, 255.0, 0 ; | | |
| 322 | - squirtDeviceType = bits, U08, 74, [0:0], "Injector", "Solenoid valve" ; | | |
| 323 | - multiVEmapEnabled = bits, U08, 74, [1:1], "No", "Yes" ; | | |
| 324 | - exTrigModeSelect = bits, U08, 74, [2:3], "Disable", "Spark timing capture", "MAP select switch", "INVALID" ; | | |
| 325 | - externalTrigEdge = bits, U08, 74, [4:4], "Rising", "Falling" ; | | |
| 326 | - exValveCaptureEnabled = bits, U08, 74, [5:5], "Disable", "Exhaust Valve Position capture" ; | | |
| 327 | - dutyPulseCaptureEnabled = bits, U08, 74, [6:6], "Disable", "PWM input" ; | | |
| 328 | - dutyPulseCaptureEnabled2 = bits, U08, 74, [7:7], "Disable", "PWM input" ; | | |
| 329 | - dutyPulseOnLevel = bits, U08, 75, [0:0], "High", "Low" ; | | |
| 330 | - dutyPulseOnLevel2 = bits, U08, 75, [1:1], "High", "Low" ; | | |
| 331 | - exValveCalibrationMode = bits, U08, 75, [2:2], "Off", "On" ; | | |
| 332 | - unused2-73-3 = bits, U08, 75, [3:3], "None", "None" ; | | |
| 333 | - unused2-73-4 = bits, U08, 75, [4:4], "None", "None" ; | | |
| 334 | - unused2-73-5 = bits, U08, 75, [5:5], "None", "None" ; | | |
| 335 | - unused2-73-6 = bits, U08, 75, [6:6], "None", "None" ; V | |
| 336 | - unused2-73-7 = bits, U08, 75, [7:7], "None", "None" ;[PJSC] | |
| 322 | + exTrigHysteresis = scalar, U08, 73, "deg", 1.0, 0.0, 0.0, 255.0, 0 ; V | |
| 323 | + squirtDeviceType = bits, U08, 74, [0:0], "Injector", "Solenoid valve" ;[PJSC] | |
| 324 | + multiVEmapEnabled = bits, U08, 74, [1:2], "Disable", "Separate", "Switching", "Dual Fuel Load" ;[PJSC v1.10] For Dual Fuel Load | |
| 325 | + exTrigModeSelect = bits, U08, 74, [3:4], "Disable", "Spark timing capture", "MAP select switch", "INVALID" ;[PJSC] | |
| 326 | + externalTrigEdge = bits, U08, 74, [5:5], "Rising", "Falling" ; | | |
| 327 | + exValveCaptureEnabled = bits, U08, 74, [6:6], "Disable", "Exhaust Valve Position capture" ; | | |
| 328 | + dutyPulseCaptureEnabled = bits, U08, 74, [7:7], "Disable", "PWM input" ; | | |
| 329 | + dutyPulseCaptureEnabled2 = bits, U08, 75, [0:0], "Disable", "PWM input" ; | | |
| 330 | + dutyPulseOnLevel = bits, U08, 75, [1:1], "High", "Low" ; | | |
| 331 | + dutyPulseOnLevel2 = bits, U08, 75, [2:2], "High", "Low" ; V | |
| 332 | + exValveCalibrationMode = bits, U08, 75, [3:3], "Off", "On" ;[PJSC] | |
| 333 | + algorithm2 = bits, U08, 75, [4:6], $loadSourceNames ;[PJSC v1.10] For Dual Fuel Load | |
| 334 | + secondaryFuelUsage = bits, U08, 75, [7:7], "additive", "multiplicitive" ;[PJSC v1.10] For Dual Fuel Load | |
| 337 | 335 | veMapSelection1 = bits, U08, 76, [0:7], "VE Table 1","VE Table 2","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","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","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","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","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","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","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","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","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 338 | 336 | veMapSelection2 = bits, U08, 77, [0:7], "VE Table 1","VE Table 2","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","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","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","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","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","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","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","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","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 339 | 337 | veMapSelection3 = bits, U08, 78, [0:7], "VE Table 1","VE Table 2","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","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","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","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","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","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","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","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","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| @@ -1051,7 +1049,7 @@ | ||
| 1051 | 1049 | ; name = scalar, type, offset, units, scale, translate, lo, hi, digits |
| 1052 | 1050 | veTable2 = array, U08, 0, [16x16],"%", 1.0, 0.0, 0.0, 255.0, 0 |
| 1053 | 1051 | rpmBinsVE2 = array, U08, 256, [ 16], "RPM", 100.0, 0.0, 100.0, 25500.0, 0 |
| 1054 | - fuelLoadBins2 = array, U08, 272, [ 16], { bitStringValue(algorithmUnits , algorithm) }, 2.0, 0.0, 0.0, {fuelLoadMax}, 0 | |
| 1052 | + fuelLoadBins2 = array, U08, 272, [ 16], { bitStringValue(algorithmUnits2 , algorithm2) }, 2.0, 0.0, 0.0, {fuelLoadMax}, 0 | |
| 1055 | 1053 | |
| 1056 | 1054 | ;------------------------------------------------------------------------------- |
| 1057 | 1055 |
| @@ -1341,7 +1339,7 @@ | ||
| 1341 | 1339 | ;[PJSC] subMenu = sparkTbl, "Spark Table", 2 |
| 1342 | 1340 | subMenu = veMapSelectDialog, "VE Table select" ;[PJSC] |
| 1343 | 1341 | subMenu = veTable1Dialog, "&VE Table 1", 0 ; V |
| 1344 | - subMenu = veTable2Dialog, "&VE Table 2", 0, { multiVEmapEnabled == 1 } ;[PJSC] | |
| 1342 | + subMenu = veTable2Dialog, "&VE Table 2", 0, { multiVEmapEnabled <= 1 } ;[PJSC] | |
| 1345 | 1343 | subMenu = afrTable1Tbl, "AFR Table", 5 |
| 1346 | 1344 | subMenu = std_separator |
| 1347 | 1345 | subMenu = inj_trimad, "Sequential fuel trim", 9 |
| @@ -1888,7 +1886,10 @@ | ||
| 1888 | 1886 | panel = veMapSelectionSet2 ; | |
| 1889 | 1887 | ; | |
| 1890 | 1888 | dialog = veMapSelectDialog, "VE Table select" ; | |
| 1891 | - field = "Multi VE Table", multiVEmapEnabled ; V | |
| 1889 | + field = "Multi VE Table", multiVEmapEnabled ; | | |
| 1890 | + field = "Primary Fuel Load", algorithm ; | | |
| 1891 | + field = "Secondary Fuel Load", algorithm2 ; | | |
| 1892 | + field = "Secondary Fuel", secondaryFuelUsage, { algorithm2 <= 2 } ; V | |
| 1892 | 1893 | panel = veMapSelectionDialog ;[PJSC v1.10] |
| 1893 | 1894 | |
| 1894 | 1895 | ;[PJSC] dialog = veTableDialog_north, "" |
| @@ -3479,7 +3480,7 @@ | ||
| 3479 | 3480 | |
| 3480 | 3481 | ochGetCommand = "r\$tsCanId\x30%2o%2c" |
| 3481 | 3482 | ;[PJSC] ochBlockSize = 90 |
| 3482 | - ochBlockSize = 106 ;[PJSC v1.10] Extend block size for Test mode | |
| 3483 | + ochBlockSize = 108 ;[PJSC v1.10] Extend block size for Test mode | |
| 3483 | 3484 | |
| 3484 | 3485 | secl = scalar, U08, 0, "sec", 1.000, 0.000 |
| 3485 | 3486 | status1 = scalar, U08, 1, "bits", 1.000, 0.000 |
| @@ -3589,6 +3590,7 @@ | ||
| 3589 | 3590 | dutyRatio2 = scalar, U16, 101, "%", 1.000, 0.000 ;[PJSC]For capturing duty pulse |
| 3590 | 3591 | testCnt = scalar, U16, 103, "", 1.000, 0.000 ;[PJSC v1.10]For test mode |
| 3591 | 3592 | afr2 = scalar, U08, 105, "O2", 0.100, 0.000 ;[PJSC v1.10] |
| 3593 | + fuelLoad2 = scalar, S16, 106, { bitStringValue( algorithmUnits2 , algorithm2 ) }, 1.000, 0.000 | |
| 3592 | 3594 | |
| 3593 | 3595 | |
| 3594 | 3596 | #if CELSIUS |
| @@ -15,7 +15,7 @@ | ||
| 15 | 15 | #define ve2SetPage 12 //[PJSC] Config Page 12 |
| 16 | 16 | |
| 17 | 17 | //[PJSC]#define SERIAL_PACKET_SIZE 90 //Must match ochBlockSize in ini file |
| 18 | -#define SERIAL_PACKET_SIZE 106 //[PJSC v1.10] Extend serial packet block size for Test mode | |
| 18 | +#define SERIAL_PACKET_SIZE 108 //[PJSC v1.10] Extend serial packet block size for Test mode | |
| 19 | 19 | |
| 20 | 20 | byte currentPage = 1;//Not the same as the speeduino config page numbers |
| 21 | 21 | bool isMap = true; |
| @@ -455,6 +455,7 @@ | ||
| 455 | 455 | byte nSquirts; |
| 456 | 456 | byte nChannels; //Number of fuel and ignition channels |
| 457 | 457 | int16_t fuelLoad; |
| 458 | + int16_t fuelLoad2; //[PJSC v1.10] For Secondary Fuel Load | |
| 458 | 459 | int16_t ignLoad; |
| 459 | 460 | bool fuelPumpOn; //The current status of the fuel pump |
| 460 | 461 | byte syncLossCounter; |
| @@ -610,22 +611,20 @@ | ||
| 610 | 611 | byte dutyPulseCaptureEnabled: 1; // | For capturing duty pulse ch1 |
| 611 | 612 | byte dutyPulseCaptureEnabled2: 1; // | For capturing duty pulse ch2 |
| 612 | 613 | byte dutyPulseOnLevel: 1; // | For capturing duty pulse ch1, 0: high, 1: low |
| 613 | - byte dutyPulseOnLevel2: 1; // | For capturing duty pulse ch2, 0: high, 1: low | |
| 614 | - byte exValveCalibrationMode: 1; // | Support Exhaust Valve calibrationmode | |
| 615 | - byte unused1_74_3: 1; // | Place holder | |
| 616 | - byte unused1_74_4: 1; // | Place holder | |
| 617 | - byte unused1_74_5: 1; // | Place holder | |
| 618 | - byte unused1_74_6: 1; // | Place holder | |
| 619 | - byte unused1_74_7: 1; // V Place holder | |
| 614 | + byte dutyPulseOnLevel2: 1; // V For capturing duty pulse ch2, 0: high, 1: low | |
| 615 | + byte exValveCalibrationMode: 1; //[PJSC] Support Exhaust Valve calibrationmode | |
| 616 | + byte fuelAlgorithm2: 3; //[PJSC v1.10] For Secondary Fuel Algorithm | |
| 617 | + byte secondaryFuelUsage: 1; //[PJSC v1.10] For Secondary Fuel Algorithm | |
| 618 | + byte unused1_74_7: 1; //[PJSC] Place holder | |
| 620 | 619 | byte veMapSelection[4]; //[PJSC] |
| 621 | 620 | byte veMapSelection2[4]; //[PJSC v1.10] For MAP switching |
| 622 | 621 | byte dutyFreqTst[4]; //[PJSC v1.10] For test mode |
| 623 | 622 | byte dutyRatioTst[4]; // | |
| 624 | - byte testop_fp: 1; // | | |
| 625 | - byte testop_inj: 2; // | | |
| 626 | - byte testop_coil: 2; // | | |
| 627 | - byte testsel_inj: 2; // | | |
| 628 | - byte testsel_coil: 1; // | | |
| 623 | + byte testop_fp: 1; // | | |
| 624 | + byte testop_inj: 2; // | | |
| 625 | + byte testop_coil: 2; // | | |
| 626 | + byte testsel_inj: 2; // | | |
| 627 | + byte testsel_coil: 1; // | | |
| 629 | 628 | uint16_t testint; // | |
| 630 | 629 | uint16_t testpw; // | |
| 631 | 630 | uint16_t testinjcnt; // | |