FUNCTION CODES
FUNCTION CODE TABLES
Table 2.40-4. Function Code 02 (1XXXX Messages) Table 2.40-3. Function Code 01 (0XXXX Messages)
MODBUS® ADDRESS NAME DESCRIPTION ENGINEERING UNITS
00001 Main Fuel Valve Status of the main fuel valve 1 = ON
0 = OFF
00002 Pre-Chamber
Fuel Valve Status of the prechamber fuel valve 1 = ON 0 = OFF 00003 Engine Running Whether the engine is running or not running 1 = RUNNING
0 = OFF 00004 Starter Motor Whether the starter motor is engaged or not 1 = ENGAGED
0 = OFF 00005 Pre/Post Lube Whether the pre/post lube pump is running 1 = RUNNING
0 = OFF 00006 Engine Alarm Whether a validated alarm is active 1 = ON
0 = OFF
00007 Engine Shutdown Whether the shutdown is active 1 = OK
0 = SHUTDOWN 00008 Engine Knocking Whether the engine is in uncontrollable knock 1 = ON
0 = OFF 00009 No Spark Whether the engine is experiencing a
no-spark situation
1 = NO SPARK 0 = OK 00010 Ignition Power Level Whether the ignition power level is high or low 1 = HIGH
0 = LOW 00011 Ignition Enabled Whether the ignition is enabled or not 1 = ON
0 = OFF
MODBUS® ADDRESS NAME DESCRIPTION ENGINEERING UNITS
10001 Start Engine Signal Whether the start engine signal is active 1 = Start Engine Signal High 0 = Start Engine Signal Low 10002 Normal Shutdown Whether the normal shutdown signal is
active
1 = Normal Shutdown 0 = OK to Run 10003 Emergency Shutdown Whether the emergency shutdown signal
is active
1 = Emergency Shutdown 0 = OK to Run
10004 Remote rpm Select Whether the remote rpm analog input is active or inactive
1 = Remote rpm Select Active 0 = Remote rpm Select Inactive 10005 Run High Idle Whether the run high-idle digital input is
active
1 = Run Engine At High Idle 0 = Run Engine At Low Idle 10006 Load Coming Whether the load coming digital input is
active
1 = Load Coming Digital Input Active 0 = Load Coming Digital Input Inactive 10007 Alternate Dynamics/
Synchronizer Mode
Whether the alternate governor dynamics is active
1 = Alternate Gov Dynamics Is Active 0 = Alternate Gov Dynamics Is Inactive
10008 Lockout Button/Ignition Module
Whether either the lockout button has been depressed or the IPM-D has failed, or is not powered
1 = Lockout Active 0 = Lockout Inactive 10009 User Digital Input 1 Whether user digital input 1 is high 1 = User DIP 1 High
0 = User DIP 1 Inactive 10010 User Digital Input 2 Whether user digital input 2 is high 1 = User DIP 2 High
0 = User DIP 2 Inactive 10011 User Digital Input 3 Whether user digital input 3 is high 1 = User DIP 3 High
0 = User DIP 3 Inactive 10012 User Digital Input 4 Whether user digital input 4 is high 1 = User DIP 4 High
0 = User DIP 4 Inactive 10014 AFR Manual/Automatic
Status (Left Bank)
Whether the air-fuel ratio control is in man-ual or automatic mode
1 = Automatic Mode 0 = Manual Mode
10015 Reserved For Future Use
10016 Reserved For Future Use
10017 Reserved For Future Use
Table 2.40-5. Function Code 03 (4XXXX Messages) (Part 1 of 2)
MODBUS® ADDRESS NAME ENGINEERING UNITS
40001 Number of ESD fault codes 16-bit unsigned integer that goes from 0 to 5
40002 First ESD fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-3 for ESD Fault Codes)
40003 Second ESD fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-3 for ESD Fault Codes)
40004 Third ESD fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-3 for ESD Fault Codes)
40005 Fourth ESD fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-3 for ESD Fault Codes)
40006 Fifth ESD fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-3 for ESD Fault Codes)
40007 Number of ALM fault codes 16-bit unsigned integer that goes from 0 to 5
40008 First ALM fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-2 for ALM Fault Codes)
40009 Second ALM fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-2 for ALM Fault Codes)
40010 Third ALM fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-2 for ALM Fault Codes)
40011 Fourth ALM fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-2 for ALM Fault Codes)
40012 Fifth ALM fault code to occur*
16-bit unsigned integer that goes from 111 to 555, excluding any values that contain zeros (see Table 4.00-2 for ALM Fault Codes)
40013 40014
Engine operating hours (in seconds) of most recent ESD
fault code 32-bit unsigned integer – full range
40015 40016
Engine operating hours (in seconds) of second most recent
ESD fault code 32-bit unsigned integer – full range
40017 40018
Engine operating hours (in seconds) of third most recent
ESD fault code 32-bit unsigned integer – full range
40019 40020
Engine operating hours (in seconds) of fourth most recent
ESD fault code 32-bit unsigned integer – full range
40021 40022
Engine operating hours (in seconds) of fifth most recent
ESD fault code 32-bit unsigned integer – full range
40023 40024
Engine operating hours (in seconds) of most recent ALM
fault code 32-bit unsigned integer – full range
40025 40026
Engine operating hours (in seconds) of second most recent
ALM fault code 32-bit unsigned integer – full range
40027 40028
Engine operating hours (in seconds) of third most recent
ALM fault code 32-bit unsigned integer – full range
40029 40030
Engine operating hours (in seconds) of fourth most recent
ALM fault code 32-bit unsigned integer – full range
40031 40032
Engine operating hours (in seconds) of fifth most recent
ALM fault code 32-bit unsigned integer – full range
40033 Desired engine load 16-bit unsigned integer that goes from 0 to 2304
(0 to 112%)
40034 Actual engine load 16-bit unsigned integer that goes from 0 to 2560
(0 to 125%)
40035 Position of stepper motor 1 16-bit unsigned integer that goes from 0 to 20,000
40036 Reserved For Future Use
40037 Reserved For Future Use
40038 Reserved For Future Use
40039 Reserved For Future Use
40040 Reserved For Future Use 40041
40042 Current engine operating hours (in seconds) 32-bit unsigned integer – full range
40043 Rich stepper maximum motor limit of active fuel (left bank) 16-bit unsigned integer that goes from 0 to 20,000 40044 Lean stepper minimum motor limit of active fuel (left bank) 16-bit unsigned integer that goes from 0 to 20,000
40045 Reserved For Future Use
40046 Reserved For Future Use
40047 Reserved For Future Use
40048 Reserved For Future Use
40049 Reserved For Future Use
40050 Reserved For Future Use
40051 Countdown in seconds until engine starts once starter
pressed 16-bit unsigned integer that goes from 0 to 20,000
Table 2.40-6. Function Code 04 (3XXXX Messages) (Part 1 of 4)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
30001 Average rpm Average engine rpm * 4 16-bit unsigned integer that goes
from 0 to 8800 (0 to 2200 rpm) 30002 Oil pressure Oil pressure * 2 in units of kPa gauge 16-bit unsigned integer that goes
from 0 to 2204 (0 to 1102 kPa) 30003 Intake manifold absolute
pressure
Intake manifold pressure * 4 in units of kPa absolute
16-bit unsigned integer that goes from 0 to 2304 (0 to 576 kPa) 30004 Boost absolute pressure Boost pressure * 4 in units of kPa absolute 16-bit unsigned integer that goes
from 0 to 2304 (0 to 576 kPa) 30005 Throttle position Throttle position in units of
percent open * 20.48
16-bit unsigned integer that goes from 0 to 2048 (0 to 100%) 30006 Fuel control valve Fuel Control Valve position * 20.48 in units of
percent open.
16-bit unsigned integer that goes from 0 to 2048 (0 to 100%) 30007 Bypass position Bypass position * 20.48 in units of percent
open
16-bit unsigned integer that goes from 0 to 2048 (0 to 100%) 30008 Coolant outlet temperature (Coolant outlet temperature in C + 40) * 8 16-bit unsigned integer that goes
from 0 to 1520 (-40 to 150° C) 30009 Spark timing 1 (Spark timing + 15) * 16 of 1st cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30010 Spark timing 2 (Spark timing +15) * 16 of 2nd cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30011 Spark timing 3 (Spark timing + 15) * 16 of 3rd cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30012 Spark timing 4 (Spark timing + 15) * 16 of 4th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30013 Spark timing 5 (Spark timing + 15) * 16 of 5th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30014 Spark timing 6 (Spark timing + 15) * 16 of 6th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30015 Spark timing 7 (Spark timing + 15) * 16 of 7th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30016 Spark timing 8 (Spark timing + 15) * 16 of 8th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30017 Spark timing 9 (Spark timing + 15) * 16 of 9th cylinder in the
firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30018 Spark timing 10 (Spark timing + 15) * 16 of 10th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30019 Spark timing 11 (Spark timing + 15) * 16 of 11th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30020 Spark timing 12 (Spark timing + 15) * 16 of 12th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30021 Spark timing 13 (Spark timing + 15) * 16 of 13th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) Table 2.40-5. Function Code 03 (4XXXX Messages) (Continued), (Part 2 of 2)
MODBUS® ADDRESS NAME ENGINEERING UNITS
30022 Spark timing 14 (Spark timing + 15) * 16 of 14th cylinder in the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30023 Spark timing 15 (Spark timing + 15) * 16 of 15th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30024 Spark timing 16 (Spark timing + 15) * 16 of 16th cylinder in
the firing order
16-bit unsigned integer that goes from 0 to 960 (-15 to 45° BTDC) 30025 Desired spark timing (Spark timing + 15) * 16 16-bit unsigned integer that goes
from 0 to 960 (-15 to 45° BTDC) 30026 Battery voltage Battery voltage * 16 16-bit unsigned integer that goes
from 0 to 640 (0 to 40 VDC) 30027 Intake manifold air
temperature (left bank)
(Intake manifold air temperature in C + 40) * 8
16-bit unsigned integer that goes from 0 to 1520 (-40 to 150° C) 30028 Oil temperature (Oil temperature in C + 40) * 8 16-bit unsigned integer that goes
from 0 to 2048 (-40 to 216° C)
30029 Reserved For Future Use
30030 Reserved For Future Use
30031 Reserved For Future Use
30032 Reserved For Future Use
30033 Setpoint rpm
Setpoint rpm * 4
Example: If register 30033 = 4000, then 4000/4 = 1000 rpm
16-bit unsigned integer that goes from 0 to 8800 (0 to 2200 rpm)
30034 IMAP left bank/rear Intake manifold pressure * 4 in units of kPa absolute
16-bit unsigned integer that goes from 0 to 2304 (0 to 576 kPa) 30035 IMAP right bank/front Intake manifold pressure * 4 in units of kPa
absolute
16-bit unsigned integer that goes from 0 to 2304 (0 to 576 kPa) 30036 Barometric pressure Barometric pressure * 16 in units of kPa 16-bit unsigned integer that goes
from 800 to1680 (50 to 105 kPa) 30037 Ambient temperature (Ambient temp. in Centigrade + 40) * 8 16-bit unsigned integer that goes
from 0 to 1120 (-40 to 100° C)
30038
30039 Digital input values
A 32-bit number representing the status of all of the 1XXXX messages
NOTE: For more information on addresses 30038–30039, see “Additional Information on MODBUS® Addresses 30038 – 30041” on page 2.40-9.
32-bit unsigned integer – full range
30040
30041 Digital output values
A 32-bit number representing the status of all of the 0XXXX messages
NOTE: For more information on addresses 30040–30041, see “Additional Information on MODBUS® Addresses 30038 – 30041” on page 2.40-9.
32-bit unsigned integer – full range
30042 Reserved For Future Use
30043 Reserved For Future Use
30044 Reserved For Future Use
30045 Reserved For Future Use
30046 Reserved For Future Use
30047 Engine power output Power * 2 in kW 16-bit unsigned integer that goes
from 0 to 23704 (0 to 11852 kW)
30048 WKI value (WKI -16) *16 16-bit unsigned integer that goes
from 0 to 2048 (16 to 144 WKI)
30049 Reserved For Future Use
30050 Actual O2 % %O2 * 200 16-bit unsigned integer that goes
from 0 to 4200 (0 to 21% O2)
30051 Reserved For Future Use
30052 Reserved For Future Use
30053 O2 heater block
temperature (Temperature in C + 40) * 2 16-bit unsigned integer that goes from 0 to 1840 (-40 to 880° C)
30054 Reserved For Future Use
30055 Desired O2 % %O2 * 200 16-bit unsigned integer that goes
from 0 to 4200 (0 to 21% O2) Table 2.40-6. Function Code 04 (3XXXX Messages) (Continued), (Part 2 of 4)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
30056 Reserved For Future Use
30057 Reserved For Future Use
30058 The ECU temperature (Temperature in Centigrade + 40) * 8 16-bit unsigned integer that goes from 0 to 1120 (-40 to 100° C)
30059 Reserved For Future Use
30060 Reserved For Future Use
30062 Engine torque % * 20.48 16-bit unsigned integer that goes
from 0 to 2560 (0 to 125%)
30063 Rated torque % * 20.48 16-bit unsigned integer that goes
from 0 to 2560 (0 to 125%) 30064 Spark reference number
cyl. #1 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30065 Spark reference number
cyl. #2 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30066 Spark reference number
cyl. #3 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30067 Spark reference number
cyl. #4 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30068 Spark reference number
cyl. #5 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30069 Spark reference number
cyl. #6 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30070 Spark reference number
cyl. #7 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30071 Spark reference number
cyl. #8 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30072 Spark reference number
cyl. #9 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30073 Spark reference number
cyl. #10 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30074 Spark reference number
cyl. #11 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30075 Spark reference number
cyl. #12 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30076 Spark reference number
cyl. #13 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30077 Spark reference number
cyl. #14 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30078 Spark reference number
cyl. #15 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30079 Spark reference number
cyl. #16 in firing order Value * 1 16-bit unsigned integer that goes from 0 to 255
30080 Reserved For Future Use
30081 Reserved For Future Use
30082 Reserved For Future Use
30083 Reserved For Future Use
30084 Oil temperature alarm limit (Oil temperature in C + 40) * 8 16-bit unsigned integer that goes from 0 to 2048 (-40 to 216 C) 30085 Oil temperature shutdown
limit (Oil temperature in C + 40) * 8 16-bit unsigned integer that goes from 0 to 2048 (-40 to 216 C) 30086 IMAT alarm limit (Intake manifold air temperature in C + 40) *
8
16-bit unsigned integer that goes from 0 to 1520 (-40 to 150 C) 30087 IMAT shutdown limit (Intake manifold air temperature in C + 40) *
8
16-bit unsigned integer that goes from 0 to 1520 (-40 to 150 C) 30088 Coolant temperature
alarm limit (Coolant temperature in C + 40) * 8 16-bit unsigned integer that goes from 0 to 1520 (-40 to 150 C) 30089 Coolant temperature
shutdown limit (Coolant temperature in C + 40) * 8 16-bit unsigned integer that goes from 0 to 1520 (-40 to 150 C) 30090 Gauge oil pressure
alarm limit Oil pressure * 2 in units of kPa gauge 16-bit unsigned integer that goes from 0 to 2204 (0 to 1102 kPa) Table 2.40-6. Function Code 04 (3XXXX Messages) (Continued), (Part 3 of 4)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
ADDITIONAL INFORMATION ON MODBUS® ADDRESSES 30038 – 30041
To save programming time, the value of MODBUS® address 30039 can be converted to binary to deter-mine the state of MODBUS® addresses 10001 through 10016, and the value of MODBUS® address 30041 can be converted to binary to determine the state of MODBUS® addresses 00001 through 00011.
Example 1
In this example, address 30039 has a value of 4105, and will be used to determine the status of MODBUS® addresses 10001 through 10016.
• Convert 4105 to a binary number. In binary 4105 = 1000000001001. The left-most digit in the binary number is known as the most significant digit. The right-most digit is the least significant digit.
• Each 0 or 1 corresponds to the current value of MODBUS® address 10001 through 10016 starting with the least significant digit being 10001.
• Comparing the values with Table 2.40-4. on page 2.40-4 in this section shows the following:
30091 Gauge oil pressure
shutdown limit Oil pressure * 2 in units of kPa gauge 16-bit unsigned integer that goes from 0 to 2204 (0 to 1102 kPa) 30092 HT coolant Pressure HT coolant pressure range * 2 units of kPa
gauge
16-bit unsigned integer that goes from 0 to 2304 (0 to 1152 kPa) 30093 Fuel pressure Fuel coolant pressure range * 2 units of kPa
gauge
16-bit unsigned integer that goes from 0 to 2304 (0 to 1152 kPa)
30094 Reserved For Future Use
30095 Gauge HT coolant Pressure HT coolant pressure gauge * 2 units of kPa gauge
16-bit unsigned integer that goes from 0 to 2204 (0 to 1102 kPa) 30096 Gauge coolant pressure HT coolant pressure range * 2 units of kPa
gauge
16-bit unsigned integer that goes from 0 to 2304 (0 to 1152 kPa) 30097 Gauge fuel pressure Fuel coolant pressure range * 2 units of kPa
gauge
16-bit unsigned integer that goes from 0 to 2304 (0 to 1152 kPa)
30098 Reserved For Future Use
30099 Oil filter differential pressure
Oil filter differential pressure range * 2 units of kPa gauge
16-bit unsigned integer that goes from 0 to 2304 (0 to 1152 kPa) Table 2.40-6. Function Code 04 (3XXXX Messages) (Continued), (Part 4 of 4)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
1 0 0 0 0 0 0 0 0 1 0 0
10016 0 Reserved for future use 10015 0 Reserved for future use
10014 0 Manual Mode
10013 1 Alternator OK
10012 0 User DIP 4 Inactive 10011 0 User DIP 3 Inactive 10010 0 User DIP 2 Inactive 10009 0 User DIP 1 Inactive
10008 0 Lockout Inactive
10007 0 Alternate Gov Dynamics Inactive 10006 0 Load Coming Digital Input Inactive 10005 0 Run Engine at Low Idle
10004 1 Remote RPM Select Active
10003 0 OK to Run
10002 0 OK to Run
10001 1 Start Engine Signal Active MODBUS® ADDRESSES
10001
Example 2
In this example, address 30041 has a value of 5, and will be used to determine the status of MODBUS® addresses 00001 through 00011.
• Convert 5 to a binary number. In binary 5 = 101.
The left-most digit in the binary number is known as the most significant digit. The right-most digit is the least significant digit.
• Each 0 or 1 corresponds to the current value of MODBUS® address 10001 through 10016 starting with the least significant digit being 10001.
• Comparing the values with Table 2.40-3. on page 2.40-4 in this section shows the following: