Toptech MultiLoad II User Manual

M
M
u
ullttii
L
L
o
o
d
d IIII
C
C
o
o
m
m
m
m
u
u
n
nii
attii
o
o
n
n
s
G
G
u
uii
d
d
e
IInncclluuddiinngg::
M
MuullttiiLLooaadd IIII
M
MuullttiiLLooaadd IIII SS
M
MPP
M
MuullttiiLLooaadd IIII SSCCSS
M
MuullttiiLLooaadd IIII
M
Moobbiillee
Part # 6077
Firmware Version 3/4.31.38
February 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 REQUEST BAY ALARMS: ......................................................................................................................... 70
6.16 REQUEST COMPONENT ALARMS: ............................................................................................................ 71
6.17 REQUEST METER ALARMS: ..................................................................................................................... 72
6.18 REQUEST ADDITIVE ALARMS: .................................................................................................................. 73
6.19 REQUEST SAMPLER ALARMS: ................................................................................................................. 74
6.20 REQUEST TANK ALARMS:........................................................................................................................ 75
6.21 REMOTE TRANSACTION DATA: ................................................................................................................ 76
6.22 START PRESET FLOW: ............................................................................................................................ 77
6.23 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 114 - Real-Time Preset Total Mass Totalizers .......................................................................... 138
7.2.18 120 - Real-Time Sampler Total Gross Totalizers ...................................................................... 138
7.2.19 129 – FCM Low Level Meter Status .......................................................................................... 139
7.2.20 133 – FCM IO Access ............................................................................................................... 139
7.2.21 134 – Discrete Parameter Security settings .............................................................................. 140
7.2.22 135 – Group Parameter Security settings ................................................................................. 140
7.2.23 136 – Access Parameter Security settings ............................................................................... 141
7.2.24 140 –Current Latitude/Longitude position Registers (MultiLoad Mobile Only) ......................... 142
7.2.25 141 – Current Transaction Latitude/Longitude/Site Index Registers (MultiLoad Mobile Only) . 142
7.2.26 400 - Preset Definition Registers .............................................................................................. 142
7.2.27 401 – External Preset Display Register .................................................................................... 143
7.2.28 402 – Tank Definition Register .................................................................................................. 143
7.2.29 500 - Product Definition Registers ............................................................................................ 144
7.2.30 600 - Standalone Driver Card Database ................................................................................... 144
7.2.31 605 Modbus Device Database .................................................................................................. 145
7.2.32 650 –GPS Site Database (MultiLoad Mobile Only) ................................................................... 145
7.2.33 700 - Configurable Language Prompts ..................................................................................... 146
7.2.34 710 - Bay Alarm Messages ....................................................................................................... 147
7.2.35 711 - Preset Alarm Messages ................................................................................................... 149
7.2.36 712 - Meter Alarm Messages .................................................................................................... 151
7.2.37 713 - Component Alarm Messages ........................................................................................... 153
7.2.38 714 - Additive Alarm Messages ................................................................................................ 155
7.2.39 716 - SamplerAlarm Messages ................................................................................................. 157
7.2.40 715 - TankAlarm Messages ...................................................................................................... 158
7.2.41 910 – Read Event Log Message Queue ................................................................................... 160
7.2.42 912 – Read W & M Change Log Message Queue .................................................................... 160
7.2.43 913 – Read AUDIT Log Message Queue ................................................................................. 160
7.2.44 950 - Current Driver Card Number ............................................................................................ 161
7.2.45 951..955 - Current Driver Prompt Information ........................................................................... 161
7.2.46 960 – Input Data ........................................................................................................................ 161
7.2.47 961 – Input Data Terminating Key ............................................................................................ 161
7.2.48 962 - Current Driver Card Data ................................................................................................. 162
7.2.49 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
7
CHAPTER 1 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
8
1.2 SMITH PROTOCOL
The Smith protocol is compatible with devices from Smith Meter, such as the Accuload I and Accuload II mini­computer modes of operation. Using this protocol, MultiLoad accepts data in the format:
NUL
STX
A1
A2
data
ETX
LRC
PAD
A1 and A2 are the last two digits of the unit address in the RCU configuration.
1.3 BROOKS PROTOCOL
The Brooks protocol is compatible with devices from Brooks Instruments such as their Petrocount RAU™ and
IMS Control™ units running in computer mode. Using this protocol, MultiLoad accepts data in the format:
SOH
DESTINATION SOURCE A1 A2 A3 S1 S2 S3
STX data ETX
BCC1BCC
2
1.4 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
9
1.5 MODBUS-RTU PROTOCOL
The Modbus-RTU protocol has been implemented to be as compatible as possible with the original published Modicon Modbus-RTU standard.
Note: The Modbus protocol allows parameter register access only as defined by the explicit mapping in this manual. To send the ASCII commands (R000, T`A, MAM, MRS, etc.) that are handled by the other three protocols, the Modbus Extended Services registers must be used.
Using the Modbus protocol, MultiLoad accepts data in the following format:
Quiet
Time
ADR
FN
...
CRC1
CRC2
Quiet
Time
Modbus-RTU protocol messages are framed by a quiet time of three and one-half characters. ADR is binary character of the address of the MultiLoad. Typically 0x01. Fn is the Modbus function. Functions implemented are as follows.
The formal specification of Modbus lists the starting Holding Register address as 40001. The Modbus Holding Register functions (Fn 3, 6 and 16) all have an implied 4XXXX reference. Referencing Holding Register 40001 is addressed as register 0000 in the register address field in the message for fn 3, 6, and
16. Since Modbus addressing has been implemented in various ways over the years, to avoid confusion in
this manual, the Modbus Holding Register addresses listed are the value in the register address field in the message. If it is necessary to know the formal Modbus Holding Register address, simply add 40001 to the register addresses listed in the manual.
1.5.1 READ HOLDING REGISTERS (FN=3)
Note: Both Modbus registers MUST be read at the same time when reading 32-bit values.
Tx:
Quiet Time
ADR
FN=3
Start
Register
MSB
Start
Register
LSB
Number
Of
Registers
MSB
Number
of
Registers
LSB
CRC1
CRC2
Quiet Time
Rx:
Quiet
Time
ADR
FN=3
(+128 if
error)
Byte
Count
1st
Register
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
CRC1
CRC2
Quiet
Time
1.5.2 WRITE SINGLE REGISTERS (FN=6)
Note: cannot be used for 32-bit registers.
Tx:
Quiet Time
ADR
FN=6
Start
Register
MSB
Start
Register
LSB
Register
MSB
Register
LSB
CRC1
CRC2
Quiet Time
Rx:
Quiet Time
ADR
FN=6
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Register
MSB
Register
LSB
CRC1
CRC2
Quiet Time
Chapter 1 – Protocol Specification
10
1.5.3 LOOPBACK/MAINTENANCE (FN=8)
Note: only loopback of command supported.
Tx:
Quiet Time
ADR
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
CRC1
CRC2
Quiet Time
Rx:
Quiet Time
ADR
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
CRC1
CRC2
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:
Quiet
Time
ADR
FN=16
Start
Register
MSB
Start
Register
LSB
Number
Of
Registers
MSB
Number
of
Registers
LSB
Byte
Count
1st
Register
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
CRC1
CRC2
Quiet
Time
Rx:
Quiet Time
ADR
FN=16
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Number
Of
Registers
MSB
Number
of
Registers
LSB
CRC1
CRC2
Quiet Time
1.5.5 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
11
1.5.6 MODBUS REGISTER MAP SUMMARY
1 – 999 General, BOL Template, Misc. Configurations.
1000 – 1199 RCU Configurations
1200 – 1399 Bay Configurations
1400 – 1599 Preset Configurations
1600 – 1799 Meter Configurations
1800 – 1999 Component Configurations
2000 – 2199 Additive Configurations
2200 – 2999 Product, Alarm, Database, Misc. Configurations
3000 – 3999 Totalizers
4000 – 6000 Preset, Meter, Component and Additive Status
7000 – 7799 Status, Authorization Control and Alarms
7800 – 7999 Transaction Archive
8000 – 8999 Preset Definitions
9000-10999 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.
Chapter 2 –MultiLoad Responses
12
1.6 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
Server
Transaction Identifier
2 Bytes
Identification of a MODBUS Request/ Response transaction.
Initialized by the client
Recopied by the server from the received request
Protocol Identifier
2 Bytes
0 = Modbus Protocol
Initialized by the client
Recopied by the server from the received request
Length
2 Bytes
Number of following bytes
Initialized by the client (request)
Initialized by the server (Response)
Unit Identifier
1 Byte
Identification of a remote slave connected on a serial line or on other buses
Initialized by the client
Recopied by the server from the received request
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:
MBAP
FN=3
Start
Register
MSB
Start
Register
LSB
Number
Of
Registers
MSB
Number
of
Registers
LSB
Rx:
MBAP
FN=3
(+128 if
error)
Byte
Count
1st
Register
MSB
1st
Register
LSB
Next
Register
MSB
Next
Register
MSB
1.6.2 WRITE SINGLE REGISTERS (FN=6)
Note: cannot be used for 32-bit registers.
Tx:
MBAP
FN=6
Start
Register
MSB
Start
Register
LSB
Register
MSB
Register
LSB
Rx:
MBAP
FN=6
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Register
MSB
Register
LSB
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
Rx:
MBAP
FN=8
Diagnostic
Code MSB
Diagnostic
Code LSB
Data MSB
Data LSB
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:
MBAP
FN=16
Start
Register
MSB
Start
Register
LSB
Number
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:
MBAP
FN=16
(+128 if
error)
Start
Register
MSB
Start
Register
LSB
Number
Of
Registers
MSB
Number
of
Registers
LSB
1.6.5 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
15
1.6.6 MODBUS REGISTER MAP SUMMARY
1 – 999 General, BOL Template, Misc. Configurations. 1000 – 1199 RCU Configurations 1200 – 1399 Bay Configurations 1400 – 1599 Preset Configurations 1600 – 1799 Meter Configurations 1800 – 1999 Component Configurations 2000 – 2199 Additive Configurations 2200 – 2999 Product, Alarm, Database, Misc. Configurations 3000 – 3999 Totalizers 4000 – 6000 Preset, Meter, Component and Additive Status 7000 – 7799 Status, Authorization Control and Alarms 7800 – 7999 Transaction Archive 8000 – 8999 Preset Definitions 9000-10999 Extended Services Register
1.6.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 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.
Chapter 2 –MultiLoad Responses
16
CHAPTER 2 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 = '0',
AUTH_BAY = 4',
MENU_MODE = '9',
DIAG_MODE = '%',
AUTHORIZING_LOAD = 'A',
LOAD_AUTHORIZED = 'B',
COMPLETING_LOAD = 'C',
TRANSACTION_DONE = 'D',
TRANSACTION_CANCEL = 'E',
PULLING_TRANSACTION = 'P',
ARCHIVING_TRANSACTION = 'R',
TRANSACTION_AUTHORIZED = 'T',
RCU_NOT_CONFIGURED = '?',
RCU_POWER_UP = '!',
INITIALIZING = 'I',
NO_TRANSACTION = 'N',
REMOTE_AUTH_PRESET1 = 'a',
REMOTE_AUTH_PRESET2 = 'b',
REMOTE_AUTH_PRESET3 = 'c',
REMOTE_AUTH_PRESET4 = 'd',
REMOTE_AUTH_PRESET5 = 'e',
REMOTE_AUTH_PRESET6 = 'f',
Chapter 2 –MultiLoad Responses
17
REMOTE_AUTH_PRESET7 = 'g',
REMOTE_AUTH_PRESET8 = 'h',
REMOTE_AUTH_PRESET9 = 'i',
REMOTE_AUTH_PRESET10 = 'j',
REMOTE_AUTH_PRESET11 = 'k',
REMOTE_AUTH_PRESET12 = 'l',
REMOTE_AUTH_PRESET13 = 'm',
REMOTE_AUTH_PRESET14 = 'n'
} rcu_status;
Modbus: Read Only Register=7000, Len=1, Character (rcu_status)
enum
{
CARD_NOT_INSERTED =’0’,
CARD_INSERTED =’1’,
CARD_SECOND_INSERTED =’2’
} card_status;
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 => Response R000 => 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
18
CHAPTER 3 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
19
CHAPTER 4 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 = Enables the keypad on the MultiLoad RCU (default it is active) FKEYPADOFF = 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
20
FPccc…. = Send ccc… characters to the attached printer port (if defined). FCLEARPROD = Clear all product definitions (500 register) except for the 000-Unknown Product
definition. FCLEARID = Clear Access ID and PIN database. FCLEARCUSTOM = Clears all custom logic entries. FCLEARAUDITLOG = Clear Audit Log Messages stored in Multiload. Modbus: Supported through Modbus Extended Services Registers.
Chapter 5 – Terminal Commands
21
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)
Chapter 5 – Terminal Commands
22
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
Chapter 5 – Terminal Commands
23
< 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:
Chapter 5 – Terminal Commands
24
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)
Chapter 5 – Terminal Commands
25
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
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
26
CHAPTER 6 METER COMMANDS:
6.1 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
27
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)
Chapter 6 – Meter Commands
28
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)
Chapter 6 – Meter Commands
29
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.)
Chapter 6 – Meter Commands
30
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.)
Chapter 6 – Meter Commands
31
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 component_current_bsw_hund:1; unsigned int component_current_api_gravity_tenths 1; unsigned int component_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;
Chapter 6 – Meter Commands
32
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).
Chapter 6 – Meter Commands
33
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;
Chapter 6 – Meter Commands
34
xxxx= preset status #0 in hexadecimal as: union { unsigned int value; struct { unsigned char preset_enabled:1; // preset is enabled unsigned char preset_host_enabled:1; // preset enabled by host unsigned char authorized:1; // preset available for use unsigned char flow_active:1; // flow state is not idle unsigned char batch_authorized:1; // product & preset has been authorized unsigned char remote_msg:1; // remote message active unsigned char remote_desc:1; // remote descriptive message active unsigned char load_complete:1; // no further loading on batch can be done unsigned char end_batch:1; // MBE command processing started unsigned char end_batch_done:1; // MBE command processing done unsigned char tms_got_data:1; // MEB command received unsigned char archived:1; // batch data has been archived into
transaction database unsigned char batch_cleared:1; // batch has been cleared unsigned char clearing_load:1; // load clear has been issued unsigned char load_cleared:1; // load has been cleared unsigned char trans_done:1; // transaction is done } flags: } preset_status_0;
Chapter 6 – Meter Commands
35
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 unused11:1; unsigned char unused12:1; unsigned char unused13:1; unsigned char unused14:1; unsigned char configuration_error:1; // preset configuration has invalid data,
check message log for details } flags; } preset_alarms;
Chapter 6 – Meter Commands
36
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))
Chapter 6 – Meter Commands
37
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))
Chapter 6 – Meter Commands
38
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))
Chapter 6 – Meter Commands
39
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))
Chapter 6 – Meter Commands
40
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
Chapter 6 – Meter Commands
41
Query 1 Responses: xxxx= preset status #0 in hexadecimal as: union { unsigned int value; struct { unsigned char preset_enabled:1; // preset is enabled unsigned char preset_host_enabled:1; // preset enabled by host unsigned char authorized:1; // preset available for use unsigned char flow_active:1; // flow state is not idle unsigned char batch_authorized:1; // product & preset has been authorized unsigned char remote_msg:1; // remote message active unsigned char remote_desc:1; // remote descriptive message active unsigned char load_complete:1; // no further loading on batch can be done unsigned char end_batch:1; // MBE command processing started unsigned char end_batch_done:1; // MBE command processing done unsigned char tms_got_data:1; // MEB command received unsigned char archived:1; // batch data has been archived into
transaction database unsigned char batch_cleared:1; // batch has been cleared unsigned char clearing_load:1; // load clear has been issued unsigned char load_cleared:1; // load has been cleared unsigned char trans_done:1; // transaction is done } flags: } preset_status_0;
Chapter 6 – Meter Commands
42
xxxx= preset status #1 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; // currently clearing errors unsigned char flow_batch:1; // command to flow/not flow product unsigned char clear_batch:1; // command to clear batch unsigned char clear_load:1; // command to clear load unsigned char flush_stage_needed:1; // product flush stage required unsigned char open_blk_val:1; // block valve open unsigned char blk_val_status:1; // block valve status unsigned char close_blk_val:1; // block valve close unsigned char remote_start:1; // remote start button status unsigned char swing_arm:1; // swing arm select status unsigned char meter_stop:1; // meter stop button status unsigned char alarm_out:1; // preset alarm output status unsigned char permissive:1; // preset permissive input status } flags: } preset_status_1;
Chapter 6 – Meter Commands
43
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.
Chapter 6 – Meter Commands
44
Per meter(6): xxxx= meter 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; // currently clearing errors unsigned char clear_totals:1; // commanded to clear totals unsigned char start_flow:1; // commanded to start flow unsigned char stop_flow:1; ; // commanded to stop flow unsigned char high_flow:1; // forcing flow into high flow unsigned char upstream_valve:1; // upstream valve status unsigned char downstream_valve:1; // downstream valve status unsigned char alarm_out:1; // meter alarm output status unsigned char authorized:1; // meter authorized output status unsigned char permissive:1; // meter permissive input status unsigned char permissive_out:1; // meter permissive output status unsigned char wm_clear_errors:1; // command to clear errors unsigned char unused0_15:1; // future use } flags: } meter_status_0;
Chapter 6 – Meter Commands
45
xxxx= meter status #1 in hexadecimal as: union { unsigned int value; struct { unsigned char unused1_0:1; // future use unsigned char unused1_1:1; // future use unsigned char unused1_2:1; // future use unsigned char unused1_3:1; // future use unsigned char unused1_4:1; // future use unsigned char unused1_5:1; // future use unsigned char unused1_6:1; // future use unsigned char unused1_7:1; // future use 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: } meter_status_1;
Chapter 6 – Meter Commands
46
xxxx= meter status #2 in hexadecimal as: union { unsigned int value; struct { unsigned char unused2_0:1; // future use unsigned char unused2_1:1; // future use unsigned char unused2_2:1; // future use unsigned char unused2_3:1; // future use unsigned char unused2_4:1; // future use unsigned char unused2_5:1; // future use unsigned char unused2_6:1; // future use unsigned char unused2_7:1; // future use unsigned char unused2_8:1; // future use unsigned char unused2_9:1; // future use unsigned char unused2_10:1; // future use 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: } meter_status_2; Modbus: Supported through Modbus Extended Services Registers.
Chapter 6 – Meter Commands
47
Per component(8): xxxx= component 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; // currently clearing errors unsigned char clear_batch:1; // commanded to clear batch unsigned char remote_start_button:1; // remote start button input status unsigned char pump_run:1; // pump run output status unsigned char pump_kill:1; // pump kill output status unsigned char pump_status:1; // pump status input status unsigned char open_blk_val:1; // open block valve output status unsigned char blk_val_status:1; // block valve status input status unsigned char close_blk_val:1; // close block valve output status unsigned char alarm_out:1; // alarm out output status unsigned char authorized:1; // authorized output status unsigned char permissive:1; // component permissive input status unsigned char permissive_out:1; // component permissive output status } flags: } component_status_0;
Chapter 6 – Meter Commands
48
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;
Chapter 6 – Meter Commands
49
xxxx= component status #2 in hexadecimal as: union { unsigned int value; struct { unsigned char unused2_0:1; // future use unsigned char unused2_1:1; // future use unsigned char unused2_2:1; // future use unsigned char unused2_3:1; // future use unsigned char unused2_4:1; // future use unsigned char unused2_5:1; // future use unsigned char unused2_6:1; // future use unsigned char unused2_7:1; // future use unsigned char unused2_8:1; // future use unsigned char unused2_9:1; // future use unsigned char unused2_10:1; // future use 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: } component_status_2; Modbus: Supported through Modbus Extended Services Registers.
Chapter 6 – Meter Commands
50
Per additive(16): xxxx= additive 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; // commanded to clear errors unsigned char clear_batch:1; // commanded to clear batch unsigned char test_button:1; // test inject button input status unsigned char pump_run:1; // pump run output status unsigned char pump_kill:1; // pump kill output status unsigned char pump_status:1; // pump status input status unsigned char open_blk_val:1; // open block valve output status unsigned char blk_val_status:1; // block valve status input status unsigned char close_blk_val:1; // close block valve output status unsigned char flush_pump_run:1; // flush pump run output status unsigned char alarm_out:1; // alarm out output status unsigned char authorized:1; // authorized output status unsigned char permissive:1; // additive permissive input status } flags: } additive_status_0;
Chapter 6 – Meter Commands
51
xxxx= additive status #1 in hexadecimal as: union { unsigned int value; struct { unsigned char permissive_out:1; // permissive out output status unsigned char feedback_status:1; // additive feedback input status unsigned char wm_clear_errors:1; // command to clear errors unsigned char unused1_3:1; // future use unsigned char unused1_4:1; // future use unsigned char unused1_5:1; // future use unsigned char unused1_6:1; // future use unsigned char unused1_7:1; // future use 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: } additive_status_1;
Chapter 6 – Meter Commands
52
xxxx= additive status #2 in hexadecimal as: union { unsigned int value; struct { unsigned char unused2_0:1; // future use unsigned char unused2_1:1; // future use unsigned char unused2_2:1; // future use unsigned char unused2_3:1; // future use unsigned char unused2_4:1; // future use unsigned char unused2_5:1; // future use unsigned char unused2_6:1; // future use unsigned char unused2_7:1; // future use unsigned char unused2_8:1; // future use unsigned char unused2_9:1; // future use unsigned char unused2_10:1; // future use 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: } additive_status_2; Modbus: Supported through Modbus Extended Services Registers.
6.11 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
53
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;
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 = 0, TANK_LOADING = 1, TANK_UNLOADING = 2,
Chapter 6 – Meter Commands
55
TANK_UNLOAD_LOAD = 3, } tank_state;
Chapter 6 – Meter Commands
56
xxxx= tank status #0 in hexadecimal as: union { unsigned int value; struct { unsigned char high_high_level:1; // high high level alarm unsigned char high_level:1; // high level alarm unsigned char low_level:1; // low level alarm unsigned char low_low_level:1; // low low level alarm unsigned char bypass_alarm:1; // bypass level alarms unsigned char active_tank:1; // active tank unsigned char alarm_out:1; // alarm out 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;
Chapter 6 – Meter Commands
57
yyyy= 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 com 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; // Tankvalve Alarm 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; // high high level unsigned char high_level:1; // high level unsigned char low_level:1; // low level unsigned char low_low_level:1; // low low level unsigned char bypass_alarm:1; // bypass alarm unsigned char active_tank:1; // active tank unsigned char alarm_out:1; // alarm out 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;
Chapter 6 – Meter Commands
58
unsigned char unused0_12:1; unsigned char unused0_13:1; unsigned char unused0_14:1; unsigned char unused0_15:1; } flags: } tank_status_0;
Chapter 6 – Meter Commands
59
xxxx= tank_status #1 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; // currently clearing errors unsigned char wm_clear_errors:1; // command to clear errors unsigned char open_tank_val:1; // tank valve open unsigned char tank_val_status:1; // tank valve status unsigned char close_tank_val:1; // tank valve closed unsigned char trigger_start_level:1; // trigger start level unsigned char trigger_stop_level:1; // trigger stop level 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;
Chapter 6 – Meter Commands
60
xxxx= tank_status #2 in hexadecimal as: union { unsigned int value; struct { unsigned char unused2_0:1; // future use unsigned char unused2_1:1; // future use unsigned char unused2_2:1; // future use unsigned char unused2_3:1; // future use unsigned char unused2_4:1; // future use unsigned char unused2_5:1; // future use unsigned char unused2_6:1; // future use unsigned char unused2_7:1; // future use unsigned char unused2_8:1; // future use unsigned char unused2_9:1; // future use unsigned char unused2_10:1; // future use 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: } tank_status_2;
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
61
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;
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 = 0, SS_READY = 1,
Chapter 6 – Meter Commands
63
SS_SAMPLE = 2, } sampler_state;
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; // command to clear errors 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; // 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;
Chapter 6 – Meter Commands
65
yyyy= sampler alarms in hexadecimal as: 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 com
error. unsigned char sampler_permissive:1; // Sampler permissive Alarm 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; // 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; // currently clearing errors unsigned char wm_clear_errors:1; // command to clear errors 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;
Chapter 6 – Meter Commands
66
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;
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
68
xxxx= sampler_status #2 in hexadecimal as: union { unsigned int value; struct { unsigned char unused2_0:1; // future use unsigned char unused2_1:1; // future use unsigned char unused2_2:1; // future use unsigned char unused2_3:1; // future use unsigned char unused2_4:1; // future use unsigned char unused2_5:1; // future use unsigned char unused2_6:1; // future use unsigned char unused2_7:1; // future use unsigned char unused2_8:1; // future use unsigned char unused2_9:1; // future use unsigned char unused2_10:1; // future use 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: } sampler_status_2;
Query 2 & 3 Responses: // future use
Chapter 6 – Meter Commands
69
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
Chapter 6 – Meter Commands
70
unsigned char sampler_alarm:1; // a sampler level alarm currently exists for
this preset
unsigned char configuration_error:1; // 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; //deadman alarm active
unsigned char unused15:1 unsigned char power_fail:1 // if a hardware reboot flags get set unsigned char unused17-31:1; } flags; unsigned int value; } bay_alarms; 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; // API VCF table error unsigned char component_back_pressure:1; // 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
75
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;
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
77
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.
Chapter 7 – Register Operations
78
CHAPTER 7 REGISTER OPERATIONS:
Read Register Command => Response
R<register/sub-registers> => <status><register/sub-registers><register value(s)>
R004 => 0?00004000000001 R104021000001 => 0?0104021000001000000020 R999 => 1?0999 (invalid register!)
Update Register Command => Response
U<register/sub-registers><register value(s)> => <status><register/sub-registers>
U004000000001 => 0?0004 U104021000001000000020 => 0?0104021000001 U999000000001 => 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
79
7.1 GENERIC REGISTERS
7.1.1 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 Register Value +12345 12345 +0 0 +1 1 +32767 32767
-32768 32768
-1 65535
“signed div10” – Signed numeric value with 1 decimal place. Numeric Value Register Value
Chapter 7 – Register Operations
80
+1234.5 12345 +0.0 0 +0.1 1 +3276.7 32767
-3276.8 32768
-0.1 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 Register Value Hello World 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
81
GALLONS = 0, LITRES = 1, CUBIC_METERS = 2, TONNES = 3, KILOGRAMS = 4, GRAMS = 5, POUNDS = 6, BARRELS = 7, NO_MEASURE = 8, LITERS = 9, DECALITERS = 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
82
TABLE_TEC_ETH_B40 = ’201’, TABLE_TEC_ETH_E40 = ’202’, TABLE_TEC_ETH_E100 = ‘203’, TABLE_BIO_PTB = ’204’, TABLE_ETH_BRAZIL =’205’, TABLE_HYDRO_BRAZIL =’206’,
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,
Chapter 7 – Register Operations
83
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.
Chapter 7 – Register Operations
84
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, };
Chapter 7 – Register Operations
85
meter type” – Enumerated meter type values. enum{ // Enumerated Value Register Value METER_TYPE_VOLUME_PULSE_INPUT = 0, METER_TYPE_MASS_PULSE_INPUT = 1, METER_TYPE_VOLUME_ANALOG_INPUT = 2, METER_TYPE_KROHNE_INPUT = 3, METER_TYPE_MICROMOTION_INPUT = 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
86
BUCKET_NONCAPTIVE = 2, // NONCAPTIVE CARD-READER SLOT_CAPTIVE = 3 // CAPTIVE CARD-READER SLOT_NONCAPTIVE = 4 // NONCAPTIVE CARD-READER IBUTTON = 5 // iBUTTON BUCKET_DUAL_NONCAP = 6 // NONCAPTIVE CARD-READER SLOT_DUAL_NONCAP = 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
87
“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
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 Register Value NO_MASS_MEASURES = 0, MASS_POUNDS = 1, MASS_SHORT_TONS = 2, MASS_LONG_TONS = 3, MASS_GRAMS = 4, MASS_KILOGRAMS = 5, MASS_KILOGRAMS_AIR = 6, MASS_METRIC_TONS = 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 Register Value BLEND_TYPE_NONE = 0, BLEND_TYPE_RATIO =1, BLEND_TYPE_SEQUENTAIL = 2, BLEND_TYPE_RATIO_AND_SEQUENTAIL = 3, BLEND_TYPE_WATERCUT = 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
89
“Decimal Mark” Select which decimal is used in each screen Enum{// Enumerated Value Register Value
DECIMAL_MARK_TYPE_DECIMAL = 0, DECIMAL_MARK_TYPE_COMMA = 1
}
“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
90
PARITY_ODD 1
PARITY_EVEN 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 Register Value
MULTIDROP_SINGLE 0 MULTIDROP_MULTI 1
MULTIDROP_2WIRE 2
}
“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 Register Value
TANK_MODE_DEACTIVE 0 TANK_MODE_LOADING 1 TANK_MODE_UNLOADING 2
TANK_MODE_LOAD_UNLOAD 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 000RCU LEVEL CONFIGURATION REGISTERS
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus Register
Len=2
R / U
004
Reload ROM Lang File
disable/enable
Enabled
General
1008
R / U
008
Driver Language
language
English
General
1016
R / U
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
2
30 3 General
1022
R / U
012
Processing Mode
remote processing
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
1030
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
0
2 1 General
1042
R / U
022
Compartment Entry
disable/enable
Disabled
General
1044
R / U
023
Config Timeout Mins
unsigned int
0
99
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
Chapter 7 – Register Operations
92
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus 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
disable/enable
Disabled
General
1076
R / U
039
Message Log PCM#
unsigned int
0
32 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
disable/enable
Disabled
General
1086
R / U
044
Alibi Log PCM#
unsigned int
0
3 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
Chapter 7 – Register Operations
93
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus Register
Len=2
R / U
066
Startup Keypad Locked
disable/enable
Disabled
General
1132
R / U
067
Screen Brightness
Percent
500
10000
10000
General
1134
R / U
068
W&M Key FCM#
fcm address
Disabled
W & M
1136
R / U
069
Program Key FCM#
fcm address
Disabled
W & M
1138
R / U
090
RCU Address
unsigned int
0
999 1 General
1180
Chapter 7 – Register Operations
94
7.1.3 100BAY LEVEL CONFIGURATION REGISTERS
Access
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
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
Delivery Type
Gross
W & M
1356
R / U
100079
Start Transaction
fcm address
Disabled
General
1358
R / U
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
0
65535
180
General
1370
R / U
100086
Output Deadman FCM#
fcm address
Disabled
General
1372
R / U
100087
Deadman Warning Timer
Unsigned int
0
65535
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
Chapter 7 – Register Operations
95
7.1.4 101PRESET 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
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
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
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
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
0.001
50.000
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#
fcm address analog input
Disabled
General
1508
R / U
101055ppp
Default BSW
unsigned div 100
0
100.00
0
General
1510
R / U
101056ppp
Alarm Low BSW 1
signed div 100
-10.00
110.00
-10.00
General
1512
R / U
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#
fcm address analog input
Disabled
General
1526
R / U
101064ppp
BSW Alarm Volume
unsigned int
0
9999999
0
General
1528
R / U
101065ppp
Alarm Low BSW 2
unsigned div 100
-10.00
110.00
-10.00
General
1530
R / U
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
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
R / U
101070ppp
BSW 2 Offset
signed div 10
-3.00
3.00
0
General
1540
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
unsigned int
0
20 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#
fcm address
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
Chapter 7 – Register Operations
98
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
R / U
101107ppp
Unused
General
N/A
R / U
101108ppp
Recipe Output Bit 0 FCM#
fcm address
Disabled
General
N/A
R / U
101109ppp
Recipe Output Bit 1 FCM#
fcm address
Disabled
General
N/A
R / U
101110ppp
Recipe Output Bit 2 FCM#
fcm address
Disabled
General
N/A
R / U
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
99
7.1.5 102METER 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
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
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
R / U
102002pppmmm
Side Stream on Any Meter
disable/enable
Disabled
General
1604
R / U
102003pppmmm
Unused
General
1606
R / U
102004pppmmm
Meter Address
unsigned int
0
255
0
W & M
1608
R / U
102005pppmmm
Meter Type
meter type
Volume Pulse
W & M
1610
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
0.000
999.999
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
R / U
102017pppmmm
Valve Cntl Alrm Time
unsigned div1000
0.000
65.535
10.000
General
1634
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
R / U
102022pppmmm
Meter Creep Alrm Vol
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
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
Chapter 7 – Register Operations
10 0
Prefix
Register
Description
Data Type
Min
Value
Max
Value
Default
Value
Protection
Modbus
Register
Len=2
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
20.000
0.000
General
1664
R / U
102033pppmmm
Unused
General
1666
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
R / U
102040pppmmm
Density Sensor FCM#
fcm address analog input
Disabled
W & M
1680
R / U
102041pppmmm
Unused
General
1682
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
R / U
102048pppmmm
Density Offset
signed div10
-300
300 0 W & M
1696
R / U
102049pppmmm
Unused
General
1698
R / U
102050pppmmm
Unused
General
1700
R / U
102051pppmmm
Pressure Sensor FCM#
fcm address analog input
Disabled
W & M
1702
R / U
102052pppmmm
Unused
General
1704
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
R / U
102059pppmmm
Pressure Offset
signed div100
-30.00
30.00
0.00
W & M
1718
R / U
102060pppmmm
Unused
General
1678
R / U
102061pppmmm
Relative Density Sensor FCM#
fcm address analog input
Disabled
W & M
1680
R / U
102062pppmmm
Unused
General
1682
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
60
0.0000
General
1690
R / U
102067pppmmm
Relative Density @ Low Value
unsigned div10000
0.0000
4.0000
0.0000
W & M
1692
Loading...