20181120 Multiload II Communications Manual fv 3 4 31 40

MultiLoad II
Communications Guide
Including:
MultiLoad II
MultiLoad II SMP
MultiLoad II SCS
MultiLoad II Mobile
Part # 6077
Firmware Version 3/4.31.40
November 2018
2
Copyright Notice
Copyright © 2000 – 2018 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.
Logos are registered trademarks of Toptech Systems, Inc.
Copyright © 2000-2018 Toptech Systems, Inc. All Rights Reserved.
3
Table of Contents
CHAPTER 1
PROTOCOL SPECIFICATION ..................................................................................................... 7
1.1
DEFINITIONS ............................................................................................................................................ 7
1.2
SMITH PROTOCOL .................................................................................................................................... 8
1.3
BROOKS PROTOCOL ................................................................................................................................. 8
1.4
DANIELS PROTOCOL ................................................................................................................................. 8
1.5
MODBUS-RTU PROTOCOL ........................................................................................................................ 9
1.5.1 Read Holding Registers (fn=3) .......................................................................................................... 9
1.5.2 Write Single Registers (fn=6)............................................................................................................. 9
1.5.3 Loopback/Maintenance (fn=8) ......................................................................................................... 10
1.5.4 Preset Multiple Registers (fn=16) .................................................................................................... 10
1.5.5 Error Responses (fn= +128) ............................................................................................................ 10
1.5.6 Modbus Register Map Summary ..................................................................................................... 11
1.5.7 Extended Services Register ............................................................................................................ 11
1.6
MODBUS-TCP/IP PROTOCOL ................................................................................................................. 12
1.6.1 Read Holding Registers (fn=3) ........................................................................................................ 13
1.6.2 Write Single Registers (fn=6)........................................................................................................... 13
1.6.3 Loopback/Maintenance (fn=8) ......................................................................................................... 13
1.6.4 Preset Multiple Registers (fn=16) .................................................................................................... 13
1.6.5 Error Responses (fn= +128) ............................................................................................................ 14
1.6.6 Modbus Register Map Summary ..................................................................................................... 15
1.6.7 Extended Services Register ............................................................................................................ 15
CHAPTER 2
MULTILOAD COMMAND RESPONSES ................................................................................... 16
CHAPTER 3
QUERY COMMAND: .................................................................................................................. 18
CHAPTER 4
FUNCTION COMMANDS: .......................................................................................................... 19
CHAPTER 5
TERMINAL COMMANDS: .......................................................................................................... 21
5.1
TERMINAL ESCAPE COMMANDS:.............................................................................................................. 21
CHAPTER 6
METER COMMANDS: ................................................................................................................ 26
6.1
AUTHORIZE PRESET (PRODUCT AND PRESET VOLUME): ........................................................................... 26
6.2
CLEAR ALARMS: ..................................................................................................................................... 26
6.3
ENABLE PRESET .................................................................................................................................... 26
6.4
END TRANSACTION................................................................................................................................. 26
6.5
BATCH COMPLETE .................................................................................................................................. 27
6.6
BATCH END:........................................................................................................................................... 27
6.7
END BATCH:........................................................................................................................................... 27
6.8
PRESET MESSAGE: ................................................................................................................................ 28
6.9
PROVING TRANSACTION MODE: .............................................................................................................. 28
6.10
REQUEST STATUS & PRESET ALARMS: .................................................................................................... 29
6.11
REQUEST TANK STATUS & TANK ALARMS:............................................................................................... 52
6.12
REQUEST SAMPLER STATUS & SAMPLER ALARMS: .................................................................................. 60
6.13
REQUEST SMP STATUS & PRESET ALARMS: ........................................................................................... 69
6.14
TRIP PRESET ALARMS: ........................................................................................................................... 69
4
6.15
6.16
6.17
6.18
6.19
6.20
6.21
6.22
6.23
REQUEST BAY ALARMS: ......................................................................................................................... 70
REQUEST COMPONENT ALARMS: ............................................................................................................ 71
REQUEST METER ALARMS: ..................................................................................................................... 72
REQUEST ADDITIVE ALARMS: .................................................................................................................. 73
REQUEST SAMPLER ALARMS: ................................................................................................................. 74
REQUEST TANK ALARMS:........................................................................................................................ 75
REMOTE TRANSACTION DATA: ................................................................................................................ 76
START PRESET FLOW : ............................................................................................................................ 77
STOP PRESET FLOW: ............................................................................................................................. 77
CHAPTER 7
REGISTER OPERATIONS: ........................................................................................................ 78
7.1
GENERIC REGISTERS ............................................................................................................................. 79
7.1.1 Register Data Types ........................................................................................................................ 79
7.1.2 000 – RCU Level Configuration Registers ...................................................................................... 91
7.1.3 100 – Bay Level Configuration Registers ........................................................................................ 94
7.1.4 101 – Preset Level Configuration Registers .................................................................................... 95
7.1.5 102 – Meter Level Configuration Registers ..................................................................................... 99
7.1.6 103 – Component Level Configuration Registers .......................................................................... 103
7.1.7 104 – Additive Level Configuration Registers ............................................................................... 106
7.1.8 108 –Trace Level Configuration Registers .................................................................................... 108
7.1.9 110 –Network Level Configuration Registers ................................................................................ 108
7.1.10
111 –Tank Level Configuration Registers ................................................................................. 109
7.1.11
115 –Sampler Level Configuration Registers ........................................................................... 110
7.1.12
116 –Security Level Configuration Registers ............................................................................ 110
7.1.13
117 –Report Level Configuration Registers .............................................................................. 112
7.1.14
105 – Custom Logic Definitions Registers ................................................................................ 113
7.1.15
107 – Custom Logic Value Registers ........................................................................................ 128
7.1.16
200 – Stand Alone BOL Definition Registers ............................................................................ 128
7.1.17
800 – Transaction Archive Registers ........................................................................................ 132
7.2
SPECIAL PURPOSE REGISTERS ............................................................................................................. 134
7.2.1 000 – MultiLoad Firmware Version ................................................................................................ 134
7.2.2 001 – Date and Time ..................................................................................................................... 134
7.2.3 003 – FCM Poll Rate ..................................................................................................................... 135
7.2.4 005 – Current BOL/Ticket Number ................................................................................................ 135
7.2.5 070 – Ethernet Enable ................................................................................................................... 135
7.2.6 071 – IP Address ........................................................................................................................... 135
7.2.7 072 – IP Mask ................................................................................................................................ 135
7.2.8 073 – IP Gateway .......................................................................................................................... 135
7.2.9 074 – IP Host ................................................................................................................................. 136
7.2.10
076 – ADMIN PASSWORD ....................................................................................................... 136
7.2.11
077 – USER PASSWORD ........................................................................................................ 136
7.2.12
085 – Modem Initialization String .............................................................................................. 136
7.2.13
091..093 – Communication Port Parameters ............................................................................ 136
7.2.14
094 – 095 Network Printer Number Of Copies ......................................................................... 137
7.2.15
112 - Real-Time Preset Total Gross Totalizers ......................................................................... 137
7.2.16
113 - Real-Time Preset Total Net Totalizers ............................................................................. 138
5
7.2.17
7.2.18
7.2.19
7.2.20
7.2.21
7.2.22
7.2.23
7.2.24
7.2.25
7.2.26
7.2.27
7.2.28
7.2.29
7.2.30
7.2.31
7.2.32
7.2.33
7.2.34
7.2.35
7.2.36
7.2.37
7.2.38
7.2.39
7.2.40
7.2.41
7.2.42
7.2.43
7.2.44
7.2.45
7.2.46
7.2.47
7.2.48
7.2.49
114 - Real-Time Preset Total Mass Totalizers .......................................................................... 138
120 - Real-Time Sampler Total Gross Totalizers ...................................................................... 138
129 – FCM Low Level Meter Status .......................................................................................... 139
133 – FCM IO Access ............................................................................................................... 139
134 – Discrete Parameter Security settings .............................................................................. 140
135 – Group Parameter Security settings ................................................................................. 140
136 – Access Parameter Security settings ............................................................................... 141
140 –Current Latitude/Longitude position Registers (MultiLoad Mobile Only) ......................... 142
141 – Current Transaction Latitude/Longitude/Site Index Registers (MultiLoad Mobile Only) . 142
400 - Preset Definition Registers .............................................................................................. 142
401 – External Preset Display Register .................................................................................... 143
402 – Tank Definition Register .................................................................................................. 143
500 - Product Definition Registers ............................................................................................ 144
600 - Standalone Driver Card Database ................................................................................... 144
605 Modbus Device Database .................................................................................................. 145
650 –GPS Site Database (MultiLoad Mobile Only) ................................................................... 145
700 - Configurable Language Prompts ..................................................................................... 146
710 - Bay Alarm Messages ....................................................................................................... 147
711 - Preset Alarm Messages ................................................................................................... 149
712 - Meter Alarm Messages .................................................................................................... 151
713 - Component Alarm Messages ........................................................................................... 153
714 - Additive Alarm Messages ................................................................................................ 155
716 - SamplerAlarm Messages ................................................................................................. 157
715 - TankAlarm Messages ...................................................................................................... 158
910 – Read Event Log Message Queue ................................................................................... 160
912 – Read W & M Change Log Message Queue .................................................................... 160
913 – Read AUDIT Log Message Queue ................................................................................. 160
950 - Current Driver Card Number ............................................................................................ 161
951..955 - Current Driver Prompt Information ........................................................................... 161
960 – Input Data ........................................................................................................................ 161
961 – Input Data Terminating Key ............................................................................................ 161
962 - Current Driver Card Data ................................................................................................. 162
998 – Bitmap Graphic Cache .................................................................................................... 163
CHAPTER 8
COMMUNICATION TRACE EXAMPLE ................................................................................... 164
8.1
STARTUP OF HOST SOFTWARE ............................................................................................................. 164
8.1.1 Update Date & Time ...................................................................................................................... 164
8.1.2 Update Product Definitions ............................................................................................................ 164
8.1.3 Update Preset Definitions .............................................................................................................. 165
8.1.4 Status Query .................................................................................................................................. 165
8.2
TRANSACTION AUTHORIZATION ............................................................................................................. 166
8.2.1 Process Driver Card In .................................................................................................................. 166
8.2.2 Authorize a Transaction on MultiLoad ........................................................................................... 167
8.2.3 Reading Totalizers ......................................................................................................................... 167
8.3
BATCH AUTHORIZATION ........................................................................................................................ 168
8.3.1 Authorize a Batch on MultiLoad ..................................................................................................... 168
6
8.3.2 Monitor Load During Delivery ........................................................................................................ 170
8.4
END OF BATCH PROCESSING ................................................................................................................ 170
8.4.1 Ending a Batch on MultiLoad ......................................................................................................... 170
8.5
END OF TRANSACTION PROCESSING ..................................................................................................... 171
8.5.1 Ending a Transaction on MultiLoad ............................................................................................... 171
8.6
SHUTDOWN OF HOST SOFTWARE .......................................................................................................... 171
CHAPTER 9
DATA COMMUNICATION NOTES AND RECOMMENDATIONS ........................................... 172
9.1
PROTOCOL SELECTION: RS-232 VS. RS-485 ........................................................................................ 172
9.1.1 RS-232 ........................................................................................................................................... 172
9.1.2 RS-485 ........................................................................................................................................... 172
9.2
CABLE SELECTION................................................................................................................................ 172
9.3
LINE TERMINATION IN MULTI-DROPPED COMMUNICATIONS ..................................................................... 172
9.4
OPTICAL ISOLATION .............................................................................................................................. 173
9.5
SHIELD GROUNDING ............................................................................................................................. 173
CHAPTER 10
PARAMETER ACCESS SECURITY .................................................................................... 174
10.1
UNDERSTANDING NEW USER AND SECURITY FEATURES ......................................................................... 174
Chapter 1 – Protocol Specification
CHAPTER 1
7
PROTOCOL SPECIFICATION
The MultiLoad auto-detects four low level computer protocols for host communications.
- Smith Protocol
- Brooks Protocol
- Daniels
- Modbus-RTU Protocol
- Modbus- TCP/IP 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. Port 7735 supports SSL encryption (TLS v1.2 only for security reasons) and can
be enabled via the network setup screen.
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
0
0
00000000
STX
2
2
00000010
ETX
3
3
00000011
SOH
1
1
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
Longitudinal Redundancy Check. The LRC is an ASCII character computed as
the exclusive or (XOR) sum of all characters following the STX and including
the ETX.
CRC
Cyclic Redundancy Check.
A1..A3
A 3-character ASCII unit address of the MultiLoad. Please refer to the
MultiLoad User Guide for configuring the unit address.
D1..Dn
Data field characters.
Fn
Function field code.
Adr
A single character binary unit address of the MultiLoad.
Chapter 1 – Protocol Specification
1.2
8
SMITH PROTOCOL
The Smith protocol is compatible with devices from Smith Meter, such as the Accuload I and Accuload II minicomputer 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.

ADR is binary character of the address of the MultiLoad. Typically 0x01.

Fn is expected to be 0x41/0x42 alternating on each command. Responses will have Fn as 0x41/0x42
for normal responses and 0xc1/0xc2 for exception responses.

D1…Dn is string data containing the commands listed in this manual.
Note: Modbus extension 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).
Chapter 1 – Protocol Specification
1.5
9
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
READ HOLDING REGISTERS (FN=3)
Note: Both Modbus registers MUST be read at the same time when reading 32-bit values.
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
WRITE SINGLE REGISTERS (FN=6)
Note: cannot be used for 32-bit registers.
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
Chapter 1 – Protocol Specification
1.5.3
10
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
PRESET MULTIPLE REGISTERS (FN=16)
Note: Both Modbus registers MUST be written at the same time when writing 32-bit values.
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
ERROR RESPONSES (FN= +128)
Rx:
Quiet Time
ADR
FN+128
Error
Subcode
CRC2
CRC1
Error Sub codes are:
1 = Invalid Function Code. Indicates that the use of an invalid or unimplemented function has been
attempted.
2 = Invalid Address Field. Indicates that a read or write was made to an invalid address. Can also
indicate that a read or write to a single register of a 32-bit value has been attempted.
3 = Invalid Data Field. Indicates that an attempt to write an invalid value to a register has occurred.
This error code will also be returned if an attempt is made to change a value under Weights and Measures
control without with W&M switch being in the active state.
4 = Query Processing Failure. This code is not returned.
Chapter 1 – Protocol Specification
1.5.6
MODBUS REGISTER MAP SUMMARY
1 – 999
1000 – 1199
1200 – 1399
1400 – 1599
1600 – 1799
1800 – 1999
2000 – 2199
2200 – 2999
3000 – 3999
4000 – 6000
7000 – 7799
7800 – 7999
8000 – 8999
9000-10999
General, BOL Template, Misc. Configurations.
RCU Configurations
Bay Configurations
Preset Configurations
Meter Configurations
Component Configurations
Additive Configurations
Product, Alarm, Database, Misc. Configurations
Totalizers
Preset, Meter, Component and Additive Status
Status, Authorization Control and Alarms
Transaction Archive
Preset Definitions
Extended Services Register
Note: Tank and Sampler level is not available at the moment for Modbus. Use the custom logic mapping
tool for this.
1.5.7
EXTENDED SERVICES REGISTER
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.
11
Chapter 2 –MultiLoad Responses
1.6
12
MODBUS-TCP/IP PROTOCOL
The Modbus-TCP/IP protocol has been implemented to be as compatible as possible with the original published
Modbus-TCP/IP standard v1.0b.
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 tcp/ip-protocol, MultiLoad accepts data in the following format:
MBAP
FN
DATA
Modbus-TCP/IP protocol messages are framed by a MBAP-Header.
Fields
Length
Description
Client
Transaction
Identifier
2 Bytes
Identification of a
MODBUS Request/
Response
transaction.
Initialized
client
by
the
Recopied by the
server from the
received request
Protocol Identifier
2 Bytes
0
=
Protocol
Initialized
client
by
the
Recopied by the
server from the
received request
Length
2 Bytes
Number of following
bytes
Initialized by
client (request)
the
Initialized by the
server (Response)
Unit Identifier
1 Byte
Identification of a
remote
slave
connected on a
serial line or on
other buses
Initialized
client
the
Recopied by the
server from the
received request
Modbus
Server
by
The header is 7 bytes long:
Transaction Identifier - It is used for transaction pairing, the MODBUS server copies in the response the
transaction identifier of the request.
Protocol Identifier – It is used for intra-system multiplexing. The MODBUS protocol is identified by the value 0.
Length - The length field is a byte count of the following fields, including the Unit Identifier and data fields.
Unit Identifier – This field is used for intra-system routing purpose. It is typically used to communicate to a
MODBUS+ or a MODBUS serial line slave through a gateway between an Ethernet TCP-IP network and a
MODBUS serial line. This field is set by the MODBUS Client in the request and must be returned with the same
value in the response by the server.
All MODBUS/TCP ADU are sent via TCP to registered port 502.
Remark : the different fields are encoded in Big-endian.
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.
Chapter 2 –MultiLoad Responses
13
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.6.1
READ HOLDING REGISTERS (FN=3)
Note: Both Modbus registers MUST be read at the same time when reading 32-bit values.
Tx:
Number
MBAP
Start
Register
MSB
FN=3
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
Rx:
FN=3
MBAP
1.6.2
(+128 if
error)
1st
Register
Byte
Count
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
…
WRITE SINGLE REGISTERS (FN=6)
Note: cannot be used for 32-bit registers.
Tx:
MBAP
FN=6
MBAP
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Register
Register
MSB
LSB
Start
Register
MSB
Start
Register
LSB
Register
Register
MSB
LSB
Rx:
FN=6
1.6.3
LOOPBACK/MAINTENANCE (FN=8)
Note: only loopback of command supported.
Tx:
MBAP
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
MBAP
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
Rx:
1.6.4
PRESET MULTIPLE REGISTERS (FN=16)
Note: Both Modbus registers MUST be written at the same time when writing 32-bit values.
Tx:
Number
MBAP
FN=16
Start
Register
MSB
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
Byte
Count
Chapter 2 –MultiLoad Responses
14
1st
Register
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
…
Rx:
FN=16
MBAP
1.6.5
(+128 if
error)
Number
Start
Register
MSB
Start
Register
LSB
Of
Registers
MSB
Number
of
Registers
LSB
ERROR RESPONSES (FN= +128)
Rx:
MBAP
FN+128
Error
Subcode
Error Sub codes are:
1 = Invalid Function Code. Indicates that the use of an invalid or unimplemented function has been
attempted.
2 = Invalid Address Field. Indicates that a read or write was made to an invalid address. Can also
indicate that a read or write to a single register of a 32-bit value has been attempted.
3 = Invalid Data Field. Indicates that an attempt to write an invalid value to a register has occurred.
This error code will also be returned if an attempt is made to change a value under Weights and Measures
control without with W&M switch being in the active state.
4 = Query Processing Failure. This code is not returned.
Chapter 2 –MultiLoad Responses
1.6.6
MODBUS REGISTER MAP SUMMARY
1 – 999
1000 – 1199
1200 – 1399
1400 – 1599
1600 – 1799
1800 – 1999
2000 – 2199
2200 – 2999
3000 – 3999
4000 – 6000
7000 – 7799
7800 – 7999
8000 – 8999
9000-10999
1.6.7
General, BOL Template, Misc. Configurations.
RCU Configurations
Bay Configurations
Preset Configurations
Meter Configurations
Component Configurations
Additive Configurations
Product, Alarm, Database, Misc. Configurations
Totalizers
Preset, Meter, Component and Additive Status
Status, Authorization Control and Alarms
Transaction Archive
Preset Definitions
Extended Services Register
EXTENDED SERVICES REGISTER
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 TCP/IP 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:
6. Write the Command Length into the Holding Register 9000 (max value of 999 characters).
7. Write the Command Text into the Holding Register 9001 (max length of 999).
8. Command will execute when the final character of the Command Text is written (9001+Command
Length-1).
9. Read the Reply Length from the Holding Register 9000 (max value of 999 characters).
10. 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.
15
Chapter 2 –MultiLoad Responses
CHAPTER 2
16
MULTILOAD COMMAND RESPONSES
<command_status> <rcu_status> <card_status> <command specific response data>
For MultiLoad to acknowledge a message two conditions must be met. First the message must fit the Message
Framing Protocol with a valid LRC, BCC or CRC. Second, the address specified in the first two characters of
the command must match the configured MultiLoad address. Any message that satisfies both of these
requirements will be sent a response.
Modbus:
If using the Modbus protocol, the Modbus Extended Services Registers must be used to pass in
these ASCII string commands.
The first three characters of every response will contain command, RCU and card status data as defined below.
enum
{
VALID_COMMAND
= ‘0’,
INVALID_PARAMETER
= ‘1’,
INVALID_COMMAND
= ‘2’
} command_status;
enum
{
IDLE
AUTH_BAY
MENU_MODE
DIAG_MODE
AUTHORIZING_LOAD
LOAD_AUTHORIZED
COMPLETING_LOAD
TRANSACTION_DONE
TRANSACTION_CANCEL
PULLING_TRANSACTION
ARCHIVING_TRANSACTION
TRANSACTION_AUTHORIZED
RCU_NOT_CONFIGURED
RCU_POWER_UP
INITIALIZING
NO_TRANSACTION
REMOTE_AUTH_PRESET1
REMOTE_AUTH_PRESET2
REMOTE_AUTH_PRESET3
REMOTE_AUTH_PRESET4
REMOTE_AUTH_PRESET5
REMOTE_AUTH_PRESET6
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
'0',
4',
'9',
'%',
'A',
'B',
'C',
'D',
'E',
'P',
'R',
'T',
'?',
'!',
'I',
'N',
'a',
'b',
'c',
'd',
'e',
'f',
Chapter 2 –MultiLoad Responses
REMOTE_AUTH_PRESET7
REMOTE_AUTH_PRESET8
REMOTE_AUTH_PRESET9
REMOTE_AUTH_PRESET10
REMOTE_AUTH_PRESET11
REMOTE_AUTH_PRESET12
REMOTE_AUTH_PRESET13
REMOTE_AUTH_PRESET14
} rcu_status;
17
=
=
=
=
=
=
=
=
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n'
Modbus:
Read Only Register=7000, Len=1, Character (rcu_status)
enum
{
CARD_NOT_INSERTED
CARD_INSERTED
CARD_SECOND_INSERTED
} card_status;
=’0’,
=’1’,
=’2’
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.31.xx Jan xx 2014
With “0?0” as the three status characters and “000MultiLoad II v3.31.xx Jan xx 2014” as the command specific
response.
Chapter 3 – Query Command
CHAPTER 3
18
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 audit_logmsg_queued:1;
// a audit message is available
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 keypad_locked :1;
// is keypad locked or not
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 – Function Commands
CHAPTER 4
19
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.
FKEYPADON
FKEYPADOFF
=
=
Enables the keypad on the MultiLoad RCU (default it is active)
Disables the keypad on the MultiLoad RCU
Write Only Register=7008, Len=1, 16-Bit Integer (any value=FKEYPADON)
Write Only Register=7009, Len=1, 16-Bit Integer (any value=FKEYPADOFF)
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)
FEODLOG
=
Prints EOD-Report for all totalizers type by arm and also gives the throughput
between the feodlog commands
Modbus:
Write Only Register=7018, Len=1, 16-Bit Integer (any value=FEODLOG)
Chapter 4 – Function Commands
FPccc….
FCLEARPROD
=
=
20
Send ccc… characters to the attached printer port (if defined).
Clear all product definitions (500 register) except for the 000-Unknown Product
definition.
Clear Access ID and PIN database.
Clears all custom logic entries.
Clear Audit Log Messages stored in Multiload.
FCLEARID
=
FCLEARCUSTOM
=
FCLEARAUDITLOG
=
Modbus:
Supported through Modbus Extended Services Registers.
Chapter 5 – Terminal Commands
CHAPTER 5
TERMINAL COMMANDS:
Ts…
Where:
s… = Any text string to display. Display string may contain one or more terminal escape commands.
5.1
TERMINAL ESCAPE COMMANDS:
<ESC><Terminal Escape Command and parameters >
Where Terminal Escape Commands are:
A
Authorize Transaction:
Authorize MultiLoad Transaction. Will display load screen.
Modbus:
Write Only Register=7016, Len=1, 16-Bit Integer (any value=Authorize Transaction)
Cx
Clear RCU counters
Where,
X = counter to clear, 1 = counter 1, 2 = counter 2
E
Setup Data Entry
Used to display a flashing cursor (Setup Data Entry Length > 1) and allow user input. Data to be
retrieved at R960, R961.
F
Turn on Big Font
Used to enable double size font.
F
Turn off Big Font
Used to return to normal size font.
G
Set Foreground/Background Text Colors
Where:
f = (character) 0x20 + Foreground Color Palette Index
b = (character) 0x20 + Background Color Palette Index
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)
21
Chapter 5 – Terminal Commands
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
Home Cursor to Position (0,0)
Move cursor position to upper left corner of screen.
Ircle
Set Reverse Video
Where:
r = (character) 0x20 + Top Text Row Position (0 = top, 15 = bottom)
c = (character) 0x20 + Left Text Column Position (0 = left, 39 = right)
l = (character) 0x20 + Length in Text Columns
e = “0” or “1” (0 = Set Inverse Text, 1 = Clear Inverse Text)
J
Erase from Cursor to End of Line
Use with after <ESC>Y first to clear an entire line. Can be used as a CR since cursor will be positioned
on next line.
K
Erase from Cursor to End of Screen
Use with after <ESC>H to clear entire screen.
Lxx
Setup Data Entry Length
Where:
xx = Length of Data Entry Input Required (00-25) (0 = Key Press with No Flashing Cursor)
N
Turn On Cursor
O
Turn Off Cursor
R
Reset the RCU Display
Modbus:
Write Only Register=7017, Len=1, 16-Bit Integer (any value=Reset RCU Display)
Yrc
Set Cursor Position
Where:
r = (character) 0x20 + Top Text Row Position (0 = top, 15 = bottom)
c = (character) 0x20 + Left Text Column Position (0 = left, 39 = right)
X
Clear Entire Display
22
Chapter 5 – Terminal Commands
<
Unlock the Display
>
Lock the Display
@
Turn Character Echo On
!
Turn Asterisk Echo On
arcwh Draw Progress Box
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 Rows Down
brcwhp Update Progress Box
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 Rows Down
p = (character) 0x20 + Percent Value to Display (0 = None, 100 = Full)
crcpf
Display Animation Frame
Where:
r = (character) 0x20 + Top Text Row Position (0 = top, 15 = bottom)
c = (character) 0x20 + Left Text Column Position (0 = left, 39 = right)
p = (character) 0x20 + Animation Picture Index
f = (character) 0x20 + Animation Frame Index
Note: Test only since Animation Picture Index and Animation Frame Index values may change between
firmware versions.
Df
Display Factory Logo
Where:
f = (character) 0x20 + Factory Logo Index
Note: Test only since Factory Logo Index values may change between firmware versions.
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:
23
Chapter 5 – Terminal Commands
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)
24
Chapter 5 – Terminal Commands
Custom 1
Custom 2
Custom 3
Custom 4
Custom 5
Flash 1
Flash 2
25
= 0x09 (Not available)
= 0x0a (Not available)
= 0x0b (Not available)
= 0x0c (Not available)
= 0x0d (Not available)
= 0x0e
= 0x0f
hrcwhaaaaaaaa Display Graphic Cache
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
aaaaaaaa = 8 character hexadecimal cache offset start value.
See R/U 998 command for more details on cache offset.
Modbus:
Supported through Modbus Extended Services Registers.
Chapter 6 – Meter Commands
CHAPTER 6
6.1
26
METER COMMANDS:
AUTHORIZE PRESET (PRODUCT AND PRESET VOLUME):
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 by preset
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)
MCBA by bay
Modbus:
Write Only Register=7019, 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.
Chapter 6 – Meter Commands
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)
27
Chapter 6 – Meter Commands
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
PROVING TRANSACTION MODE:
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)
28
Chapter 6 – Meter Commands
6.10
REQUEST STATUS & PRESET ALARMS:
MRSpppxxxxyyyyzzzzaaaa => RSppp… (Requested parameters as listed below).
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Xxxx = Optional response configuration bits #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int preset_state:1;
unsigned int preset_status_0:1;
unsigned int preset_alarms:1;
unsigned int volume_preset_whole:1;
unsigned int batch_gross_del_whole:1;
unsigned int batch_net_del_whole:1;
unsigned int batch_temp_tenths:1;
unsigned int batch_pressure_tenths:1;
unsigned int batch_gravity:1;
unsigned int gross_flow_rate:1;
unsigned int component_batch_gross_del_whole:1;
unsigned int component_batch_net_del_whole:1;
unsigned int component_batch_temp_tenths:1;
unsigned int component_batch_pressure_tenths:1;
unsigned int component_batch_gravity:1;
unsigned int additive_batch_gross_del_thous:1;
} flags;
} query_0; (default value 0x965f.)
29
Chapter 6 – Meter Commands
yyyy = Optional response configuration bits #1 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int preset_status_0:1;
unsigned int preset_status_1:1;
unsigned int preset_status_2:1;
unsigned int meter_status_0:1;
unsigned int meter_status_1:1;
unsigned int meter_status_2:1;
unsigned int component_status_0:1;
unsigned int component_status_1:1;
unsigned int component_status_2:1;
unsigned int additive_status_0:1;
unsigned int additive_status_1:1;
unsigned int additive_status_2:1;
unsigned int temp_press_in_hunds:1;
unsigned int component_current_temp_hund:1;
unsigned int component_current_pressure_hund:1;
unsigned int component_current_density_tenths:1;
} flags;
} query_1; (default value 0x0000.)
30
Chapter 6 – Meter Commands
zzzz = Optional response configuration bits #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int meter_batch_gross_del_whole:1; //Mass
unsigned int meter_gross_flow_rate:1; // Mass
unsigned int component_current_relative_density_tenthous:1;
unsigned int current_bsw_hund:1;
unsigned int component_current_api_gravity_tenths 1;
unsigned int batch_bsw_hund:1;
unsigned int component_batch_api_gravity_tenths:1;
unsigned int batch_mass_del:1;
unsigned int component_batch_mass_del:1;
unsigned int component_current_volume_correction_factor:1;
unsigned int component_current_temperature_correction_factor:1;
unsigned int component_current_pressure_correction_factor:1;
unsigned intsampler_batch_gross_del_thous:1;
unsigned intsampler_batch_current_target_samples:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_2; (default value 0x0000.)
aaaa = Optional response configuration bits #3 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int component_meter_gross_del_whole:1;
unsigned int component_meter_net_del_whole:1; // Mass
unsigned int component_meter_batch_temp_tenths:1;
unsigned int component_meter_batch_pressure_tenths:1;
unsigned int component_meter_batch_gravity:1;
unsigned int component_meter_current_temp_tenths:1;
unsigned int component_meter_current_pressure_tenths:1;
unsigned int component_meter_current_gravity:1;
unsigned int component_meter_current_relative_density_tenthous:1;
unsigned int unused_9:1;
unsigned int component_meter_current_api_gravity_tenths:1;
unsigned int unused_11:1;
unsigned intcomponent_meter_batch_api_gravity_tenths:1;
unsigned int component_meter_mass_del:1;
31
Chapter 6 – Meter Commands
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_3; (default value 0x0000.)
Defaults are compatible with previous Multiload MRS replies.
To query for preset information only use: MRSppp03ff
To query for preset pressure only use: MRSppp0080
To query for additive delivered only use: MRSppp8000
RS = Request Status Response
ppp = The specified zero-based preset or load arm number (000-011).
32
Chapter 6 – Meter Commands
Query 0 and 1 Responses:
wwww= preset state in hexadecimal as:
enum
{
PRESET_IDLE
= 0,
PRESET_LOW_FLOW
= 1,
PRESET_HIGH_FLOW
= 2,
PRESET_1ST_TRIP
= 3,
PRESET_2ND_TRIP
= 4,
PRESET_FINAL_TRIP
= 5,
PRESET_START
= 6,
PRESET_ALARM
= 7,
PRESET_COMPLETE
= 8,
PRESET_NOT_AUTH
= 9,
PRESET_WAIT_TMS
= 10,
PRESET_AUTH
= 11,
PRESET_PRESET
= 12,
PRESET_DISABLED
= 13,
PRESET_STOP
= 14,
PRESET_REMOTE_MSG
= 15,
PRESET_END_OF_BATCH = 16,
PRESET_ARCHIVING
= 17,
PRESET_CLEARING
= 18,
PRESET_TRANS_DONE
= 19,
PRESET_DIVERT
= 20,
PRESET_NO_STATE
= 99
} preset_state;
33
Chapter 6 – Meter Commands
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
Chapter 6 – Meter Commands
35
yyyy= preset alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char preset_fcm_com:1;
Unsigned char preset_permissive:1;
Unsigned char swing_arm_permissive:1;
Unsigned char line_not_flushed:1;
Unsigned char preset_block_valve:1;
Unsigned char bay_alarm:1;
Unsigned char component_alarm:1;
Unsigned char additive_alarm:1;
Unsigned char meter_stop:1;
unsigned char preset_overrun:1;
unsigned char excess_flow:1;
Unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
unsigned char configuration_error:1;
} flags;
} preset_alarms;
// one or more FCMs that are required for
PRESET status or signals are in com
error.
// preset permissive not active but preset is
authorized to load.
// swing arm not in bay and preset is
authorized to load.
// less than min_line_flush_vol has flowed
since a non-flush component has flowed
and batch was ended.
// block value status does not agree with
commanded valve position.
// a bay level alarm currently exists.
// a component level alarm currently exists
for this preset.
// a additive level alarm currently exists for
this preset.
// meter stop button for preset pressed
// preset delivered volume is over target
volume by overrun_alarm_vol.
// preset flow rate has exceeded
excess_flow_alarm_rate.
// preset configuration has invalid data,
check message log for details
Chapter 6 – Meter Commands
qqqqqqqqq= preset quantity in whole units
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.
Sddddd = signed batch average temp in tenths or hundredths
sddddd = signed batch average pressure in tenths or hundredths
dddddd = depending on API table selected,
batch average density in tenths OR
batch average relative density in ten thousands OR
batch average gravity in tenths
ddddd = preset gross flow rate in whole units
Modbus :
Where: p = preset (0-11)
Read Only Register=4000+p, Len=1, 16-Bit Integer (wwww)
Read Only Register=4012+p, Len=1, 16-Bit Integer (xxxx)
Read Only Register=4024+p, Len=1, 16-Bit Integer (yyyy)
Read Only Register=4036+p, Len=2, 32-Bit Integer (qqqqqqqqq)
Read Only Register=4060+p, Len=2, 32-Bit Integer (ddddddddd (gross))
Read Only Register=4084+p, Len=2, 32-Bit Integer (ddddddddd (net))
Read Only Register=4108+p, Len=2, 32-Bit Integer (sddddd (temp))
Read Only Register=4132+p, Len=2, 32-Bit Integer (sddddd (pressure))
Read Only Register=4156+p, Len=2, 32-Bit Integer (dddddd)
Read Only Register=4180+p, Len=1, 16-Bit Integer (ddddd (rate))
36
Chapter 6 – Meter Commands
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.
Ddddd = meter gross flow rate in whole units
Modbus :
Where: p = preset (0-11), m = meter (0-4)
Read Only Register=4192+p*5+m, Len=2, 32-Bit Integer (ddddddddd (gross))
Read Only Register=4312+p*5+m, Len=1, 16-Bit Integer (ddddd (rate))
37
Chapter 6 – Meter Commands
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.
Sddddd = signed component batch average temp in tenths or hundredths
sddddd = component batch average pressure in tenths or hundredths
dddddd = depending on API table selected,
component batch average density in tenths OR
component batch average relative density in ten thousands OR
component batch average gravity in tenths
sddddd = signed component current temp in hundredths
sddddd = signed component current pressure in hundredths
sddddd = signed component current density in tenths
sddddd = signed component current relative density in ten thousands
sddddd = signed component current bsw hund
sdddd = signed component current api gravity tenths
sddddd = signed batch average bsw hund
sdddd = signed batch average api gravity tenths
ddddddddd = component meter delivered gross quantity in whole units
ddddddddd = component meter delivered net quantity in whole units
sddddd = signed component meter batch average temp in tenths or hundredths
sddddd = component meter batch average pressure in tenths or hundredths
dddddd = depending on API table selected,
component meter batch average density in tenths OR
component meter batch average relative density in ten thousands OR
component meter batch average gravity in tenths
sddddd = signed component meter current temp in hundredths
sddddd = signed component meter current pressure in hundredths
sddddd = signed component meter current density in tenths
sddddd = signed component meter current relative density in ten thousands
sddddd = signed component meter current bsw hund
sdddd = signed component meter current api gravity tenths
sddddd = signed meter batch average bsw hund
sdddd = signed meter batch average api gravity tenths
ddddddddd = delivered mass quantity in whole units
Modbus :
Where: p = preset (0-11), c = component (0-7)
Read Only Register=4372+p*8+c, Len=2, 32-Bit Integer (ddddddddd (gross))
Read Only Register=4564+p*8+c, Len=2, 32-Bit Integer (ddddddddd (net))
Read Only Register=4756+p*8+c, Len=2, 32-Bit Integer (sddddd (component average temp))
Read Only Register=4948+p*8+c, Len=2, 32-Bit Integer (sddddd (component average pressure))
Read Only Register=5140+p*8+c, Len=2, 32-Bit Integer (dddddd (component average density/rel.
dens./gravity))
Read Only Register=5332+p*8+c, Len=2, 32-Bit Integer (sddddd (component current temp))
Read Only Register=5524+p*8+c, Len=2, 32-Bit Integer (sddddd (component current pressure))
38
Chapter 6 – Meter Commands
Read Only Register=5716+p*8+c, Len=2, 32-Bit Integer (sddddd (component current density))
Read Only Register=6292+p*8+c, Len=2, 32-Bit Integer (sddddd (component current relative density))
Read Only Register=6484+p*8+c, Len=2, 32-Bit Integer (sddddd (component current bsw))
Read Only Register=6676+p*8+c, Len=2, 32-Bit Integer (sddddd (component current api gravity))
NOT AVAILABLE Len=2, 32-Bit Integer (sdddd (component average api gravity))
Read Only Register=6868+p*8+c, Len=2, 32-Bit Integer (ddddddddd (gross))
39
Chapter 6 – Meter Commands
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))
per sampler(20)
ddddddddd = sampler batch gross delivered in thousandths
ddddddddd = sampler batch current target
40
Chapter 6 – Meter Commands
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;
41
// 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
Chapter 6 – Meter Commands
xxxx= preset status #1 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 flow_batch:1;
unsigned char clear_batch:1;
unsigned char clear_load:1;
unsigned char flush_stage_needed:1;
unsigned char open_blk_val:1;
unsigned char blk_val_status:1;
unsigned char close_blk_val:1;
unsigned char remote_start:1;
unsigned char swing_arm:1;
unsigned char meter_stop:1;
unsigned char alarm_out:1;
unsigned char permissive:1;
} flags:
} preset_status_1;
42
// command to clear errors
// command to clear errors
// command to clear errors
// currently clearing errors
// command to flow/not flow product
// command to clear batch
// command to clear load
// product flush stage required
// block valve open
// block valve status
// block valve close
// remote start button status
// swing arm select status
// meter stop button status
// preset alarm output status
// preset permissive input status
Chapter 6 – Meter Commands
xxxx= preset status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char permissive_out:1;
// preset permissive output status
unsigned char load_interrupted:1;
// has loading been interrupted
unsigned char clearing_batch:1;
// batch in process of clearing
unsigned char alt_high_flow:1;
// alt_high_flow input active
unsigned char gross_value_measured_for_trade:1; // gross value is W&M approved
unsigned char wm_clear_errors:1;
// command to clear errors
unsigned char batch_alarm:1;
// one or more preset level alarms occurred
during the batch
unsigned char remote_clear:1;
// remote clear from FCM input
unsigned char no_auto_batch_auth:1;
// prevents batch reauthorization
unsigned char open_diverter_val:1;
// divert valve open
unsigned char diverter_invalid_bsw:1;
// divert alarm
unsigned char unused2_11:1;
// future use
unsigned char unused2_12:1;
// future use
unsigned char unused2_13:1;
// future use
unsigned char unused2_14:1;
// future use
unsigned char unused2_15:1;
// future use
} flags:
} preset_status_2;
Modbus:
Supported through Modbus Extended Services Registers.
43
Chapter 6 – Meter Commands
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;
44
// command to clear errors
// command to clear errors
// command to clear errors
// currently clearing errors
// commanded to clear totals
// commanded to start flow
// commanded to stop flow
// forcing flow into high flow
// upstream valve status
// downstream valve status
// meter alarm output status
// meter authorized output status
// meter permissive input status
// meter permissive output status
// command to clear errors
// future use
Chapter 6 – Meter Commands
xxxx= meter status #1 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused1_0:1;
unsigned char unused1_1:1;
unsigned char unused1_2:1;
unsigned char unused1_3:1;
unsigned char unused1_4:1;
unsigned char unused1_5:1;
unsigned char unused1_6:1;
unsigned char unused1_7:1;
unsigned char unused1_8:1;
unsigned char unused1_9:1;
unsigned char unused1_10:1;
unsigned char unused1_11:1;
unsigned char unused1_12:1;
unsigned char unused1_13:1;
unsigned char unused1_14:1;
unsigned char unused1_15:1;
} flags:
} meter_status_1;
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
Chapter 6 – Meter Commands
xxxx= meter status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused2_0:1;
unsigned char unused2_1:1;
unsigned char unused2_2:1;
unsigned char unused2_3:1;
unsigned char unused2_4:1;
unsigned char unused2_5:1;
unsigned char unused2_6:1;
unsigned char unused2_7:1;
unsigned char unused2_8:1;
unsigned char unused2_9:1;
unsigned char unused2_10:1;
unsigned char unused2_11:1;
unsigned char unused2_12:1;
unsigned char unused2_13:1;
unsigned char unused2_14:1;
unsigned char unused2_15:1;
} flags:
} meter_status_2;
Modbus:
Supported through Modbus Extended Services Registers.
46
// 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
Chapter 6 – Meter Commands
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;
47
// command to clear errors
// command to clear errors
// command to clear errors
// currently clearing errors
// commanded to clear batch
// remote start button input status
// pump run output status
// pump kill output status
// pump status input status
// open block valve output status
// block valve status input status
// close block valve output status
// alarm out output status
// authorized output status
// component permissive input status
// component permissive output status
Chapter 6 – Meter Commands
xxxx= component status #1 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char blend_ready:1;
// component blend ready
unsigned char blend_complete:1;
// component blend complete
unsigned char flush_ready:1;
// component flush ready
unsigned char flush_complete:1;
// component flush complete
unsigned char sequential_delivery:1;
// component to be sequentially delivered
unsigned char clearing_batch:1;
// component batch in process of clearing
unsigned char gross_value_measured_for_trade:1; // gross value is W&M approved
unsigned char wm_clear_errors:1;
// command to clear errors
unsigned char unused1_8:1;
// future use
unsigned char unused1_9:1;
// future use
unsigned char unused1_10:1;
// future use
unsigned char unused1_11:1;
// future use
unsigned char unused1_12:1;
// future use
unsigned char unused1_13:1;
// future use
unsigned char unused1_14:1;
// future use
unsigned char unused1_15:1;
// future use
} flags:
} component_status_1;
48
Chapter 6 – Meter Commands
xxxx= component status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused2_0:1;
unsigned char unused2_1:1;
unsigned char unused2_2:1;
unsigned char unused2_3:1;
unsigned char unused2_4:1;
unsigned char unused2_5:1;
unsigned char unused2_6:1;
unsigned char unused2_7:1;
unsigned char unused2_8:1;
unsigned char unused2_9:1;
unsigned char unused2_10:1;
unsigned char unused2_11:1;
unsigned char unused2_12:1;
unsigned char unused2_13:1;
unsigned char unused2_14:1;
unsigned char unused2_15:1;
} flags:
} component_status_2;
Modbus:
Supported through Modbus Extended Services Registers.
49
// 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
Chapter 6 – Meter Commands
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;
50
// command to clear errors
// command to clear errors
// command to clear errors
// commanded to clear errors
// commanded to clear batch
// test inject button input status
// pump run output status
// pump kill output status
// pump status input status
// open block valve output status
// block valve status input status
// close block valve output status
// flush pump run output status
// alarm out output status
// authorized output status
// additive permissive input status
Chapter 6 – Meter Commands
xxxx= additive status #1 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char permissive_out:1;
unsigned char feedback_status:1;
unsigned char wm_clear_errors:1;
unsigned char unused1_3:1;
unsigned char unused1_4:1;
unsigned char unused1_5:1;
unsigned char unused1_6:1;
unsigned char unused1_7:1;
unsigned char unused1_8:1;
unsigned char unused1_9:1;
unsigned char unused1_10:1;
unsigned char unused1_11:1;
unsigned char unused1_12:1;
unsigned char unused1_13:1;
unsigned char unused1_14:1;
unsigned char unused1_15:1;
} flags:
} additive_status_1;
51
// permissive out output status
// additive feedback input status
// command to clear errors
// 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
Chapter 6 – Meter Commands
xxxx= additive status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused2_0:1;
unsigned char unused2_1:1;
unsigned char unused2_2:1;
unsigned char unused2_3:1;
unsigned char unused2_4:1;
unsigned char unused2_5:1;
unsigned char unused2_6:1;
unsigned char unused2_7:1;
unsigned char unused2_8:1;
unsigned char unused2_9:1;
unsigned char unused2_10:1;
unsigned char unused2_11:1;
unsigned char unused2_12:1;
unsigned char unused2_13:1;
unsigned char unused2_14:1;
unsigned char unused2_15:1;
} flags:
} additive_status_2;
Modbus:
Supported through Modbus Extended Services Registers.
6.11
52
// 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
REQUEST TANK STATUS & TANK ALARMS:
MTKtttxxxxyyyyzzzzaaaa => TKttt… (Requested parameters as listed below).
Where:
ttt = The specified zero-based tank number (000-009).
Xxxx = Optional response configuration bits #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int tank_state:1;
unsigned int tank_status_0:1;
unsigned int tank_alarms:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
Chapter 6 – Meter Commands
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_0; (default value 0x0000.)
union
{
unsigned int value;
struct
{
unsigned int tank_status_0:1;
unsigned int tank_status_1:1;
unsigned int tank_status_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_1;
union
{
unsigned int value;
struct
{
unsigned int unused_0:1;
unsigned int unused_1:1;
unsigned int unused_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
53
Chapter 6 – Meter Commands
54
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_2;
union
{
unsigned int value;
struct
{
unsigned int unused_0:1;
unsigned int unused_1:1;
unsigned int unused_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_3;
Defaults are compatible with previous Multiload MTK replies.
TK = Request Status Response
ttt = The specified zero-based tank number (000-009).
Query 0 and 1 Responses:
wwww= tank state in hexadecimal as:
enum
{
TANK_DEACTIVE
TANK_LOADING
TANK_UNLOADING
= 0,
= 1,
= 2,
Chapter 6 – Meter Commands
TANK_UNLOAD_LOAD
} tank_state;
55
= 3,
Chapter 6 – Meter Commands
xxxx= tank status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char high_high_level:1;
unsigned char high_level:1;
unsigned char low_level:1;
unsigned char low_low_level:1;
unsigned char bypass_alarm:1;
unsigned char active_tank:1;
unsigned char alarm_out:1;
unsigned char unused0_7:1;
unsigned char unused0_8:1;
unsigned char unused0_9:1;
unsigned char unused0_10:1;
unsigned char unused0_11:1;
unsigned char unused0_12:1;
unsigned char unused0_13:1;
unsigned char unused0_14:1;
unsigned char unused0_15:1;
} flags:
} tank_status_0;
56
// high high level alarm
// high level alarm
// low level alarm
// low low level alarm
// bypass level alarms
// active tank
// alarm out
Chapter 6 – Meter Commands
yyyy= tank alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char tank_fcm_com:1;
Unsigned char high_high_level:1;
Unsigned char high_level:1;
Unsigned char low_level:1;
Unsigned char low_low_level:1;
Unsigned char tank_valve:1;
Unsigned char unused06:1;
Unsigned char unused07:1;
Unsigned char unused08:1;
unsigned char unused09:1;
unsigned char unused10:1;
Unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
unsigned char unused15:1;
} flags;
} tank_alarms;
Query 1 Responses:
xxxx= tank status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char high_high_level:1;
unsigned char high_level:1;
unsigned char low_level:1;
unsigned char low_low_level:1;
unsigned char bypass_alarm:1;
unsigned char active_tank:1;
unsigned char alarm_out:1;
unsigned char unused0_7:1;
unsigned char unused0_8:1;
unsigned char unused0_9:1;
unsigned char unused0_10:1;
unsigned char unused0_11:1;
57
// one or more FCMs that are required for
TANK status or signals are in com error.
// Tank High High Level Alarm
// Tank High Level Alarm
// Tank Low Level Alarm
// Tank Low Low_Level Alarm
// Tankvalve Alarm
// high high level
// high level
// low level
// low low level
// bypass alarm
// active tank
// alarm out
Chapter 6 – Meter Commands
unsigned char unused0_12:1;
unsigned char unused0_13:1;
unsigned char unused0_14:1;
unsigned char unused0_15:1;
} flags:
} tank_status_0;
58
Chapter 6 – Meter Commands
xxxx= tank_status #1 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 wm_clear_errors:1;
unsigned char open_tank_val:1;
unsigned char tank_val_status:1;
unsigned char close_tank_val:1;
unsigned char trigger_start_level:1;
unsigned char trigger_stop_level:1;
unsigned char unused1_10:1;
unsigned char unused1_11:1;
unsigned char unused1_12:1;
unsigned char unused1_13:1;
unsigned char unused1_14:1;
unsigned char unused1_15:1;
} flags:
} tank_status_1;
59
// command to clear errors
// command to clear errors
// command to clear errors
// currently clearing errors
// command to clear errors
// tank valve open
// tank valve status
// tank valve closed
// trigger start level
// trigger stop level
Chapter 6 – Meter Commands
xxxx= tank_status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused2_0:1;
unsigned char unused2_1:1;
unsigned char unused2_2:1;
unsigned char unused2_3:1;
unsigned char unused2_4:1;
unsigned char unused2_5:1;
unsigned char unused2_6:1;
unsigned char unused2_7:1;
unsigned char unused2_8:1;
unsigned char unused2_9:1;
unsigned char unused2_10:1;
unsigned char unused2_11:1;
unsigned char unused2_12:1;
unsigned char unused2_13:1;
unsigned char unused2_14:1;
unsigned char unused2_15:1;
} flags:
} tank_status_2;
60
// 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
Query 2 & 3 Responses: // future use
6.12
REQUEST SAMPLER STATUS & SAMPLER ALARMS:
MSIsssxxxxyyyyzzzzaaaa => SIttt… (Requested parameters as listed below).
Where:
sss = The specified zero-based sampler number (000-003).
Xxxx = Optional response configuration bits #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned int sampler_state:1;
unsigned int sampler_status_0:1;
unsigned int sampler_alarms:1;
unsigned int sampler_batch_gross_del_thous:1;
unsigned int sampler_batch_current_target_samples:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
Chapter 6 – Meter Commands
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_0; (default value 0x0000.)
union
{
unsigned int value;
struct
{
unsigned int sampler_status_0:1;
unsigned int sampler_status_1:1;
unsigned int sampler_status_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_1;
union
{
unsigned int value;
struct
{
unsigned int unused_0:1;
unsigned int unused_1:1;
unsigned int unused_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
61
Chapter 6 – Meter Commands
62
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_2;
union
{
unsigned int value;
struct
{
unsigned int unused_0:1;
unsigned int unused_1:1;
unsigned int unused_2:1;
unsigned int unused_3:1;
unsigned int unused_4:1;
unsigned int unused_5:1;
unsigned int unused_6:1;
unsigned int unused_7:1;
unsigned int unused_8:1;
unsigned int unused_9:1;
unsigned int unused_10:1;
unsigned int unused_11:1;
unsigned int unused_12:1;
unsigned int unused_13:1;
unsigned int unused_14:1;
unsigned int unused_15:1;
} flags;
} query_3;
Defaults are compatible with previous Multiload MSI replies.
SI = Request Status Response
ttt = The specified zero-based tank number (000-003).
Query 0 and 1 Responses:
wwww= sampler state in hexadecimal as:
enum
{
SS_INACTIVE
SS_READY
= 0,
= 1,
Chapter 6 – Meter Commands
SS_SAMPLE
} sampler_state;
63
= 2,
Chapter 6 – Meter Commands
64
xxxx= sampler_status #0 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char program_clear_errors:1; // command to clear errors
unsigned char remote_clear_errors:1; // command to clear errors
unsigned char driver_clear_errors:1; // command to clear errors
unsigned char clearing_errors:1;
unsigned char wm_clear_errors:1;
unsigned char clear_batch:1;
unsigned char unused0_6:1;
unsigned char unused0_7:1;
unsigned char unused0_8:1;
unsigned char unused0_9:1;
unsigned char unused0_10:1;
unsigned hi_limit:1;
unsigned char alarm_out:1;
unsigned char authorized:1;
unsigned char permissive:1;
unsigned char permissive_out:1;
} flags:
} sampler_status_0;
// command to clear errors
// sampler high limit input
Chapter 6 – Meter Commands
yyyy= sampler alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char sampler_fcm_com:1;
unsigned char sampler_permissive:1;
unsigned char unused02:1;
unsigned char unused03:1;
unsigned char unused04:1;
unsigned char unused05:1;
unsigned char unused06:1;
unsigned char unused07:1;
unsigned char unused08:1;
unsigned char unused09:1;
unsigned char unused10:1;
unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
unsigned char unused15:1;
} flags;
} sampler_alarms;
Query 1 Responses:
xxxx= sampler 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 wm_clear_errors:1;
unsigned char clear_batch:1;
unsigned char unused0_06:1;
unsigned char unused0_07:1;
unsigned char unused0_08:1;
unsigned char unused0_09:1;
unsigned char unused0_10:1;
65
// one or more FCMs that are required for
Sampler status or signals are in com
error.
// Sampler permissive Alarm
// command to clear errors
// command to clear errors
// command to clear errors
// currently clearing errors
// command to clear errors
Chapter 6 – Meter Commands
unsigned hi_limit:1;
// sampler high limit input
unsigned char alarm_out:1;
unsigned char authorized:1;
unsigned char permissive:1;
unsigned char permissive_out:1;
} flags:
} sampler_status_0;
66
Chapter 6 – Meter Commands
67
xxxx= sampler_status #1 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused1_0:1;
unsigned char unused1_1:1;
unsigned char unused1_2:1;
unsigned char unused1_3:1;
unsigned char unused1_4:1;
unsigned char unused1_5:1;
unsigned char unused1_6:1;
unsigned char unused1_7:1;
unsigned char unused1_8_15:8;
} flags:
} sampler_status_1;
Chapter 6 – Meter Commands
xxxx= sampler_status #2 in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char unused2_0:1;
unsigned char unused2_1:1;
unsigned char unused2_2:1;
unsigned char unused2_3:1;
unsigned char unused2_4:1;
unsigned char unused2_5:1;
unsigned char unused2_6:1;
unsigned char unused2_7:1;
unsigned char unused2_8:1;
unsigned char unused2_9:1;
unsigned char unused2_10:1;
unsigned char unused2_11:1;
unsigned char unused2_12:1;
unsigned char unused2_13:1;
unsigned char unused2_14:1;
unsigned char unused2_15:1;
} flags:
} sampler_status_2;
Query 2 & 3 Responses: // future use
68
// 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
Chapter 6 – Meter Commands
6.13
REQUEST SMP STATUS & PRESET ALARMS:
MSSpppxxxxyyyyzzzz => SSppp… (Requested parameters as listed above).
The MSS command for the MultiLoad II SMP, is identical to the MRS command but only returns 1 component
instead of 8, 1 meter instead of 4, and 2 additives instead of 16 additives in the response.
6.14
TRIP PRESET ALARMS:
MTPApppyyyy => TPAppp (this only gives the first 16 alarm bits)
MRPAppp => MRPAxxxx (this only gives the first 16 alarm bits)
MRPA32ppp => RPA32xxxxxxxx (this gives all 32 alarm bits)
Where:
ppp = The specified zero-based preset or load arm number (000-011).
yyyy= preset alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char preset_fcm_com:1;
// one or more FCMs that are required for
PRESET status or signals are in com
error.
unsigned char preset_permissive:1;
// preset permissive not active but preset is
authorized to load.
unsigned char swing_arm_permissive:1;
// swing arm not in bay and preset is
authorized to load.
unsigned char line_not_flushed:1;
// less than min_line_flush_vol has flowed
since a non-flush component has flowed
and batch was ended.
unsigned char preset_block_valve:1;
// block value status does not agree with
commanded valve position.
unsigned char bay_alarm:1;
// a bay level alarm currently exists.
unsigned char component_alarm:1;
// a component level alarm currently exists
for this preset.
unsigned char additive_alarm:1;
// a additive level alarm currently exists for
this preset.
unsigned char meter_stop:1;
// meter stop button for preset pressed
unsigned char preset_overrun:1;
// preset delivered volume is over target
volume by overrun_alarm_vol.
unsigned char excess_flow:1;
// preset flow rate has exceeded
excess_flow_alarm_rate.
unsigned char bsw_error:1;
// Bottom Sediment Water Error
unsigned char tank_alarm:1;
// a tank level alarm currently exists for this
preset.
unsigned char divert_alarm:1;
// current BSW is not below the Divert BSW
value for this preset
69
Chapter 6 – Meter Commands
70
unsigned char sampler_alarm:1;
unsigned char configuration_error:1;
// a sampler level alarm currently exists for
this preset
// preset configuration has invalid data,
check message log for details
} flags;
} preset_alarms;
Modbus:
Write Only Register=7082+ppp, Len=1, 16-Bit Integer (yyyy)
6.15
REQUEST BAY ALARMS:
MRBA => RBAxxxx (this only gives the first 16 alarm bits)
MRBA32 => RBA32xxxxxxxx (this gives all 32 alarm bits)
Where:
xxxx = bay alarms in hexadecimal as:
union
{
struct
{
unsigned char bay_fcm_com:1;
// one or more FCMs that are required for BAY
status or signals are in com error.
Unsigned char bay_permissive0:1;
// user definable preset permissive 0 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive1:1;
// user definable preset permissive 1 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive2:1;
// user definable preset permissive 2 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive3:1;
// user definable preset permissive 3 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive4:1;
// user definable preset permissive 4 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive5:1;
// user definable preset permissive 5 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive6:1;
// user definable preset permissive 6 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char bay_permissive7:1;
// user definable preset permissive 7 not active
but bay is authorized to load. Error message
can be renamed to indicate permissive.
Unsigned char all_stop:1;
// all stop button pressed
unsigned char bay_pcm_com:1;
// one or more FCMs that are required for BAY
status or signals are in comm error.
Unsigned char printer_error:1;
// one or more printers are in error.
Unsigned char unused12:1;
Chapter 6 – Meter Commands
71
unsigned char unused13:1;
unsigned char deadman:1;
unsigned char unused15:1
unsigned char power_fail:1
unsigned char unused17-31:1;
} flags;
unsigned int value;
} bay_alarms;
//deadman alarm active
// if a hardware reboot flags get set
Modbus:
Read Only Register=7094, Len=1, 16-Bit Integer (xxxx)
6.16
REQUEST COMPONENT ALARMS:
MRCAppp => RCApppxxxx… (this only gives the first 16 alarm bits)
MRCA32 => RCA32xxxxxxxx… (this gives all 32 alarm bits)
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Per component(8):
xxxx = component alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char component_fcm_com:1;
// one or more FCMs that are
required for COMPONENT status
or signals are in comm error.
Unsigned char component_permissive:1;
// component permissive not active
but component is authorized to
load.
Unsigned char component_block_valve:1;
// block value status does not
agree with commanded valve
position.
Unsigned char component_unauth_flow:1;
//
greater
than
unauth_flow_alarm_vol has been
metered when component was not
authorized for flow.
Unsigned char component_pump_status:1;
// pump status does not agree with
commanded pump state.
Unsigned char meter_alarm:1;
// a meter level alarm currently
exists for this component.
Unsigned char component_over_blend_tol:1;
// blend precent has been over by
blend_chk_alarm_pct
for
blend_chk_alarm_time seconds.
Unsigned char component_under_blend_tol:1; // blend precent has been under by
blend_chk_alarm_pct
for
blend_chk_alarm_time seconds.
Chapter 6 – Meter Commands
72
Unsigned char component_api_table:1;
unsigned char component_back_pressure:1;
// API VCF table error
// if current flowrate falls below
fallback minimum rate during
pressure control
unsigned char unused10:1;
unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
unsigned char unused15:1;
unsigned char unused16-31:1;
} flags;
} component_alarm;
Modbus:
Where: p = preset (0-11), c = component (0-7)
Read Only Register=7095+8*p+c, Len=1, 16-Bit Integer (xxxx)
Note: Last Component Alarm Register Used=7190
6.17
REQUEST METER ALARMS:
MRMAppp => RMApppxxxx… (this only gives the first 16 alarm bits)
MRMA32 => RMA32xxxxxxxx… (this gives all 32 alarm bits)
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Per meter(5):
xxxx = meter alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char meter_fcm_com:1;
// one or more FCMs that are required for
METER status or signals are in comm
error.
Unsigned char meter_permissive:1;
// meter permissive not active but meter is
authorized to load.
Unsigned char fcm_invalid_config:1;
// FCM reporting an error with loaded
configuration. (Meter factors likely source
of this type of error.)
unsigned char fcm_wdt_reset:1;
// FCM stopped flow due to lack of
communication from RCU.
Unsigned char fcm_com_timeout:1;
// FCM com timed out due to a lack of
communication from RCU.
Unsigned char valve_fault:1;
// greater than value_fault_alarm_vol has
been metered since flow was stopped.
Chapter 6 – Meter Commands
73
Unsigned char low_flow:1;
// flow rate was below low_flow_alarm_rate
for low_flow_alarm_time seconds while
attempting to flow.
Unsigned char excess_flow:1;
//
flow
rate
was
above
excess_flow_alarm_rate.
Unsigned char quad_encoding:1;
// max_quad_errors were received.
Unsigned char density_error:1;
// density signal not valid or density <
alarm_low_density
or
density
>
alarm_high_density.
Unsigned char temp_error:1;
// temp signal not valid or temp <
alarm_low_temp
or
temp
>
alarm_high_temp.
unsigned char valve_control:1;
// not able to slow for stop flow rate for
valve_control_alarm_time.
Unsigned char meter_creep:1;
// greater than meter_creep_alarm_vol has
been metered since flow was stopped.
Unsigned char pressure_error:1;
// pressure signal not valid or pressure <
alarm_low_pressure
or
pressure
>
alarm_high_pressure.
Unsigned char quad_encoding_a:1; // max_quad_errors were received on channel
A.
unsigned char quad_encoding_b:1; // max_quad_errors were received on channel
B.
unsigned char meter_com:1;
// assigned serial (mass) meter is in comm
error.
Unsigned char unused_17:1;
unsigned char api_gravity_error:1; // API Gravity Error
unsigned char unused19-31:1;
} flags;
} meter_alarms;
Modbus:
Where: p = preset (0-11), m = meter (0-4)
Read Only Register=7191+5*p+m, Len=1, 16-Bit Integer (xxxx)
Note: Last Meter Alarm Register Used=7250
6.18
REQUEST ADDITIVE ALARMS:
MRAAppp => RAApppxxxx… (this only gives the first 16 alarm bits)
MRAA32 => RAA32xxxxxxxx… (this gives all 32 alarm bits)
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Per additive(16):
xxxx = additive alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
Chapter 6 – Meter Commands
74
unsigned char additive_fcm_com:1;
// one or more FCMs that are required for
ADDITIVE status or signals are in comm
error.
Unsigned char additive_permissive:1; // additive permissive not active but
additive is authorized to load.
Unsigned char additive_under_add:1; // recipe additive needed is under actual
additive
delivered
by
under_adtv_alarm_injects.
Unsigned char additive_over_add:1;
// recipe additive needed is over actual
additive
delivered
by
over_adtv_alarm_injects.
Unsigned char additive_valve_fault:1; // greater than value_fault_alarm_vol has
been metered since flow was stopped.
Unsigned char additive_pump_status:1; // pump status does not agree with
commanded pump state.
Unsigned char additive_injection:1;
// piston switch or pulser did not indicate
an injection took place.
Unsigned char additive_unauth_flow:1; // greater than unauth_flow_alarm_vol has
been metered when additive was not
authorized for flow.
Unsigned char additive_line_not_flushed:1; // min_line_flush_volume of product has
not flushed since last inject was completed
and batch was ended.
Unsigned char additive_meter_creep:1; // greater than meter_creep_alarm_vol has
been metered since flow was stopped.
Unsigned char additive_block_valve:1; // block valve status does not agree with
commanded valve position.
Unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
unsigned char unused15:1;
unsigned char unused16-31:1;
} flags;
} additive_alarms;
Modbus:
Where: p = preset (0-11), a = additive (0-15)
Read Only Register=7251+16*p+a, Len=1, 16-Bit Integer (xxxx)
Note: Last Additive Alarm Register Used=7442
6.19
REQUEST SAMPLER ALARMS:
MRSAppp => RSApppxxxx… (this only gives the first 16 alarm bits)
MRSA32 => RSA32xxxxxxxx… (this gives all 32 alarm bits)
Where:
ppp = The specified zero-based preset or load arm number (000-011).
Per sampler(4):
xxxx = sampler alarms in hexadecimal as:
Chapter 6 – Meter Commands
union
{
unsigned int value;
struct
{
unsigned char sampler_fcm_com:1; // one or more FCMs that are required for Sampler
status or signals are in comm error.
unsigned char sampler_permissive:1; // sampler permissive not active but sampler is
authorized to load.
unsigned char sampler_hi_limit:1;
// created for sampler high level incoming signal when
no further product can be sampled.
unsigned char unused2-31:1;
} flags;
} sampler_alarms;
Modbus:
Not supported.
6.20
REQUEST TANK ALARMS:
MRTAttt => RTAtttxxxx… (this only gives the first 16 alarm bits)
MRTA32 => RTA32xxxxxxxx… (this gives all 32 alarm bits)
Where:
ttt = The specified zero-based tank number (000-009).
Per tank(10):
xxxx = tank alarms in hexadecimal as:
union
{
unsigned int value;
struct
{
unsigned char tank_fcm_com:1;
// one or more FCMs that are required for TANK
status or signals are in comm error.
unsigned char high_high_level:1;
// Tank High High Level Alarm
unsigned char high_level:1;
// Tank High Level Alarm
unsigned char low_level:1;
// Tank Low Level Alarm
unsigned char low_low_level:1;
// Tank Low Low Level Alarm
unsigned char tank_valve:1;
// Tank value status does not agree with
commanded valve position.
unsigned char unused07:1;
unsigned char unused08:1;
unsigned char unused09:1;
unsigned char unused10:1;
unsigned char unused11:1;
unsigned char unused12:1;
unsigned char unused13:1;
unsigned char unused14:1;
75
Chapter 6 – Meter Commands
76
unsigned char unused15:1;
unsigned char unused16:1;
unsigned char unused17:1;
unsigned char unused18:1;
unsigned char unused19:1;
unsigned char unused20:1;
unsigned char unused21:1;
unsigned char unused22:1;
unsigned char unused23:1;
unsigned char unused24:1;
unsigned char unused25:1;
unsigned char unused26:1;
unsigned char unused27:1;
unsigned char unused28:1;
unsigned char unused29:1;
unsigned char unused30:1;
unsigned char unused31:1;
} flags;
} tank_alarms;
Modbus:
Not supported.
6.21
REMOTE TRANSACTION DATA:
MRTDpppaaa
This command is used to get the batch data out of the Multiload2.
Where:
/* request transaction details for preset RTDpppaa
/*
where RTD = Request Transaction Detail
/*
ppp = preset number
/*
aaa = detail index
/*
/* if aaa = 000 reply RTDpppaaannn
/*
where RTD = Request Transaction Detail
/*
ppp = preset number
/*
aaa = detail index request (=000)
/*
nnn = number of details
/*
/* if aaa > 000 reply RTDpppaaa...
/*
where RTD = Request Transaction Detail
/*
ppp = preset number
/*
aaa = detail index request (>000)
/*
... = detail values (same as R800)
/*
Modbus:
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
Chapter 6 – Meter Commands
Read Only Register=N/A
6.22
START PRESET FLOW:
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.23
STOP PRESET FLOW:
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.
77
Chapter 7 – Register Operations
CHAPTER 7
78
REGISTER OPERATIONS:
Read Register Command
R<register/sub-registers>
R004
R104021000001
R999
=>
=>
=>
=>
=>
Response
<status><register/sub-registers><register value(s)>
0?00004000000001
0?0104021000001000000020
1?0999 (invalid register!)
Update Register Command
U<register/sub-registers><register value(s)> =>
U004000000001
U104021000001000000020
U999000000001
=>
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.
Chapter 7 – Register Operations
7.1
7.1.1
79
GENERIC REGISTERS
REGISTER DATA TYPES
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
“signed div10” – Signed numeric value with 1 decimal place.
Numeric Value
Register Value
Chapter 7 – Register Operations
+1234.5
+0.0
+0.1
+3276.7
-3276.8
-0.1
80
12345
0
1
32767
32768
65535
“signed div100” – Signed numeric value with 2 decimal places.
Numeric Value
Register Value
+123.45
12345
+0.00
0
+0.01
1
+327.67
32767
-327.68
32768
-0.01
65535
“signed div1000” – Signed numeric value with 3 decimal places.
Numeric Value
Register Value
+12.345
12345
+0.000
0
+0.001
1
+32.767
32767
-32.768
32768
-0.001
65535
“signed div10000” – Signed numeric value with 4 decimal places.
Numeric Value
Register Value
+1.2345
12345
+0.0000
0
+0.0001
1
+3.2767
32767
-3.2768
32768
-0.0001
65535
“char” – Characters
Value
Hello World
Register Value
Hello World
“disable enable” – Enumerated disable and enable values.
Enum{ //
Enumerated Value
Register Value
DISABLED
= 0,
ENABLED
=1
};
“measure” – Enumerated measure values.
Enum{ //
Enumerated Value
Register Value
Chapter 7 – Register Operations
GALLONS
LITRES
CUBIC_METERS
TONNES
KILOGRAMS
GRAMS
POUNDS
BARRELS
NO_MEASURE
LITERS
DECALITERS
81
= 0,
= 1,
= 2,
= 3,
= 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_US
=’G’,
TABLE_TEC_ETH_B100
= ‘200’,
Chapter 7 – Register Operations
TABLE_TEC_ETH_B40
TABLE_TEC_ETH_E40
TABLE_TEC_ETH_E100
TABLE_BIO_PTB
TABLE_ETH_BRAZIL
TABLE_HYDRO_BRAZIL
TABLE_2004_6A
= 1000,
TABLE_2004_6B
= 1001,
TABLE_2004_6C
= 1002,
TABLE_2004_6D
= 1003,
TABLE_2004_6X
= 1004,
TABLE_2004_24A
= 1008,
TABLE_2004_24B
= 1009,
TABLE_2004_24C
= 1010,
TABLE_2004_24D
= 1011,
TABLE_2004_24X
= 1012,
TABLE_2004_5A
= 1013,
TABLE_2004_5B
= 1014,
TABLE_2004_5D
= 1015,
TABLE_2004_5X
= 1016,
TABLE_2004_23A
= 1017,
TABLE_2004_23B
= 1018,
TABLE_2004_23D
= 1019,
TABLE_2004_23X
= 1020,
TABLE_2004_54A
= 1021,
TABLE_2004_54B
= 1022,
TABLE_2004_54C
= 1023,
TABLE_2004_54D
= 1024,
TABLE_2004_60A
= 1025,
TABLE_2004_60B
= 1026,
TABLE_2004_60C
= 1027,
TABLE_2004_60D
= 1028,
TABLE_2004_60X
= 1029,
TABLE_2004_53A
= 1030,
TABLE_2004_53B
= 1031,
TABLE_2004_53D
= 1032,
TABLE_2004_59A
= 1033,
TABLE_2004_59B
= 1034,
TABLE_2004_59D
= 1035,
TABLE_2004_59X
= 1036,
TABLE_2004_1121
= 1040,
TABLE_2004_1121M = 1041,
TABLE_ETH_OIML_6 = 1056,
TABLE_ETH_OIML_7 = 1057,
TABLE_2007_23E = 1060,
TABLE_2007_24E = 1061,
82
= ’201’,
= ’202’,
= ‘203’,
= ’204’,
=’205’,
=’206’,
Chapter 7 – Register Operations
TABLE_2007_53E = 1062,
TABLE_2007_54E = 1063,
TABLE_2007_59E = 1064,
TABLE_2007_60E = 1065,
TABLE_ASTM_D1555 = 1080
};
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 character’A’.
“fcm address” – FCM addressing parameters. (input or output type uses same function)
This type is a bit-wise concatenation of four different FCM addressing parameters that is expressed as a single
register value.
struct fcm_address_type
{
unsigned int port_number:3;
// FCM port range 0-7
unsigned int fcm_number:5;
// FCM number range 0-31
unsigned int invert:1;
// Normal signal = 0, Invert signal = 1
// For pulse outputs, single pulse = 0, dual pulse = 1
unsigned int enabled:1;
// Disabled = 0, Enabled = 1
unsigned int ext_port:3;
// ext_port(3) << 3 + port_number(3) => Port range 0-39
unsigned int custom_logic :1 ;
// enable value to link to custom logic array
unsigned int unused:2;
};
Note: Register value is still an integer value not a binary structure.
For example, to specify port_number 4, fcm_number 1, normal signal, enabled, (0000,0,1,0,00001,100) the
numeric value of the bit-wise concatenation of these four different FCM addressing parameters would be
0x020C = 524.
For example, to specify port_number 11, fcm_number 3, normal signal, enabled, (0000,1,1,0,00011,011) the
numeric value of the bit-wise concatenation of these four different FCM addressing parameters would be
0x061B = 1563.
“fcm address_analog_input” – Analog Input FCM addressing parameters. This type is a bit-wise concatenation
of four different FCM addressing parameters that is expressed as a single register value.
struct fcm_address_analog_input_type
{
unsigned int fcm_number:5;
// FCM number range 0-31 or Custom Logic Index bits
unsigned int analog_in_port_number:6; // FCM port range 0-4 or Custom Logic Index bits
unsigned int analog_input_type:4;
// 4-20mA signal = 0, 1-5V signal = 1
unsigned int enabled:1;
// Disabled = 0, Enabled = 1
unsigned int custom_logic :1 ;
// enable value to link to custom logic array
unsigned int unused:15;
};
Note: Register value is still an integer value not a binary structure.
If the custom_logic bit is enabled, then the first 11 bits used for the FCM number and port number will used for
the Custom Logic index number.
83
Chapter 7 – Register Operations
Example #1: to specify analog input port number A04, fcm_number 1, 4-20mA signal, enabled,
(0,1,0000,000100,00001) the numeric value of the bit-wise concatenation of these four different FCM
addressing parameters would be 0x8081 = 32897.
“language” – Enumerated language values.
enum{ //
Enumerated Value
Register Value
LANGUAGE_ENGLISH
= 0,
LANGUAGE_SPANISH
= 1,
LANGUAGE_PORTUGUESE = 2,
LANGUAGE_FRENCH
= 3,
LANGUAGE_GERMAN
= 4,
LANGUAGE_SIMPLIFIED_CHINESE = 5,
LANGUAGE_TRADITIONAL_CHINESE =6,
LANGUAGE_THAI
=7
};
“alarm count reset mode” – Enumerated alarm count reset mode values.
enum{ //
Enumerated Value
Register Value
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,
};
84
Chapter 7 – Register Operations
“meter type” – Enumerated meter type values.
enum{ //
Enumerated Value
METER_TYPE_VOLUME_PULSE_INPUT
METER_TYPE_MASS_PULSE_INPUT
METER_TYPE_VOLUME_ANALOG_INPUT
METER_TYPE_KROHNE_INPUT
METER_TYPE_MICROMOTION_INPUT
};
85
Register Value
= 0,
= 1,
= 2,
= 3,
=4
“totalizer” – Totalizer selection parameter.
This type is a bit-wise concatenation of five totalizer selection parameters that is expressed as a single register
value.
struct totalizer_selection_type
{
unsigned int preset_selected:1;
unsigned int meter_selected:1;
unsigned int component_selected:1;
unsigned int additive_selected:1;
unsigned int sampler_selected:4;
unsigned int unused1:8;
unsigned int unused2:8;
unsigned int unused3:8;
};
Note: Register value is still an integer value not a binary structure.
For example, to specify preset_selected and component_selected, (00101) the numeric value of the bit-wise
concatenation of these five different totalizer selection parameters would be 0x0005 = 5.
“scs prompt” – SCS prompt selection parameter.
This type is a bit-wise concatenation of four prompt selection parameters that is expressed as a single register
value.
struct totalizer_selection_type
{
unsigned int bsw_selected:1;
unsigned int density_selected:1;
unsigned int gross_selected:1;
unsigned int temp_selected:1;
unsigned int unused:28;
};
Note: Register value is still an integer value not a binary structure.
For example, to specify bsw_selected and gross_selected, (0101) the numeric value of the bit-wise
concatenation of these four different prompt selection parameters would be 0x0005 = 5.
“card-reader” Card-Reader selection parameter
enum{ //
Enumerated Value
Register Value
DISABLED
= 0, // NO CARD-READER
BUCKET_CAPTIVE
= 1, // CAPTIVE CARD-READER
Chapter 7 – Register Operations
BUCKET_NONCAPTIVE
SLOT_CAPTIVE
SLOT_NONCAPTIVE
IBUTTON
BUCKET_DUAL_NONCAP
SLOT_DUAL_NONCAP
86
= 2, // NONCAPTIVE CARD-READER
= 3 // CAPTIVE CARD-READER
= 4 // NONCAPTIVE CARD-READER
= 5 // iBUTTON
= 6 // NONCAPTIVE CARD-READER
= 7 // NONCAPTIVE CARD-READER
};
“processing mode” Select Processing mode parameter
enum{ //
Enumerated Value
Register Value
STAND_ALONE
= 0,
REMOTE
= 1,
UAP
=2
};
“54YG products” Select 54YG Product parameter
enum{ //
Enumerated Value
Register Value
NO_PRODUCT
= 0,
PROPAN
= 1,
PROPYLEN
= 2,
BUTAN
= 3,
ISOBUTAN
= 4,
ISOBUTEN
= 5,
CISBUT2EN
= 6,
TRANSBUT2EN
= 7,
BUT1EN
= 8,
BUTA13DIEN
= 9,
METHANOL
= 10,
ETHANOL
= 11,
ISOPROPANOL
= 12,
ISOBUTANOL
= 13,
MTBE
= 14,
TAME
= 15,
BENZOL
= 16,
TOLUOL
= 17,
OXYLOL
= 18,
MXYLOL
= 19,
PXYLOL
= 20
};
“density type” Select density type parameter
enum{ //
Enumerated Value
Register Value
KG
= 1, // kg/m3
API
= 2, // API Gravity
REL
= 3 // Relative Density
};
Chapter 7 – Register Operations
“pressure type” Select pressure type parameter
enum{ //
Enumerated Value
Register Value
PSIG
= 1, // PSIG
KPA
= 2, // KPA
BAR
= 3 // BAR
};
“additive type” Select additive type parameter
enum{ //
Enumerated Value
Register Value
SOLENOID_WITH_METER
= 1,
PISTON_WITH_NORM_FEEDBACK
= 2,
PISTON_WITH_INV_FEEDBACK
= 3,
PISTON_WITH_NO_FEEDBACK
= 4,
ANALOG_VALVE_WITH_METER
=5
};
“deadman type” Select deadman type parameter
Enum{//
Enumerated Value
Register Value
CONTHLD
=1 // Continuous push
HLD&REL
=2 // Continuous push with schedule
PUSF
=3 // Scheduled periodic push
};
“blend on lead type” Select blend on lead type parameter
Enum{//
Enumerated Value
Register Value
FIRCOMP
=1 // Lead on first component
HIGPERC
=2 // Highest Percentage is lead component
LOWPERC
=3 // Lowest Percentage is lead component
};
“api bio product type” Select Api bio product type parameter
Enum{//
Enumerated Value
Register Value
NO_PRODUCT
=0
E5
=1
E10
=2
E80
=3
E85
=4
E100
=5
BENZIN_PETROL
=6
DIESEL
=7
B5_RME
=8
B7_RME
=9
B100_RME
=10
B5_SME
=11
B7_SME
=12
B100_SME
=13
87
Chapter 7 – Register Operations
88
“Alarm to Host Mode” Select if the alarm needs to be send to the host
Enum{//
Enumerated Value
Register Value
DISABLED
= 0,
ENABLED
=1
}
“Mass Measures” Select the UOM of Mass
Enum{//
Enumerated Value
NO_MASS_MEASURES
MASS_POUNDS
MASS_SHORT_TONS
MASS_LONG_TONS
MASS_GRAMS
MASS_KILOGRAMS
MASS_KILOGRAMS_AIR
MASS_METRIC_TONS
}
Register Value
= 0,
= 1,
= 2,
= 3,
= 4,
= 5,
= 6,
= 7,
“Delivery Type” Select the UOM in which the product needs to be delivered
Enum{//
Enumerated Value
Register Value
DELIVERY_TYPE_GROSS
= 0,
DELIVERY_TYPE_NET
= 1,
DELIVERY_TYPE_MASS
=2
}
“Blend Type” Select which type of blending is used.
Enum{//
Enumerated Value
BLEND_TYPE_NONE
BLEND_TYPE_RATIO
BLEND_TYPE_SEQUENTAIL
BLEND_TYPE_RATIO_AND_SEQUENTAIL
BLEND_TYPE_WATERCUT
}
Register Value
= 0,
=1,
= 2,
= 3,
= 4,
“Temperature_UOM Type” Select which type of temperature UOM is used.
Enum{//
Enumerated Value
Register Value
TEMPERATURE_UOM_TYPE_CELSIUS
= 0,
TEMPERATURE_UOM_TYPE_FAHRENHEIT = 1
}
“Additive Mode” Select which mode of additive is used.
Enum{//
Enumerated Value
Register Value
ADDITIVE_MODE_START_ON_BATCH
= 0,
ADDITIVE_MODE_START_ON_HIGH_FLOW = 1,
ADDITIVE_MODE_START_ON_VOLUME
=2
}
Chapter 7 – Register Operations
“Decimal Mark” Select which decimal is used in each screen
Enum{//
Enumerated Value
DECIMAL_MARK_TYPE_DECIMAL
= 0,
DECIMAL_MARK_TYPE_COMMA
=1
}
89
Register Value
“Flow Rate Mode” Select which rate is used in each screen
Enum{//
Enumerated Value
Register Value
FLOW_RATE_MODE_MINUTES
= 0,
FLOW_RATE_MODE_HOURS
=1
}
“Api Astm D1555” Select which product to use for the D1555 table
Enum{//
Enumerated Value
Register Value
API_ASTM_D1555_PRODUCT_TYPE_NO_PRODUCT
=0,
API_ASTM_D1555_PRODUCT_TYPE_BENZENE
=1,
API_ASTM_D1555_PRODUCT_TYPE_CUMENE
=2,
API_ASTM_D1555_PRODUCT_TYPE_CYCLHEX
=3,
API_ASTM_D1555_PRODUCT_TYPE_ETHYLBE
=4,
API_ASTM_D1555_PRODUCT_TYPE_STYRENE
=5,
API_ASTM_D1555_PRODUCT_TYPE_TOLUENE
=6,
API_ASTM_D1555_PRODUCT_TYPE_MXYLENE
=7,
API_ASTM_D1555_PRODUCT_TYPE_OXYLENE
=8,
API_ASTM_D1555_PRODUCT_TYPE_PXYLENE
=9,
API_ASTM_D1555_PRODUCT_TYPE_300_350
=10,
API_ASTM_D1555_PRODUCT_TYPE_350_400
=11
}
“Baud Rate” Select which baud rate to use for serial communications
Enum{//
Enumerated Value
Register Value
BAUD_RATE_300
0
BAUD_RATE_1200
1
BAUD_RATE_2400
2
BAUD_RATE_4800
3
BAUD_RATE_9600
4
BAUD_RATE_19200
5
BAUD_RATE_38400
6
BAUD_RATE_57600
7
BAUD_RATE_115000
8
BAUD_RATE_230000
9
}
“Data Bits” Select the number of data bits to use for serial communication
Enum{//
Enumerated Value
Register Value
DATA_BITS_7
0
DATA_BITS_8
1
}
“Parity” Select which parity bit types to use for serial communication
Enum{//
Enumerated Value
Register Value
PARITY_NONE
0
Chapter 7 – Register Operations
PARITY_ODD
PARITY_EVEN
90
1
2
}
“Stop Bits” Select the number of stop bits for serial communication
Enum{//
Enumerated Value
Register Value
STOP_BITS_1
1
STOP_BITS_2
2
}
“Multidrop” Select which Multidrop mode to use
Enum{//
Enumerated Value
MULTIDROP_SINGLE
0
MULTIDROP_MULTI
1
MULTIDROP_2WIRE
2
Register Value
}
“Communication Type” Select which communication type to use for a serial port
Enum{//
Enumerated Value
Register Value
COMMUNICATION_TYPE_NA
0
COMMUNICATION_TYPE_HOST
1
COMMUNICATION_TYPE_FCM
2
COMMUNICATION_TYPE_PRINT
3
COMMUNICATION_TYPE_LOG
4
COMMUNICATION_TYPE_ETHERNET
5
COMMUNICATION_TYPE_ALIBILOG
6
COMMUNICATION_TYPE_PTB_ALIBI 7
}
“Tank Mode” Select the mode of operation for the tank
Enum{//
Enumerated Value
TANK_MODE_DEACTIVE
TANK_MODE_LOADING
TANK_MODE_UNLOADING
TANK_MODE_LOAD_UNLOAD
Register Value
0
1
2
3
}
“Security Complexity Mode” Select the password complexity that is required when creating a password for user
accounts
Enum{//
Enumerated Value
Register Value
SECURITY_COMPLEXITY_TYPE_NONE
0
SECURITY_COMPLEXITY_TYPE_ALPHA
1
SECURITY_COMPLEXITY_TYPE_NUMERIC
2
SECURITY_COMPLEXITY_TYPE_ALPHA_NUMERIC
3
SECURITY_COMPLEXITY_TYPE_SPECIAL_CHAR
4
SECURITY_COMPLEXITY_TYPE_ALPHA_SPECIAL_CHAR
5
SECURITY_COMPLEXITY_TYPE_NUMERIC_SPECIAL_CHAR
6
Chapter 7 – Register Operations
91
SECURITY_COMPLEXITY_TYPE_ALL
7
}
“Display Load Type” Select how the total amount of product being loaded will be displayed on the screen.
Enum{//
Enumerated Value
Register Value
DISPLAY_LOAD_TYPE_DISABLED
0
DISPLAY_LOAD_TYPE_GROSS
1
DISPLAY_LOAD_TYPE_NET
2
DISPLAY_LOAD_TYPE_MASS
3
}
“SCS Display Type” Select when the SCS Prompts will be displayed, either before or after the load.
Enum{//
Enumerated Value
Register Value
SCS_PROMPTS_DISPLAY_TYPE_AFTER
0
SCS_PROMPTS_DISPLAY_TYPE_BEFORE
1
}
7.1.2
Prefix
000 – RCU LEVEL CONFIGURATION REGISTERS
Register
Description
R/U
004
Reload ROM Lang File
R/U
008
R/U
Data Type
Min
Max
Default
Value
Value
Value
Modbus
Protection
Register
Len=2
disable/enable
Enabled
General
1008
Driver Language
language
English
General
1016
009
Program Mode Language
language
English
General
1018
R/U
010
Card Reader Type
card-reader
1
General
1020
R/U
011
Prox Card Pull Secs
unsigned int
3
General
1022
R/U
012
Processing Mode
Enabled
General
1024
R/U
013
Message Swap Delay
unsigned int
1
60
3
General
1026
R/U
014
Message Hold Delay
unsigned int
1
60
10
General
1028
R/U
015
Max GPS Site Distance
(MultiLoad Mobile Only)
unsigned int
0
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
Mass Measure Used
mass measure
None
W&M
1036
R/U
019
Load Date From End
disable/enable
Enabled
General
1038
R/U
020
Measure Used
measures
Gallons
W&M
1040
R/U
021
Print Blend Details
unsigned int
1
General
1042
R/U
022
Compartment Entry
disable/enable
Disabled
General
1044
R/U
023
Config Timeout Mins
unsigned int
20
General
1046
R/U
024
Print Totalizers
totalizers
None
General
1048
R/U
025
Simulation Mode
disable/enable
Disabled
W&M
1050
R/U
026
Large Prompts
disable/enable
Disabled
General
1052
R/U
027
Confirm Flow Starts
disable/enable
Disabled
General
1054
R/U
028
Display Adtv as CCs
disable/enable
Disabled
General
1056
2
30
remote processing
1030
0
0
2
99
Chapter 7 – Register Operations
Prefix
Register
Description
92
Data Type
Min
Max
Default
Value
Value
Value
Modbus
Protection
Register
Len=2
R/U
029
Display Hundredths
disable/enable
Disabled
General
1058
R/U
030
Use Hundredths
disable/enable
Disabled
W&M
1060
R/U
031
W&M Density Lock
disable/enable
Disabled
W&M
1062
R/U
032
Print Ticket
disable/enable
Disabled
General
1064
R/U
033
Form Feed After Ticket
disable/enable
Enabled
General
1066
R/U
034
Print Ticket on PCM
disable/enable
Disabled
General
1068
R/U
035
Ticket PCM
unsigned int
0
32
0
General
1070
R/U
036
Meter Arch Timeout
unsigned int
0
120
120
General
1072
R/U
037
Inactivity Timeout
unsigned int
0
60
35
General
1074
R/U
038
Print Msg Log on PCM
Disabled
General
1076
R/U
039
Message Log PCM#
unsigned int
0
General
1078
R/U
040
No Prox Pull If Flow
disable/enable
Disabled
General
1080
R/U
041
Host Down Timeout
unsigned int
30
999
120
General
1082
R/U
042
Host Wait Timeout
unsigned int
60
999
999
General
1084
R/U
043
Prt Alibi Log on PCM
Disabled
General
1086
R/U
044
Alibi Log PCM#
0
General
1088
R/U
045
Swing Arm Secondary
disable/enable
Disabled
General
1090
R/U
046
Screen Saver Timeout
unsigned int
0
65535
600
General
1092
R/U
047
Screen Saver Bright
percent
0
10000
5000
General
1094
R/U
048
Min Time Change Secs
unsigned int
0
65535
60
W&M
1096
R/U
049
Display Load Volume
disable/enable
Disabled
General
1098
R/U
050
Display Help
disable/enable
Disabled
General
1100
R/U
051
Measure On Load Scrn
disable/enable
Disabled
W&M
1102
R/U
052
Status Scrn Lockout
disable/enable
Enabled
General
1104
R/U
053
Load Screen Timeout
unsigned int
0
65535
60
General
1106
R/U
054
Preset Slct Timeout
unsigned int
0
65535
0
General
1108
R/U
055
Pixel Test
disable/enable
Disabled
General
1110
R/U
056
Meter Proving Mode
disable/enable
Disabled
General
1112
R/U
057
Decimal Mark Type
Decimal Mark
Decimal
General
1114
R/U
058
Display Preset Totalizer
disable/enable
Disabled
General
1116
R/U
059
Default Driver Number
unsigned int
1
9999999
1
General
1118
R/U
060
Default Facility Code
unsigned int
0
9999999
0
General
1120
R/U
061
SCS Prompting (SCS Only)
scs prompt
None
All
None
General
1122
R/U
062
Sample UOM
Sample UOM units
None
oz
None
General
1124
R/U
063
Unused
General
1126
R/U
064
SCS Prompting Display (SCS Only)
SCS Display
After
Before
After
General
1128
R/U
065
Max Lines on Ticket
unsigned int
0
106
66
General
1130
disable/enable
0
32
disable/enable
unsigned int
0
3
Chapter 7 – Register Operations
Prefix
Register
Description
R/U
066
Startup Keypad Locked
R/U
067
Screen Brightness
R/U
068
W&M Key FCM#
R/U
069
R/U
090
93
Data Type
Min
Max
Default
Value
Value
Value
disable/enable
Modbus
Protection
Register
Len=2
Disabled
General
1132
10000
General
1134
fcm address
Disabled
W&M
1136
Program Key FCM#
fcm address
Disabled
W&M
1138
RCU Address
unsigned int
1
General
1180
Percent
500
0
10000
999
Chapter 7 – Register Operations
7.1.3
94
100 – BAY LEVEL CONFIGURATION REGISTERS
Modbus
Min
Max
Default
Register
Data Type
Value
Value
Value
Protection
Len=2
Access
Register
Description
R/U
100000
Number Bay Presets
unsigned int
1
12
1
General
1200
R/U
100001
Number of FCMs
unsigned int
0
32
1
General
1202
R/U
100002
Number of PCMs
unsigned int
0
32
1
General
1204
R/U
100003
Temperature UOM
Temperature UOM
C
W&M
1206
R/U
100004
Canada API Limits
disable/enable
Disabled
W&M
1208
R/U
100005
Number of Tanks
unsigned int
0
10
0
General
1210
R/U
100006
Bay Number
unsigned int
0
9999
0
General
1212
R/U
100007
Number External Presets
unsigned int
0
12
0
General
1214
R/U
100008
Unused
General
1216
R/U
100009
Unused
General
1218
R/U
100078
Output Pulse Type
R/U
100079
R/U
Delivery Type
Gross
W&M
1356
Start Transaction
fcm address
Disabled
General
1358
100080
End Transaction
fcm address
Disabled
General
1360
R/U
100081
Output Pulse FCM#
fcm address
Disabled
General
1362
R/U
100082
Output Pulse Factor
unsigned div 1000
0.001
50.000
10.000
W&M
1364
R/U
100083
Deadman Mode
Unsigned int
0
3
0
General
1366
R/U
100084
Input Deadman FCM#
fcm address
Disabled
General
1368
R/U
100085
Deadman Stop Timer
Unsigned int
180
General
1370
R/U
100086
Output Deadman FCM#
fcm address
Disabled
General
1372
R/U
100087
Deadman Warning Timer
Unsigned int
30
General
1374
R/U
100088
Deadman Bypass FCM#
fcm address
Disabled
General
1376
R/U
100089
Alarm Out FCM#
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
Permiss Out FCM#
fcm address
Disabled
General
1398
0
0
65535
65535
Chapter 7 – Register Operations
7.1.4
95
101 – PRESET LEVEL CONFIGURATION REGISTERS
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
Data Type
Value
Value
Value
Protection
Len=2
Prefix
Register
R/U
101000ppp
Number of Meters
unsigned int
1
6
1
General
1400
R/U
101001ppp
Number of Components
unsigned int
1
8
1
General
1402
R/U
101002ppp
Number of Additives
unsigned int
0
16
0
General
1404
R/U
101003ppp
Preset Enabled
disable/enable
Enabled
General
1406
R/U
101004ppp
Blending Type
blend_type
Disabled
General
1408
R/U
101005ppp
W&M Controlled
disable/enable
Disabled
W&M
1410
R/U
101006ppp
Proving Flow Rate
unsigned int
0
9999
600
General
1412
R/U
101007ppp
Excess Flw Alrm Rate
unsigned int
0
9999
1100
General
1414
R/U
101008ppp
Overrun Alarm Vol
unsigned int
0
65535
5
General
1416
R/U
101009ppp
Low Flow Start Vol
unsigned int
0
65535
50
General
1418
R/U
101010ppp
Low Flow Restart Vol
unsigned int
0
65535
15
General
1420
R/U
101011ppp
Low Flow Rate
unsigned int
0
9999
150
General
1422
R/U
101012ppp
High Flow Rate
unsigned int
0
9999
600
General
1424
R/U
101013ppp
Proving Low Flow Vol
unsigned int
0
65535
50
General
1426
R/U
101014ppp
Line Flush Vol
unsigned int
0
65535
0
General
1428
R/U
101015ppp
Line Flush Min Vol
unsigned int
0
65535
0
General
1430
R/U
101016ppp
Line Flush Comp#
unsigned int
0
8
0
General
1432
R/U
101017ppp
Take L.F. from Match
disable/enable
Enabled
General
1434
R/U
101018ppp
Take L.F. from First
disable/enable
Disabled
General
1436
R/U
101019ppp
Take L.F. from Last
disable/enable
Disabled
General
1438
R/U
101020ppp
Compute Blend Density
disable/enable
Disabled
W&M
1440
R/U
101021ppp
Alt. High Flow Rate
unsigned int
0
9999
600
General
1442
R/U
101022ppp
Stop Start Delay
unsigned int
0
65535
0
General
1444
R/U
101023ppp
Blnd Chk Start Vol
unsigned int
0
65535
60
Conditional
1446
R/U
101024ppp
Blnd Chk Restart Vol
unsigned int
0
65535
10
Conditional
1448
R/U
101025ppp
Blnd Chk Alarm %
percent
0.10%
100.00%
5.00%
Conditional
1450
R/U
101026ppp
Blnd Chk Alarm Vol
unsigned int
0
65535
25
Conditional
1452
R/U
101027ppp
Blnd Chk Alarm Time
unsigned int
0
65535
10
Conditional
1454
R/U
101028ppp
Low Flow Start Percentage
percent
0
100
0
General
1456
R/U
101029ppp
Blnd On Lead Comp
Blend_on_lead
0
3
NONE
General
1458
R/U
101030ppp
Blnd Adj Start Vol
unsigned int
0
65535
60
General
1460
R/U
101031ppp
Blnd Adj Restart Vol
unsigned int
0
65535
10
General
1462
R/U
101032ppp
Blnd Adj Dev %
percent
0.00%
100.00%
1.00%
General
1464
Chapter 7 – Register Operations
96
Modbus
Description
Min
Max
Default
Register
Data Type
Value
Value
Value
Protection
Len=2
Prefix
Register
R/U
101033ppp
Blnd Adj Dev Vol
unsigned int
0
65535
5
General
1466
R/U
101034ppp
Blnd Adj Time
unsigned int
0
65535
5
General
1468
R/U
101035ppp
Proving Low Flow Rate
unsigned int
0
9999
600
General
1470
R/U
101036ppp
Min Preset Value
unsigned long int
0
999999
100
General
1472
R/U
101037ppp
Default Preset Value
unsigned long int
0
999999
0
General
1474
R/U
101038ppp
Max Preset Value
unsigned long int
0
999999
10000
General
1476
R/U
101039ppp
Auto Batch Authorize
disable/enable
Disabled
General
1478
R/U
101040ppp
Deliver Type
Delivery Type
Gross
W&M
1480
R/U
101041ppp
Blk Valve Open Delay
unsigned int
0
65535
0
General
1482
R/U
101042ppp
B.V. Open Alrm Time
unsigned int
2
65535
10
General
1484
R/U
101043ppp
B.V. Close Alrm Time
unsigned int
2
65535
10
General
1486
R/U
101044ppp
Non-Proportional Blending
disable/enable
Disabled
General
1488
R/U
101045ppp
Open Loading
disable/enable
Disabled
General
1490
R/U
101046ppp
Output Pulse FCM#
fcm address
Disabled
General
1492
R/U
101047ppp
Output Pulse Factor
unsigned div 1000
10.000
W&M
1494
R/U
101048ppp
Output Pulse Type
Delivery Type
Gross
W&M
1496
R/U
101049ppp
Alt High Flow Start Delay
unsigned int
0
999
0
General
1498
R/U
101050ppp
Alt High Flow Stop Delay
unsigned int
0
999
0
General
1500
R/U
101051ppp
Permissive Alarm Time
unsigned int
0
999
0
General
1502
R/U
101052ppp
Excess Flow Alarm Time
unsigned div 1000
0
65535
0
General
1504
R/U
101053ppp
Unused
General
1506
R/U
101054ppp
BSW 1 Sensor FCM#
Disabled
General
1508
R/U
101055ppp
Default BSW
R/U
101056ppp
R/U
0.001
50.000
fcm address analog input
unsigned div 100
0
100.00
0
General
1510
Alarm Low BSW 1
signed div 100
-10.00
110.00
-10.00
General
1512
101057ppp
Alarm High BSW 1
signed div 100
-10.00
110.00
110.00
General
1514
R/U
101058ppp
BSW Alarm Time
unsigned int
0
60
0
General
1516
R/U
101059ppp
BSW 1 @ Low Value
unsigned div 100
0
100.00
0
General
1518
R/U
101060ppp
BSW 1 @ High Value
unsigned div 100
0
100.00
100.00
General
1520
R/U
101061ppp
BSW 1 Offset
signed div 100
-3.00
3.00
0
General
1522
R/U
101062ppp
Unused
General
1524
R/U
101063ppp
BSW 2 Sensor FCM#
Disabled
General
1526
R/U
101064ppp
BSW Alarm Volume
R/U
101065ppp
R/U
fcm address analog input
unsigned int
0
9999999
0
General
1528
Alarm Low BSW 2
unsigned div 100
-10.00
110.00
-10.00
General
1530
101066ppp
Alarm High BSW 2
unsigned div 100
-10.00
110.00
110.00
General
1532
R/U
101067ppp
Unused
General
1534
R/U
101068ppp
BSW 2 @ Low Value
unsigned div 100
0
100.00
0
General
1536
R/U
101069ppp
BSW 2 @ High Value
unsigned div 100
0
100.00
100.00
General
1538
Chapter 7 – Register Operations
97
Modbus
Description
Min
Max
Default
Register
Data Type
Value
Value
Value
Protection
Len=2
signed div 10
-3.00
3.00
0
General
1540
Prefix
Register
R/U
101070ppp
BSW 2 Offset
R/U
101071ppp
Oil Density
unsigned div 10
0
99999
0
General
1542
R/U
101072ppp
Water Density
unsigned div 100
0
99999
0
General
1544
R/U
101073ppp
Flow Rate Mode
Flow Rate Mode
Minute
General
1546
R/U
101074ppp
Number of Samplers
0
General
1548
R/U
101075ppp
Unused
-
General
1550
R/U
101076ppp
Unused
General
1552
R/U
101077ppp
Unused
General
1554
R/U
101078ppp
Unused
General
1556
R/U
101079ppp
Unused
General
1558
R/U
101080ppp
Diverter Valve FCM#
Disabled
General
1560
R/U
101081ppp
Divert BSW Value
signed div 100
-10.00
110.00
110.00
General
1562
R/U
101082ppp
Divert Start Time
unsigned int
0
60
30
General
1564
R/U
101083ppp
Divert Restart Time
unsigned int
0
60
15
General
1566
R/U
101084ppp
BSW Divert Alarm Time
unsigned int
0
60
10
General
1568
R/U
101085ppp
BSW Stabilization Time
unsigned int
0
60
5
General
1570
R/U
101086ppp
Remote Clear FCM#
fcm address
Disabled
General
1572
R/U
101087ppp
Alt. H.F. Rate FCM#
fcm address
Disabled
General
1574
R/U
101088ppp
Close Blk Val FCM#
fcm address
Disabled
General
1576
R/U
101089ppp
Blk Val Status FCM#
fcm address
Disabled
General
1578
R/U
101090ppp
Open Blk Val FCM#
fcm address
Disabled
General
1580
R/U
101091ppp
Flow Active FCM#
fcm address
Disabled
General
1582
R/U
101092ppp
Batch Authorizd FCM#
fcm address
Disabled
General
1584
R/U
101093ppp
Remote Start FCM#
fcm address
Disabled
General
1586
R/U
101094ppp
Swing Arm FCM#
fcm address
Disabled
General
1588
R/U
101095ppp
Meter Stop FCM#
fcm address
Disabled
General
1590
R/U
101096ppp
Alarm Out FCM#
fcm address
Disabled
General
1592
R/U
101097ppp
Authorized FCM#
fcm address
Disabled
General
1594
R/U
101098ppp
Permiss FCM#
fcm address
Disabled
General
1596
R/U
101099ppp
Permiss Out FCM#
fcm address
Disabled
General
1598
R/U
101100ppp
Unused
General
N/A
R/U
101101ppp
Recipe Select Bit 0 FCM#
fcm address
Disabled
General
N/A
R/U
101102ppp
Recipe Select Bit 1 FCM#
fcm address
Disabled
General
N/A
R/U
101103ppp
Recipe Select Bit 2 FCM#
fcm address
Disabled
General
N/A
R/U
101104ppp
Recipe Select Bit 3 FCM#
fcm address
Disabled
General
N/A
R/U
101105ppp
Recipe Select Bit 4 FCM#
fcm address
Disabled
General
N/A
R/U
101106ppp
Unused
General
N/A
unsigned int
0
20
-
fcm address
Chapter 7 – Register Operations
98
Modbus
Prefix
Register
Description
Data Type
R/U
101107ppp
Unused
R/U
101108ppp
Recipe Output Bit 0 FCM#
fcm address
R/U
101109ppp
Recipe Output Bit 1 FCM#
R/U
101110ppp
R/U
Min
Max
Default
Value
Value
Value
Register
Protection
Len=2
General
N/A
Disabled
General
N/A
fcm address
Disabled
General
N/A
Recipe Output Bit 2 FCM#
fcm address
Disabled
General
N/A
101111ppp
Recipe Output Bit 3 FCM#
fcm address
Disabled
General
N/A
R/U
101112ppp
Recipe Output Bit 4 FCM#
fcm address
Disabled
General
N/A
R/U
101113ppp
Unused
General
N/A
R/U
101114ppp
Unused
General
N/A
R/U
101115ppp
Unused
General
N/A
Chapter 7 – Register Operations
7.1.5
99
102 – METER LEVEL CONFIGURATION REGISTERS
Note:
ppp = The specified zero-based preset or load arm number (000-011).
mmm = The specified zero-based meter number (000-005).
Modbus:
The Modbus Preset Index Register sets the ppp index, Read/Write Register=996, Len=1, 16-Bit Integer
The Modbus Meter Index Register sets the mmm index, Read/Write Register=998, Len=1, 16-Bit Integer
Modbus
Min
Max
Default
Data Type
Value
Value
Value
R / U 102000pppmmm Flow Control Module#
unsigned int
0
31
0
General
1600
R / U 102001pppmmm Side-Stream on Mtr#
unsigned int
0
6
0
General
1602
Disabled
General
1604
General
1606
0
W&M
1608
Volume Pulse
W&M
1610
Prefix
Register
Description
R / U 102002pppmmm Side Stream on Any Meter
disable/enable
R / U 102003pppmmm Unused
R / U 102004pppmmm Meter Address
R / U 102005pppmmm Meter Type
unsigned int
0
255
meter type
Register
Protection Len=2
R / U 102006pppmmm Max Quad Errors
unsigned int
0
65535
10
W&M
1612
R / U 102007pppmmm Reset Quad Errors
unsigned int
1000
65535
10000
W&M
1614
R / U 102008pppmmm Low Flow Alarm Rate
unsigned int
0
65535
10
General
1616
R / U 102009pppmmm Low Flow Alarm Time
unsigned div1000
10.000
General
1618
R / U 102010pppmmm Excess Flw Alrm Rate
unsigned int
0
9999
800
General
1620
R / U 102011pppmmm Minimum Flow Rate
unsigned int
0
9999
50
General
1622
R / U 102012pppmmm Maximum Flow Rate
unsigned int
0
9999
650
General
1624
R / U 102013pppmmm Low Flow DB Rate
unsigned int
0
9999
40
General
1626
R / U 102014pppmmm High Flow DB Rate
unsigned int
0
9999
40
General
1628
R / U 102015pppmmm 1st Stage DB Rate
unsigned int
0
9999
40
General
1630
R / U 102016pppmmm 2nd Stage DB Rate
unsigned int
0
9999
40
General
1632
10.000
General
1634
0.000 999.999
R / U 102017pppmmm Valve Cntl Alrm Time
unsigned div1000
R / U 102018pppmmm Valve Fault Alrm Vol
unsigned int
0
65535
30
General
1636
R / U 102019pppmmm Creep Reset Time
unsigned int
0
65535
0
General
1638
R / U 102020pppmmm Ratio Adj P. Factor
unsigned div100
0.00
655.35
10.00
General
1640
R / U 102021pppmmm Ratio Adj D. Factor
unsigned div100
0.00
655.35
0.30
General
1642
unsigned int
0
65535
15
General
1644
R / U 102023pppmmm Flow Scan Time
unsigned div1000
0.100
1.000
0.100
General
1646
R / U 102024pppmmm Valve Dwell Time
unsigned div1000
0.010 65.535
1.000
General
1648
R / U 102022pppmmm Meter Creep Alrm Vol
0.000 65.535
R / U 102025pppmmm Valve Dwell StepRate
unsigned int
0
9999
0
General
1650
R / U 102026pppmmm Valve Dwell StepTime
unsigned div1000
0.000
5.000
0.000
General
1652
R / U 102027pppmmm Adaptive Valve Control
disable/enable
Disabled
General
1654
R / U 102028pppmmm Analog Valve Control
disable/enable
Disabled
General
1656
R / U 102029pppmmm 4-20mA Increase Step
unsigned div 1000
0
4.000
0.080
General
1658
R / U 102030pppmmm 4-20mA Decrease Step
unsigned div 1000
0
4.000
0.800
General
1660
10
0
Chapter 7 – Register Operations
Modbus
Min
Max
Default
Data Type
Value
Value
Value
R / U 102031pppmmm Excess Flow Alarm Time
unsigned div 1000
0
65535
0
General
1662
R / U 102032pppmmm Analog Valve No Flow mA
unsigned div 1000
0.000
General
1664
General
1666
Prefix
Register
Description
0.000 20.000
R / U 102033pppmmm Unused
Register
Protection Len=2
R / U 102034pppmmm Analog Meter Flow Rate @ 4mA
unsigned int
0
9999
0
W&M
1668
R / U 102035pppmmm Analog Meter Flow Rate @ 20mA
unsigned int
0
9999
600
W&M
1670
R / U 102036pppmmm Analog Meter Flow Rate Offset
signed div1000
-9.999
9.999
0
W&M
1672
R / U 102037pppmmm Analog Meter Flow Rate Cutoff
unsigned int
0
9999
0
W&M
1674
R / U 102038pppmmm Unused
General
1676
R / U 102039pppmmm Unused
General
1678
W&M
1680
General
1682
R / U 102040pppmmm Density Sensor FCM#
fcm address analog input
Disabled
R / U 102041pppmmm Unused
R / U 102042pppmmm Default Density
unsigned div10
0
9999.9
0
General
1684
R / U 102043pppmmm Alarm Low Density
unsigned div10
0
9999.9
0
General
1686
R / U 102044pppmmm Alarm High Density
unsigned div10
0
9999.9
12000
General
1688
R / U 102045pppmmm Density Alarm Time
unsigned int
0
60
0
General
1690
R / U 102046pppmmm Density @ Low Value
unsigned div10
0
4000.0
0
W&M
1692
R / U 102047pppmmm Density @ High value
unsigned div10
0
4000.0
12000
W&M
1694
signed div10
-300
300
0
W&M
1696
R / U 102049pppmmm Unused
General
1698
R / U 102050pppmmm Unused
General
1700
W&M
1702
General
1704
R / U 102048pppmmm Density Offset
R / U 102051pppmmm Pressure Sensor FCM#
fcm address analog input
Disabled
R / U 102052pppmmm Unused
R / U 102053pppmmm Default Pressure
unsigned div100
0
9999.99
9999.99
W&M
1706
R / U 102054pppmmm Alarm Low Pressure
unsigned div100
0
9999.99
100.00
General
1708
R / U 102055pppmmm Alarm High Pressure
unsigned div100
0
9999.99
450.00
General
1710
R / U 102056pppmmm Pressure Alarm Time
unsigned int
0
60
0
General
1712
R / U 102057pppmmm Pressure @ Low Value
unsigned div100
0
4000.00
0
W&M
1714
R / U 102058pppmmm Pressure @ High Value
unsigned div100
0
4000.00
650.00
W&M
1716
signed div100
-30.00
30.00
0.00
W&M
1718
General
1678
W&M
1680
General
1682
R / U 102059pppmmm Pressure Offset
R / U 102060pppmmm Unused
R / U 102061pppmmm Relative Density Sensor FCM#
fcm address analog input
Disabled
R / U 102062pppmmm Unused
R / U 102063pppmmm Default Relative Density
unsigned div10000
0.0000 2.0000
0.0000
General
1684
R / U 102064pppmmm Alarm Low Relative Density
unsigned div10000
0.0000 2.0000
0.0000
General
1686
R / U 102065pppmmm Alarm High Relative Density
unsigned div10000
0.0000 2.0000
1.2000
General
1688
R / U 102066pppmmm Relative Density Alarm Time
unsigned int
0.0000
General
1690
0.0000
W&M
1692
R / U 102067pppmmm Relative Density @ Low Value
unsigned div10000
0
60
0.0000 4.0000
10
1
Chapter 7 – Register Operations
Modbus
Min
Max
Default
Value
Value
Value
unsigned div10000
0.0000 4.0000
1.2000
W&M
1694
signed div10000
-0.3000 0.3000
0.0000
W&M
1696
R / U 102070pppmmm 2% MF Limit Ref
unsigned div10000
0.0000 6.5535
0.0000
W&M
1740
R / U 102071pppmmm Adjacent MF Dev Limt
unsigned div10000
0.0000 0.1000
0.0000
W&M
1742
3.00
W&M
1744
Disabled
General
1746
10.000
General
1748
General
1760
Prefix
Register
Description
R / U 102068pppmmm Relative Density @ High Value
R / U 102069pppmmm Relative Density Offset
R / U 102072pppmmm Temp Offset Limit
Data Type
unsigned div100
R / U 102073pppmmm Output Pulse FCM#
fcm address
R / U 102074pppmmm Output Pulse Factor
unsigned div 1000
0.00
5.00
1.000 50.000
R / U 102080pppmmm Unused
Register
Protection Len=2
R / U 102081pppmmm Alarm Out FCM#
fcm address
Disabled
General
1762
R / U 102082pppmmm Authorized FCM#
fcm address
Disabled
General
1764
R / U 102083pppmmm Permiss FCM#
fcm address
Disabled
General
1766
R / U 102084pppmmm Permiss Out FCM#
fcm address
Disabled
General
1768
R / U 102085pppmmm Meter K-Factor
unsigned int
50
W&M
1770
Disabled
W&M
1772
General
1774
R / U 102086pppmmm Quad Check Enable
1
65535
disable/enable
R / U 102087pppmmm Unused
R / U 102088pppmmm Temperature Offset
R / U 102089pppmmm Temperature Alarm Time
signed div100
-5.00
5.00
0.00
W&M
1776
unsigned int
0
60
0
General
1778
R / U 102090pppmmm Temp Sensor FCM#
fcm address analog input
Disabled
W&M
1780
R / U 102091pppmmm Temperature Sensor
disable/enable
Enabled
W&M
1782
R / U 102092pppmmm Default Temperature
signed div10
-999.9
999.9
999.9
W&M
1784
R / U 102093pppmmm Alarm Low Temp
signed div10
-999.9
999.9
-999.9
General
1786
R / U 102094pppmmm Alarm High Temp
signed div10
-999.9
999.9
999.9
General
1788
R / U 102095pppmmm Temp Module Type
unsigned int
0
19
0
W&M
1790
R / U 102096pppmmm Temperature @ Low Value
signed div10
-999.9
999.9
-50.0
W&M
1792
R / U 102097pppmmm Temperature @ High Value
signed div10
-999.9
999.9
350.0
W&M
1794
R / U 102098pppmmm Unused
General
1796
R / U 102099pppmmm unused
General
1798
R / U 102100pppmmm Unused
General
1800
R / U 102101pppmmm Unused
General
1802
R / U 102102pppmmm Unused
General
1804
R / U 102103pppmmm Unused
General
1806
R / U 102104pppmmm Unused
General
1808
R / U 102105pppmmm Unused
General
1810
R / U 102106pppmmm Unused
General
1812
R / U 102107pppmmm Unused
General
1814
W&M
1816
R / U 102108pppmmm API Gravity Sensor FCM#
R / U 102109pppmmm Default API Gravity
fcm address analog input
unsigned div10
Disabled
-1000
11000
0
Conditional 1818
10
2
Chapter 7 – Register Operations
Modbus
Min
Max
Default
Data Type
Value
Value
Value
R / U 102110pppmmm Alarm Low API Gravity
unsigned div10
-1000
11000
0
General
1820
R / U 102111pppmmm Alarm High API Gravity
unsigned div10
-1000
11000
11000
General
1822
R / U 102112pppmmm API Gravity Alarm Time
unsigned int
0
60
0
General
1824
R / U 102113pppmmm API Gravity @ Low Value
unsigned div10
-1000
11000
0
W&M
1826
R / U 102114pppmmm API Gravity @ High Value
unsigned div10
-1000
11000
11000
W&M
1828
R / U 102115pppmmm API Gravity Offset
unsigned div10
-3000
3000
0
W&M
1830
Prefix
Register
Description
Register
Protection Len=2
10
3
Chapter 7 – Register Operations
7.1.6
103 – COMPONENT LEVEL CONFIGURATION REGISTERS
Note:
ppp = The specified zero-based preset or load arm number (000-011).
ccc = The specified zero-based component number (000-007).
Modbus:
The Modbus Preset Index Register sets the ppp index, Read/Write Register=996, Len=1, 16-Bit Integer
The Modbus Component Index Register sets the ccc index, Read/Write Register=997, Len=1, 16-Bit Integer
Modbus
Register
Prefix
Register
Description
Data Type
Min Value Max Value Default Value Protection
Len=2
R / U 103000pppccc Meter#
unsigned int
1
6
1
General
1800
R / U 103001pppccc High Flow Rate
unsigned int
0
9999
600
General
1802
R / U 103002pppccc 1st Stage Trip Vol
unsigned int
0
65535
70
General
1804
R / U 103003pppccc 1st Stage Flow Rate
unsigned int
0
9999
225
General
1806
R / U 103004pppccc 2nd Stage Trip Vol
unsigned int
0
65535
20
General
1808
R / U 103005pppccc 2nd Stage Flow Rate
unsigned int
0
9999
150
General
1810
R / U 103006pppccc Final Trip Vol
unsigned div100
0.00
655.35
1.15
General
1812
R / U 103007pppccc Final Trip Max Time
unsigned div1000
0.000
65.535
5.000
General
1814
R / U 103008pppccc Final Trip Vol Lock
disable/enable
Disabled
General
1816
R / U 103009pppccc Unauth Flow Alrm Vol
unsigned int
0
65535
10
General
1818
R / U 103010pppccc Tank Group
unsigned int
0
9999999
0
General
1820
unsigned div 100
0.00
100.00
0.00
W&M
1822
General
1824
R / U 103011pppccc W&M Recipe Percentage
R / U 103012pppccc Unused
R / U 103013pppccc BlkValve Open Rate
unsigned int
0
9999
0
General
1826
R / U 103014pppccc BlkValve Open Delay
unsigned int
0
65535
0
General
1828
R / U 103015pppccc B.V. Open Alrm Time
unsigned int
2
65535
10
General
1830
R / U 103016pppccc B.V. Close Alrm Time
unsigned int
2
65535
10
General
1832
R / U 103017pppccc Pump Start Delay
unsigned int
0
65535
3
General
1834
R / U 103018pppccc Pump Stop Delay
unsigned int
0
65535
30
General
1836
R / U 103019pppccc Pump Start Alrm Time
unsigned int
2
65535
2
General
1838
R / U 103020pppccc Flow Start Delay
unsigned int
0
65535
5
General
1840
General
1842
General
1844
General
1846
R / U 103021pppccc Unused
R / U 103022pppccc Unauth Reset Time
unsigned int
0
65535
0
R / U 103023pppccc Unused
R / U 103024pppccc Fallback Rate
unsigned int
0
9999
350
General
1848
R / U 103025pppccc Fallback Time
unsigned int
0
65535
0
General
1850
R / U 103026pppccc Fallback Retry Time
unsigned int
0
65535
0
General
1852
R / U 103027pppccc Fallback Retry Vol
unsigned int
0
65535
0
General
1854
unsigned div100
0
999999
0
General
1856
R / U 103029pppccc Fallback Minimum Rate
unsigned int
0
9999
0
General
1858
R / U 103030pppccc Fallback Increase Rate
unsigned int
0
9999
0
General
1860
R / U 103028pppccc Fallback Minimum Pressure
10
4
Chapter 7 – Register Operations
Modbus
Register
Prefix
Register
Description
R / U 103031pppccc Fallback Decrease Rate
Data Type
Min Value Max Value Default Value Protection
Len=2
unsigned int
0
9999
0
General
1862
unsigned div100
0
999999
0
General
1864
Disabled
General
1866
R / U 103034pppccc Unused
General
1868
R / U 103035pppccc Unused
General
1870
R / U 103036pppccc Unused
General
1872
R / U 103037pppccc Unused
General
1874
R / U 103038pppccc Unused
General
1876
None
W&M
1878
None
W&M
1880
Disabled
W&M
1882
R / U 103032pppccc Fallback Retry Min Pressure
R / U 103033pppccc Fallback Vapor Pressure
disable/enable
R / U 103039pppccc API Table
API table name
R / U 103040pppccc API 54YG Product
54YG Products
R / U 103041pppccc API Extrapolated Range
disable/enable
R / U 103042pppccc API BIO
0
20
PTB BIO Products
0
13
None
W&M
1884
signed div10
-100.0
1100.0
0.0
W&M
1886
R / U 103044pppccc Relative Density
unsigned div10000
0.0000
9.0000
0.0000
W&M
1888
R / U 103045pppccc Default Density
unsigned div10
0
9999.9
0
W&M
1890
R / U 103046pppccc Expansion Coef.
unsigned div10
0
2000.0
0
W&M
1892
R / U 103047pppccc Hydrometer Used
disable/enable
Disabled
W&M
1894
R / U 103048pppccc Commodity Type
commodity type
0
3
1
W&M
1896
expansion coef uom type
1
2
1
W&M
1898
density uom type
1
3
1
W&M
1900
pressure uom type
1
3
3
W&M
1902
unsigned int
0
9999
60
W&M
1904
Percent
0
100
0
General
1906
R / U 103054pppccc API Alarm Time
unsigned int
0
120
0
W&M
1908
R / U 103055pppccc Compressibility Factor
unsigned int
0
99999
0
W&M
1910
No Product
W&M
1912
R / U 103057pppccc Unused
General
1914
R / U 103058pppccc Unused
General
1916
R / U 103059pppccc Unused
General
1918
R / U 103060pppccc Unused
General
1920
R / U 103061pppccc Unused
General
1922
R / U 103062pppccc Unused
General
1924
R / U 103063pppccc Unused
General
1926
R / U 103064pppccc Unused
General
1928
R / U 103065pppccc Unused
General
1930
R / U 103066pppccc Unused
General
1932
R / U 103067pppccc Unused
General
1934
R / U 103043pppccc API Gravity
R / U 103049pppccc Expansion Coef. UOM
R / U 103050pppccc Density UOM
R / U 103051pppccc Pressure UOM
R / U 103052pppccc Reference Temperature
R / U 103053pppccc Alcohol Percentage
R / U 103056pppccc API ASTMD1555 Product
API ASTM D1555
10
5
Chapter 7 – Register Operations
Modbus
Register
Prefix
Register
Description
Data Type
Min Value Max Value Default Value Protection
Len=2
R / U 103068pppccc Unused
General
1936
R / U 103069pppccc Unused
General
1938
R / U 103070pppccc Unused
General
1940
Disabled
General
1942
10.000
W&M
1944
Delivery Type
Gross
W&M
1946
R / U 103074pppccc Close Blk Val FCM#
fcm address
Disabled
General
1948
R / U 103075pppccc Blk Val Status FCM
fcm address
Disabled
General
1950
R / U 103076pppccc Open Blk Val FCM#
fcm address
Disabled
General
1952
General
1954
R / U 103071pppccc Output Pulse FCM#
fcm address
R / U 103072pppccc Output Pulse Factor
unsigned div 1000
R / U 103073pppccc Output Pulse Type
1.000
50.000
R / U 103077pppccc Unused
R / U 103078pppccc Pump Run FCM#
fcm address
Disabled
General
1956
R / U 103079pppccc Pump Kill FCM#
fcm address
Disabled
General
1958
R / U 103080pppccc Pump Status FCM#
fcm address
Disabled
General
1960
R / U 103081pppccc Alarm Out FCM#
fcm address
Disabled
General
1962
R / U 103082pppccc Authorized FCM#
fcm address
Disabled
General
1964
R / U 103083pppccc Permiss FCM#
fcm address
Disabled
General
1966
R / U 103084pppccc Permiss Out FCM#
fcm address
Disabled
General
1968
R / U 103085pppccc Meter Factor #1
unsigned div10000
0.8000
1.2000
1.0000
W&M
1970
unsigned int
0
9999
150
W&M
1972
unsigned div10000
0.8000
1.2000
1.0000
W&M
1974
unsigned int
0
9999
200
W&M
1976
unsigned div10000
0.8000
1.2000
1.0000
W&M
1978
unsigned int
0
9999
400
W&M
1980
unsigned div10000
0.8000
1.2000
1.0000
W&M
1982
R / U 103092pppccc Meter Factor #4 Rate
unsigned int
0
9999
800
W&M
1984
R / U 103093pppccc # Meter Factors Used
unsigned int
1
4
4
W&M
1986
General
1988
R / U 103086pppccc Meter Factor #1 Rate
R / U 103087pppccc Meter Factor #2
R / U 103088pppccc Meter Factor #2 Rate
R / U 103089pppccc Meter Factor #3
R / U 103090pppccc Meter Factor #3 Rate
R / U 103091pppccc Meter Factor #4
R / U 103094pppccc Unused
10
6
Chapter 7 – Register Operations
7.1.7
104 – ADDITIVE LEVEL CONFIGURATION REGISTERS
Note:
ppp = The specified zero-based preset or load arm number (000-011).
aaa = The specified zero-based additive number (000-0015).
Modbus:
The Modbus Preset Index Register sets the ppp index, Read/Write Register=996, Len=1, 16-Bit Integer
The Modbus Additive Index Register sets the aaa index, Read/Write Register=999, Len=1, 16-Bit Integer
Modbus
Register
Prefix
Register
Description
Date Type
Min Value Max Value Default Value Protection
R/U
104000pppaaa Additive Enable
Enabled
General
2000
R/U
104001pppaaa Flow Control Module#
unsigned int
0
31
0
General
2002
R/U
104002pppaaa FCM Port#
unsigned int
0
3
0
General
2004
R/U
104003pppaaa W&M Controlled
disable/enable
Disabled
W&M
2006
R/U
104004pppaaa Upstream Block Valve
disable/enable
Disabled
General
2008
R/U
104005pppaaa Tank Group
unsigned int
0
9999999
0
General
2010
R/U
104006pppaaa Additive Type
disable/enable
0
4
0
General
2012
R/U
104007pppaaa
unsigned div10000
0.0000
10.0000
0.1000
General
2014
R/U
104008pppaaa Additive I Time
unsigned div10000
0.0000
0.6000
0.3000
General
2016
R/U
104009pppaaa Additive D Time
unsigned div10000
0.0000
0.6000
0.0000
General
2018
R/U
104010pppaaa Additive No Flow mA
unsigned div 1000
0.000
20.000
0.000
Conditional
2020
R/U
104011pppaaa Unused
General
2022
R/U
104016pppaaa Additive Mode
Additive Mode
NONE
Conditional
2032
R/U
104017pppaaa Start Volume
unsigned int
0
65535
0
Conditional
2034
R/U
104018pppaaa Restart Volume
unsigned int
0
65535
0
Conditional
2036
R/U
104019pppaaa Solenoid Shut Pulses
unsigned int
0
255
0
General
2038
R/U
104020pppaaa Shutoff Vol From End
unsigned int
0
65535
0
General
2040
R/U
104021pppaaa LastInj Vol From End
unsigned int
0
65535
20
General
2042
R/U
104022pppaaa Line Flush Min Vol
unsigned int
0
65535
0
General
2044
R/U
104023pppaaa Assigned Component
unsigned int
0
8
0
General
2046
R/U
104024pppaaa W&M Recipe Percentage
percent div 10000
0.0000%
6.5535%
0.0000%
W&M
2048
R/U
104025pppaaa Add Check Start VOL
unsigned int
0
65535
0
Conditional
2050
R/U
104026pppaaa Unused
General
2052
R/U
104027pppaaa Additive Vol/Inject
unsigned div10000
0.0000
6.5535
0.0200
Conditional
2054
R/U
104028pppaaa Vol/Inject Cal Factr
unsigned div10000
0.0001
6.5535
1.0000
Conditional
2056
R/U
104029pppaaa Unused
General
2058
R/U
104030pppaaa Additive Tol Percentage
R/U
Additive P Factor
disable/enable
Len=2
Percent
0
100.00
0
Conditional
2060
104031pppaaa Additive Mtr K-Factr
unsigned int
0
65535
2600
Conditional
2062
R/U
104032pppaaa Additive Mtr Factor
unsigned div10000
0.0001
6.5535
1.0000
Conditional
2064
R/U
104033pppaaa Max Pstn Missed Inj
unsigned int
0
65535
0
Conditional
2066
R/U
104034pppaaa MaxSolenoid Inj Time
unsigned div1000
0.100
10.000
4.000
Conditional
2068
R/U
104035pppaaa Under Add Alrm # Inj
unsigned int
0
65535
3
Conditional
2070
10
7
Chapter 7 – Register Operations
Modbus
Register
Prefix
Register
Description
Date Type
Min Value Max Value Default Value Protection
Len=2
R/U
104036pppaaa Over Add Alrm # Inj
unsigned int
0
65535
3
Conditional
2072
R/U
104037pppaaa Check Add Tol Time
unsigned int
0
65535
10
Conditional
2074
R/U
104038pppaaa Unauth Flow Alrm Vol
unsigned int
0
65535
100
General
2076
R/U
104039pppaaa Valve Fault Alrm Vol
unsigned int
0
65535
300
General
2078
R/U
104040pppaaa Over Inject Vol
unsigned int
0
65535
0
Conditional
2080
R/U
104041pppaaa Creep Reset Time
unsigned int
0
65535
0
General
2082
R/U
104042pppaaa Unauth Reset Time
unsigned int
0
65535
0
General
2084
R/U
104043pppaaa Max Pistn Throw Time
unsigned div1000
0.100
10.000
1.800
General
2086
R/U
104044pppaaa Pump Start Alrm Time
unsigned int
0
65535
2
General
2088
R/U
104045pppaaa Meter Creep Alrm Vol
unsigned int
0
65535
150
General
2090
R/U
104046pppaaa Remote Calibration
Enabled
General
2092
R/U
104047pppaaa B.V. Open Alrm Time
unsigned int
0
65535
10
General
2094
R/U
104048pppaaa B.V. Close Alrm Time
unsigned int
0
65535
10
General
2096
R/U
104049pppaaa Pump Stop Delay
unsigned int
0
65535
3
General
2098
R/U
104050pppaaa Flush Pump Run Time
unsigned int
0
65535
30
General
2100
R/U
104051pppaaa Meter Flushed
disable/enable
Disabled
General
2102
R/U
104052pppaaa Solenoid Flushed
disable/enable
Disabled
General
2104
R/U
104053pppaaa Unused
General
2106
R/U
104054pppaaa W&M Alarm Promo Count
unsigned int
0
65535
0
W&M
2108
R/U
104055pppaaa W&M Alarm Reset Mode
alarm count
reset mode
0
10
0
W&M
R/U
104085pppaaa Unused
General
2170
R/U
104086pppaaa Unused
General
2172
R/U
104087pppaaa Unused
General
2174
R/U
104088pppaaa Flush Pump Run FCM#
fcm address
Disabled
General
2176
R/U
104089pppaaa Close Blk Val FCM#
fcm address
Disabled
General
2178
R/U
104090pppaaa Blk Val Status FCM#
fcm address
Disabled
General
2180
R/U
104091pppaaa Open Blk Val FCM#
fcm address
Disabled
General
2182
R/U
104092pppaaa Test Button FCM#
fcm address
Disabled
General
2184
R/U
104093pppaaa Pump Run FCM#
fcm address
Disabled
General
2186
R/U
104094pppaaa Pump Kill FCM#
fcm address
Disabled
General
2188
R/U
104095pppaaa Pump Status FCM#
fcm address
Disabled
General
2190
R/U
104096pppaaa Alarm Out FCM#
fcm address
Disabled
General
2192
R/U
104097pppaaa Authorized FCM#
fcm address
Disabled
General
2194
R/U
104098pppaaa Permiss FCM#
fcm address
Disabled
General
2196
R/U
104099pppaaa Permiss Out FCM#
fcm address
Disabled
General
2198
disable/enable
2110
10
8
Chapter 7 – Register Operations
7.1.8
108 –TRACE LEVEL CONFIGURATION REGISTERS
“Modbus Trace Level” Select the trace level for outgoing Modbus communications
Enum{//
Enumerated Value
Register Value
MODBUS_TRACE_LEVEL_DISABLED
0
MODBUS_TRACE_LEVEL_BASIC
1
MODBUS_TRACE_LEVEL_ADVANCED
2
}
Modbus
Register
Prefix
Register Description
R/U
108000
Unused
R/U
108001
Trace Preset Number
unsigned int
1
12
1
General
R/U
108002
Trace Adtv Number
unsigned int
1
16
1
General
R/U
108003
Trace UAP Level
unsigned int
1
6
4
General
R/U
108004
Trace Recipe
disable/enable
Disabled
General
R/U
108005
FCM Trace
disable/enable
Disabled
General
R/U
108006
Trace FCM Number
32
General
R/U
108007
Trace FCM Assignment
disable/enable
Disabled
General
R/U
108008
Trace Meter Flows
disable/enable
Disabled
General
R/U
108009
Trace Adtv Volume
disable/enable
Disabled
General
R/U
108010
Trace Tank Number
disable/enable
Disabled
General
R/U
108011
Trace Network SSL
disable/enable
Disabled
General
R/U
108012
Trace E-Mail
disable/enable
Disabled
General
R/U
108013
Trace FTP
disable/enable
Disabled
General
R/U
10814
Trace Modbus
Modbus Trace Level
Disabled
General
7.1.9
Date Type
Min Value Max Value Default Value Protection
Len=2
General
unsigned int
0
33
110 –NETWORK LEVEL CONFIGURATION REGISTERS
Modbus
Register
Prefix
Register Description
Date Type
Min Value Max Value Default Value Protection
R/U
110000
Host Port(7734)
disable/enable
Enabled
General
R/U
110001
Host SSL Port (7735)
disable/enable
Disabled
General
R/U
110002
HTTP Port(80)
disable/enable
Enabled
General
R/U
110003
HTTPS Port(443)
disable/enable
Disabled
General
R/U
110004
Com0 Port(7000)
disable/enable
Enabled
General
R/U
110005
Com0 SSL Port (7010)
disable/enable
Disabled
General
R/U
110006
Com1 Port(7001)
disable/enable
Enabled
General
Len=2
10
9
Chapter 7 – Register Operations
Modbus
Register
Prefix
Register Description
Date Type
Min Value Max Value Default Value Protection
R/U
110007
Com1 SSL Port (7011)
disable/enable
Disabled
General
R/U
110008
Com2 Port(7002)
disable/enable
Enabled
General
R/U
110009
Com2 SSL Port (7012)
disable/enable
Disabled
General
R/U
110010
Modbus TCP/IP Port(502)
disable/enable
Enabled
General
R/U
110011
Unused
General
R/U
110012
Unused
General
R/U
110013
Unused
General
R/U
110014
Unused
General
R/U
110015
Unused
General
R/U
110016
Unused
General
R/U
110017
Unused
General
R/U
110018
Unused
General
R/U
110019
Unused
General
R/U
110020
NTP Server 1 IP Addres
char
General
R/U
110021
NTP Server 2 IP Addres
char
General
R/U
110022
NTP Server 3 IP Addres
char
General
R/U
110023
NTP Server 4 IP Addres
char
General
R/U
110024
NTP GMT Time Zone
char
General
R/U
110025
eMail Enable
R/U
110026
eMail SMTP Server Address
char
General
R/U
110027
eMail To Address
char
General
R/U
110028
eMail From Address
char
General
R/U
110029
eMail Authentication Enable
R/U
110030
eMail Username
char
General
R/U
110031
eMail Password
char
General
disable/enable
Disabled
disable/enable
Disabled
Len=2
General
General
7.1.10 111 –TANK LEVEL CONFIGURATION REGISTERS
Note:
ttt = The specified zero-based tank number (000-009).
Modbus
Register
Prefix
Register Description
Date Type
Min Value Max Value Default Value Protection
R/U
111000ttt Tank Group
unsigned int
0
9999999
0
General
R/U
111001ttt Tank Number
unsigned int
0
9999999
0
General
R/U
111002ttt Active Tank Mode
Tank Mode
DEACTIVE
General
R/U
111003ttt Tank High High Level FCM#
fcm address
Disabled
General
R/U
111004ttt Tank High Level FCM#
fcm address
Disabled
General
R/U
111005ttt Tank Low Level FCM#
fcm address
Disabled
General
Len=2
11
0
Chapter 7 – Register Operations
R/U
111006ttt Tank Low Low Level FCM#
fcm address
Disabled
General
R/U
111007ttt Tank Level Bypass FCM#
fcm address
Disabled
General
R/U
111008ttt Active Tank FCM#
fcm address
Disabled
General
R/U
111009ttt Alarm Out FCM#
fcm address
Disabled
General
R/U
111010ttt TankValve Open Delay
unsigned int
0
65535
10
General
R/U
111011ttt TankValve Open Alrm Time
unsigned int
0
65535
10
General
R/U
111012ttt TankValve Close Alrm Time
unsigned int
0
65535
10
General
R/U
111013ttt Close TankValve FCM#
fcm address
Disabled
General
R/U
111014ttt TankValve Status FCM#
fcm address
Disabled
General
R/U
111015ttt Open TankValve FCM#
fcm address
Disabled
General
R/U
111016ttt Tank Start Trigger Level FCM#
fcm address
Disabled
General
R/U
111017ttt Tank Stop Trigger Level FCM#
fcm address
Disabled
General
7.1.11 115 –SAMPLER LEVEL CONFIGURATION REGISTERS
Note: ppp = The specified zero-based preset or load arm number (000-011).
sss = The specified zero-based sampler number (000-0015).
Modbus
Register
Prefix
Register
Description
Date Type
Min Value Max Value Default Value Protection
R/U
115000pppsss
Sampler Enable
R/U
115001pppsss
Flow Control Module#
unsigned int
0
31
R/U
115002pppsss
FCM Port#
unsigned int
0
31
R/U
115003pppsss
Unused
General
R/U
115004pppsss
Unused
General
R/U
115005pppsss
Unused
General
R/U
115006pppsss
Sampler Vol/Sample
unsigned int
0
65535
200
General
R/U
115007pppsss
Vol/Sampler Cal Factr
unsigned int
0
65535
10000
General
R/U
115070pppsss
Alarm Out FCM#
fcm address
Disabled
General
R/U
115071pppsss
Authorized FCM#
fcm address
Disabled
General
R/U
115072pppsss
Permiss FCM#
fcm address
Disabled
General
R/U
115073pppsss
Permiss Out FCM#
fcm address
Disabled
General
disable/enable
Enabled
Len=2
General
General
0
General
7.1.12 116 –SECURITY LEVEL CONFIGURATION REGISTERS
Modbus
Register
Prefix
Register
Description
Date Type
Min Value Max Value Default Value Protection
R/U
116000
Minimum Days
unsigned int
0
65535
7
General
R/U
116001
Expiration in Days
unsigned int
0
65535
0
General
R/U
116002
Expiration Notification Days
unsigned int
0
65535
0
General
R/U
116003
Expiration Email Notification
unsigned int
0
65535
0
General
Len=2
11
1
Chapter 7 – Register Operations
R/U
116004
Minimum Password Length
unsigned int
0
40
10
General
R/U
116005
Max Retry Attempts
unsigned int
0
65535
20
General
R/U
116006
Lockout Duration in Minutes
unsigned int
0
65535
5
General
R/U
116007
Password History Storage
unsigned int
0
14
6
General
R/U
116008
Password Complexity
NONE
General
R/U
116009
Unused
General
R/U
116010
Unused
General
security complexity
11
2
Chapter 7 – Register Operations
7.1.13 117 –REPORT LEVEL CONFIGURATION REGISTERS
Note: rrr = The specified zero based report type (000= Transaction Report, 001= Sample Pot Report,
Meter Report).
002=
Modbus
Register
Prefix
Register
Description
Date Type
Min Value Max Value Default Value Protection
R/U
117000rrr
Daily Report s Enabled
unsigned int
0
1
0
General
R/U
117001rrr
Daily Report s Time Trigger
unsigned int
0
2359
0
General
R/U
117002rrr
Monthly Report s Enabled
unsigned int
0
1
0
General
R/U
117003rrr
Monthly Report s Day Trigger
unsigned int
1
28
1
General
R/U
117004rrr
Monthly Report s Time Trigger
unsigned int
0
2359
10
General
Len=2
11
3
Chapter 7 – Register Operations
7.1.14 105 – CUSTOM LOGIC DEFINITIONS REGISTERS
Note:
R105iiiii
=>
0?0105iiiiittttt…
U105105iiiiittttt…
=>
0?0105
Where:
iiiii = The specified zero-based custom logic index (0000-1023).
For Modbus, the Modbus Custom Logic Index Register sets the iiii index.
Modbus: Read/Write Register=296, Len=1, 16-Bit Integer (iiiii)
ttttt = Custom Logic Type as:
enum custom_logic_type
{
// misc types
UNUSED
FCM_INPUT_PORT
FCM_OUTPUT_PORT
// run time values
RCU_RT
BAY_RT
PRESET_RT
COMPONENT_RT
METER_RT
ADDITIVE_RT
TANK_RT
SAMPLER_RT
// config read values
RCU_READ_CFG
BAY_ READ_CFG
PRESET_ READ_CFG
COMPONENT_ READ_CFG
METER_ READ_CFG
ADDITIVE_ READ_CFG
TANK_READ_CFG
SAMPLER_READ_CFG
REPORTS_READ_CFG
SD_CARD_READ_CFG
// config write values
RCU_WRITE_CFG
BAY_WRITE_CFG
PRESET_WRITE_CFG = 32,
COMPONENT_WRITE_CFG
METER_WRITE_CFG
ADDITIVE_WRITE_CFG
TANK_WRITE_CFG
SAMPLER_WRITE_CFG
REPORTS_WRITE_CFG
= 0,
= 1,
= 2,
= 10,
= 11,
= 12,
= 13,
= 14,
= 15,
= 16,
= 17,
= 20,
= 21,
= 22,
= 23,
= 24,
= 25,
= 26,
= 27,
= 28,
= 29,
= 30,
= 31,
= 33,
= 34,
= 35,
= 36,
= 37,
= 38,
11
4
Chapter 7 – Register Operations
SD_CARD_WRITE_CFG
= 39,
// run time totalizer values
PRESET_TOTALIZER_RT
= 40,
COMPONENT_TOTALIZER_RT= 41,
METER_TOTALIZER_RT
= 42,
ADDITIVE_TOTALIZER_RT
= 43,
SAMPLER_TOTALIZER_RT
= 44,
// run time resetable totalizer values
PRESET_RTOTALIZER_RT
= 50,
COMPONENT_RTOTALIZER_RT=51,
METER_RTOTALIZER_RT
= 52,
ADDITIVE_RTOTALIZER_RT = 53,
SAMPLER_RTOTALIZER_RT = 54,
// boolean operations and comparitors
ALWAYS_FALSE
= 100,
ALWAYS_TRUE
= 101,
ASSIGN
= 102,
NOT
= 103,
AND
= 104,
NAND
= 105,
OR
= 106,
NOR
= 107,
EOR
= 108,
// analog operations
ADD
= 120,
SUBTRACT
= 121,
MULTIPLY
= 122,
DIVIDE
= 123,
SET_VALUE
= 124,
// analog comparators
EQUAL
= 140,
LESS_THAN
= 141,
GREATER_THAN
= 142,
LESS_THAN_OR_EQUAL
= 143,
GREATER_THAN_OR_EQUAL = 144,
// delays/timers
START_DELAY
= 150,
STOP_DELAY
= 151
BEACON
= 152,
PULSE
= 153,
COUNTER
= 154,
FLIPFLOP
= 155,
// Analog values
ANALOG_IN
= 160,
ANALOG_OUT
= 161,
11
5
Chapter 7 – Register Operations
ANALOG_OUT_MONITOR
= 162,
//RTD
RTD
= 170,
//Alarm Output Levels
BAY_RT_ALARM
= 180,
PRESET_RT_ALARM
= 181,
COMPONENT_RT_ALARM
= 182,
METER_RT_ALARM
= 183,
ADDITIVE_RT_ALARM
= 184,
TANK_RT_ALARM
= 185,
SAMPLER_RT_ALARM
= 186,
// Allow Inputs from FCM outputs or External Communication
INTERNAL_INPUT
= 190,
EXTERNAL_INPUT
= 191
// Scaling
SCALE_0_to_10000
= 200,
// Range checking
RANGE_CHECK
= 210,
// messages
EMAIL_MESSAGE
= 220
} type;
Modbus: Read/Write Register=297, Len=1, 16-Bit Integer (ttttt)
… = Type Specific Commands
If type -= UNUSED, (No Further Parameters)
If type -= FCM_INPUT, fffffppppp
Where:
fffff – FCM Number (0-32)
ppppp – FCM Port (0-7)
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (fffff)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
If type -= FCM_OUTPUT, fffffpppppxxxxx
Where:
fffff – FCM Number (0-32)
ppppp – FCM Port (0-7)
xxxxx = Custom logic index (0000-1023).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (fffff)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (xxxxx)
If type -= RCU_RT, rrrrr
Where:
Chapter 7 – Register Operations
rrrrr –Rcu Real Time Parameter Type as
custom_logic_rcu_real_time_prompt[] =
{
{"Proving Mode"},
// 00000
{"W&M Key"},
// 00001
{"Program Key"},
// 00002
{"Card Inserted"},
// 00003
{"Hour"
},
//00004
{"Minute"
},
//00005
{"Seconds"
},
//00006
{"Year"
},
//00007
{"Month"
},
//00008
{"Day"
},
//00009
{"Julian Date"
}, //00010
{"Epoch Time"
}, //00011
{"Prompt1"
},
//00012
{"Prompt2"
},
//00013
{"Prompt3"
},
//00014
{"Prompt4"
},
//00015
{"Prompt5"
},
//00016
{"RCU State"
},
//00017
{"Card 1 Number" },
//00018
{"Card 1 Facility" },
//00019
{"Card 2 Number" },
//00020
{"Card 2 Facility" },
//00021
{"Security Bypass"},
//00022
{"Config Changed"},
//00023
};
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
If type -= BAY_RT, rrrrrppppp
Where:
rrrrr –Bay Real Time Parameter Type as
custom_logic_bay_real_time_prompt[] =
{
{"Clearing Errors"},
// 00000
{"Diag Mode"},
// 00001
{"All Stop"},
// 00002
{"Alarm Out"},
// 00003
{"Authorized"},
// 00004
{"Permissive Out"},
// 00005
{"Permissive 0"},
// 00006
{"Permissive 1"},
// 00007
{"Permissive 2"},
// 00008
{"Permissive 3"},
// 00009
11
6
11
7
Chapter 7 – Register Operations
{"Permissive 4"},
{"Permissive 5"},
{"Permissive 6"},
{"Permissive 7"},
{"Deadman Input" },
{"Deadman Output" },
{"Deadman Bypass" },
{"Total Volume" },
{"Start Trans" },
{"Stop Trans" }
// 00010
// 00011
// 00012
// 00013
// 00014
// 00015
// 00016
// 00017
// 00018
// 00019
};
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
{"Preset State" },
// 00015
{"Gross Delivered"},
// 00016
{"Net Delivered" },
// 00017
{"Mass Delivered" },
// 00018
{"Delivered Pct" },
// 00019
{"Remaining Vol" },
// 00020
{"Gross Flow Rate"},
// 00021
{"Temperature" },
// 00022
{"Pressure"
},
// 00023
{"Density"
},
// 00024
11
8
Chapter 7 – Register Operations
{"Relative Dens" },
{"API Gravity" },
{"BSW"
}
{"Alt. High Flow"}
{"Preset Volume"}
{"Flush Remain" }
{"Auth Prod Idx" }
{"Product Idx" }
{"Lead Component" }
{"Compartment" }
{"Open Pre Vol" }
{"Compart Pre Vol"}
// 00025
// 00026
// 00027
// 00028
// 00029
// 00030
// 00031
// 00032
// 00033
// 00034
// 00035
// 00036
};
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
{"Pump Kill"},
// 00004
{"Pump Status"},
// 00005
{"Open Blk Valve"},
// 00006
{"Blk Val Status"},
// 00007
{"Close Blk Valve"},
// 00008
{"Alarm Out"},
// 00009
{"Authorized"},
// 00010
{"Permissive"},
// 00011
{"Permissive Out"},
// 00012
{"Component State" }, // 00013
{"Gross Delivered"},
// 00014
{"Net Delivered" },
// 00015
{"Mass Delivered" },
// 00016
{"Temperature" },
// 00017
{"Pressure"
},
// 00018
{"Density"
},
// 00019
{"Relative Dens" },
// 00020
{"API Gravity" },
// 00021
{"VCF"
}
// 00022
11
9
Chapter 7 – Register Operations
{"CTL"
}
{"CPL"
}
{"Fallback Ceil"}
{"Avg Temperature"}
{"Avg Pressure" }
{"Avg Density" }
{"Avg Relative" }
{"Avg API Gravity"}
{"Unauth Gross" }
{"Unauth Net" }
{"Unauth Mass" }
{"Vapor Pressure" }
{"Recipe Pct" }
{"Recipe Volume" }
{"Blnd Target Vol"}
{"Blnd Target Pct"}
{"Btch Recipe Pct"}
{"Blnd Tg Vol Err"}
{"Blnd Tg Pct Err"}
{"Btch Rp Vol Err"}
{"Btch Rp Pct Err"}
{"Blnd Adj FlRate"}
// 00023
// 00024
// 00025
// 00026
// 00027
// 00028
// 00029
// 00030
// 00031
// 00032
// 00033
// 00034
// 00035
// 00036
// 00037
// 00038
// 00039
// 00040
// 00041
// 00042
// 00043
// 00044
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based component number (00000-00007).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= METER_RT, rrrrrppppplllll
Where:
rrrrr – Meter Real Time Parameter Type as
custom_logic_meter_real_time_prompt[] =
{
{"Clearing Errors"},
// 00000
{"Clear Totals"},
// 00001
{"Alarm Out"},
// 00002
{"Authorized"},
// 00003
{"Permissive"},
// 00004
{"Permissive Out"},
// 00005
{"SidStrm On Mtr"},
// 00006
{"Meter State" },
// 00014
{"Gross Delivered"},
// 00015
{"Gross Flow Rate"},
// 00016
{"Temperature" },
// 00017
12
0
Chapter 7 – Register Operations
{"Pressure"
},
{"Density"
},
{"Relative Dens" },
{"API Gravity" },
{"Gross Creep Del"},
{"Volume Preset"},
// 00018
// 00019
// 00020
// 00021
// 00022
// 00023
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based meter number (00000-00003).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= ADDITIVE_RT, rrrrrppppplllll
Where:
rrrrr – Additive Real Time Parameter Type as
custom_logic_additive_real_time_prompt[]
{
(“Clearing Errors”),
// 00000
(“Clear Batch"},
// 00001
(“Test Button"},
// 00002
("Pump Run"},
// 00003
{"Pump Kill"},
// 00004
{"Pump Status"},
// 00005
{"Open Blk Valve"},
// 00006
{"Blk Val Status"},
// 00007
{"Flush Pump Run"},
// 00008
{"Close Blk Valve"},
// 00009
{"Alarm Out"},
// 00010
{"Authorized"},
// 00011
{"Permissive"},
// 00012
{"Permissive Out"},
// 00013
{"Gross Delivered"},
// 00014
{"Additive Pct" }
// 00015
{"Gross Curr Targ"},
// 00016
{"Gross Recipe" }
// 00017
{"Flush Remain" }
// 00018
{"Additive State" }
// 00019
{"Missed Inj" }
// 00020
{"Creep Gross" }
// 00021
{"Unauth Gross" }
// 00022
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based additive number (00000-00015).
12
1
Chapter 7 – Register Operations
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= SAMPLER_RT, rrrrrppppplllll
Where:
rrrrr – Sampler Real Time Parameter Type as
custom_logic_sampler_real_time_prompt[]
{
(“Clearing Errors”),
// 00000
(“Clear Batch"},
// 00001
(“Alarm Out"},
// 00002
("Authorized"},
// 00003
{"Permissive"},
// 00004
{"Permissive Out"},
// 00005
{"Gross Delivered"},
// 00006
{"Pacing Rate"},
// 00007
{"Curr Target"},
// 00008
{"Sampler State"},
// 00009
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based sampler number (00000-00015).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= TANK_RT, rrrrrppppplllll
Where:
rrrrr – Tank Real Time Parameter Type as
custom_logic_tank_real_time_prompt[]
{
(“High High Level”),
// 00000
(“High Level"},
// 00001
(“Low Level"},
// 00002
("Low Low Level"}
// 00003
{"Bypass Alarm"},
// 00004
{"Active"},
// 00005
{"Alarm Out"} ,
// 00006
{"Close Tk Valve"},
// 00007
{"Status Tk Valve"},
// 00008
{"Open Tk Valve"},
// 00009
{"Start Trigger Level"}, // 00010
{"Stop Trigger Level"}, // 00011
};
Chapter 7 – Register Operations
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based sampler number (00000-00015).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= BAY_RT_ALARM, rrrrrppppp
Where:
rrrrr –Bay Real Time Alarm Parameter Type as
custom_logic_bay_real_time_alarm_prompt[] =
{
{"*BAY FCM"
}
// 00000
{"*BAY PERM0" },
// 00001
{"*BAY PERM1" },
// 00002
{"*BAY PERM2" }
// 00003
{"*BAY PERM3" }
// 00004
{"*BAY PERM4" }
// 00005
{"*BAY PERM5" },
// 00006
{"*BAY PERM6" }
// 00007
{"*BAY PERM7" }
// 00008
{"*ALL STOP"
},
// 00009
{"*BAY PCM"
},
// 00010
{"*PRNTR ERR" }
// 00011
{"*BALARM 12" },
// 00012
{"*BALARM13"
},
// 00013
{"*DEADMAN"
},
// 00014
{"*BALARM15"
},
// 00015
{"*POWERFAIL"
}, // 00016
};
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_ALARM, rrrrrppppp
Where:
rrrrr –Preset Real Time Alarm Parameter Type as
custom_logic_preset_real_time_alarm_prompt[] =
{
{"*PRE FCM"
},
// 00000
{"*PRE PERM"
},
// 00001
{"*SWING ARM" },
// 00002
{"*NO LNFLSH" },
// 00003
{"*BLK VALVE" },
// 00004
{"*BAY ALARM" },
// 00005
{"*COMP ALRM" }, // 00006
12
2
12
3
Chapter 7 – Register Operations
{"*ADD ALARM" },
{"*MTR STOP"
},
{"*OVERRUN"
},
{"*EXCESS FL" },
{"*BSW" },
{"*TANKLEVEL"}
{"*DIVERT"},
{"*SAMPELR" },
{"*INVCONFIG"}
// 00007
// 00008
// 00009
// 00010
// 00011
// 00012
// 00013
// 00014
// 00015
};
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_ALARM, rrrrrppppplllll
Where:
rrrrr – Component Real Time Alarm Parameter Type as
custom_logic_component_real_time_alarm_prompt[] =
{
{"*COMP FCM"
},
// 00000
{"*COMP PERM" }, // 00001
{"*BLK VALVE" },
// 00002
{"*UNAUTH FL" },
// 00003
{"*PUMP STAT" },
// 00004
{"*MTR ALARM" },
// 00005
{"*OVR BLEND" },
// 00006
{"*UND BLEND" },
// 00007
{"*API TABLE" },
// 00008
{"*FB PRESS" },
// 00009
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based component number (00000-00007).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= METER_RT_ALARM, rrrrrppppplllll
Where:
rrrrr – Meter Real Time Alarm Parameter Type as
custom_logic_meter_real_time_alarm_prompt[] =
{
{"*MTR FCM"
},
// 00000
{"*MTR PERM"
},
// 00001
12
4
Chapter 7 – Register Operations
{"*FCM CONF"
},
{"*FCM WDT"
},
{"*FCM TMOUT" },
{"*VALVE FLT" },
{"*LOW FLOW"
},
{"*EXCESS FL" },
{"*QUAD ENC"
},
{"*DENSITY"
},
{"*RTD ERROR" },
{"*VALVE CTL" },
{"*MTR CREEP" },
{"*PRES ALRM" },
{"*QUAD CH A" },
{"*QUAD CH B" },
{"*MTR COM"
},
{"*GRAVITY"
},
// 00002
// 00003
// 00004
// 00005
// 00006
// 00007
// 00008
// 00009
// 00010
// 00011
// 00012
// 00013
// 00014
// 00015
// 00016
// 00018
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based meter number (00000-00003).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
If type -= ADDITIVE_RT_ALARM, rrrrrppppplllll
Where:
rrrrr – Additive Real Time Alarm Parameter Type as
custom_logic_additive_real_time_alarm_prompt[]
{
{"*ADTV FCM"
}
// 00000
{"*ADTV PERM" },
// 00001
{"*UND ADTV"
},
// 00002
{"*OVR ADTV"
},
// 00003
{"*VALVE FLT" },
// 00004
{"*PUMP STAT" },
// 00005
{"*INJCT FLT" },
// 00006
{"*UNAUTH FL" },
// 00007
{"*NO LNFLSH" },
// 00008
{"*MTR CREEP" },
// 00009
{"*BLK VALVE" },
// 00010
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based additive number (00000-00015).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register=300, Len=1, 16-Bit Integer (lllll)
Chapter 7 – Register Operations
If type -= ALWAYS_FALSE or ALWAYS_FALSE, (No Further Parameters)
If type -= ASSIGN or NOT, xxxxx
Where:
xxxxx = Custom logic index (0000-1023).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (xxxxx)
If type -= any other valid type, xxxxxyyyyy
Where:
xxxxx = Custom logic index (0000-1023).
yyyyy = Custom logic index (0000-1023).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (xxxxx)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (yyyyy)
If type -= SAMPLER_RT_ALARM, rrrrrppppplllll
Where:
rrrrr – Sampler Real Time Alarm Parameter Type as
custom_logic_sampler_real_time_alarm_prompt[]
{
{"*SAMP FCM"
}
// 00000
{"*SAMP PERM" }, // 00001
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based sampler number (00000-00015).
Modbus: Read/Write Register= 298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register= 299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
If type -= TANK_RT_ALARM, rrrrrppppplllll
Where:
rrrrr – Tank Real Time Alarm Parameter Type as
custom_logic_tank_real_time_alarm_prompt[]
{
{"*TANK FCM"
}
// 00000
{"*HHLEVEL" },
// 00001
{"*HLEVEL" },
// 00002
{"*LLEVEL" },
// 00003
{"*LLLEVEL" },
// 00004
{"*TK VALVE" },
// 00005
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based sampler number (00000-00015).
Modbus: Read/Write Register= 298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register= 299, Len=1, 16-Bit Integer (ppppp)
12
5
Chapter 7 – Register Operations
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
If type -= PRESET_TOTALIZER_RT, rrrrrppppp
Where:
rrrrr – Preset Totalizer Real Time Parameter Type as
custom_logic_preset_totalizer_real_time_prompt[]
{
{"GrossTotalizer" }
// 00001
{"NetTotalizer" }
// 00002
{"MassTotalizer" }
// 00003
{"AuthGrossTot" }
// 00004
{"AuthNetTot" }
// 00005
{"AuthMassTot" }
// 00006
{"UnauthGrossTot" }
// 00007
{"UnauthNetTot" }
// 00008
{"UnauthMassTot" }
// 00009
{"RGrossTotalizer"}
// 00010
{"RNetTotalizer" }
// 00011
{"RMassTotalizer" }
// 00012
{"RAuthGrossTot" }
// 00013
{"RAuthNetTot" }
// 00014
{"RAuthMassTot" }
// 00015
{"RUnauthGrossTot"} // 00016
{"RUnauthNetTot" }
// 00017
{"RUnauthMassTot" } // 00018
};
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 -= METER_TOTALIZER_RT, rrrrrppppplllll
Where:
rrrrr – Meter Totalizer Real Time Parameter Type as
custom_logic_meter_totalizer_real_time_prompt[]
{
{"GrossTotalizer" }
// 00000
{"AuthGrossTot" }
// 00001
{"UnauthGrossTot" }
// 00002
{"CreepGrossTot" }
// 00003
{"BckflwGrossTot" }
// 00004
{"RGrossTotalizer"}
// 00005
{"RAuthGrossTot" }
// 00006
{"RUnauthGrossTot"} // 00007
{"RCreepGrossTot" }
// 00008
12
6
12
7
Chapter 7 – Register Operations
{"RBckflwGrossTot"}
// 00009
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based meter number (00000-0005).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
If type -= COMPONENT_TOTALIZER_RT, rrrrrppppplllll
Where:
rrrrr – Component Totalizer Real Time Parameter Type as
custom_logic_component_totalizer_real_time_prompt[]
{
{"GrossTotalizer" }
// 00001
{"NetTotalizer" }
// 00002
{"MassTotalizer" }
// 00003
{"AuthGrossTot" }
// 00004
{"AuthNetTot" }
// 00005
{"AuthMassTot" }
// 00006
{"UnauthGrossTot" }
// 00007
{"UnauthNetTot" }
// 00008
{"UnauthMassTot" }
// 00009
{"RGrossTotalizer"}
// 00010
{"RNetTotalizer" }
// 00011
{"RMassTotalizer" }
// 00012
{"RAuthGrossTot" }
// 00013
{"RAuthNetTot" }
// 00014
{"RAuthMassTot" }
// 00015
{"RUnauthGrossTot"} // 00016
{"RUnauthNetTot" }
// 00017
{"RUnauthMassTot" } // 00018
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based component number (00000-00008).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
If type -= ADDITIVE_TOTALIZER_RT, rrrrrppppplllll
Where:
rrrrr – Additive Totalizer Real Time Parameter Type as
custom_logic_additive_totalizer_real_time_prompt[]
12
8
Chapter 7 – Register Operations
{
{"GrossTotalizer" }
{"AuthGrossTot" }
{"UnauthGrossTot" }
{"CreepGrossTot" }
{"RGrossTotalizer"}
{"RAuthGrossTot" }
{"RUnauthGrossTot"}
{"RCreepGrossTot" }
// 00000
// 00001
// 00002
// 00003
// 00004
// 00005
// 00006
// 00007
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based additive number (00000-00015).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
If type -= SAMPLER_TOTALIZER_RT, rrrrrppppplllll
Where:
rrrrr – Sampler Totalizer Real Time Parameter Type as
custom_logic_sampler_totalizer_real_time_prompt[]
{
{"GrossTotalizer" }
// 00000
{"RGrossTotalizer"}
// 00001
};
ppppp – Zero-based preset number (00000-00011).
lllll = Zero based sampler number (00000-00003).
Modbus: Read/Write Register=298, Len=1, 16-Bit Integer (rrrrr)
Modbus: Read/Write Register=299, Len=1, 16-Bit Integer (ppppp)
Modbus: Read/Write Register= 300, Len=1, 16-Bit Integer (lllll)
7.1.15 107 – CUSTOM LOGIC VALUE REGISTERS
R107aaaaa => 0?0107aaaaavvvvvvvvv
U107aaaaavvvvvvvvv => 0?0107aaaaa (ONLY if the custom logic line is an external input)
Where:
aaaaa = The specified zero-based custom logic index (0000-1023).
vvvvvvvvv = The value read or to be written to the custom logic line.
Modbus: Read/Write Register=12000 +(aaaaa*2), Len=2, 32-Bit Integer (vvvvvvvvv)
This will return the value out of custom logic.
7.1.16 200 – STAND ALONE BOL DEFINITION REGISTERS
R200 => 0?0200aabbccddeeff
Chapter 7 – Register Operations
U200aabbccddeeff => 0?0200
Where:
aabb = BOL Line and Position Number for the BOL Number
ccdd = BOL Line and Position Number for the Card Number
eeff = BOL Line and Position Number for the Company
Modbus:
Read/Write Register=350, Len=1, 16-Bit Integer (aa)
Read/Write Register=351, Len=1, 16-Bit Integer (bb)
Read/Write Register=352, Len=1, 16-Bit Integer (cc)
Read/Write Register=353, Len=1, 16-Bit Integer (dd)
Read/Write Register=354, Len=1, 16-Bit Integer (ee)
Read/Write Register=355, Len=1, 16-Bit Integer (ff)
R201 => 0?0201aabbccddeeffgghh
U201aabbccddeeffgghh => 0?0201
Where:
aabb = BOL Line and Position Number for the Load Date
ccdd = BOL Line and Position Number for the Load Start Time
eeff = BOL Line and Position Number for the Load End Time
gghh = BOL Line and Position Number for the Corrected To
Modbus:
Read/Write Register=356, Len=1, 16-Bit Integer (aa)
Read/Write Register=357, Len=1, 16-Bit Integer (bb)
Read/Write Register=358, Len=1, 16-Bit Integer (cc)
Read/Write Register=359, Len=1, 16-Bit Integer (dd)
Read/Write Register=360, Len=1, 16-Bit Integer (ee)
Read/Write Register=361, Len=1, 16-Bit Integer (ff)
Read/Write Register=362, Len=1, 16-Bit Integer (gg)
Read/Write Register=363, Len=1, 16-Bit Integer (hh)
R202 => 0?0202aabbccddeeff
U202aabbccddeeff => 0?0202
Where:
aabb = BOL Line and Position Number for the Hazard Message
Modbus:
Read/Write Register=364, Len=1, 16-Bit Integer (aa)
Read/Write Register=365, Len=1, 16-Bit Integer (bb)
R203 => 0?0203aabbccddeeffgghhiijjkk
U203aabbccddeeffgghhiijjkk => 0?0203
Where:
aa = BOL Line Number to Start Product Totals
bb = BOL Position Number for the Product Code
cc = BOL Position Number for the Product Description
dd = BOL Position Number for the Product Gross Volume
12
9
Chapter 7 – Register Operations
ee = BOL Position Number for the Product Net Volume
ff = BOL Position Number for the Product Average Temp
gg = BOL Position Number for the Product Preset Number
hh = BOL Position Number for the Product Gravity/Density
ii = BOL Position Number for the Product Pressure
jj = BOL Position Number for the Product Alarm
kk = BOL Position Number for the Compartment Number
ll = BOL Position Number for the Exp Coeff
mm = BOL Position Number for the Corrected Gravity
nn = BOL Position Number for the Vcf Factor
oo = BOL Position Number for the BSW
pp = BOL Position Number for Batch Number
qq =BOL Position Number for Product Mass Volume
rr =BOL Position Number for Ctl
ss =BOL Position Number for Cpl
Modbus:
Read/Write Register=366, Len=1, 16-Bit Integer (aa)
Read/Write Register=367, Len=1, 16-Bit Integer (bb)
Read/Write Register=368, Len=1, 16-Bit Integer (cc)
Read/Write Register=369, Len=1, 16-Bit Integer (dd)
Read/Write Register=370, Len=1, 16-Bit Integer (ee)
Read/Write Register=371, Len=1, 16-Bit Integer (ff)
Read/Write Register=372, Len=1, 16-Bit Integer (gg)
Read/Write Register=373, Len=1, 16-Bit Integer (hh)
Read/Write Register=374, Len=1, 16-Bit Integer (ii)
Read/Write Register=375, Len=1, 16-Bit Integer (jj)
Note:
Exp Coeff, Corrected Gravity , Vcf Factor, BSW, Batch Number, Product Mass Volume, Ctl and Cpl not
available for Modbus use.
R204 => 0?0204aabbccdd
U204aabbccddeeff => 0?0204
Where:
aabb = BOL Line and Position Number for the Total Product Gross Volume
ccdd = BOL Line and Position Number for the Total Product Net Volume
eeff = BOL Line and Position Number for the Total Product Mass Volume
Modbus:
Read/Write Register=376, Len=1, 16-Bit Integer (aa)
Read/Write Register=377, Len=1, 16-Bit Integer (bb)
Read/Write Register=378, Len=1, 16-Bit Integer (cc)
Read/Write Register=379, Len=1, 16-Bit Integer (dd)
Read/Write Register=N/A, Len=1, 16-Bit Integer (ee)
Read/Write Register=N/A, Len=1, 16-Bit Integer (ff)
Note:
13
0
Chapter 7 – Register Operations
Mass Positions are not available via Modbus protocol
Note:
R300iiill => 0?0300iiill…
U300iiill… => 0?0300iiill
Where:
iii = BOL Literal Line Index (0-29)
For Modbus, the Modbus Custom Logic Index Register sets the iii index.
Modbus: Read/Write Register=417, Len=1, 16-Bit Integer (iii)
ll = BOL Line Number
… = Literal String (Max 80 Characters)
Modbus:
Read/Write Register=418, Len=1, 16-Bit Integer (ll)
Read/Write Register=419, Len=80, Characters (…)
Note: Last Register Used=498
R410iil => 0?0410iilaabbcc…
U410iilaabbcc… => 0?0410iil
Where:
ii = Prompt Index (0-3)
l = Language Index (0-8)
aa = Input Length (0-19)
bbcc = BOL Line and Position Number
… = Prompt String (Max 20 Characters)
Modbus:
l = Language Index (0-1)
Read/Write Register=550+23*(2*ii+l), Len=1, 16-Bit Integer (aa)
Read/Write Register=551+23*(2*ii+l), Len=1, 16-Bit Integer (bb)
Read/Write Register=552+23*(2*ii+l), Len=1, 16-Bit Integer (cc)
Read/Write Register=553+23*(2*ii+l), Len=20, Characters (…)
Read/Write Register=554+23*(2*ii+l), Len=20, Characters (…)
Note: Last Prompt Register Used=733
Note:
Prompt5 cannot be updated via Modbus
R420iii => 0?0420iii…
U420iii… => 0?0420iii
Where:
iii = Hazard Index (0-4)
… = Hazard String (Max 40 Characters)
Modbus:
Read/Write Register=734+40*iii, Len=40, Characters (…)
Note: Last Register Used=833
13
1
Chapter 7 – Register Operations
7.1.17 800 – TRANSACTION ARCHIVE REGISTERS
R005 =>
0?0BBBBB
Where:
BBBBB = BOL Transaction Number of Current or Last Transaction completed.
Modbus: Read Only Register=48, Len=1, 16-Bit Integer
Note:
Note:
R800BBBBII => 0?0800BBBBII…
(or)
R800BBBBIIII => 0?0800BBBBIIII…
Where:
BBBB = BOL Transaction Number
For Modbus, the Modbus Transaction Number Index Register sets the BBBB index.
Modbus: Read/Write Register=7800, Len=1, 16-Bit Integer (BBBB)
II (or) IIII = BOL Detail Line Index
For Modbus, the Modbus Transaction Detail Index Register sets the IIII index.
Modbus: Read/Write Register=7801, Len=1, 16-Bit Integer (IIII)
… = Type Specific Parameters
if BOL Detail Line Index = 00,
IIBBBBnnnn(10)oosssspppptttteeaaaa(25)bbbb(25)cccc(25)dddd(25)eeee(25)
(or)
IIIIBBBBnnnn(10)oosssspppptttteeaaaa(25)bbbb(25)cccc(25)dddd(25) eeee(25)
II (or) IIII = BOL Detail Line Index
BBBB = BOL Transaction Number
nnnn = Card Number (10 Characters)
oo = Company Number
ssss = Load Start Time
pppp = Load Stop Time
tttt = Load Date
ee = Number of Details in Transaction
aaaa = Driver Prompt #1 Value (25 Characters)
bbbb = Driver Prompt #2 Value (25 Characters)
cccc = Driver Prompt #3 Value (25 Characters)
dddd = Driver Prompt #4 Value (25 Characters)
eeee = Driver Prompt #5 Value (25 Characters)
Modbus:
Read/Write Register=7810, Len=2, 32-Bit Integer (nnnn)
Read/Write Register=7812, Len=1, 16-Bit Integer (oo)
Read/Write Register=7813, Len=1, 16-Bit Integer (ssss)
Read/Write Register=7814, Len=1, 16-Bit Integer (pppp)
Read/Write Register=7815, Len=1, 16-Bit Integer (tttt)
Read/Write Register=7816, Len=1, 16-Bit Integer (ee)
Read/Write Register=7817, Len=25, Characters (aaaa)
13
2
Chapter 7 – Register Operations
Read/Write Register=7842, Len=25, Characters (bbbb)
Read/Write Register=7867, Len=25, Characters (cccc)
Read/Write Register=7892, Len=25, Characters (dddd)
Read/Write Register=N/A, Len=25, Characters (eeee)
if BOL Detail Line Index > 00,
IIBBBBppptthhhccccccgggggggggnnnnnnnnnttttddddmmrrrrssssssttttuuuuuuvvvvvww
wxxxxxxxxzzzzzzzzzaaaaabbbbbbccccccddddd
(or)
IIIIBBBBppptthhhccccccgggggggggnnnnnnnnnttttddddmmrrrrssssssttttuuuuuuvvvvvww
wxxxxxxxxxzzzzzzzzzaaaaabbbbbbccccccdddddeeeeee
II (or) IIII = BOL Detail Line Index
BBBB = BOL Transaction Number
ppp = Preset Number
tt = Detail Type,
‘1’ – Saleable Product,
‘2’ – Component,
‘3’ – Additive,
‘4’ – Meter,
‘5’ – Sampler,
‘6’ – Free,
‘7’ – Preset Totalizer,
‘8’ – Meter Totalizer,
‘9’ – Component Totalizer,
‘10’ – Additive Totalizer
‘11’ – Sampler Totalizer
‘12’ – Free Totalizer
hhh = Legacy Header Index (not used)
cccccc = Product Code
ggggggggg = Gross Volume
nnnnnnnnn = Net Volume
Note: if the Use Hundredths W&M RCU parameter is enabled, the gross and net quantity value will have an implied two decimal places.
tttt = Average Temp
dddd = Gravity or Density (do not use for relative density)
mm = Compartment
rrrr = Average Pressure
ssssss = api_expansion_coef_tenths
ttttt = corrected_densitygravity
uuuuuu = volume_correction_factor
vvvvv = bsw_hund
wwww = alibilog_alarm
xxxxxxxxx = batch_number
zzzzzzzzz = mass_del
aaaaa = temperature in hunds
bbbbbb = ctl
cccccc = cpl
13
3
13
4
Chapter 7 – Register Operations
ddddd = Gravity or Density or Relative Density
eeeeee = average pressure in hundredths
Modbus:
Read/Write Register=7810, Len=1, 16-Bit Integer (ppp)
Read/Write Register=7811, Len=1, 16-Bit Integer (tt)
Read/Write Register=7812, Len=6, Characters (cccccc)
Read/Write Register=7818, Len=2, 32-Bit Integer (ggggggggg)
Read/Write Register=7820, Len=2, 32-Bit Integer (nnnnnnnnn)
Read/Write Register=7822, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=7823, Len=1, 16-Bit Integer (dddd)
Read/Write Register=7824, Len=1, 16-Bit Integer (mm)
Read/Write Register=7825, Len=1, 16-Bit Integer (rrrr)
Read/Write Register=7826, Len=1, 16-Bit Integer (sssss)
Read/Write Register=7827, Len=1, 16-Bit Integer (tttt)
Read/Write Register=7828, Len=1, 16-Bit Integer (uuuuu)
Read/Write Register=7829, Len=1, 16-Bit Integer (vvvvv)
Read/Write Register=7830, Len=1, 16-Bit Integer (wwww)
Read/Write Register=7831, Len=1, 16-Bit Integer (xxxxxxx)
Read/Write Register=7832, Len=1, 16-Bit Integer (zzzzzzzzz)
Read/Write Register=7833, Len=1, 16-Bit Integer (aaaaa)
Read/Write Register=7834, Len=1, 16-Bit Integer (bbbbb)
7.2
7.2.1
SPECIAL PURPOSE REGISTERS
000 – MULTILOAD FIRMWARE VERSION
R000 =>
0?0sssssssssssssssssss
Where:
sssssssssssssssssss = Firmware Identification
000MultiLoad II
v3.31.xx Jan
000MultiLoad II
v4.31.xx Jan
000MultiLoad 1Arm v3.31.xx Jan
000MultiLoad 1Arm v4.31.xx Jan
000MultiLoad Mobl v3.31.xx Jan
000MultiLoad Mobl v4.31.xx Jan
000MultiLoad SMP v3.31.xx Jan
000MultiLoad SMP v4.31.xx Jan
xx
xx
xx
xx
xx
xx
xx
xx
2011
2011
2011 (discontinued)
2011 (discontinued)
2011
2011
2011
2011
Modbus: Read Only Register=000, Len=35, Characters (sssssssssssssssssss)
7.2.2
001 – DATE AND TIME
R001 =>
0?0001YYMMDDHHMMSS
U001YYMMDDHHMMSS
=>
0?0
Where:
YY = Year (00-99).
MM = Month (01-12)
Chapter 7 – Register Operations
DD = Day (01-32)
HH = Hours (00-23)
MM = Minutes (00-59)
SS = Seconds (00-59)
Note: Update will only occur if new time is different from current time by number of seconds specified by
R014 (Min Time Change Secs).
Modbus: Read/Write Register=035, Len=12, Characters (YYMMDDHHMMSS)
7.2.3
003 – FCM POLL RATE
R003 =>
0?0DD
Where:
DD = Average number of FCMs polled per second.
Modbus: Read Only Register=047, Len=1, 16-Bit Integer
7.2.4
005 – CURRENT BOL/TICKET NUMBER
R005 =>
0?0DDDDD
Where:
DDDDD = Current BOL/Ticket Number.
Modbus: Read Only Register=048, Len=1, 16-Bit Integer
7.2.5
070 – ETHERNET ENABLE
R070 =>
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
13
5
Chapter 7 – Register Operations
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)
7.2.10 076 – ADMIN PASSWORD
Use the Extended Service Register to change the value
7.2.11 077 – USER PASSWORD
Use the Extended Service Register to change the value
7.2.12 085 – MODEM INITIALIZATION STRING
R085 =>
0?0085SSS...
U085SSS…
=>
0?0
Where:
SSS = ASCII Modem Initialization String (Default "AT&F0&B1&C1&D0S0=1")
Modbus: Read/Write Register=058, Len=40, Characters (SSS…), Null Terminated
7.2.13 091..093 – COMMUNICATION PORT PARAMETERS
R09p =>
0?009pSDPTAC
U09pSDPTAC =>
0?0
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
13
6
Chapter 7 – Register Operations
‘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’ = MASS METER PORT
‘8’ = ALIBI LOG PTB PORT
‘9’ = 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.14 094 – 095 NETWORK PRINTER NUMBER OF COPIES
R09p =>
0?009p##########
U09p# =>
0?0
Where:
p = Printer #1: 4 and Printer #2: 5
# = Number of copies (When reading, the return value is padded to ensure 9 digits are returned)
7.2.15 112 - REAL-TIME PRESET TOTAL GROSS TOTALIZERS
R112ppp
=>
0?0112pppPPPPPPPPPMMMMMMMMM…CCCCCCCCC…AAAAAAAAA
Where:
ppp = The specified zero-based preset or load arm number (000-011).
PPPPPPPPP = Preset Total Gross Totalizer
MMMMMMMMM… = Meter Total Gross Totalizers (at least 4 meters, 9 digits per totalizer.)
CCCCCCCCC… = Component Total Gross Totalizers (8 components, 9 digits per totalizer.)
13
7
Chapter 7 – Register Operations
Note: if the Use Hundredths W&M RCU parameter is enabled, the preset, meter and component gross quantity values will have an implied
two decimal places.
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.16 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.17 114 - REAL-TIME PRESET TOTAL MASS TOTALIZERS
R114ppp
=>
0?0114pppPPPPPPPPPCCCCCCCCC…
Where:
ppp = The specified zero-based preset or load arm number (000-011).
PPPPPPPPP = Preset Total Mass Totalizer
CCCCCCCCC… = Component Total Mass Totalizers (8 components, 9 digits per totalizer.)
Note: if the Use Hundredths W&M RCU parameter is enabled, the preset and component mass quantity values will have an implied two
decimal places.
Modbus:
Where: p = preset (0-11), c = component (0-7)
Read Only Registers=11720+2*p, Len=2, 32-Bit Integer (PPPPPPPPP)
Read Only Registers=11744+2*(8*p+c), Len=2, 32-Bit Integer (CCCCCCCCC)
Note: Last Mass Totalizer register used=11935
7.2.18 120 - REAL-TIME SAMPLER TOTAL GROSS TOTALIZERS
R120ppp
=>
0?0112pppSSSSSSSSS
Where:
ppp = The specified zero-based preset or load arm number (000-011).
SSSSSSSSS = Sampler Total Gross Totalizer
Note: if the Use Hundredths W&M RCU parameter is enabled, the preset and component mass quantity values will have an implied two
decimal places.
13
8
Chapter 7 – Register Operations
Modbus:
Not available
7.2.19 129 – FCM LOW LEVEL METER STATUS
R129fff =>
0?0129fff,pppppppp,kkkk,mmmm,wwww,hhhhhhhh
Where:
fff = FCM number (000-031).
pppppppp = current number of meter pulses received (in hex) in the current active batch.
kkkk = configured Meter K-Factor (in hex).
mmmm = current Meter Factor (in hex, 4 implied decimal places) based on the current flow rate.
wwww = current Weighted Meter Factor (in hex with 4 implied decimal places) in the current
active batch.
hhhhhhhh = current gross delivered volume in hundredths (in hex with 2 implied decimal places)
in the current active batch.
Modbus:
Not available
7.2.20 133 – FCM IO ACCESS
R133fffppp
=>
0?0133fffpppc…
Where:
fff = FCM number (000-031).
ppp = FCM port number (0-35)
c = FCM com, ‘0’ FCM COM ok, ‘1’ FCM COM error.
… = Type Specific Replies
if FCM port number is 0..7, d
Where:
d=
State of Digital Port (‘0’ – Off, ‘1’ – On)
if FCM port number is 8, fffff
Where:
ffff =
Raw frequency/digital value from Opto 22 Analog Module
if FCM port number is 9, sfffff
Where:
sttttt = Temp in Hundreds from Opto 22 RTD Analog Module
(no offset added)
if FCM port number is 10, sttttt
Where:
sttttt = Temp in Hundreds from Toptech RTD Module, FCM II
or I/O Board (no offset added)
Note: All Temps in C or F depending on Register R100003 ("Temps in F").
if FCM port number is 20..35, d (this is used to access I/O board ports and FCM II
expander ports > 7)
Where:
d = State of Digital Port (s-20) (‘0’ – Off, ‘1’ – On)
13
9
Chapter 7 – Register Operations
Modbus:
Supported through Modbus Extended Services Registers.
U133fffpppd =>
0?0133fff
Where:
fff = FCM number (000-031).
ppp = FCM port number (0-35)
d = Set new state of digital port (‘0’ – Off, ‘1’ – On)
Note: States commanded with R133 are OR’d with any other functionality already assigned to the port)
7.2.21 134 – DISCRETE PARAMETER SECURITY SETTINGS
R134rrr =>
0?0134rrrsssssssss
Where:
rrr = generic register numbered function
sssssssss = Security level (zero leading 0-9 relating to 1-10 viewable level)
Modbus:
Not Supported
U134rrrs
=>
0?0134rrr
Where:
rrr = generic or special purpose register numbered function
s = Set security level (0-9) this can be formatted with up to 8 leading zeroes.
See the tables throughout chapter 7.1 to identify the sub levels of each topic to read or write the security
level:
RCU 0-99
Bay 100
Preset 101
Meter 102
Component 103
Additive 104
Sampler 115
Tank 111
Password Security 116
Reports 117
7.2.22 135 – GROUP PARAMETER SECURITY SETTINGS
R135rrr =>
0?0135rrrsssssssss
Where:
rrr = generic register numbered function
sssssssss = Security level (zero leading 0-9 relating to 1-10 viewable level)
Modbus:
14
0
Chapter 7 – Register Operations
Not Supported
U135rrrs
=>
0?0135rrr
Where:
rrr = generic register numbered function
s = Set security level (0-9) this can be formatted with up to 8 leading zeroes.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Communications
Network
Alarms
Custom Logic
Access ID
Date Time
Trace
Alibi Labels
Hazard Labels
Prompts
BOL
SD Card
Host
Factory Defaults
7.2.23 136 – ACCESS PARAMETER SECURITY SETTINGS
R136rrr =>
0?0136rrrsssssssss
Where:
rrr = generic register numbered function
sssssssss = Security level (zero leading 0-9 relating to 1-10 viewable level)
Modbus:
Not Supported
U136rrrs
=>
0?0136rrr
Where:
rrr = generic register numbered function
s = Set security level (0-9) this can be formatted with up to 8 leading zeroes.
0
1
2
3
4
5
6
Com0
Com1
Com2
Network
Custom Logic
Modbus RTU
Modbus TCP
Note: these elements can only be set by an ADMIN level. This can be set from the ML front panel by an
admin or by an external access (this list) providing it is set to ADMIN level.
14
1
Chapter 7 – Register Operations
7.2.24 140 –CURRENT LATITUDE/LONGITUDE POSITION REGISTERS (MULTILOAD MOBILE ONLY)
R140 => 0?0140+lllllllll+ooooooooo
Where:
+lllllllll = Current Latitude Position.
+ooooooooo = Current Longitude Position.
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: Latitude & Longitude = 999999999 when no valid data available.
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.25 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.26 400 - PRESET DEFINITION REGISTERS
R400ppp
=>
0?0400pppNNNNNNNNNNCCC…AAA…PPP…RRR…
U400pppNNNNNNNNNNCCC…AAA…PPP… =>
0?0
14
2
Chapter 7 – Register Operations
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
7.2.27 401 – EXTERNAL PRESET DISPLAY REGISTER
R401ppp
=>
0?0401pppllllllllllPPPPPPPPPVVVVVVVVVssssssssss
U401pppllllllllllPPPPPPPPPVVVVVVVVVssssssssss
=>
0?0
Where:
ppp = external preset number, number must follow last multiload preset # defined.
llllllllll = 10 character product string.
PPPPPPPPP = 9 character preset volume (note only digits will be displayed).
VVVVVVVVV = 9 character delivered volume (note only digits will be displayed).
ssssssssss = 10 character status string.
This interface will allow a host to display other preset volumes, separate from ML values on the load
screen. These values will be maintained in a different color to clearly establish them as not legal
relevant and that they should not be used for trade.
A new bay parameter "Number External Presets" is used to specify how many external presets should
be displayed.
External Preset Load Screen Data will be updated when this command is received.
When an external preset is selected, the state will go to a 'a'-'h' matching the preset number.
MAMppp - can be sent by the host to return to the load screen when done driving the screen.
Modbus:
Supported through Modbus Extended Services Registers.
7.2.28 402 – TANK DEFINITION REGISTER
R402ttt =>
0?0402tttllllllllllPPP
U402tttllllllllllPPP
=>
0?0
Where:
ttt = tank number, number must follow last multiload tank # defined.
llllllllll = 10 character product string.
PPP = product idx
This interface will update the tank name as also it will link the base component to the tank.
14
3
Chapter 7 – Register Operations
7.2.29 500 - PRODUCT DEFINITION REGISTERS
Note:
R500iii =>
0?0500iiiHCCCCCCLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDDDDCCCPPPPP…AAAPPPPP…
U500iiiHCCCCCCLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDDDDDDCCCPPPPP…AAAPPPPP…
=>
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 = Hazard Index (standalone 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)
Read/Write Register=2259+2*a, Len=1, 16-Bit Integer (AAA)
Read/Write Register=2260+2*a, Len=1, 16-Bit Integer (PPPPP)
Note: Last Product Definition register used=2271 (only 6 additives)
7.2.30 600 - STANDALONE DRIVER CARD DATABASE
Note:
R600iii =>
0?0600iiiccccccccppppmmlbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaarrrr
U600iiiccccccccppppmmlbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaarrrr
=>
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)
aaaaaaaaaaaaaaaa = Special Access as 16 bit binary number
14
4
Chapter 7 – Register Operations
(For example 0000000000000001 = Sample Batch Access is enabled)
rrrr = Driver Authorized Product Index
(0 means All products, anything else is the index into the list of the
100 product recipes)
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)
Union for Special Access Bits:
union special_access_union
{
struct special_access_struct
{
unsigned short int batch_report:1;
unsigned short int unused_1_15:15;
}flags;
}special_access;
7.2.31 605 MODBUS DEVICE DATABASE
R600iii =>
0?0605iiiaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbceeeeeeefggggg
gghhhhhhhj
U600iiiccccccccppppmmlbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaarrrr
=>
0?0
Where:
iii
= Device Number (0 – 9)
aaaaaaaaaaaaaaaa = Device name (15 Characters)
bbbbbbbbbbb.... = Ip address (40 Characters)
c
= Device Enabled (0 = Disabled, 1= Enabled)
eeeeeee
= Device ID
f
= Endianness (0 = Big Endian, 1 = Little Endian)
ggggggg
= Poll Time
hhhhhhhh
= Write Time
j
= Write on State Change (0 = Disabled, 1 = Enabled)
Note: Not Available via Modbus
7.2.32 650 –GPS SITE DATABASE (MULTILOAD MOBILE ONLY)
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)
14
5
Chapter 7 – Register Operations
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
float_minutes = (abs(Longitude) % 60000) / 1000
Modbus:
Read/Write Register=2351, Len=15, Characters (nnnnnnnnnnnnnnn)
Read/Write Register=2366, Len=2, 32-Bit Signed Integer (+lllllllll)
Read/Write Register=2368, Len=2, 32-Bit Signed Integer (+ooooooooo)
7.2.33 700 - CONFIGURABLE LANGUAGE PROMPTS
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…)
14
6
14
7
Chapter 7 – Register Operations
7.2.34 710 - BAY ALARM MESSAGES
R710iii =>
0?0710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U710iiilllllssssssssssssssssssssssssssssss =>
0?0
U710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
0?0
Where:
Note:
iii = Alarm Index with defaults as:
struct alarm_def factory_bay_alarm[31] =
{
{"*BAY FCM" , AUTO_CLEAR}, // 710000
{"*GROUND ", AUTO_CLEAR}, // 710001
{"*VRU
", AUTO_CLEAR}, // 710002
{"*OVERFILL ", AUTO_CLEAR}, // 710003
{"*ESD PERM ", AUTO_CLEAR}, // 710004
{"*BAY PERM4", AUTO_CLEAR}, // 710005
{"*BAY PERM5", AUTO_CLEAR}, // 710006
{"*BAY PERM6", AUTO_CLEAR}, // 710007
{"*BAY PERM7", AUTO_CLEAR}, // 710008
{"*ALL STOP" , AUTO_CLEAR}, // 710009
{"*BAY PCM ", AUTO_CLEAR}, // 710010
{"*PRNTR ERR", AUTO_CLEAR}, // 710011
{"*GPS ERROR", AUTO_CLEAR}, // 710012
{"*BALARM 13", DRIVER_CLEAR}, // 710013
{"*BALARM 14", DRIVER_CLEAR}, // 710014
{"*FCM TRACE", DRIVER_CLEAR}// 710015
};
For Modbus, the Modbus Bay Alarm Index Register sets the iii index.
Modbus: Read/Write Register=2500, Len=1, 16-Bit Integer (iii)
(MultiLoad Mobile Only)
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:
=>
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1..8
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=1}
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)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (mmmmmmmmm)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (nnnnn)
14
8
Chapter 7 – Register Operations
7.2.35 711 - PRESET ALARM MESSAGES
Note:
R711iii =>
0?0711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U711iiilllllssssssssssssssssssssssssssssss =>
0?0
U711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U711iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_preset_alarm[31] =
{
{"*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
{"*BSW", 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
{
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:
14
9
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=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)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (mmmmmmmmm)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (nnnnn)
15
0
Chapter 7 – Register Operations
7.2.36 712 - METER ALARM MESSAGES
Note:
R712iii =>
0?0712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U712iiilllllssssssssssssssssssssssssssssss =>
0?0
U712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U712iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_meter_alarm[31] =
{
{"*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
{"*MTR COM", REMOTE_CLEAR}, // 712016
{"*MALARM17", REMOTE_CLEAR} // 712017
{"*GRAVITY", REMOTE_CLEAR} // 712018
};
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 *)
15
1
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=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)
15
2
Chapter 7 – Register Operations
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (mmmmmmmmm)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (nnnnn)
7.2.37 713 - COMPONENT ALARM MESSAGES
Note:
R713iii =>
0?0713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U713iiilllllssssssssssssssssssssssssssssss =>
0?0
U713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U713iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_component_alarm[31] =
{
{"*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
{"*CALARM 12", DRIVER_CLEAR}, // 713012
{"*CALARM 13", DRIVER_CLEAR}, // 713013
{"*CALARM 14", DRIVER_CLEAR}, // 713014
{"*CALARM 15", DRIVER_CLEAR} // 713015
};
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 *)
15
3
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=1}
Modbus:
Read/Write Register=2561, Len=1, 16-Bit Integer (lllll)
Read/Write Register=2562, Len=15, Characters (sssssssssssssss)
Note: Up to 15 UTF-8 bytes to represent a max of 10 characters.
Read/Write Register=2577, Len=1, 16-Bit Integer (ccccc)
Read/Write Register=2578, Len=1, 16-Bit Integer (ppppp)
Read/Write Register=2579, Len=1, 16-Bit Integer (rrrrr)
15
4
Chapter 7 – Register Operations
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (mmmmmmmmm)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (nnnnn)
7.2.38 714 - ADDITIVE ALARM MESSAGES
R714iii =>
0?0710iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U714iiilllllssssssssssssssssssssssssssssss =>
0?0
U714iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U714iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U714iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
Note:
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;
15
5
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=1}
Modbus:
Read/Write Register=2581, Len=1, 16-Bit Integer (lllll)
Read/Write Register=2582, Len=15, Characters (sssssssssssssss)
Note: Up to 15 UTF-8 bytes to represent a max of 10 characters.
Read/Write Register=2597, Len=1, 16-Bit Integer (ccccc)
15
6
Chapter 7 – Register Operations
Read/Write Register=2598, Len=1, 16-Bit Integer (ppppp)
Read/Write Register=2599, Len=1, 16-Bit Integer (rrrrr)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (ttttt)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (mmmmmmmmm)
Read/Write Register=cannot be accessed, Len=1, 16-Bit Integer (nnnnn)
7.2.39 716 - SAMPLERALARM MESSAGES
R716iii =>
0?0716iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U716iiilllllssssssssssssssssssssssssssssss =>
0?0
U716iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U716iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U716iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
Note:
iii = Alarm Index with defaults as:
struct alarm_def factory_sampler_alarm[16] =
{
{"*SAMP FCM" , AUTO_CLEAR}, // 716000
{"*SAMP PERM", AUTO_CLEAR}, // 716001
};
For Modbus, not available.
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:
15
7
Chapter 7 – Register Operations
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;
ttttt = Alarm_to_host as
enum
{
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=1}
Modbus:
Not available.
7.2.40 715 - TANKALARM MESSAGES
R715iii =>
0?0715iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
U715iiilllllssssssssssssssssssssssssssssss =>
0?0
U715iiilllllsssssssssssssssssssssssssssssscccccppppprrrrr
=>
0?0
U715iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrttttt
=>
0?0
U715iiilllllsssssssssssssssssssssssssssssscccccppppprrrrrtttttmmmmmmmmmnnnnn
=>
0?0
Where:
iii = Alarm Index with defaults as:
struct alarm_def factory_sampler_alarm[16] =
{
{"*TANK FCM" , AUTO_CLEAR}, // 715000
{"*HHLEVEL", AUTO_CLEAR}, // 715001
{"*HLEVEL", AUTO_CLEAR},
// 715002
15
8
15
9
Chapter 7 – Register Operations
{"*LLEVEL", AUTO_CLEAR},
// 715003
{"*LLLEVEL", AUTO_CLEAR}, // 715004
{"*TK VALVE", AUTO_CLEAR}, // 715005
Note:
};
For Modbus, not available.
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;
ttttt = Alarm_to_host as
enum
{
Chapter 7 – Register Operations
REMOTE = 0,
LOCAL =1,
}alarm_to_host_mode_type
Note: only permissive names can be changed, iii=1.
Mmmmmmmmm = Fcm Output Address
Nnnnn = Batch Alarm Mask for Alibilog
Enum{
DISABLED
= 0,
ENABLED
=1}
Modbus:
Not available.
7.2.41 910 – READ EVENT LOG MESSAGE QUEUE
R910 =>
0?0910 OR 0?0910ccyymmddhhmmss….
Where: (when a message is pending, see logmsg_queued bit on Q command)
cc = Number of messages remaining in the queue (00-99)
yymmdd = Year, Month, and Day of log message
hhmmss = Hour, Minute, and Second of log message
…. = Text of log message (max length 80 characters)
Modbus:
Read Only Register=2600, Len=2, 32-Bit Integer (cc)
Read Only Register=2602, Len=2, 32-Bit Integer (yymmdd)
Read Only Register=2604, Len=2, 32-Bit Integer (hhmmss)
Read Only Register=2606, Len=80, Characters (ssssssssss)
Note: Last Event Log Message Queue register used=2685
7.2.42 912 – READ W & M CHANGE LOG MESSAGE QUEUE
R912 =>
0?0912 OR 0?0912tttccccyymmddhhmm….
Where: (when a message is pending, see wm_logmsg_queued bit on Q command)
ttt = TMS W&M change type (proprietary, do not use)
10 = Temp Offset Change
12 = Transmitter Resolution Change
0 = All Others Changes
cccc = Number of messages remaining in the queue (0000-0999)
yymmdd = Year, Month, and Day of log message
hhmm = Hour and Minute of log message
…. = Text of log message
Modbus:
Supported through Modbus Extended Services Registers.
7.2.43 913 – READ AUDIT LOG MESSAGE QUEUE
R913 =>
0?0913 OR 0?0913ccyymmddhhmmss….
Where: (when an audit message is pending, see auditlog_queued bit on Q command)
cc = Number of messages remaining in the queue (00-99)
16
0
Chapter 7 – Register Operations
yymmdd = Year, Month, and Day of log message
hhmmss = Hour, Minute, and Second of log message
…. = Text of log message (max length 80 characters)
Modbus:
Supported through Modbus Extended Services Registers
7.2.44 950 - CURRENT DRIVER CARD NUMBER
In Remote Processing mode, to be populated by host and will be stored with transaction.
In Stand Alone Processing mode, will be populated with user supplied data.
R950 =>
0?0950sss…
U950sss…
=>
0?0
Where:
sss… = Driver card number.
Modbus:
Read/Write Register=2700, Len=25, Characters (sss…)
7.2.45 951..955 - CURRENT DRIVER PROMPT INFORMATION
(Stockholder, Customer, Account, Consignee)
In Remote Processing mode, to be populated by host and will be stored with transaction.
In Stand Alone Processing mode, will be populated with user supplied data.
R951 =>
0?0951sss…
U951sss…
=>
0?0
Where:
sss… = Driver Prompt Data for Stored BOL
Modbus:
Read/Write Register=2725, Len=25, Characters (951-sss…)
Read/Write Register=2750, Len=25, Characters (952-sss…)
Read/Write Register=2775, Len=25, Characters (953-sss…)
Read/Write Register=2800, Len=25, Characters (954-sss…)
Read/Write Register=2815, Len=25, Characters (955-sss…)
7.2.46 960 – INPUT DATA
R960 =>
0?0960sss…
Where:
sss… = Input data string from the Terminal Escape Code `E.
Modbus:
Read Only Register=2851, Len=25, Characters (sss…)
7.2.47 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
16
1
Chapter 7 – Register Operations
‘D’ = Enter
‘E’ = CLR
Modbus:
Read Only Register=2850, Len=1, Character (c)
7.2.48 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
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…)
16
2
Chapter 7 – Register Operations
7.2.49 998 – BITMAP GRAPHIC CACHE
R998aaaaaaaa =>
0?0998aaaaaaaad…
Where:
aaaaaaaa = 8 character hexadecimal cache offset start value.
Cache size = 16MB, Cache offset values = 0x00000000 - 0x00ffffff
Two pixels per cache byte.
Note: Graphics Cache is in volatile memory. On power cycle, entire Graphics Cache will be
populated with 0’s (spaces) for pixel data. Use R998 command to verify cache has not been cleared.
Note: Graphics Cache memory is also used for temporary storage of uploaded firmware images
before writing into flash memory. Do not use the R998, W998 or T<esc>h (Display Graphic Cache)
commands while uploading or flashing new firmware.
d… = 64 (characters) 0x20 + pixel color palette index values,
See T<esc>e (Draw Display Graphic) command for more details on pixel data.
W998aaaaaaaad…
=>
998
Where:
aaaaaaaa = 8 character hexadecimal cache offset start value.
See R998 command for more details on cache offset.
d… = even number of (characters) 0x20 + pixel color palette index values,
See T<esc>e (Draw Display Graphic) command for more details on pixel data.
Modbus:
Supported through Modbus Extended Services Registers.
16
3
Chapter 8 – Communication Trace Example
CHAPTER 8
COMMUNICATION TRACE EXAMPLE
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
STARTUP OF HOST SOFTWARE
UPDATE DATE & TIME
Sent:(U001010515153200) Received: (000)
Modbus:
Fn=0x16, Write (YYMMDDHHMMSS) to Registers 35 … 46
8.1.2
UPDATE PRODUCT DEFINITIONS
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)
164
Chapter 8 – Communication Trace Example
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
UPDATE PRESET DEFINITIONS
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
Periodically query the status of MultiLoad by issuing the following command.
This command also provides indication to MultiLoad that the host is still up.
Sent:(Q) Received: (0000038)
From the Q response, when needed send the following commands:
power_up bit is set
Modbus:
Fn=0x03, Read Register 7000
165
Chapter 8 – Communication Trace Example
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
8.2.1
TRANSACTION AUTHORIZATION
PROCESS DRIVER CARD IN
Reset terminal screen.
Sent:(T_R) Received: (000)
Modbus:
Fn=0x06, Write 0 to Register 7017
Wait for card in by watching the CARD_STATUS character
Sent:(Q) Received: (000C218)
Sent:(Q) Received: (000C218)
...(some time later)...
Sent:(Q) Received: (041C218)
Modbus:
Fn=0x03, Read Register 7001 -> 0
Fn=0x03, Read Register 7001 -> 0
...(some time later)...
Fn=0x03, Read Register 7001 -> 1
Get the card number
Sent:(R962) Received: (0419620=01=0000000=00004504=01)
Modbus:
Fn=0x03, Read Registers 2900 … 2979
Prompt for Driver PIN
Sent:(T_H_K_>Enter Pin: _!_L04_E) Received: (041)
Modbus:
Use Extended Services Register
Wait for driver input_done bit to be set
Sent:(Q) Received: (041C618)
166
Chapter 8 – Communication Trace Example
...(some time later)...
Sent:(Q) Received: (041CA18)
Modbus:
Fn=0x03, Read Register 7002 -> (0xC61A)
...(some time later)...
Fn=0x03, Read Register 7002 -> (0xCA1A)
Get driver input and terminating key
Sent:(R960) Received: (0419601111)
Sent:(R961) Received: (041961D)
Modbus:
Fn=0x03, Read Registers 2850 ... 2875
8.2.2
AUTHORIZE A TRANSACTION ON MULTILOAD
Authorize transaction on Multiload
Sent:(T_A) Received: (0T1)
Modbus:
Fn=0x06, Write 0 to Register 7016
Enable available presets
Sent:(MEM0002) Received: (0T1)
Sent:(MEM0012) Received: (0T1)
Sent:(MEM0022) Received: (0T1)
Modbus:
Fn=0x06, Write 2 to Register 7032
Fn=0x06, Write 2 to Register 7033
Fn=0x06, Write 2 to Register 7034
Upload the driver number and any other additional information to be included with stored BOL in Multiload
Sent:(U95000004504) Received: (0T1)
Sent:(U9510001234) Received: (0T1)
Sent:(U952
) Received: (0T1)
Sent:(U953
) Received: (0T1)
Sent:(U954
) Received: (0T1)
Modbus:
Fn=0x16, Write data to Registers 2700 … 2724
Fn=0x16, Write data to Registers 2725 … 2749
Fn=0x16, Write data to Registers 2750 … 2774
Fn=0x16, Write data to Registers 2775 … 2799
Fn=0x16, Write data to Registers 2800 … 2824
8.2.3
READING TOTALIZERS
Sent:(R112000) Received:
(0001120000000010000000010000000000000000000000000000000000010000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
167
Chapter 8 – Communication Trace Example
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
8.3.1
BATCH AUTHORIZATION
AUTHORIZE A BATCH ON MULTILOAD
Checking status found a preset authorization request for a preset.
Sent:(Q) Received: (0a1CA1A)
Modbus:
Fn=0x03, Read Register 7000 -> a
Prompt driver for batch information.
Display available product names
Sent:(T_H_K_Y! 1. Regular Unlead_Y” 2. Premium Unlead) Received: (0a1)
Modbus:
Use Extended Services Register
Prompt for product name
Sent:(T_H_>Enter Preset #01 Product Code: _@ _L02_E) Received: (0a1)
Modbus:
Use Extended Services Register
Wait for driver input done
168
Chapter 8 – Communication Trace Example
Sent:(Q) Received: (0a1C61A)
...(some time later)...
Sent:(Q) Received: (0a1CA1A)
Modbus:
Fn=0x03, Read Register 7002 -> (0xC61A)
...(some time later)...
Fn=0x03, Read Register 7002 -> (0xCA1A)
Get driver input and terminating key
Sent:(R960) Received: (0a19601 )
Sent:(R961) Received: (0a1961D)
Modbus:
Fn=0x03, Read Registers 2850 ... 2875
Prompt for preset quantity
Sent:(T_H_K_>Enter Preset #01 Qty: _@_L06_E) Received: (0a1)
Modbus:
Use Extended Services Register
Wait for driver input done
Sent:(Q) Received: (0a1C61A)
...(some time later)...
Sent:(Q) Received: (0a1CA1A)
Modbus:
Fn=0x03, Read Register 7002 -> (0xC61A)
...(some time later)...
Fn=0x03, Read Register 7002 -> (0xCA1A)
Get driver input and terminating key
Sent:(R960) Received: (0a19601000 )
Sent:(R961) Received: (0a1961D)
Modbus:
Fn=0x03, Read Registers 2850 ... 2875
Upload selected recipe definitions into index in range of 001-019 (recommend using preset number as index).
Sent:(U5000010001100Regular Unlead
RUL
02010000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000) Received: (0a1)
Modbus:
Fn=0x06, Write Index 1 to Register 2200
Fn=0x16, Write Recipe Data to Registers 2201 … 2267
Authorize preset for batch indicating volume and recipe definition index.
Sent:(MAM000100100000100000) Received: (0T1)
Modbus:
Fn=0x16, Write Authorization Data (1, 0, 1000, 1, 1) to Registers 7500 … 7504
169
Chapter 8 – Communication Trace Example
Status no longer request for remote authorization
Sent:(Q) Received: (0T1CA3A)
Modbus:
Fn=0x03, Read Register 7000 -> T
8.3.2
MONITOR LOAD DURING DELIVERY
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 OF BATCH PROCESSING
ENDING A BATCH ON MULTILOAD
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)
170
Chapter 8 – Communication Trace Example
Fn=0x03, Read Registers 4084 … 4091 (Preset Net Volumes)
Etc…
Send end batch command to allow MultiLoad to clear batch totals.
Sent:(MEB000) Received: (0T1)
Modbus:
Fn=0x06, Write Register 7069
When preset state returns to PRESET_IDLE, prompting for next batch can begin again.
8.5
8.5.1
END OF TRANSACTION PROCESSING
ENDING A TRANSACTION ON MULTILOAD
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
SHUTDOWN OF HOST SOFTWARE
Sent:(FHOSTDOWN) Received: (000)
Modbus:
Fn=0x03, Write 0 to Register 7014
171
Chapter 9 – Data Communication Notes and Recommendations
CHAPTER 9
DATA COMMUNICATION NOTES AND RECOMMENDATIONS
This topic provides some basic communications concepts, as well as Toptech's recommendations for achieving
optimum performance.
9.1
9.1.1
PROTOCOL SELECTION: RS-232 VS. RS-485
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
LINE TERMINATION IN MULTI-DROPPED COMMUNICATIONS
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.
172
Chapter 9 – Data Communication Notes and Recommendations
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 than 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.
173
Chapter 9 – Data Communication Notes and Recommendations
CHAPTER 10
PARAMETER ACCESS SECURITY
This topic provides introduction and communication methods for utilizing Multiloads parameter security feature.
10.1
UNDERSTANDING NEW USER AND SECURITY FEATURES
The discussion below describes new features of Multiload. It may be beneficial to have an active
MultiLoad of version x.31.22 or later available.
Security bypass switch
There are two modes of use for the MultiLoad: full security or security bypass. The mode is controlled
by the CPU board DIP switch #2.
When switched on (moved towards the right of the MultiLoad with open cover) a user will only have 30
seconds following power up to access the menu.
Users
For general use and maintenance etc., the switch should be moved to the left as to allow security
bypass. In Multiloads default condition the default user is available until a new user is created via
Security Accounts. To create a new user:
-
Provide a user name or use the default name provided.
Change Password – multiload has predefined password guidelines (use a 10 character
password! )
Observe Security level
o At least one of the user accounts must be an ADMINISTRATOR.
o Security levels are 1-10 where 1 is VIEW and 10 is ADMIN.
There will always be at least one ADMIN account which has all rights. When subsequent users are
created (only by an ADMIN) they can be any security level desired.
Security levels
The Multiload can isolate what a user, based on their security level, can change regarding parameters
as dictated by default supplied security levels or eventually ADMIN user modified levels. To repeat,
each user is supplied a set level upon creation of that user. That level, at the point of attempting a
parameter change, is judged against the parameters security level and if the user level is equal to or
higher than the parameter security level, the change will be allowed. Otherwise the user will be alerted
by a temporary screen message of the level required to make the change.
Individual Parameter Security levels
Parameters within Equipment Setup menu (and Reports menu) selection EACH have their own
individual setting. When the “Display Help” setting is enabled, the user can see the Security level
associated with that distinct parameter. Understanding parameters outside of the Equipment Setup
utilize a Group level setting available through the Security Setup menu. The Settings cover:
RCU, Bay, Preset, Meter, Component, Additive, Sampler, Tank, Password Security, Reports.
Group Parameter Security levels
Group level settings are a one level covers many concept. Consider all of the Multiloads Network
settings: there is only one Security level that protects that group. There are fourteen such settings that
cover what is not covered by the individual Equipment Setup settings. The Groups available are:
174
Chapter 9 – Data Communication Notes and Recommendations
Comm, Network, Alarms, Custom Logic, Access ID’s, Date & Time, Trace, Alibi Labels, Hazard Labels,
Prompts, BOL, SD Card, Host, Factory Defaults.
Access Security levels
Much like that of a user having an assigned security level with a potential rights limitation on what
parameters they can change, there are other sources outside of a user that has ability to modify
parameters. These sources are communications such as Network/Ethernet, serial communications,
custom logic, and in further detail, Modbus communications. These Access points now have security
levels assigned to each that, once again, like a user, when applying a change, would be judged against
the parameters security level to be equal to or greater than it.
These can be found in the menu under Security Setup. The Communications covered are:
Com0, Com1, Com2, Network, Custom Logic, Modbus RTU, Modbus TCP
Security level modification
Regarding users: only and ADMIN can create a user and therefore only an ADMIN can set the security
level of the user. In relation to that: only an ADMIN (User or Access entity) can modify a Parameters or
Groups Security level. Consider the case where an ADMIN level user is loading an MLC configuration
file: All parameters INCLUDING parameter security level changes will be allowed. In the case where
the network access security level is ADMIN (by default): All parameters INCLUDING parameter security
level changes will be allowed. If in either case the Security level is less than ADMIN, no security level
will be altered and there is a potential to have some parameters that have an ADMIN level to be
rejected as well.
175