Professional Documents
Culture Documents
Communications Guide
Including:
MultiLoad II
MultiLoad II SMP
MultiLoad II Mobile
Part # 6077
Firmware Version 3/4.31.00
March 2011
Copyright Notice
Copyright 2000 - 2011 Toptech Systems, Inc.
The information contained in this document is proprietary and confidential. No part of this document may be copied, reproduced, or
transmitted in any medium without the express written permission of Toptech Systems, Inc.
Disclaimer
Toptech Systems assumes no responsibility for damages resulting from installation or use of its products. Toptech Systems will not be liable
for any claims of damage, lost data, or lost time as a result of using its products.
Toptech
Systems, Inc.
logo is a registered trademark of Toptech Systems, Inc.
TMS, TMS5, TMS6, RCU II Remote Control Unit, Toptech MultiLoad II, MultiLoad II -RCU, MultiLoad II
1-Arm, MultiLoad II - SMP, FCM Flow Control Module are trademarks of Toptech Systems, Inc.
Copyright 2000 - 2011 Toptech Systems, Inc. All Rights Reserved.
Table of Contents
CHAPTER 1
PROTOCOL SPECIFICATION ..................................................................................................... 6
1.1
DEFINITIONS ............................................................................................................................................ 6
1.2
SMITH PROTOCOL .................................................................................................................................... 7
1.3
BROOKS PROTOCOL ................................................................................................................................. 7
1.4
DANIELS PROTOCOL ................................................................................................................................. 7
1.5
MODBUS-RTU PROTOCOL ........................................................................................................................ 8
1.5.1 Read Holding Registers (fn=3) .......................................................................................................... 8
1.5.2 Write Single Registers (fn=6)............................................................................................................. 8
1.5.3 Loopback/Maintenance (fn=8) ........................................................................................................... 9
1.5.4 Preset Multiple Registers (fn=16) ...................................................................................................... 9
1.5.5 Error Responses (fn= +128) .............................................................................................................. 9
1.5.6 Modbus Register Map Summary ..................................................................................................... 10
1.5.7 Extended Services Register ............................................................................................................ 10
CHAPTER 2
CHAPTER 3
CHAPTER 4
CHAPTER 5
TERMINAL COMMANDS: .......................................................................................................... 15
5.1
TERMINAL ESCAPE COMMANDS:.............................................................................................................. 15
CHAPTER 6
METER COMMANDS: ................................................................................................................ 20
6.1
AUTHORIZE PRESET (PRODUCT AND PRESET VOLUME): ........................................................................... 20
6.2
CLEAR ALARMS: ..................................................................................................................................... 20
6.3
ENABLE PRESET .................................................................................................................................... 20
6.4
END TRANSACTION................................................................................................................................. 20
6.5
BATCH COMPLETE .................................................................................................................................. 21
6.6
BATCH END:........................................................................................................................................... 21
6.7
END BATCH:........................................................................................................................................... 21
6.8
PRESET MESSAGE: ................................................................................................................................ 22
6.9
PROVING TRANSACTION MODE: .............................................................................................................. 22
6.10
REQUEST STATUS & PRESET ALARMS: .................................................................................................... 23
6.11
REQUEST SMP STATUS & PRESET ALARMS: ........................................................................................... 46
6.12
TRIP PRESET ALARMS: ........................................................................................................................... 46
6.13
REQUEST BAY ALARMS: ......................................................................................................................... 47
6.14
REQUEST COMPONENT ALARMS: ............................................................................................................ 48
6.15
REQUEST METER ALARMS: ..................................................................................................................... 49
6.16
REQUEST ADDITIVE ALARMS: .................................................................................................................. 50
6.17
START PRESET FLOW : ............................................................................................................................ 51
6.18
STOP PRESET FLOW: ............................................................................................................................. 51
CHAPTER 7
REGISTER OPERATIONS: ........................................................................................................ 52
7.1
GENERIC REGISTERS ............................................................................................................................. 53
7.1.1 Register Data Types ........................................................................................................................ 53
CHAPTER 8
COMMUNICATION TRACE EXAMPLE ................................................................................... 102
8.1
STARTUP OF HOST SOFTWARE ............................................................................................................. 102
8.1.1 Update Date & Time ...................................................................................................................... 102
8.1.2 Update Product Definitions ............................................................................................................ 102
8.1.3 Update Preset Definitions .............................................................................................................. 103
8.1.4 Status Query .................................................................................................................................. 103
8.2
TRANSACTION AUTHORIZATION ............................................................................................................. 104
8.2.1 Process Driver Card In .................................................................................................................. 104
8.2.2 Authorize a Transaction on MultiLoad ........................................................................................... 105
8.2.3 Reading Totalizers ......................................................................................................................... 105
8.3
BATCH AUTHORIZATION ........................................................................................................................ 106
8.3.1 Authorize a Batch on MultiLoad ..................................................................................................... 106
8.3.2 Monitor Load During Delivery ........................................................................................................ 108
8.4
END OF BATCH PROCESSING ................................................................................................................ 108
8.4.1 Ending a Batch on MultiLoad......................................................................................................... 108
8.5
END OF TRANSACTION PROCESSING ..................................................................................................... 109
8.5.1 Ending a Transaction on MultiLoad ............................................................................................... 109
8.6
SHUTDOWN OF HOST SOFTWARE .......................................................................................................... 109
CHAPTER 9
DATA COMMUNICATION NOTES AND RECOMMENDATIONS ........................................... 110
9.1
PROTOCOL SELECTION: RS-232 VS. RS-485 ........................................................................................ 110
9.1.1 RS-232 ........................................................................................................................................... 110
9.1.2 RS-485 ........................................................................................................................................... 110
9.2
CABLE SELECTION................................................................................................................................ 110
9.3
LINE TERMINATION IN MULTI-DROPPED COMMUNICATIONS ..................................................................... 110
9.4
OPTICAL ISOLATION .............................................................................................................................. 111
9.5
SHIELD GROUNDING ............................................................................................................................. 111
CHAPTER 1
PROTOCOL SPECIFICATION
The MultiLoad auto-detects four low level computer protocols for host communications.
- Smith Protocol
- Brooks Protocol
- Daniels
- Modbus-RTU Protocol
Note: All unknown or not allowed signal or code sequences are rejected and have no impact on the
software or measurement data.
Host communication can occur via multi-dropped RS-232/RS-485 serial on COM 1 or Ethernet 10/100 socket
communication on port 7734.
1.1
DEFINITIONS
The non-printing characters that form the skeleton of the Smith and Brooks protocols are standard ASCII
(American Standard Code Information Interchange):
ASCII CHARACTER
DECIMAL
HEX
BINARY
NUL
00000000
STX
00000010
ETX
00000011
SOH
00000001
PAD
127
7F
01111111
CHARACTER
DESCRIPTION
BCC
Block Check Characters. The ASCII hex representation of the binary sum of all
the data in the message from the SOH through the ETX character.
LRC
CRC
A1..A3
D1..Dn
Fn
Adr
1.2
SMITH PROTOCOL
The Smith protocol is compatible with devices from Smith Meter, such as the Accuload I and Accuload II mini
computer modes of operation. Using this protocol, MultiLoad accepts data in the format:
NUL
STX
A1
A2
data
ETX
LRC
PAD
A1 and A2 are the last two digits of the unit address in the RCU configuration.
1.3
BROOKS PROTOCOL
The Brooks protocol is compatible with devices from Brooks Instruments such as their Petrocount RAU and
IMS Control units running in computer mode. Using this protocol, MultiLoad accepts data in the format:
SOH
DESTINATION
A1
1.4
A2
A3
SOURCE
S1
S2
STX
data
ETX
S3
BCC
1
BCC
2
DANIELS PROTOCOL
The Daniels protocol is compatible with devices from Daniels Flow Products. Using this protocol, MultiLoad
accepts and responds with data in the format:
Quiet
Time
ADR
FN
LEN
(2 252)
D1...DN
CRC1
CRC2
Quiet
Time
Daniels protocol messages are framed by a quiet time of three and one-half characters.
Note: Modbus extention to return larger packet sizes: On messages with data packet sizes from 2 to 252
characters the Fn values of 0x41/0x42 will be returned. With messages outside this range, Fn will be the MSB
value of the data size and the Len will be LSB of the data size.
For Example:
Fn = 0x41, Len = 0x80, when data packet size = 0x0080,
Fn = 0x42, Len = 0x80, when data packet size = 0x0080,
Fn = 0x00, Len = 0xFF, when data packet size = 0x00FF ( 255),
Fn = 0x01, Len = 0x00, when data packet size = 0x0100 ( 256),
Fn = 0x01, Len = 0x01, when data packet size = 0x0101 ( 257),
Fn = 0x02, Len = 0x00, when data packet size = 0x0200 ( 512),
Fn = 0x04, Len = 0x00, when data packet size = 0x0400 (1024),
Fn = 0x08, Len = 0x00, when data packet size = 0x0800 (2048).
1.5
MODBUS-RTU PROTOCOL
The Modbus-RTU protocol has been implemented to be as compatible as possible with the original published
Modicon Modbus-RTU standard.
Note: The Modbus protocol allows parameter register access only as defined by the explicit mapping in
this manual. To send the ASCII commands (R000, T`A, MAM, MRS, etc.) that are handled by the other
three protocols, the Modbus Extended Services registers must be used.
Using the modbus protocol, MultiLoad accepts data in the following format:
Quiet
Time
ADR
FN
...
CRC1
CRC2
Quiet
Time
Modbus-RTU protocol messages are framed by a quiet time of three and one-half characters.
ADR is binary character of the address of the MultiLoad. Typically 0x01.
Fn is the Modbus function. Functions implemented are as follows.
The formal specification of Modbus lists the starting Holding Register address as 40001. The Modbus
Holding Register functions (Fn 3, 6 and 16) all have an implied 4XXXX reference. Referencing Holding
Register 40001 is addressed as register 0000 in the register address field in the message for fn 3, 6, and
16.
Since Modbus addressing has been implemented in various ways over the years, to avoid confusion in
this manual, the Modbus Holding Register addresses listed are the value in the register address field in
the message. If it is necessary to know the formal Modbus Holding Register address, simply add 40001
to the register addresses listed in the manual.
1.5.1
Tx:
Number
Quiet Time
ADR
FN=3
Start
Register
MSB
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
CRC1
CRC2
Quiet Time
Rx:
FN=3
Quiet
Time
1.5.2
ADR
(+128 if
error)
Byte
Count
1st
Register
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
CRC1
CRC2
Quiet
Time
Tx:
Quiet Time
ADR
FN=6
ADR
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Register
Register
MSB
LSB
Start
Register
MSB
Start
Register
LSB
Register
Register
MSB
LSB
CRC1
CRC2
Quiet Time
CRC1
CRC2
Quiet Time
Rx:
FN=6
Quiet Time
1.5.3
LOOPBACK/MAINTENANCE (FN=8)
Note: only loopback of command supported.
Tx:
Quiet Time
ADR
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
CRC1
CRC2
Quiet Time
ADR
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
CRC1
CRC2
Quiet Time
Rx:
Quiet Time
1.5.4
Tx:
Number
Quiet
Time
ADR
FN=16
Start
Register
MSB
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
1st
Register
MSB
Byte
Count
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
CRC1
CRC2
Quiet
Time
Rx:
FN=16
Quiet Time
1.5.5
ADR
(+128 if
error)
Number
Start
Register
MSB
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
CRC1
CRC2
Quiet Time
Rx:
Quiet Time
ADR
FN+128
Error
Subcode
CRC2
CRC1
1.5.6
1.5.7
Not all commands native to the MultiLoad II have corresponding mapping to Modbus registers. The Extended
Services register was implemented as a way to support sending and receiving native Multiload II commands
across the Modbus RTU interface. Any native command listed can be sent to the MultiLoad via the extended
Services Register.
Modbus Registers:
Write Holding Register=9000, Len=1, 16-Bit Integer (Command Length)
Write Holding Register=9001, Max Len=999, Characters (Command Text)
Read Holding Register=9000, Len=2, 32-Bit Integer (Reply Length)
Read Holding Register=9001, Max Len=999, Characters (Reply Text)
Perform the following operations to use of the Extended Services Register:
1. Write the Command Length into the Holding Register 9000 (max value of 999 characters).
2. Write the Command Text into the Holding Register 9001 (max length of 999).
3. Command will execute when the final character of the Command Text is written (9001+Command
Length-1).
4. Read the Reply Length from the Holding Register 9000 (max value of 999 characters).
5. Read the Reply Text from the Holding Register 9001 (max length of 999).
Steps 1 & 2 can be done with a single Modbus Function 16.
Steps 4 & 5 can be done with a single Modbus Function 3.
10
CHAPTER 2
11
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
'0',
'4',
'9',
'%',
'A',
'B',
'C',
'D',
'E',
'P',
'R',
'T',
'?',
'!',
'I',
'N',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
REMOTE_AUTH_PRESET9
REMOTE_AUTH_PRESET10
REMOTE_AUTH_PRESET11
REMOTE_AUTH_PRESET12
REMOTE_AUTH_PRESET13
REMOTE_AUTH_PRESET14
} rcu_status;
12
=
=
=
=
=
=
'i',
'j',
'k',
'l',
'm',
'n'
Modbus:
Read Only Register=7000, Len=1, Character (rcu_status)
enum
{
CARD_NOT_INSERTED
CARD_INSERTED
} card_status;
=0,
=1
Modbus:
Read Only Register=7001, Len=1, Character (card_status)
In most cases a command will return additional information specific to the command. This information will
always follow the three status characters. For example if the following valid command to read the current
firmware version is sent:
Command
R000
=>
=>
Response
0?0000MultiLoad II v3.29.xx Jan xx 2009
With 0?0 as the three status characters and 000MultiLoad II v3.29.xx Jan xx 2009 as the command specific
response.
CHAPTER 3
13
QUERY COMMAND:
Query Command
=>
Response
Q
=>
0?0XXXX
Where:
XXXX = 4 digit hexadecimal number with bits representing the rcu_status as:
union
{
unsigned int value;
struct
{
unsigned char rcu_trans_header:1;
unsigned char proving_mode:1;
unsigned char power_up:1;
// indicated system has been powered on
unsigned char configured:1;
// indicates configuration state
unsigned char unassigned_keypress_on_load_screen:1;
unsigned char logmsg_queued:1;
// a log message is available
unsigned char unused6:1;
unsigned char unused7:1;
unsigned char wm_logmsg_queued:1;
// a w&m log message is available
unsigned char host_up:1;
// host system is up, card in will be allowed.
unsigned char input_in_progress:1;
unsigned char input_done:1;
unsigned char unused12:1;
unsigned char reserved13:1;
unsigned char wm_key:1;
// W&M key is active
unsigned char program_key:1;
// Program key is active
} flags;
} rcu_status;
This command also resets the Host Down Timer and should be issued periodically to notify MultiLoad that the
Host is still active.
Modbus:
Read Only Register=7002, Len=1, 16-Bit Integer (XXXX)
CHAPTER 4
14
FUNCTION COMMANDS:
FREBOOT
=
Performs a software reboot of the MultiLoad RCU.
FFACTORY
=
Restores all MultiLoad registers to factory defaults.
FUPDATEAPPFLASH =
Updates the Flash with an uploaded image (req. W&M and a valid image)
Modbus:
Supported through Modbus Extended Services Registers.
FUNCONFIG
=
Clears the configured RCU status bit.
FRECONFIG
=
Sets the configured RCU status bit.
Modbus:
Write Only Register=7010, Len=1, 16-Bit Integer (any value=FUNCONFIG)
Write Only Register=7011, Len=1, 16-Bit Integer (any value=FRECONFIG)
FPOWERUP
=
Resets the power_up RCU status bit. This bit is set on power up.
Modbus:
Write Only Register=7012, Len=1, 16-Bit Integer (any value=FPOWERUP)
FHOSTUP
Sets the host_up RCU status bit. Cleared on power up or when host down
timeout expires between Q commands. Command should be issued when host
system starts communicating with MultiLoad.
Modbus:
Write Only Register=7013, Len=1, 16-Bit Integer (any value=FHOSTUP)
FHOSTDOWN
Clears the host_up RCU status bit. Command should be issued when host
system stops communicating with MultiLoad.
Modbus:
Write Only Register=7014, Len=1, 16-Bit Integer (any value=FHOSTDOWN)
FHOSTWAIT
=
Bypass host down timer once with alternate timeout.
Modbus:
Write Only Register=7015, Len=1, 16-Bit Integer (any value=FHOSTUP)
FPccc.
FCLEARPROD
=
=
FCLEARID
=
FCLEARCUSTOM
=
Modbus:
Supported through Modbus Extended Services Registers.
CHAPTER 5
TERMINAL COMMANDS:
Ts
Where:
s = Any text string to display. Display string may contain one or more terminal escape commands.
5.1
Authorize Transaction:
Authorize MultiLoad Transaction. Will display load screen.
Modbus:
Write Only Register=7016, Len=1, 16-Bit Integer (any value=Authorize Transaction)
Cx
15
Custom 1
= 0x09 (Not available)
Custom 2
= 0x0a (Not available)
Custom 3
= 0x0b (Not available)
Custom 4
= 0x0c (Not available)
Custom 5
= 0x0d (Not available)
Flash 1
= 0x0e
Flash 2
= 0x0f
Example: To display a green word 'Hello' code the string as follows:
T<ESC>G$Hello
$ = 0x20 + 0x04 (Green)
= 0x20 + 0x07 (White)
H
Ircle
Lxx
Turn On Cursor
R
Reset the RCU Display
Modbus:
Write Only Register=7017, Len=1, 16-Bit Integer (any value=Reset RCU Display)
Yrc
16
<
>
df
ercwd
Draw Display Graphic
Where:
r = (character) 0x20 + Top Text Row Position (0 = top, 15 = bottom)
c = (character) 0x20 + Left Text Column Position (0 = left, 39 = right)
w = (character) 0x20 + Width in Text Columns
d = (character) 0x20 + pixel color palette index values from left to right, top to bottom,
Note: Each text column = 16 pixels wide, each text row = 30 pixels high
Pixel color palette index values defined as:
17
Black = 0x00
Blue
= 0x01
Red
= 0x02
Magenta
= 0x03
Green = 0x04
Cyan = 0x05
Yellow = 0x06
White = 0x07
Custom 0
= 0x08 (Not available)
Custom 1
= 0x09 (Not available)
Custom 2
= 0x0a (Not available)
Custom 3
= 0x0b (Not available)
Custom 4
= 0x0c (Not available)
Custom 5
= 0x0d (Not available)
Flash 1 = 0x0e
Flash 2 = 0x0f
Example: To position a small graphic starting at row 5, column 20, column width 2, code the string as
follows:
T<ESC>e%4
$$$$$$
$$$
$$$$
$$$$$$$$
$$$$$$$$$$
Note: formatted for illustration only, there are no spaces or CRs in the above command.
'%' = 0x20 + 5
'4' = 0x20 + 20
= 0x20 + 2
= 0x20 + 0x07 (White) $ = 0x20 + 0x04 (Green)
grcwhc Fill Box with a Color
Where:
r = (character) 0x20 + Top Text Row Position (0 = top, 15 = bottom)
c = (character) 0x20 + Left Text Column Position (0 = left, 39 = right)
w = (character) 0x20 + Width in Text Columns
h = (character) 0x20 + Height in Text Columns Down
c = (character) 0x20 + color palette index value
Pixel color palette index values defined as:
Black
= 0x00
Blue
= 0x01
Red
= 0x02
Magenta
= 0x03
Green
= 0x04
Cyan
= 0x05
Yellow
= 0x06
White
= 0x07
Custom 0
= 0x08 (Not available)
18
Custom 1
Custom 2
Custom 3
Custom 4
Custom 5
Flash 1
Flash 2
19
Modbus:
Supported through Modbus Extended Services Registers.
CHAPTER 6
6.1
20
METER COMMANDS:
MAMpppaiiivvvvvvvvvcc
Where:
ppp = The specified zero-based preset or load arm number (000-011).
a = Authorize bit, 0 = Cancel Authorization, 1 = Authorize.
iii = Product Index (500 register) for the authorized product.
vvvvvvvvv = Preset volume.
cc = Compartment number.
Note: Will only accept Authorize Preset command when in REMOTE_AUTH_PRESET state or when preset is
authorized and a batch not already authorized.
Modbus:
Write Only Register=7500+5*ppp, Len=1, 16-Bit Integer (iii)
Write Only Register=7501+5*ppp, Len=2, 32-Bit Integer (vvvvvvvvv)
Write Only Register=7503+5*ppp, Len=1, 16-Bit Integer (cc)
Write Only Register=7504+5*ppp, Len=1, 16-Bit Integer (a)
Note: Last Authorize Preset Register Used=7559
6.2
CLEAR ALARMS:
MCAppp
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Modbus:
Write Only Register=7020+ppp, Len=1, 16-Bit Integer (any value)
6.3
ENABLE PRESET
MEMpppa
Where:
ppp = The specified zero-based preset or load arm number (000-011).
a = Enable Flag, 0 = Disabled, 1 = Enabled/Not Available, 2 = Available
Modbus:
Write Only Register=7032+ppp, Len=1, 16-Bit Integer (a)
6.4
END TRANSACTION
MET
When an ET command is received, a forced card out will occur.
Note: The Host will still need to send a MEB command for each preset that reaches a
PRESET_END_OF_BATCH state.
Modbus:
Write Only Register=7044, Len=1, 16-Bit Integer (any value)
6.5
BATCH COMPLETE
MBCppp
Where:
ppp = The specified zero-based preset or load arm number (000-011).
When a BC command is received, the preset flow will stop and the batch will be marked as complete. The
operator will not be able to restart the batch, but will be allowed to clear the batch and preset another (pending
Host authorization).
Modbus:
Write Only Register=7045+ppp, Len=1, 16-Bit Integer (any value)
6.6
BATCH END:
MBEppp
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Command used to start end batch processing and to transition state to PRESET_END_OF_BATCH when flow
stops and final values are received.
Note: Typical end of batch command order is:
MSMppp (tell Multiload to stop flow)
MBCppp (tell Multiload to mark batch as complete, no further flowing on batch)
MBEppp (tell Multiload to get ready for total pickup)
wait for state==PRESET_END_OF_BATCH (ok to get totals)
MRSppp to get totals
MEBppp (ok to clear totals on Multiload)
Modbus:
Write Only Register=7057+ppp, Len=1, 16-Bit Integer (any value)
6.7
END BATCH:
MEBppp
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Command is used to finish end-of-batch processing and that totals can be cleared.
Modbus:
Write Only Register=7069+ppp, Len=1, 16-Bit Integer (any value)
21
6.8
PRESET MESSAGE:
MPMpppssssssssssddddddddddddddddddddddddddddddddddddddd
Where:
ppp = The specified zero-based preset or load arm number (000-011).
ssssssssss = 10 Character Message.
ddddddddddddddddddddddddddddddddddddddd = 39 Character Detail Message.
Displays a message for the particular preset. A detail message will be displayed when the preset is selected.
Driver and acknowledge and clear the message by pressing CLR key.
Modbus:
Only supported through Modbus Extended Services Registers.
6.9
MPTx
When:
x = Mode Status 0 = Off, 1 = On. Default Off when transaction is authorized.
Command is used to indicate when a card in is done with a proving card and meter proving may be done during
this transaction.
Modbus:
Write Only Register=7081, Len=1, 16-Bit Integer (x)
22
6.10
23
24
25
26
27
= 0,
= 1,
= 2,
= 3,
= 4,
= 5,
= 6,
= 7,
= 8,
= 9,
= 10,
= 11,
= 12,
= 13,
= 14,
= 15,
= 16,
= 17,
= 18,
= 19
28
// preset is enabled
// preset enabled by host
// preset available for use
// flow state is not idle
// product & preset has been authorized
// remote message active
// remote descriptive message active
// no further loading on batch can be done
// MBE command processing started
// MBE command processing done
// MEB command received
// batch data has been archived into
transaction database
// batch has been cleared
// load clear has been issued
// load has been cleared
// transaction is done
29
30
units
Note: if the Use Hundredths W&M RCU parameter is enabled, the gross and net quantity value will have an implied two decimal places.
per meter(5):
ddddddddd = meter delivered gross quantity in whole units
Note: if the Use Hundredths W&M RCU parameter is enabled, the gross quantity value will have an implied two decimal places.
31
per component(8):
ddddddddd = delivered gross quantity in whole units
ddddddddd = delivered net quantity in whole units
Note: if the Use Hundredths W&M RCU parameter is enabled, the gross and net quantity value will have an implied two decimal places.
32
per additive(16):
ddddddddd = delivered quantity in thousands
Modbus :
Where: p = preset (0-11), a = additive (0-11)
Read Only Register=5908+p*16+a, Len=2, 32-Bit Integer (ddddddddd (delivered quantity in thousands))
33
Query 1 Responses:
xxxx= preset status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char preset_enabled:1;
unsigned char preset_host_enabled:1;
unsigned char authorized:1;
unsigned char flow_active:1;
unsigned char batch_authorized:1;
unsigned char remote_msg:1;
unsigned char remote_desc:1;
unsigned char load_complete:1;
unsigned char end_batch:1;
unsigned char end_batch_done:1;
unsigned char tms_got_data:1;
unsigned char archived:1;
unsigned char batch_cleared:1;
unsigned char clearing_load:1;
unsigned char load_cleared:1;
unsigned char trans_done:1;
} flags:
} preset_status_0;
34
// preset is enabled
// preset enabled by host
// preset available for use
// flow state is not idle
// product & preset has been authorized
// remote message active
// remote descriptive message active
// no further loading on batch can be done
// MBE command processing started
// MBE command processing done
// MEB command received
// batch data has been archived into
transaction database
// batch has been cleared
// load clear has been issued
// load has been cleared
// transaction is done
35
36
per meter(6):
xxxx= meter status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char program_clear_errors:1;
unsigned char remote_clear_errors:1;
unsigned char driver_clear_errors:1;
unsigned char clearing_errors:1;
unsigned char clear_totals:1;
unsigned char start_flow:1;
unsigned char stop_flow:1; ;
unsigned char high_flow:1;
unsigned char upstream_valve:1;
unsigned char downstream_valve:1;
unsigned char alarm_out:1;
unsigned char authorized:1;
unsigned char permissive:1;
unsigned char permissive_out:1;
unsigned char wm_clear_errors:1;
unsigned char unused0_15:1;
} flags:
} meter_status_0;
37
38
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
39
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
per component(8):
xxxx= component status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char program_clear_errors:1;
unsigned char remote_clear_errors:1;
unsigned char driver_clear_errors:1;
unsigned char clearing_errors:1;
unsigned char clear_batch:1;
unsigned char remote_start_button:1;
unsigned char pump_run:1;
unsigned char pump_kill:1;
unsigned char pump_status:1;
unsigned char open_blk_val:1;
unsigned char blk_val_status:1;
unsigned char close_blk_val:1;
unsigned char alarm_out:1;
unsigned char authorized:1;
unsigned char permissive:1;
unsigned char permissive_out:1;
} flags:
} component_status_0;
40
41
42
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
per additive(16):
xxxx= additive status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char program_clear_errors:1;
unsigned char remote_clear_errors:1;
unsigned char driver_clear_errors:1;
unsigned char clearing_errors:1;
unsigned char clear_batch:1;
unsigned char test_button:1;
unsigned char pump_run:1;
unsigned char pump_kill:1;
unsigned char pump_status:1;
unsigned char open_blk_val:1;
unsigned char blk_val_status:1;
unsigned char close_blk_val:1;
unsigned char flush_pump_run:1;
unsigned char alarm_out:1;
unsigned char authorized:1;
unsigned char permissive:1;
} flags:
} additive_status_0;
43
44
45
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
// future use
6.11
6.12
46
47
Modbus:
Write Only Register=7082+ppp, Len=1, 16-Bit Integer (yyyy)
6.13
6.14
48
6.15
49
6.16
50
6.17
MMSppp
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Starts flow for the particular preset. A message is placed into the Message Log when this command is
executed.
Modbus:
Write Only Register=7443+ppp, Len=1, 16-Bit Integer (any value)
6.18
MSMpppssssssssssddddddddddddddddddddddddddddddddddddddd
Where:
ppp = The specified zero-based preset or load arm number (000-011).
ssssssssss = 10 Character Optional Message.
ddddddddddddddddddddddddddddddddddddddd = 39 Character Optional Detail Message.
Stops flow and displays a message for the particular preset. A detail message will be displayed when the preset
is selected. Driver and acknowledge and clear the message by pressing CLR key.
Modbus:
Write Only Register=7455+ppp, Len=1, 16-Bit Integer (any value)
Stop Preset Message only supported through Modbus Extended Services Register.
51
CHAPTER 7
52
REGISTER OPERATIONS:
=>
=>
=>
=>
=>
Response
<status><register/sub-registers><register value(s)>
0?00004000000001
0?0104021000001000000020
1?0999 (invalid register!)
=>
Response
<status><register/sub-registers>
=>
0?0004
=>
0?0104021000001
=>
1?0999 (invalid register or value!)
MultiLoad contains literally hundreds of registers that configure everything from message toggling delay to meter
factors. All of these registers are accessed using the same two commands.
To read the value of a register the command is R followed by the register and sub register numbers. The
response will be the register and sub register numbers, followed by the register value. The value may be up to
9 decimal digits.
To update the value of a register the command is U followed by the register and sub register numbers and the
value to be stored.
While almost all registers can be read or updated, a few have only read access. Many others have protection
that prevents updates while a transaction is in process, host system is up, or when Weights & Measures security
is in effect.
7.1
GENERIC REGISTERS
7.1.1
53
All registers are read and updated as positive integers even when values expressed are non positive or
fractional. In some cases a several values are concatenated bit-wise to form the register value.
unsigned int Unsigned integer value.
Numeric Value
Register Value
12345
12345
unsigned div10 Unsigned numeric value with 1 decimal place.
Numeric Value
Register Value
1234.5
12345
unsigned div100 Unsigned numeric value with 2 decimal places.
Numeric Value
Register Value
123.45
12345
unsigned div1000 Unsigned numeric value with 3 decimal places.
Numeric Value
Register Value
12.345
12345
unsigned div10000 Unsigned numeric value with 4 decimal places.
Numeric Value
Register Value
1.2345
12345
percent Unsigned percent value with 2 decimal places.
Numeric Value
Register Value
123.45%
12345
percent div 10000 Unsigned percent value with 4 decimal places.
Numeric Value
Register Value
1.2345%
12345
signed int Signed integer value.
Numeric Value
+12345
+0
+1
+32767
-32768
-1
Register Value
12345
0
1
32767
32768
65535
+1234.5
+0.0
+0.1
+3276.7
-3276.8
-0.1
54
12345
0
1
32767
32768
65535
KILOGRAMS
GRAMS
POUNDS
BARRELS
NO_MEASURE
LITERS
DECALITERS
55
= 4,
= 5,
= 6,
= 7,
= 8,
= 9,
= 10,
};
api table name Enumerated api table name values.
enum{ //
Enumerated Value
Register Value
NONE
= 0,
TABLE_6A
= '1',
TABLE_6B
= '2',
TABLE_6C
= 'F',
TABLE_6D
= 'U',
TABLE_7
= 'M',
TABLE_8
= 'H',
TABLE_23E
= 'a',
TABLE_24A
= '3',
TABLE_24B
= '4',
TABLE_24E
= 'S',
TABLE_26
= 'B',
TABLE_34
= '7',
TABLE_53A
= 'Q'
TABLE_53B
= 'R'
TABLE_53D
= 'Y'
TABLE_54
= 'A',
TABLE_54A
= '5',
TABLE_54B
= '6',
TABLE_54BE
= 'P',
TABLE_54C
= '8',
TABLE_54D
= 'X',
TABLE_59E
= 'b',
TABLE_60A
= 'C',
TABLE_60B
= 'D',
TABLE_60D
= 'E',
TABLE_60o
= 'c',
TABLE_901A
= 'd',
TABLE_TEC
= '9',
TABLE_TEC_ETH
= 'G',
TABLE_I
= 'I',
TABLE_J
= 'J',
TABLE_K
= 'K',
TABLE_L
= 'L',
TABLE_O
= 'O',
TABLE_1122
TABLE_1122M
56
= 'T',
= 'W',
};
Note: Register value is still an integer value not an ascii char. For example, to specify TABLE_54, the ascii
value of A or 65 would be the register value, not the characterA.
TIME_6_HOURS
TIME_12_HOURS
TIME_24_HOURS
};
57
= 8,
= 9,
= 10,
58
Register Value
= 0,
= 1,
=2
7.1.2
Prefix
59
R/U
004
R/U
008
R/U
Date Type
Min
Max
Default
Value
Value
Value
Modbus
Protection
Register
Len=2
disable/enable
Enabled
General
1008
Driver Language
language
English
General
1016
009
language
English
General
1018
R/U
010
Card Reader
disable/enable
Enabled
General
1020
R/U
011
unsigned int
General
1022
R/U
012
Remote Processing
disable/enable
Enabled
General
1024
R/U
013
unsigned int
60
General
1026
R/U
014
unsigned int
60
10
General
1028
R/U
015
unsigned int
10000
200
General
R/U
016
Auto Authorize
disable/enable
Disabled
General
1032
R/U
017
MM/DD/YY Date
disable/enable
Enabled
W&M
1034
R/U
018
disable/enable
Disabled
General
1036
R/U
019
disable/enable
Enabled
General
1038
R/U
020
Measure Used
measures
Gallons
W&M
1040
R/U
021
unsigned int
General
1042
R/U
022
Compartment Entry
disable/enable
Disabled
General
1044
R/U
023
unsigned int
20
General
1046
R/U
024
Print Totalizers
None
General
1048
R/U
025
unused
R/U
026
Large Prompts
disable/enable
Disabled
General
1052
R/U
027
disable/enable
Disabled
General
1054
R/U
028
disable/enable
Disabled
General
1056
R/U
029
Display Hundredths
disable/enable
Disabled
General
1058
R/U
030
Use Hundredths
disable/enable
Disabled
W&M
1060
R/U
031
unused
R/U
032
Print Ticket
disable/enable
Disabled
General
1064
R/U
033
disable/enable
Enabled
General
1066
R/U
034
disable/enable
Disabled
General
1068
R/U
035
Ticket PCM
unsigned int
32
General
1070
R/U
036
unsigned int
120
30
General
1072
R/U
037
InactivityTimeout
unsigned int
60
35
General
1074
R/U
038
Disabled
General
1076
R/U
039
unsigned int
General
1078
R/U
040
disable/enable
Disabled
General
1080
R/U
041
unsigned int
30
General
1082
30
1030
99
totalizers
1050
1062
disable/enable
0
30
32
999
Prefix
Register Description
60
Date Type
unsigned int
Modbus
Min
Max
Default
Value
Value
Value
60
999
999
General
1084
Disabled
General
1086
General
1088
Disabled
General
1090
Protection
Register
Len=2
R/U
042
R/U
043
R/U
044
R/U
045
disable/enable
R/U
046
unsigned int
65535
600
General
1092
R/U
047
percent
10000
5000
General
1094
R/U
048
unsigned int
65535
60
W&M
1096
R/U
049
disable/enable
Disabled
General
1098
R/U
050
FCM Trace
disable/enable
Disabled
General
1100
R/U
051
disable/enable
Disabled
W&M
1102
R/U
052
disable/enable
Enabled
General
1104
R/U
053
unsigned int
65535
60
General
1106
R/U
054
unsigned int
65535
General
1108
R/U
055
Pixel Test
disable/enable
Disabled
General
1110
R/U
056
disable/enable
Disabled
General
1112
R/U
057
unsigned int
General
1114
R/U
058
unused
R/U
059
Trace Recipe
R/U
060
unsigned int
R/U
061
unsigned int
R/U
062
R/U
063
R/U
disable/enable
unsigned int
12
1116
disable/enable
Disabled
General
1118
16
General
1120
33
32
General
1122
disable/enable
Disabled
General
1124
disable/enable
Disabled
General
1126
064
disable/enable
Disabled
General
1128
R/U
065
unused
1130
R/U
066
unused
1132
R/U
067
unused
1134
R/U
068
fcm address
Disabled
W&M
1136
R/U
069
fcm address
Disabled
W&M
1138
R/U
090
RCU Address
unsigned int
General
1180
999
7.1.3
61
Max
Default
Register
Date Type
Value
Value
Value
Protection
Len=2
Access
Register
Description
R/U
100000
unsigned int
12
General
1200
R/U
100001
Number of FCMs
unsigned int
32
General
1202
R/U
100002
Number of PCMs
unsigned int
32
General
1204
R/U
100003
Temps in F
disable/enable
Disabled
W&M
1206
R/U
100004
disable/enable
Disabled
W&M
1208
R/U
100005
unused
R/U
100006
Bay Number
unsigned int
9999
General
1212
R/U
100007
unsigned int
12
General
1214
R/U
100008
unused
1216
R/U
100009
unused
1218
R/U
100080
unused
1360
R/U
100081
Fcm address
R/U
100082
R/U
100083
unused
1366
R/U
100084
unused
1368
R/U
100085
unused
1370
R/U
100086
unused
1372
R/U
100087
unused
1374
R/U
100088
unused
1376
R/U
100089
Fcm address
Disabled
General
1378
R/U
100090
Authorized FCM#
Fcm address
Disabled
General
1380
R/U
100091
Permiss 0 FCM#
Fcm address
Disabled
General
1382
R/U
100092
Permiss 1 FCM#
Fcm address
Disabled
General
1384
R/U
100093
Permiss 2 FCM#
Fcm address
Disabled
General
1386
R/U
100094
Permiss 3 FCM#
Fcm address
Disabled
General
1388
R/U
100095
Permiss 4 FCM#
Fcm address
Disabled
General
1390
R/U
100096
Permiss 5 FCM#
Fcm address
Disabled
General
1392
R/U
100097
Permiss 6 FCM#
Fcm address
Disabled
General
1394
R/U
100098
Permiss 7 FCM#
Fcm address
Disabled
General
1396
R/U
100099
Fcm address
Disabled
General
1398
1210
0.001
50.000
Disabled
General
1362
10.000
W&M
1364
7.1.4
62
Note: ppp = The specified zero-based preset or load arm number (000-011).
Modbus:
The Modbus Preset Index Register sets the ppp index, Read/Write Register=996, Len=1, 16-Bit Integer
Modbus
Description
Min
Max
Default
Register
Date Type
Value
Value
Value
Protection
Len=2
Prefix
Register
R/U
101000ppp
Number of Meters
unsigned int
General
1400
R/U
101001ppp
Number of Components
unsigned int
General
1402
R/U
101002ppp
Number of Additives
unsigned int
16
General
1404
R/U
101003ppp
Sequential Blending
disable/enable
Disabled
General
1406
R/U
101004ppp
Ratio Blending
disable/enable
Disabled
General
1408
R/U
101005ppp
W&M Controlled
disable/enable
Disabled
W&M
1410
R/U
101006ppp
unsigned int
9999
600
General
1412
R/U
101007ppp
unsigned int
9999
1100
General
1414
R/U
101008ppp
unsigned int
65535
General
1416
R/U
101009ppp
unsigned int
65535
50
General
1418
R/U
101010ppp
unsigned int
65535
15
General
1420
R/U
101011ppp
unsigned int
9999
150
General
1422
R/U
101012ppp
unsigned int
9999
600
General
1424
R/U
101013ppp
unsigned int
65535
50
General
1426
R/U
101014ppp
unsigned int
65535
General
1428
R/U
101015ppp
unsigned int
65535
General
1430
R/U
101016ppp
unsigned int
General
1432
R/U
101017ppp
disable/enable
Enabled
General
1434
R/U
101018ppp
disable/enable
Disabled
General
1436
R/U
101019ppp
disable/enable
Disabled
General
1438
R/U
101020ppp
unused
R/U
101021ppp
unsigned int
9999
600
General
1442
R/U
101022ppp
unsigned int
65535
General
1444
R/U
101023ppp
unsigned int
65535
60
Conditional
1446
R/U
101024ppp
unsigned int
65535
10
Conditional
1448
R/U
101025ppp
percent
0.10%
100.00%
5.00%
Conditional
1450
R/U
101026ppp
unsigned int
65535
25
Conditional
1452
R/U
101027ppp
unsigned int
65535
10
Conditional
1454
R/U
101028ppp
unused
R/U
101029ppp
R/U
101030ppp
unsigned int
R/U
101031ppp
unsigned int
R/U
101032ppp
percent
1440
1456
disable/enable
Disabled
General
1458
65535
60
General
1460
65535
10
General
1462
0.00%
100.00%
1.00%
General
1464
63
Modbus
Description
Min
Max
Default
Register
Date Type
Value
Value
Value
Protection
Len=2
Prefix
Register
R/U
101033ppp
unsigned int
65535
General
1466
R/U
101034ppp
unsigned int
65535
General
1468
R/U
101035ppp
unused
R/U
101036ppp
999999
100
General
1472
R/U
101037ppp
999999
General
1474
R/U
101038ppp
999999
10000
General
1476
R/U
101039ppp
disable/enable
Disabled
General
1478
R/U
101040ppp
Deliver In Net
disable/enable
Disabled
W&M
1480
R/U
101041ppp
unsigned int
65535
General
1482
R/U
101042ppp
unsigned int
65535
10
General
1484
R/U
101043ppp
unsigned int
65535
10
General
1486
R/U
101044ppp
unused
1488
R/U
101045ppp
unused
1490
R/U
101046ppp
Fcm address
R/U
101047ppp
R/U
101048ppp
R/U
101049ppp
unsigned int
R/U
101050ppp
unsigned int
R/U
101051ppp
unsigned int
R/U
101080ppp
unused
1560
R/U
101081ppp
unused
1562
R/U
101082ppp
unused
1564
R/U
101083ppp
unused
1566
R/U
101084ppp
unused
1568
R/U
101085ppp
unused
1570
R/U
101086ppp
fcm address
Disabled
General
1572
R/U
101087ppp
fcm address
Disabled
General
1574
R/U
101088ppp
fcm address
Disabled
General
1576
R/U
101089ppp
fcm address
Disabled
General
1578
R/U
101090ppp
fcm address
Disabled
General
1580
R/U
101091ppp
fcm address
Disabled
General
1582
R/U
101092ppp
fcm address
Disabled
General
1584
R/U
101093ppp
fcm address
Disabled
General
1586
R/U
101094ppp
fcm address
Disabled
General
1588
R/U
101095ppp
fcm address
Disabled
General
1590
R/U
101096ppp
fcm address
Disabled
General
1592
R/U
101097ppp
Authorized FCM#
fcm address
Disabled
General
1594
1470
Disabled
General
1492
10.000
W&M
1494
Disabled
W&M
1496
999
General
1498
999
General
1500
999
General
1502
0.001
50.000
disable/enable
64
Modbus
Description
Date Type
Min
Max
Default
Register
Value
Value
Value
Protection
Len=2
Prefix
Register
R/U
101098ppp
Permiss FCM#
fcm address
Disabled
General
1596
R/U
101099ppp
fcm address
Disabled
General
1598
7.1.5
65
Note:
Max
Default
Date Type
Value
Value
Value
unsigned int
31
General
1600
unsigned int
General
1602
Disabled
General
1604
Prefix
Register
Description
disable/enable
Register
Protection Len=2
R / U 102003pppmmm unused
R / U 102004pppmmm Meter Address
R / U 102005pppmmm Meter Type
1606
unsigned int
255
meter type
W&M
1608
Volume Pulse
W&M
1610
unsigned int
65535
10
W&M
1612
unsigned int
1000
65535
10000
W&M
1614
unsigned int
65535
10
General
1616
unsigned div1000
0.000
999.999
10.000
General
1618
unsigned int
9999
800
General
1620
unsigned int
9999
50
General
1622
unsigned int
9999
650
General
1624
unsigned int
9999
40
General
1626
unsigned int
9999
40
General
1628
unsigned int
9999
40
General
1630
unsigned int
9999
40
General
1632
unsigned div1000
0.000
65.535
10.000
General
1634
unsigned int
65535
30
General
1636
unsigned int
65535
General
1638
unsigned div100
0.00
655.35
10.00
General
1640
unsigned div100
0.00
655.35
0.30
General
1642
unsigned int
65535
15
General
1644
unsigned div1000
0.100
1.000
0.100
General
1646
unsigned div1000
0.010
65.535
1.000
General
1648
unsigned int
9999
General
1650
unsigned div1000
0.000
5.000
0.000
General
1652
disable/enable
Disabled
General
1654
disable/enable
Disabled
General
1656
4.000
0.080
General
1658
4.000
0.800
General
1660
66
Modbus
Prefix
Register
Description
Date Type
Min
Max
Default
Value
Value
Value
Register
Protection Len=2
R / U 102031pppmmm unused
1662
R / U 102032pppmmm unused
1664
R / U 102033pppmmm unused
1666
unsigned int
9999
W&M
1668
unsigned int
9999
600
W&M
1670
signed div1000
-9.999
9.999
W&M
1672
unsigned int
9999
W&M
1674
R / U 102038pppmmm unused
R / U 102039pppmmm Density Sensor
R / U 102040pppmmm Density Sensor FCM#
1676
disable/enable
unsigned int
31
Disabled
W&M
1678
W&M
1680
R / U 102041pppmmm unused
1682
unsigned div10
9999.9
General
1684
unsigned div10
9999.9
General
1686
unsigned div10
9999.9
12000
General
1688
unsigned int
60
General
1690
unsigned div10
4000.0
W&M
1692
unsigned div10
4000.0
12000
W&M
1694
signed div10
-300
300
W&M
1696
1698
disable/enable
unsigned int
31
Disabled
W&M
1700
W&M
1702
R / U 102052pppmmm unused
1704
unsigned int
9999
9999
W&M
1706
unsigned int
9999
100
General
1708
unsigned int
9999
450
General
1710
unsigned int
60
General
1712
unsigned int
9999
W&M
1714
unsigned int
9999
650
W&M
1716
signed div100
-3.00
3.00
0.00
W&M
1718
disable/enable
Disabled
W&M
1678
W&M
1680
unsigned int
31
R / U 102062pppmmm unused
1682
unsigned div10000
0.0000
2.0000
0.0000
General
1684
unsigned div10000
0.0000
2.0000
0.0000
General
1686
unsigned div10000
0.0000
2.0000
1.2000
General
1688
unsigned int
60
0.0000
General
1690
unsigned div10000
0.0000
4.0000
0.0000
W&M
1692
67
Modbus
Min
Max
Default
Date Type
Value
Value
Value
unsigned div10000
0.0000
4.0000
1.2000
W&M
1694
signed div10000
-0.0300
0.0300
0.0000
W&M
1696
unsigned div10000
0.0000
6.5535
0.0000
W&M
1740
unsigned div10000
0.0000
0.1000
0.0000
W&M
1742
unsigned div100
0.00
5.00
3.00
W&M
1744
Prefix
Register
Description
Register
Protection Len=2
R / U 102073pppmmm unused
1746
R / U 102074pppmmm unused
1748
R / U 102080pppmmm unused
1760
fcm address
Disabled
General
1762
fcm address
Disabled
General
1764
fcm address
Disabled
General
1766
fcm address
Disabled
General
1768
unsigned int
50
W&M
1770
Disabled
W&M
1772
65535
disable/enable
R / U 102087pppmmm unused
R / U 102088pppmmm Temperature Offset
1774
signed div100
-5.00
5.00
0.00
W&M
1776
unsigned int
60
General
1778
unsigned int
31
W&M
1780
disable/enable
Enabled
W&M
1782
signed div10
-999.9
999.9
999.9
W&M
1784
signed div10
-999.9
999.9
-999.9
General
1786
signed div10
-999.9
999.9
999.9
General
1788
unsigned int
19
W&M
1790
signed div10
-999.9
999.9
-50.0
W&M
1792
signed div10
-999.9
999.9
350.0
W&M
1794
R / U 102098pppmmm unused
1796
R / U 102099pppmmm unused
1798
7.1.6
68
Note:
Register
Description
Date Type
Len=2
R / U 103000pppccc Meter#
unsigned int
General
1800
unsigned int
9999
600
General
1802
unsigned int
65535
70
General
1804
unsigned int
9999
225
General
1806
unsigned int
65535
20
General
1808
unsigned int
9999
150
General
1810
unsigned div100
0.00
655.35
1.15
General
1812
unsigned div1000
0.000
65.535
5.000
General
1814
disable/enable
Disabled
General
1816
10
General
1818
unsigned int
65535
R / U 103010pppccc unused
R / U 103011pppccc W&M Recipe Percentage
1820
unsigned div 100
0.00
100.00
0.00
W&M
R / U 103012pppccc unused
1822
1824
unsigned int
9999
General
1826
unsigned int
65535
General
1828
unsigned int
65535
10
General
1830
unsigned int
65535
10
General
1832
unsigned int
65535
General
1834
unsigned int
65535
30
General
1836
unsigned int
65535
General
1838
unsigned int
65535
General
1840
R / U 103021pppccc unused
R / U 103022pppccc Unauth Reset Time
1842
unsigned int
65535
General
R / U 103023pppccc unused
1844
1846
unsigned int
350
General
1848
unsigned int
65535
General
1850
unsigned int
65535
General
1852
unsigned int
65535
General
1854
None
W&M
1878
None
W&M
1880
disable/enable
Disabled
W&M
1882
69
Modbus
Register
Prefix
Register
Description
Date Type
R / U 103042pppccc unused
R / U 103043pppccc API Gravity
R / U 103044pppccc Default Relative Density
Len=2
1884
signed div10
-100.0
1100.0
0.0
W&M
1886
2.0000
0.0000
W&M
1888
unsigned div10
9999.9
W&M
1890
unsigned div10
2000.0
W&M
1892
disable/enable
Disabled
W&M
1894
R / U 103048pppccc unused
1896
R / U 103049pppccc unused
1898
R / U 103070pppccc unused
1940
R / U 103071pppccc unused
1942
R / U 103072pppccc unused
1944
R / U 103073pppccc unused
1946
fcm address
Disabled
General
1948
fcm address
Disabled
General
1950
fcm address
Disabled
General
1952
R / U 103077pppccc unused
1954
fcm address
Disabled
General
1956
fcm address
Disabled
General
1958
fcm address
Disabled
General
1960
fcm address
Disabled
General
1962
fcm address
Disabled
General
1964
fcm address
Disabled
General
1966
fcm address
Disabled
General
1968
1.2000
1.0000
W&M
1970
9999
150
W&M
1972
1.2000
1.0000
W&M
1974
9999
200
W&M
1976
1.2000
1.0000
W&M
1978
9999
400
W&M
1980
1.2000
1.0000
W&M
1982
unsigned int
9999
800
W&M
1984
unsigned int
W&M
1986
R / U 103094pppccc unused
1988
7.1.7
70
Note:
Register
Description
Date Type
disable/enable
Len=2
R/U
Disabled
General
2000
R/U
unsigned int
31
General
2002
R/U
unsigned int
General
2004
R/U
disable/enable
Disabled
W&M
2006
R/U
disable/enable
Disabled
General
2008
R/U
104005pppaaa unused
R/U
disable/enable
Disabled
General
2012
R/U
disable/enable
Enabled
General
2014
R/U
disable/enable
Disabled
General
2016
R/U
disable/enable
Disabled
General
2018
R/U
104010pppaaa unused
2020
R/U
104011pppaaa unused
2022
R/U
unsigned int
255
General
2038
R/U
unsigned int
65535
General
2040
R/U
unsigned int
65535
20
General
2042
R/U
unsigned int
65535
General
2044
R/U
unsigned int
General
2046
R/U
0.0000%
6.5535%
0.0000%
W&M
2048
R/U
104025pppaaa unused
2050
R/U
104026pppaaa unused
2052
R/U
unsigned div10000
0.0000
6.5535
0.0200
Conditional
2054
R/U
unsigned div10000
0.0001
6.5535
1.0000
Conditional
2056
R/U
104029pppaaa unused
2058
R/U
104030pppaaa unused
2060
R/U
unsigned int
65535
2600
Conditional
2062
R/U
unsigned div10000
0.0001
6.5535
1.0000
Conditional
2064
R/U
unsigned int
65535
Conditional
2066
R/U
unsigned div1000
0.100
10.000
4.000
Conditional
2068
R/U
unsigned int
65535
Conditional
2070
R/U
unsigned int
65535
Conditional
2072
R/U
unsigned int
65535
10
Conditional
2074
R/U
unsigned int
65535
100
General
2076
2010
71
Modbus
Register
Prefix
Register
Description
Date Type
Len=2
R/U
unsigned int
65535
300
General
2078
R/U
unsigned int
65535
Conditional
2080
R/U
unsigned int
65535
General
2082
R/U
unsigned int
65535
General
2084
R/U
unsigned div1000
0.100
10.000
1.800
General
2086
R/U
unsigned int
65535
General
2088
R/U
unsigned int
65535
150
General
2090
R/U
Enabled
General
2092
R/U
unsigned int
65535
10
General
2094
R/U
unsigned int
65535
10
General
2096
R/U
unsigned int
65535
General
2098
R/U
unsigned int
65535
30
General
2100
R/U
disable/enable
Disabled
General
2102
R/U
disable/enable
Disabled
General
2104
R/U
104053pppaaa unused
R/U
unsigned int
65535
W&M
R/U
alarm count
reset mode
10
W&M
R/U
104085pppaaa unused
2170
R/U
104086pppaaa unused
2172
R/U
104087pppaaa unused
2174
R/U
fcm address
Disabled
General
2176
R/U
fcm address
Disabled
General
2178
R/U
fcm address
Disabled
General
2180
R/U
fcm address
Disabled
General
2182
R/U
fcm address
Disabled
General
2184
R/U
fcm address
Disabled
General
2186
R/U
fcm address
Disabled
General
2188
R/U
fcm address
Disabled
General
2190
R/U
fcm address
Disabled
General
2192
R/U
fcm address
Disabled
General
2194
R/U
fcm address
Disabled
General
2196
R/U
fcm address
Disabled
General
2198
disable/enable
2106
2108
2110
7.1.8
Note:
72
73
74
{"Permissive 1"},
{"Permissive 2"},
{"Permissive 3"},
{"Permissive 4"},
{"Permissive 5"},
{"Permissive 6"},
{"Permissive 7"},
// 00007
// 00008
// 00009
// 00010
// 00011
// 00012
// 00013
};
ppppp Zero-based preset number (00000-00011).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
If type -= PRESET_RT, rrrrrppppp
Where:
rrrrr Preset Real Time Parameter Type as
custom_logic_preset_real_time_prompt[] =
{
{"Authorized"}, // 00000
{"Flow Active"}, // 00001
{"BatchAuthorized"},
// 00002
{"Load Complete"},
// 00003
{"Clearing Errors"},
// 00004
{"Clearing Load"},
// 00005
{"Open Blk Valve"},
// 00006
{"Blk Val Status"},
// 00007
{"Close Blk Valve"},
// 00008
{"Remote Start"},
// 00009
{"Swing Arm"}, // 00010
{"Meter Stop"}, // 00011
{"Alarm Out"}, // 00012
{"Permissive"}, // 00013
{"Permissive Out"},
// 00014
};
ppppp Zero-based preset number (00000-00011).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
If type -= COMPONENT_RT, rrrrrppppplllll
Where:
rrrrr Component Real Time Parameter Type as
custom_logic_component_real_time_prompt[] =
{
{"Clearing Errors"},
// 00000
{"Clear Batch"}, // 00001
{"Rem Start Buttn"},
// 00002
{"Pump Run"}, // 00003
75
76
77
Note:
78
Note:
Note:
79
80
7.2
7.2.1
81
xx
xx
xx
xx
xx
xx
xx
xx
2011
2011
2011 (discontinued)
2011 (discontinued)
2011
2011
2011
2011
7.2.3
7.2.4
7.2.5
=>
0?0070DDDDDDDDD
U070DDDDDDDDD
=>
0?0
Where:
DDDDDDDDD = (000000000 = Disabled), (000000001 = Enabled)
Modbus: Read/Write Register=049, Len=1, 16-Bit Integer
7.2.6
071 IP ADDRESS
R071 =>
0?0071DDD.DDD.DDD.DDD
U071DDD.DDD.DDD.DDD
=>
0?0
Where:
DDD.DDD.DDD.DDD = IP Address
Modbus: Read/Write Register=050, Len=2, 32-Bit Integer (4 8-bit numbers)
7.2.7
072 IP MASK
R072 =>
0?0072DDD.DDD.DDD.DDD
U072DDD.DDD.DDD.DDD
=>
0?0
Where:
DDD.DDD.DDD.DDD = IP Mask
Modbus: Read/Write Register=052, Len=2, 32-Bit Integer (4 8-bit numbers)
7.2.8
073 IP GATEWAY
R073 =>
0?0073DDD.DDD.DDD.DDD
U073DDD.DDD.DDD.DDD
=>
0?0
Where:
DDD.DDD.DDD.DDD = IP Gateway
Modbus: Read/Write Register=054, Len=2, 32-Bit Integer (4 8-bit numbers)
7.2.9
074 IP HOST
R074 =>
0?0074DDD.DDD.DDD.DDD
U074DDD.DDD.DDD.DDD
=>
0?0
Where:
DDD.DDD.DDD.DDD = IP Host
Modbus: Read/Write Register=056, Len=2, 32-Bit Integer (4 8-bit numbers)
82
Where:
p = Communication Port (1-3)
S = Communication Speed
0 = 300 BAUD
1 = 1200 BAUD
2 = 2400 BAUD
3 = 4800 BAUD
4 = 9600 BAUD
5 = 19.2K BAUD
6 = 38.4K BAUD
7 = 57.6K BAUD
8 = 115K BAUD
9 = 230K BAUD
D = Data Bits
0 = 7 Data Bits
1 = 8 Data Bits
P = Parity
0 = None
1 = Odd
2 = Even
T = Stop Bits
1 = 1 Stop Bit
2 = 2 Stop Bits
A = Port Assignment
0 = Not in Use
1 = Host
2 = FCMs
3 = Printer
4 = Event Log Printer
5 = Ethernet Pass Thru
6 = Alibi Log
7 = GPS (MultiLoad Mobile Only)
C = Connection Type
0 = Single/Master
1 = Multi-dropped Slave
2 = 2-Wire RS485
Modbus:
p=0, Read/Write Register=243, Len=6, Characters (SDPTAC)
p=1, Read/Write Register=249, Len=6, Characters (SDPTAC)
p=2, Read/Write Register=255, Len=6, Characters (SDPTAC)
7.2.12 095..099 PROGRAM MODE PASSWORDS (5)
R095 =>
0?0095SSSSSSS
U095SSSSSSS =>
0?0
Where:
83
AAAAAAAAA = Additive Total Gross Totalizers in Thousands, (16 additives, 9 digits per
totalizer.)
Modbus:
Where: p = preset (0-11), m = meter (0-4), c = component (0-7), a=additive (0-15)
Read Only Registers=3000+2*p, Len=2, 32-Bit Integer (PPPPPPPPP)
Read Only Registers=3024+2*(5*p+m), Len=2, 32-Bit Integer (MMMMMMMMM)
Read Only Registers=3144+2*(8*p+c), Len=2, 32-Bit Integer (CCCCCCCCC)
Read Only Registers=3336+2*(16*p+a), Len=2, 32-Bit Integer (AAAAAAAAA)
Note: Last Gross Totalizer register used=3719
7.2.14 113 - REAL-TIME PRESET TOTAL NET TOTALIZERS
R113ppp
=>
0?0113pppPPPPPPPPPCCCCCCCCC
Where:
ppp = The specified zero-based preset or load arm number (000-011).
PPPPPPPPP = Preset Total Net Totalizer
CCCCCCCCC = Component Total Net Totalizers (8 components, 9 digits per totalizer.)
Note: if the Use Hundredths W&M RCU parameter is enabled, the preset and component net quantity values will have an implied two
decimal places.
Modbus:
Where: p = preset (0-11), c = component (0-7)
Read Only Registers=3720+2*p, Len=2, 32-Bit Integer (PPPPPPPPP)
Read Only Registers=3744+2*(8*p+c), Len=2, 32-Bit Integer (CCCCCCCCC)
Note: Last Net Totalizer register used=3935
7.2.15 133 FCM IO ACCESS
R133fffppp
=>
0?0133fffpppc
Where:
fff = FCM number (000-031).
ppp = FCM port number (0-35)
84
85
Modbus:
Read Only Registers=310, Len=2, 32-Bit Signed Integer (+lllllllll)
Read Only Registers=312, Len=2, 32-Bit Signed Integer (+ooooooooo)
7.2.17 141 CURRENT TRANSACTION LATITUDE/LONGITUDE/SITE INDEX REGISTERS (MULTILOAD MOBILE ONLY)
R141 => 0?0141+lllllllll+ooooooooosssssssss
Where:
+lllllllll = Current Transaction Latitude Position.
+ooooooooo = Current Transaction Longitude Position.
sssssssss = Current Transaction Site Index (GPS Site Database).
Note: Updated on transaction authorization (T<esc>A).
Note: Latitude format (S 90 to N 90) is:
if Latitude >= 0 then "N" else "S"
integer_degrees = abs(Latitude) / 60000
float_minutes = (abs(Latitude) % 60000) / 1000
Note: Longitude format (180 E to 180 W) is:
if Longitude >= 0 then "E" else "W"
integer_degrees = abs(Longitude) / 60000
float_minutes = (abs(Longitude) % 60000) / 1000
Note: Site Index = +999999999 when no site match exists.
Modbus:
Read Only Registers=314, Len=2, 32-Bit Signed Integer (+lllllllll)
Read Only Registers=316, Len=2, 32-Bit Signed Integer (+ooooooooo)
Read Only Registers=318, Len=2, 32-Bit Unsigned Integer (sssssssss)
7.2.18 400 - PRESET DEFINITION REGISTERS
R400ppp
=>
0?0400pppNNNNNNNNNNCCCAAAPPPRRR
U400pppNNNNNNNNNNCCCAAAPPP =>
0?0
Where:
ppp = The specified zero-based preset or load arm number (000-011).
NNNNNNNNNN = 10 Character Preset Name
CCC = Component Product Index (500 register) for each component (8 component indices, 3
digits per index.)
AAA = Additive Product Index (500 register) for each additive (16 additive indices, 3 digits per
index.)
RRR = Standalone Authorized Product Index (500 register) (33 product indices, 3 digits per
index.)
Modbus:
Where: p = preset (0-11), c = component (0-7), a = additive (0-15)
Read/Write Registers=8000+67*p, Len=10, Characters (NNNNNNNNNN), Null Terminated
Read/Write Registers=8010+67*p+c, Len=1, 16-Bit Integer (CCC)
Read/Write Registers=8018+67*p+a, Len=1, 16-Bit Integer (AAA)
Read/Write Registers=8034+67*p+r, Len=1, 16-Bit Integer (RRR)
Note: Last Preset Definition register used=8805
86
Note:
R500iii =>
0?0500iiiHCCCCCCLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDDDDCCCPPPPPAAAPPPPP
U500iiiHCCCCCCLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDDDDCCCPPPPPAAAPPPPP
=>
0?0
Where:
iii = The specified zero based product index (000-099).
For Modbus, the Modbus Product Definition Index Register sets the iii index.
Modbus: Read/Write Register=2200, Len=1, 16-Bit Integer (iii)
H = Hazzard Index (stand alone use only).
CCCCCC = 6 Character Product Code.
LLLLLLLLLLLLLLLLLLLLLLLLL = 25 Character Long Product Description.
DDDDDDDDDD = 10 Character Product Description.
CCCPPPPP = Component Product Definition Index (CCC) & Component Percent with an
implied two decimal places (i.e. 01234 => 012.34%) (8 component CCCPPPPP pairs).
AAAPPPPP = Additive Product Definition Index (AAA) & Additive Percent with an implied four
decimal places (i.e. 12345 => 1.2345%) (up to 12 additive AAAPPPPP pairs). Note: Max
Additive Percentage is 6.5535%.
Modbus:
Where: c = component (0-7), a = additive (0-11)
Read/Write Register=2201, Len=1, 16-Bit Integer (H)
Read/Write Register=2202, Len=6, Characters (CCCCCC)
Read/Write Register=2208, Len=25, Characters (LLLLLLLLLLLLLLLLLLLLLLLLL)
Read/Write Register=2233, Len=10, Characters (DDDDDDDDDD)
Read/Write Register=2243+2*c, Len=1, 16-Bit Integer (CCC)
Read/Write Register=2244+2*c, Len=1, 16-Bit Integer (PPPPP)
87
Note:
R600iii =>
0?0600iiiccccccccppppmmlbbbbbbbbbbbbbbbb
U600iiiccccccccppppmmlbbbbbbbbbbbbbbbb
=>
0?0
Where:
iii = Card database index (1 300)
For Modbus, the Modbus Card Database Index Register sets the iii index.
Modbus: Read/Write Register=2300, Len=1, 16-Bit Integer (iii)
cccccccc = Card Number
pppp = PIN Number
mm = Company Id (unused)
l = Language Index (0 or 1)
bbbbbbbbbbbbbbbb = Preset lockouts as 16 bit binary number
(For example 0000000000000011 = preset 1 & 2 locked out for driver)
Modbus:
Read/Write Register=2301, Len=2, 32-Bit Integer (cccccccc)
Read/Write Register=2303, Len=1, 16-Bit Integer (pppp)
Read/Write Register=2304, Len=1, 16-Bit Integer (mm)
Read/Write Register=2305, Len=1, 16-Bit Integer (l)
Read/Write Register=2306, Len=1, 16-Bit Integer (bbbbbbbbbbbbbbbb)
Note:
R650iiiiiiiii
=> 0?0650iiiiiiiiinnnnnnnnnnnnnnn+lllllllll+ooooooooo
U650iiiiiiiiinnnnnnnnnnnnnnn+lllllllll+ooooooooo
=>
0?00?0650iiiiiiiiinnnnnnnnnnnnnnn+lllllllll+ooooooooo
Where:
iiiiiiiii = Site Index (000000000-000003999)
For Modbus, the Modbus GPS Site Database Index Register sets the iiiiiiiii index.
Modbus: Read/Write Register=2350, Len=1, 16-Bit Integer (iiiiiiiii)
nnnnnnnnnnnnnnn = Site Name (15 Characters Padded)
+lllllllll = Site Latitude Position.
+ooooooooo = Site Longitude Position.
Note: An Update to index 0 will clear the entire list.
Note: Latitude format (S 90 to N 90) is:
if Latitude >= 0 then "N" else "S"
integer_degrees = abs(Latitude) / 60000
float_minutes = (abs(Latitude) % 60000) / 1000
Note: Longitude format (180 E to 180 W) is:
if Longitude >= 0 then "E" else "W"
integer_degrees = abs(Longitude) / 60000
88
Note:
Note:
R700iil =>
0?0700iilsss
U700iilsss =>
0?0
Where:
ii = Prompt Index with defaults as:
00 = "Insert driver card..."
01 = "For Access"
02 = "Invalid Driver..."
03 = "Remove Card..."
04 = "Please Wait..."
07 = "Press 'A' key to Begin..."
19 = "A=Next B=Prev C=Abort D=Pick"
20= "System Unavailable"
28 = "PRE PRODUCT
SET DEL STATUS "
35 = "" // Alternate Load Screen Footer
For Modbus, the Modbus Language Prompt Index Register sets the ii index.
Modbus: Read/Write Register=2400, Len=1, 16-Bit Integer (ii)
l = Language Index (0 or 1)
For Modbus, the Modbus Language Prompt Language Index Register sets the l index.
Modbus: Read/Write Register=2401, Len=1, 16-Bit Integer (l)
sss = Prompt string (40 ASCII characters or 20 UTF-8 characters, 3-bytes each)
Note: if prompt string empty, null, built in prompt will be used based on language setting.
Note: only the prompts listed above can be changed.
Modbus:
Read/Write Register=2402, Len=60, Characters (sss)
89
90
};
For Modbus, the Modbus Bay Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2500, Len=1, 16-Bit Integer (iii)
lll = Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}alarm_level;
ssssssssssssssssssssssssssssss = Alarm Message (prefix with an *)
Note: Up to 30 UTF-8 bytes to represent a max of 10 characters.
ccccc = Promotion Count (00000=no promotion)
ppppp = Promoted Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}promoted_alarm_level;
rrrrr = Reset Mode as:
enum
{
AUTH_TRANS = 0,
CLEAR_PROMOTED = 1,
TIME_2_MIN = 2,
TIME_5_MIN = 3,
TIME_15_MIN = 4,
TIME_30_MIN = 5,
91
TIME_60_MIN = 6,
TIME_3_HOURS = 7,
TIME_6_HOURS = 8,
TIME_12_HOURS = 9,
TIME_24_HOURS = 10,
}alarm_count_reset_mode;
Note: only permissive names can be changed, iii=1..8
Modbus:
Read/Write Register=2501, Len=1, 16-Bit Integer (lllll)
Read/Write Register=2502, Len=15, Characters (sssssssssssssss)
Note: Up to 15 UTF-8 bytes to represent a max of 10 characters.
Read/Write Register=2517, Len=1, 16-Bit Integer (ccccc)
Read/Write Register=2518, Len=1, 16-Bit Integer (ppppp)
Read/Write Register=2519, Len=1, 16-Bit Integer (rrrrr)
7.2.25 711 - PRESET ALARM MESSAGES
Note:
R711iii =>
0?0711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
U711iiilllllssssssssssssssssssssssssssssss =>
0?0
U711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_preset_alarm[16] =
{
{"*PRE FCM" , AUTO_CLEAR}, // 711000
{"*PRE PERM" , AUTO_CLEAR}, // 711001
{"*SWING ARM", AUTO_CLEAR}, // 711002
{"*NO LNFLSH", DRIVER_CLEAR}, // 711003
{"*PALARM 04", DRIVER_CLEAR}, // 711004
{"*BAY ALARM", AUTO_CLEAR}, // 711005
{"*COMP ALRM", AUTO_CLEAR}, // 711006
{"*ADD ALARM", AUTO_CLEAR}, // 711007
{"*MTR STOP" , AUTO_CLEAR}, // 711008
{"*OVERRUN" , REMOTE_CLEAR}, // 711009
{"*EXCESS FL", REMOTE_CLEAR}, // 711010
{"*PALARM 11", DRIVER_CLEAR}, // 711011
{"*PALARM 12", DRIVER_CLEAR}, // 711012
{"*PALARM 13", DRIVER_CLEAR}, // 711013
{"*PALARM 14", DRIVER_CLEAR}, // 711014
{"*INVCONFIG", AUTO_CLEAR} // 711015
};
For Modbus, the Modbus Preset Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2520, Len=1, 16-Bit Integer (iii)
lll = Alarm Level as:
enum
0?0
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}alarm_level;
ssssssssssssssssssssssssssssss = Alarm Message (prefix with an *)
Note: Up to 30 UTF-8 bytes to represent a max of 10 characters.
ccccc = Promotion Count (00000=no promotion)
ppppp = Promoted Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}promoted_alarm_level;
rrrrr = Reset Mode as:
enum
{
AUTH_TRANS = 0,
CLEAR_PROMOTED = 1,
TIME_2_MIN = 2,
TIME_5_MIN = 3,
TIME_15_MIN = 4,
TIME_30_MIN = 5,
TIME_60_MIN = 6,
TIME_3_HOURS = 7,
TIME_6_HOURS = 8,
TIME_12_HOURS = 9,
TIME_24_HOURS = 10,
}alarm_count_reset_mode;
Note: only permissive names can be changed, iii=1.
Modbus:
Read/Write Register=2521, Len=1, 16-Bit Integer (lllll)
Read/Write Register=2522, Len=15, Characters (sssssssssssssss)
Note: Up to 15 UTF-8 bytes to represent a max of 10 characters.
Read/Write Register=2537, Len=1, 16-Bit Integer (ccccc)
Read/Write Register=2538, Len=1, 16-Bit Integer (ppppp)
Read/Write Register=2539, Len=1, 16-Bit Integer (rrrrr)
7.2.26 712 - METER ALARM MESSAGES
R712iii =>
0?0712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
92
Note:
U712iiilllllssssssssssssssssssssssssssssss =>
0?0
U712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_meter_alarm[16] =
{
{"*MTR FCM" , AUTO_CLEAR}, // 712000
{"*MTR PERM" , AUTO_CLEAR}, // 712001
{"*FCM CONF" , REMOTE_CLEAR}, // 712002
{"*FCM WDT" , REMOTE_CLEAR}, // 712003
{"*FCM TMOUT", REMOTE_CLEAR}, // 712004
{"*VALVE FLT", PROGRAM_CLEAR}, // 712005
{"*LOW FLOW" , DRIVER_CLEAR}, // 712006
{"*EXCESS FL", REMOTE_CLEAR}, // 712007
{"*QUAD ENC" , REMOTE_CLEAR}, // 712008
{"*FCM PERM" , DRIVER_CLEAR}, // 712009
{"*RTD ERROR", REMOTE_CLEAR}, // 712010
{"*VALVE CTL", REMOTE_CLEAR}, // 712011
{"*MTR CREEP", REMOTE_CLEAR}, // 712012
{"*PRES ALRM", REMOTE_CLEAR}, // 712013
{"*QUAD CH A", REMOTE_CLEAR}, // 712014
{"*QUAD CH B", REMOTE_CLEAR} // 712015
};
For Modbus, the Modbus Meter Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2540, Len=1, 16-Bit Integer (iii)
lll = Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}alarm_level;
ssssssssssssssssssssssssssssss = Alarm Message (prefix with an *)
Note: Up to 30 UTF-8 bytes to represent a max of 10 characters.
ccccc = Promotion Count (00000=no promotion)
ppppp = Promoted Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
93
=>
0?0
94
}promoted_alarm_level;
rrrrr = Reset Mode as:
enum
{
AUTH_TRANS = 0,
CLEAR_PROMOTED = 1,
TIME_2_MIN = 2,
TIME_5_MIN = 3,
TIME_15_MIN = 4,
TIME_30_MIN = 5,
TIME_60_MIN = 6,
TIME_3_HOURS = 7,
TIME_6_HOURS = 8,
TIME_12_HOURS = 9,
TIME_24_HOURS = 10,
}alarm_count_reset_mode;
Note: only permissive names can be changed, iii=1.
Modbus:
Read/Write Register=2541, Len=1, 16-Bit Integer (lllll)
Read/Write Register=2542, Len=15, Characters (sssssssssssssss)
Note: Up to 15 UTF-8 bytes to represent a max of 10 characters.
Read/Write Register=2557, Len=1, 16-Bit Integer (ccccc)
Read/Write Register=2558, Len=1, 16-Bit Integer (ppppp)
Read/Write Register=2559, Len=1, 16-Bit Integer (rrrrr)
7.2.27 713 - COMPONENT ALARM MESSAGES
R713iii =>
0?0713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
U713iiilllllssssssssssssssssssssssssssssss =>
0?0
U713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_component_alarm[16] =
{
{"*COMP FCM" , AUTO_CLEAR}, // 713000
{"*COMP PERM", AUTO_CLEAR}, // 713001
{"*BLK VALVE", AUTO_CLEAR}, // 713002
{"*UNAUTH FL", REMOTE_CLEAR}, // 713003
{"*PUMP STAT", DRIVER_CLEAR}, // 713004
{"*MTR ALARM", AUTO_CLEAR}, // 713005
{"*OVR BLEND", DRIVER_CLEAR}, // 713006
{"*UND BLEND", DRIVER_CLEAR}, // 713007
{"*API TABLE", DRIVER_CLEAR}, // 713008
{"*DENSITY ", REMOTE_CLEAR}, // 713009
{"*CALARM 10", DRIVER_CLEAR}, // 713010
{"*CALARM 11", DRIVER_CLEAR}, // 713011
0?0
95
};
For Modbus, the Modbus Component Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2560, Len=1, 16-Bit Integer (iii)
lll = Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}alarm_level;
ssssssssssssssssssssssssssssss = Alarm Message (prefix with an *)
Note: Up to 30 UTF-8 bytes to represent a max of 10 characters.
ccccc = Promotion Count (00000=no promotion)
ppppp = Promoted Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}promoted_alarm_level;
rrrrr = Reset Mode as:
enum
{
AUTH_TRANS = 0,
CLEAR_PROMOTED = 1,
TIME_2_MIN = 2,
TIME_5_MIN = 3,
TIME_15_MIN = 4,
TIME_30_MIN = 5,
TIME_60_MIN = 6,
TIME_3_HOURS = 7,
TIME_6_HOURS = 8,
TIME_12_HOURS = 9,
TIME_24_HOURS = 10,
}alarm_count_reset_mode;
Note: only permissive names can be changed, iii=1.
Modbus:
96
Note:
R714iii =>
0?0710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
U714iiilllllssssssssssssssssssssssssssssss =>
0?0
U714iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_additive_alarm[16] =
{
{"*ADTV FCM" , AUTO_CLEAR}, // 714000
{"*ADTV PREM", AUTO_CLEAR}, // 714001
{"*UND ADTV" , REMOTE_CLEAR}, // 714002
{"*OVR ADTV" , REMOTE_CLEAR}, // 714003
{"*VALVE FLT", PROGRAM_CLEAR}, // 714004
{"*PUMP STAT", DRIVER_CLEAR}, // 714005
{"*INJCT FLT", DRIVER_CLEAR}, // 714006
{"*UNAUTH FL", REMOTE_CLEAR}, // 714007
{"*NO LNFLSH", DRIVER_CLEAR}, // 714008
{"*MTR CREEP", REMOTE_CLEAR}, // 714009
{"*BLK VALVE", AUTO_CLEAR}, // 714010
{"*AALARM 11", DRIVER_CLEAR}, // 714011
{"*AALARM 12", DRIVER_CLEAR}, // 714012
{"*AALARM 13", DRIVER_CLEAR}, // 714013
{"*AALARM 14", DRIVER_CLEAR}, // 714014
{"*AALARM 15", DRIVER_CLEAR} // 714015
};
For Modbus, the Modbus Additive Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2580, Len=1, 16-Bit Integer (iii)
lll = Alarm Level as:
enum
{
AUTO_CLEAR = 0,
DRIVER_CLEAR = 1,
REMOTE_CLEAR = 2,
PROGRAM_CLEAR = 3,
WM_CLEAR = 4
}alarm_level;
ssssssssssssssssssssssssssssss = Alarm Message (prefix with an *)
0?0
97
=>
0?0960sss
98
Where:
sss = Input data string from the Terminal Escape Code `E.
Modbus:
Read Only Register=2851, Len=25, Characters (sss)
7.2.34 961 INPUT DATA TERMINATING KEY
R961 =>
0?0961c
Where:
C = Terminating Key from the Terminal Escape Code `E
A = Next
B = Prev
C = Abort/Exit
D = Enter
E = CLR
Modbus:
Read Only Register=2850, Len=1, Character (c)
7.2.35 962 - CURRENT DRIVER CARD DATA
R962 =>
0?0962sss
Where:
sss = Driver card data string.
For HID 26-bit Prox Cards,
0=yy=0000000=xxxxxxxx=01 Card number that was read from the card.
Where:
yy is the facility number (00-99)
xxxxxxxx is the card number (00000000-00065535).
For HID 26-bit Corporate 1000 Formatted Prox Cards,
0=yyyy=00000=xxxxxxxx=01 Card number that was read from the card.
Where:
yyyy is the company number (0000-4095)
xxxxxxxx is the card number (00000000-01048575).
For HID 37-bit H10320 formatted Prox cards,
0=yy=0000000=xxxxxxxx=01 Card number that was read from the card.
Where:
yy is the facility number (Always 00).
xxxxxxxx is the card number (00000000-99999999).
For TWIC cards,
1111,2222,333333,4,5,6666666666788889 TWIC Card FASC-N that was read from the card.
Where,
1111 = Agency Code
2222 = System Code
333333 = Credential Number
99
4 = Credential Series
5 = Individual Credential Issue
6666666666 = Person Identifier (Used as Card Number in Access ID Database)
7 = Organizational Category
8888 = Organizational Identifier
9 = Person/Organization Association
Modbus:
Read Only Register=2900, Len=80, Characters (sss)
100
101
CHAPTER 8
The following is an example of a typical communication session with MultiLoad starting with host system
startup, driver card in, transaction authorization, batch authorization, end of batch processing, and host system
shutdown.
Upon startup it is recommended that the host system verify as many parameters as practical to avoid
problems during loading due to mis-configuration. If any parameters are different then expected the
discrepancy should be logged and startup should be aborted. Recommended parameters to check are:
Firmware Version
Configured bit is set.
Remote Processing is enabled.
Number of configured presets.
Number of meters, components and additives for all presets.
8.1
8.1.1
Start with a clear database and upload base product and additive definitions into indexes 020-099
Sent:(FCLEARPROD) Received: (000)
Sent:(U5000200001100Regular Unlead
RUL
02010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000210001300Premium Unlead
PUL
02110000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000220000600Chevron Additive
CHEVADD
02210000000000000000000000000000000000000000000000000000000000000210000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000230000700Shell Additive
SHEADD
02310000000000000000000000000000000000000000000000000000000000000220000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000240000800Generic Additive
GENADD
02410000000000000000000000000000000000000000000000000000000000000230000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000250000300Base Kerosene
KERO
02510000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000260001400Base Low Sulfur Diesel BASLSD
02610000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000) Received: (000)
102
Sent:(U5000270000900Red Dye
REDDYE
02710000000000000000000000000000000000000000000000000000000000000260000000000000000000000
00000000000000000000000) Received: (000)
Sent:(U5000280000500Winter Additive
WINADD
02810000000000000000000000000000000000000000000000000000000000000270000000000000000000000
00000000000000000000000) Received: (000)
Modbus:
For each recipe:
Fn=0x06, Write Recipe Index to Register 2200
Fn=0x16, Write Recipe Data to Registers 2201 2267
(both writes can be done at the same time with one Fn=0x16 command)
8.1.3
Sent:(U400000BLENDER
02002100000000000000000002202302400000000000000000000000000000000000000002002102202302400
0000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Received: (000)
Sent:(U400001BLENDER
02002100000000000000000002202300000000000000000000000000000000000000000002002102202300000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Received: (000)
Sent:(U400002LSD
02000000000000000000000002200000000000000000000000000000000000000000000002002200000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Received: (000)
Sent:(U400003HSD
02500000000000000000000000000000000000000000000000000000000000000000000002500000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Received: (000)
Sent:(U400004KEROSENE
02600000000000000000000002700000000000000000000000000000000000000000000002602702800000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000)
Received: (000)
Modbus:
Fn=0x16, Write Preset Data to Registers 8000 8066
Fn=0x16, Write Preset Data to Registers 8067 8133
Fn=0x16, Write Preset Data to Registers 8134 8200
Fn=0x16, Write Preset Data to Registers 8201 8267
Fn=0x16, Write Preset Data to Registers 8268 8334
8.1.4
STATUS QUERY
103
Sent:(FPOWERUP) Received:(000)
logmsg_queued bit is set
Modbus:
Fn=0x06, Write 0 to Register 7012
Sent:(R910) Received: (00091000010515153200REGAINED COMMUNICATION WITH HOST.)
host_up bit is clear
Modbus:
Fn=0x03, Read Registers 2600 ... 2685
Sent:(FHOSTUP) Received: (000)
Modbus:
Fn=0x06, Write 0 to Register 7013
8.2
TRANSACTION AUTHORIZATION
8.2.1
104
READING TOTALIZERS
Sent:(R112000) Received:
(0001120000000010000000010000000000000000000000000000000000010000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
105
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000)
Sent:(R112001) Received:
(0001120010000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000)
Sent:(R112002) Received:
(0001120020000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000)
Sent:(R112003) Received:
(0001120030000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000)
Sent:(R112004) Received:
(0001120040000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000)
Modbus:
Fn=0x03, Read Registers 3000 3006 (Preset Gross Totalizers)
Fn=0x03, Read Registers 3144 3191 (Component Gross Totalizers)
Fn=0x03, Read Registers 3336 3432 (Additive Gross Totalizers)
Etc
8.3
BATCH AUTHORIZATION
8.3.1
106
107
Sent:(MRS000) Received:
(0T1RS0000001001F0000000001000000000015+0022400113000000015+00224000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Sent:(MRS001) Received:
(0T1RS001000000070000000000000000000000+0000000000000000000+00000000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Sent:(MRS002) Received:
(0T1RS002000000070000000000000000000000+0000000000000000000+00000000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Sent:(MRS003) Received:
(0T1RS003000900030000000000000000000000+0000000000000000000+00000000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Sent:(MRS004) Received:
(0T1RS004000900030000000000000000000000+0000000000000000000+00000000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Modbus:
Fn=0x03, Read Registers 4060 4067 (Preset Gross Volumes)
Fn=0x03, Read Registers 4084 4091 (Preset Net Volumes)
Etc
8.4
8.4.1
End Batch request can come from MultiLoad (Driver Clears Batch or Card Pull) or from the Host with a MBE
command.
Wait until preset state is PRESET_END_OF_BATCH and pick up totals (with MRS) and/or totalizers.
Sent:(MRS000) Received:
(0T1RS000001107970000000001000000001000+0022400000000001000+00224000000000+0000000000000
0+00000000000000+00000000000000+00000000000000+00000000000000+00000000000000+000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000)
Modbus:
Fn=0x03, Read Registers 4060 4067 (Preset Gross Volumes)
108
8.5
8.5.1
A transaction can be ended by MultiLoad (Driver pulls card) or from the Host with a MET command
End of transaction processing started when RCU state changes to COMPLETING_LOAD.
Sent:(Q) Received: (0C0C23B)
Modbus:
Fn=0x03, Read Register 7000
And uncleared batched will be set to end batch waiting for the host to acknowledge with a MEB command to
clear totals.
When all presets have been cleared, RCU status will go to TRANSACTION_DONE.
Sent:(Q) Received: (0D0C238)
Modbus:
Fn=0x03, Read Register 7000
Reset display to reset RCU status back to idle.
Sent:(T_R) Received: (000)
Modbus:
Fn=0x06, Write 0 to Register 7017
8.6
109
CHAPTER 9
This topic provides some basic communications concepts, as well as Toptech's recommendations for achieving
optimum performance.
9.1
9.1.1
RS-232
RS-232 communications protocol was designed for point-to-point (i.e., computer to a single device)
communications for short distances. The actual specification for RS-232 distance is limited to 50 feet. In
practice, however, RS-232 communications can be successful at distances over 1000 feet. We generally try to
limit distances to 500-600 feet. RS-232 requires a minimum of 3 wires: Transmit, Receive and Signal ground
wires. More wires are required for hardware handshaking. RS-232 can work on straight, non twisted-pair wiring.
If existing wiring that is not twisted-pair must be used, then RS-232 protocol should be used.
9.1.2
RS-485
RS-485 communications protocol was designed for multi-point (i.e., computer to multiple devices, also called
multi-dropped) communications and can support distances over 5,000 feet. RS-485 requires 4 wires (2 twistedpair) for normal full-duplex communications. With special hardware, 2-wire half-duplex RS-485 can be
accomplished. RS-485 utilizes a transmit pair of wires (TDA and TDB) and a receive pair of wires (RDA and
RDB). A ground wire is not recommended normally, although some devices may have a terminal block for an
RS-485 ground. Most multi-dropped devices require RS-485 communications. When installing new wiring, RS485 twisted-pair wiring is preferred.
9.2
CABLE SELECTION
The speed and distance of communications is mostly affected by the capacitance and resistance of the wiring.
Copper wiring is generally low resistance, so this is not normally the limiting factor. Capacitance, however, can
vary greatly from one type of wire to another. In general, the larger the wire, the higher the capacitance. Wiring
size of 20 to 24 gauge is typically best for data communications. Capacitance of 16pf or less is preferred. With
16pf cable, 9600 baud communications can operate over 1000 feet for RS-232, and over 5000 feet for RS-485.
Doubling the capacitance will generally halve the baud rate or the distance.
Data communications cable should always be shielded. Individual wires or pairs do not need shielding, but an
overall shield should always be used. Whenever possible, always run data communications cable in conduit
and protected from moisture. Moisture can invade most cable coatings and disrupt data communications
integrity. For exposed routing or direct burial, Teflon coatings are recommended. Armored cable is also
available for running over-head without conduit.
RS-232 communications will work over almost any type of wiring, although speed and distance may be limited
by some wiring. Straight (individual) wires or twisted-pair wiring can be used. RS-485 communications requires
twisted-pair wiring with an impedance of 100 ohms.
For new installations, if you select wiring suitable for RS-485 wiring, it will always work for RS-232. This will
provide the ability to change from one communications protocol to another without replacing the wiring.
9.3
Toptech Systems has specialized hardware that will support multi-dropping of devices on a single RS-232
communication line. This is accomplished by tri-stating or disconnecting the transmitter of a device when it is
not transmitting on the communications line. This is similar to the RS-485 multi-dropping method. Due to the
tri-stating of the transmitters, the transmit circuit is 'floating' when no device is transmitting. This can sometimes
cause problems for the computer's receiver circuit, usually framing errors or break conditions.
110
To keep these problems under control, multi-dropped lines need line termination resistors installed. This can be
installed on the receiver of the line driver for the line. For RS-232 communications, a 500 to 1000 ohm resistor
is placed between the receive (RD) and signal ground (SG) wires of the line driver for the line. For RS-485
communications, a 220 to 270 ohm resistor is placed between the receive pair (RDA and RDB) wires of the line
driver for the line. Termination resistors actually weaken the driver's ability to transmit; therefore, when longer
lines are used or many devices are multi-dropped, the higher resistor values must be used. Unfortunately, the
proper value must sometimes be determined by experimentation. For RS-232, the resistor value must be large
enough to allow the transmitter to drive the voltage levels to at least +3VDC and -3VDC. For RS-485, the
resistor value must be large enough to allow the transmitter to produce a .25 VDC difference in the transmit pair,
but not large enough to disrupt the balance of the line. Too low of a resistor value will typically cause a short on
the data communications line and inhibit communications.
Please note that in RS-485 communications specifications, you will find that 100 ohm termination resistors are
recommended. This is a different type of line termination than what we are discussing here. The 100 ohm
termination is specifically for line balancing and is typically not required for baud rates less then 38,000 baud.
This is well above most PC data communications capabilities.
9.4
OPTICAL ISOLATION
Due to the major power fluctuations that may occur in an industrial environment and the effect of lightning
storms in an area with lots of piping, we recommend that any data communications line connecting devices
powered from different AC circuits be protected with optical isolation devices. The RS-232 to RS-485
converters that Toptech supplies provide this isolation. We also provide an RS-232 optical isolation device for
RS-232 lines. Similar devices are available from Black Box Corporation and Burr-Brown. One isolation device
must be installed on each data communications line. This is different from line drivers or short-haul modems
that require a device on each end.
Please note that any line termination used must be installed on the field side of the optical isolator. Also, optical
isolators are directional, which means that one side is for the computer (DCE) and the other side is for the field
equipment (DTE). They will not transmit data if installed backwards!
9.5
SHIELD GROUNDING
Due to all of the electrical noise generated by an industrial environment, all data communications cable must be
properly shielded. If not properly shielded, communications may work for a while, but you will most probably
experience intermittent communications errors and outages. Most data communications cable comes with good
shielding built in, but if not properly installed, the shielding will be ineffective. Proper installation requires that
the shield be attached to earth ground on ONE END ONLY, typically at the junction box on the computer end,
and MUST BE CONTINUOUS through all junction boxes out to the field equipment. In addition, the shield
should be taped back at each field device and should NEVER be connected to a field device. Unfortunately,
several of the field device manufacturers have terminal blocks labeled for attachment of the shield, and many of
their installation drawings indicate that the shield should be attached to the field devices. Under no
circumstances should the shield ever be attached to a field device!
When connecting through a junction box, care must be taken that the shields be treated just like any other wire.
The shield must remain continuous across the junction box. Don't tie multiple shields together. Route each
shield across the junction box, making sure that it does not short to the box or any other point. Inside of a
junction box, wires are typically unshielded. If a junction box is installed in an electrically noisy area, near
motors, etc., the junction box must be able to provide shielding. Also, AC wiring should not be run into a
junction box that has unshielded data communications wiring. Especially, AC circuits with loads that are
switching off and on or that have a high current flow must be avoided. These will introduce noise into the data
communications lines inside of the junction box.
111