MODBUS ® (RS-485) COMMUNICATIONS
MODBUS ® EXCEPTION RESPONSES
The ECU will respond with exception responses wher-ever applicable and possible.
When a master device sends a signal to a slave device, it expects a normal response. Four possible responses can occur from a master’s signal:
• If the slave device receives the signal error-free and can handle the signal normally, a normal response is returned.
• If the slave device does not receive an error-free signal, no response is returned. The master pro-gram will eventually process a time-out condition for the signal.
• If the slave device receives the signal but detects an error, no response is returned. The master program will eventually process a time-out condition for the signal.
• If the slave device receives the signal error-free but cannot handle it, the slave will return an exception response informing the master of the nature of the error. See Table 2.35-3 for exception responses.
Table 2.35-2 MODBUS® Function Codes FUNCTION
01 Read Coil Status 0XXXX
02 Read Input Status 1XXXX
03 Read Holding Registers 4XXXX
04 Read Input Registers 3XXXX
Table 2.35-3 MODBUS® Exception Responses
CODE NAME MEANING
01 ILLEGAL
FUNCTION
The function code received in the signal is not an allowable action for the slave device.
02 ILLEGAL DATA ADDRESS
The data address received in the signal is not an allowable address for the slave device.
Table 2.35-4 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 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
ESM SYSTEM COMMUNICATIONS
Table 2.35-5 Function Code 02 (1XXXX Messages)
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 10013 Alternator Whether the engine-driven alternator is
operating correctly
1 = Alternator OK 0 = Alternator Not OK 10014 AFR Manual/Automatic
Status (Left Bank)
Whether the air/fuel ratio control is in manual 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.35-6 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)
ESM SYSTEM COMMUNICATIONS
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.35-6 Function Code 03 (4XXXX Messages) (Continued), (Part 2 of 2)
MODBUS® ADDRESS NAME ENGINEERING UNITS
ESM SYSTEM COMMUNICATIONS
Table 2.35-7 Function Code 04 (3XXXX Messages) (Part 1 of 3)
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 Reserved For Future Use
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)
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) * 816-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
ESM SYSTEM COMMUNICATIONS
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 Reserved For Future Use
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.35-12.
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.35-12.
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 Reserved For Future Use
30051 Reserved For Future Use
30052 Reserved For Future Use
30053 Reserved For Future Use
30054 Reserved For Future Use
30055 Reserved For Future Use
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
30061
The rpm modification value from a Woodward™
Generator control
(rpm + 250) * 4 16-bit unsigned integer that goes from 0 to 2000 (-250 to 250 rpm)
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
Table 2.35-7 Function Code 04 (3XXXX Messages) (Continued), (Part 2 of 3)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
ESM SYSTEM COMMUNICATIONS
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 AFR kW power output observed
power * 8 in kW 16-bit unsigned integer that goes from 0 to 57142 (0 to 7142.75 kW)
30082
AFR kW power output desired (1st exhaust) Note: There will be only one exhaust (AFR_LEFT_BANK) when kW sensing is used.
power * 8 in kW 16-bit unsigned integer that goes from 0 to 40000 (0 to 5000 kW)
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) * 816-bit unsigned integer that goes from 0 to 1520 (-40 to 150 C)
30087 IMAT Shutdown Limit (Intake manifold air temperature in C + 40) * 816-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)
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 Reserved For Future Use
30093 Reserved For Future Use
30094 Normalized generator power
output Normalized power * 1024 (no units) 16-bit unsigned integer that goes from 0 to 1024 (0 to 1, no units)
30095 Reserved For Future Use
Table 2.35-7 Function Code 04 (3XXXX Messages) (Continued), (Part 3 of 3)
MODBUS® ADDRESS NAME SCALING ENGINEERING UNITS
ESM SYSTEM COMMUNICATIONS
Table 2.35-8 Optional I/O Junction Box Data Table – Function Code 02 (1XXXX Messages) SixNet
I/O Address
MODBUS®
Address NAME DESCRIPTION ENGINEERING
UNITS
OPTION
CODES COMMENTS