Summarize Measurement and Protection Relay Smpr-1: E.1 Orion Italia Series Modbus Protocol
Summarize Measurement and Protection Relay Smpr-1: E.1 Orion Italia Series Modbus Protocol
Summarize Measurement and Protection Relay Smpr-1: E.1 Orion Italia Series Modbus Protocol
The ORION ITALIA SERIES implement a subset of the AEG Modicon Modbus serial communication standard.
Many devices support this protocol directly with suitable interface card, allowing direct connection of relays.
The Modbus protocol is hardware-independent; that is, the physical layer can be any of variety of standard
hardware configurations. This includes RS232, RS422, RS485, fibber optics, etc. The ORION ITALIA RELAYS
include a rear terminal RS422/RS485 port. Modbus is a single master multiple slave protocol suitable for a
multi-drop configuration as provided by RS422/RS485 hardware. In this configuration up to 32 slaves can be
daisy-chained together on a single communication channel.
The ORION ITALIA SERIES is always a Modbus slave. It cannot be programmed as a Modbus master. The
Modbus protocol exists in two versions: Remote Terminal Unit (RTU, binary) and ASCII. Only the RTU version
is supported by the Orion Italia Relay. Monitoring, programming and control functions are possible using read
and write register commands.
In a two-wire RS485 link, data flow is bi-directional. The four-wire RS422 port uses two terminals for receive
lines, and two other terminals for transmit lines. As a result, both RS422 and RS485 ports cannot be used at
the same time. The data flow is half duplex. That is, data is never transmitted and received at the same time.
RS485 and RS422 lines should be connected in a daisy chain configuration (avoid star connections) with
terminating resistors and capacitors installed each end of the link, i.e. at the master end and the slave farthest
from the master. That value of the terminating resistors should be equal to the characteristic impedance of the
line. This is approximately 120 Ohms for standard 24 AWG twisted pair wire. The value of the capacitors
should be 1 nF. Shielded wire should always be used to minimize noise. Polarity is important in RS485
communications. See chapter 2 INSTALLATION of manual instruction for more details.
One data frame of an asynchronous transmission to or from a Orion Italia Relay consists of 1 start bit, 8 data
bits, not parity and 1 stop bit. This produces a 10 bit frame. This is important for transmission though modems
at high bit rates (11 bit data frames are not supported by hayes modems at bit rates of greater than 300 bps).
The rear RS485/RS422 external communication port of the Orion Italia Relay supports operation at
1200,2400,4800 and 9600 baud.
A complete request/response consists of the following bytes transmitted as separate data frames:
A message is terminated when no data is received for a period of 3 1/2 character transmission times.
Consequently, the transmitting device must not allow gaps between bytes larger than this interval (about 3ms
at 9600 baud).
SLAVE ADDRESS: This is the first byte of every message. This byte represents the user-assigned address of
the slave device that is to receive the message sent by the master. Each slave device must be assigned a
unique address, and only the addressed slave will respond to a message that starts with its address. In a
master query message the SLAVE ADDRESS represents the address of the slave to which the request is
being sent. In a slave response message the SLAVE ADDRESS is a confirmation representing the address of
the slave that is sending the response. A master query message with a SLAVE ADDRESS of 0 indicates a
broadcast command. All slaves on the communication link will take action based on the message, but none will
respond to the master.
FUNCTION CODE: This is the second byte of every message. Modbus defines function codes of 1 to 127. The
Orion Italia Relay implements some of this functions. See section E.7 for details of the function codes
supported by the Orion Italia Relay Series Modbus Protocol. In a master query message the FUNCTIONS
CODE tells the slave what action to perform. In a slave response message, if the FUNCTION CODE sent from
the slave is the same as the FUNCTION CODE sent from the master then the slave performed the function as
requested.
DATA: This will be a variable number of bytes on the FUNCTION CODE. This may include actual values,
setpoints or addresses sent by the master to the slave or by the slave to the master. See section E.7 for a
description of the Orion-supported functions and the data required for each.
CRC: This is a two byte error checking code. CRC is sent LSByte first followed by the MSByte. The RTU
version of Modbus includes a two byte CRC-16 (16 bit cyclic redundancy check) with every message. The
CRC-16 algorithm essentially treats the entire data stream (data bits only; start, stop and parity ignored) as one
continuous binary number. This number is first shifted left 16 bits and then divided by a characteristic
polynomial (11000000000000101B). The 16 bit remainder of the division is appended to the end of the
message, MSByte first. The resulting message including CRC, when divided by the same polynomial at the
receiver will give a zero remainder if no transmission errors have occurred. If a Orion Modbus slave device
receives a message in which an error is indicated by the CRC-16 calculation, the slave device will not respond
to the message. A CRC-16 error indicates that one or more bytes of the message were received incorrectly
and thus the entire message should be ignored in order to avoid the slave device performing any incorrect
operation. The CRC-16 calculation is an industry standard method used for error detection. An algorithm is
included in section E.5 CRC-16 algorithm to assist programmers in situations where no standard CRC-16
calculation routines are available.
Once the following algorithm is completed, the working register "A" will contain the CRC value to be
transmitted. Note that this algorithm requires the characteristic polynomial to be reverse bit ordered. The most
significant bit of the characteristic polynomial is dropped, since it does not affect the value of the remainder.
The following symbols are used in the algorithm:
Symbols:
--> data transfer
A 16 bit working register
Alow low order byte of A
Ahigh high order byte of A
CRC 16 bit CRC-16 value
i,j loop counter
(+) logical EXCLUSIVE-OR operator
N total number of data bytes
Di i-th data byte (i=0 to N-1)
G 16 bit characteristic polynomial =1010000000000001(binary) with MSbit dropped and bit
order reversed
shr(x) right shit operator (the LSbit of x is shifted into a carry lag, a '0' is shifted into the MSbit of x,
all other bits are shifted right one location)
Algorithm:
1. FFFF(hex) --> A
2. O --> i
3. O --> j
4. Di (+) Alow --> Alow
5. j + 1 --> j
6. shr (A)
7. Is there a carry ? No: go to step 8
Yes: G (+) A --> A and continue
8. Is j = 8 ? No: go to 5
Yes: continue
9. i + 1 --> i
10. Is i = N ? No: go to 3
Yes: continue
11. A ----> CRC
Communication message synchronization is maintained by timing constraints. The receiving device must
measure the time between the reception of characters. If three and one half character times elapse without a
new character or completion of the message, then the communication link must be reset (i.e. all slaves start
listening for a new query message from the master). Thus at 1200 baud a delay of greater than 3.5 x 1/1200 x
10 = 29.2 msec cause the communication link to be reset. At 9600 baud a delay of greater than 3.5 x 1/9600
x 10 = 3.6 ms will cause the communication link to be reset. Most master query messages will be responded to
in less than 50 ms. The maximum time for the Orion Italia Relay to return a slave response message for any
function code will never exceed 1 second.
The second byte of every message is the function code. Modbus defines function codes of 01h to 7Fh. The
Orion Italia Relay Modbus protocol supports some of these functions, as summarized in Table No. E.1
Since some programmable logic controllers only support function codes 03h (or 04h) and 10h, most of the
above Modbus commands can be performed by reading from or writing to special addresses in the Orion Italia
Relay memory map using these function codes.
The Orion Italia Relay implementation of Modbus views "holding registers" as any setpoint or actual values
register in the Orion Italia Relay memory map. Registers are 16 (two byte) values transmitted high order byte
first. Thus all Orion Italia Relay setpoints and actual values in the memory map are sent as two byte registers.
This function code allows the master to read one or more consecutive setpoints or actual values from
addressed slave device.
The slave response to these function codes is the slave address, function code, a count of the number of data
bytes to follow, the data itself and the CRC. Each data item is sent as a two byte number with the high order
byte sent first. The CRC is sent as a two byte number with the low order byte sent first.
The maximum number of values of Setpoints that can be read in a single message is 87 word (174 bytes).
The SMPR-1 Setpoint data starts at address FB14h.
The maximum number of values of Actual Values that can be read in a single message is 121 word (242
bytes). The SMPR-1 Actual Values data starts at address FBC2h.
If the function code or the address of any of the requested data is illegal, the slave will not respond the
message. Otherwise, the slave will respond as follows:
This function code allows the master to modify the contest of a one or more consecutive setpoint in the
addressed slave device. Setpoint registers are 16 bit (two byte) values transmitted high order byte first.
The maximum number of register values (setpoints) that can be stored in a single message is 87 word (174
bytes). The SMPR-1 Setpoint data starts at address FB14h.
To store the value of one or more setpoints in the internal memory of the SMPR-1, the following steps shall be
realized:
a) First shall be read all setpoint group ( 87 word = 174 bytes) with function 03h.
b) Modify the values of setpoints according to setpoint map.
c) Activate the bits of each setpoint, according to the description inside of SMPR-1 memory map data format.
This step is very important in order to the new modified value will be stored effectively in the non volatile
memory.
d) Send all setpoint group, 87 word (174 bytes) with function 10h. If you send other number than 87 word (174
bytes) , the SMPR-1 relay will not respond to the message.
The SMPR-1 response to this function code is to echo the slave address, function code, starting address, the
number of setpoints stored, and the CRC.
Request slave device 11h to write the value 00C8h at setpoint address 1100h, and the value 0001h at setpoint
address 1101h.
If the function code or the address or value of any of the data, is illegal, the slave will not respond to the
message. Otherwise, the slave will respond as follows:
The SMPR-1 Relay supports execution of commands using function code 10h. The operation commands is
initiated by writing the bits at address FB14h and using function code 10h. A more detailed description to
realize the operation commands is:
a) First shall be read all setpoint group ( 87 word = 174 bytes) with function 03h.
b) Modify the bits at address FB14h according the operation to be realized:
c) Send all setpoint group, 87 word (174 bytes) with function 10h. If you send other number than 87 word (174
bytes) , the SMPR-1 relay will not respond to the message.
The data stored in the SMPR-1 is grouped as Setpoints and Actual Values. Setpoints can be read and written
by a master computer. Actual Values are read only. All setpoints and Actual Values are stored as one or two
bytes values. That is, each register address is the address of one byte value. Addresses are listed in
hexadecimal. Data values (Setpoint ranges, increments, factory value) are in decimal.
The maximum number of values of Setpoints that can be read in a single message is 87 word (174 bytes).
The SMPR-1 Setpoint data starts at address FB14h.
The maximum number of values of Actual Values that can be read in a single message is 121 word (242
bytes). The SMPR-1 Actual Values data starts at address FBC2h.
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
F2 Unsigned 16 bit integer Phase O/C curve, O/C alarm, inst. trip, Ground current sensing, Ground sensing
system, reset type, Trip and alarm relay
Bit 3 2 1 0 Phase O/C Curve
0 0 0 0 ANSI MODERATELY INVERSE
0 0 0 1 ANSI NORMALLY INVERSE
0 0 1 0 ANSI VERY INVERSE
0 0 1 1 ANSI EXTREMELY INVERSE
0 1 0 0 IAC SHORT INVERSE
0 1 0 1 IAC INVERSE
0 1 1 0 IAC VERY INVERSE
0 1 1 1 IAC EXTREMELY INVERSE
1 0 0 0 IEC SHORT INVERSE
1 0 0 1 IEC-A NORMALY INVERSE
1 0 1 0 IEC-B VERY INVERSE
1 0 1 1 IEC-C EXTREMELY INVERSE
1 1 0 0 DEFINITE TIME #1 ( 0.025 to 0.55 SEC ) Only Version
1 1 0 1 DEFINITE TIME #2 ( 0.25 to 5.5 SEC ) Only Version
Bit 5 4 Reserved
Bit 6 Phase O/C Alarm
0 Disabled
1 Enabled
Bit 7 Reserved
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
F2 Unsigned 16 bit integer Phase O/C curve, O/C alarm, inst. trip, Ground current sensing, Ground sensing
system, reset type, Trip and alarm relay
Bit 8 Phase Instantaneous Trip
0 Disabled
1 Enabled
Bit 10 9 Reserved
Bit 11 Ground current sensing
0 Disabled
1 Enabled
Bit 12 Ground sensing system
0 Residual
1 Zero sequence
Bit 13 Reset type
0 Local
1 Remote
Bit 14 Trip relay output
0 Pulsed
1 Latched
Bit 15 Alarm relay output
0 Pulsed
1 Latched
Write internal memory: Bit 0 = 1 of FB16h , Bit 0 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
F3 Unsigned 16 bit integer Ground O/C curve, Ground O/C alarm, Ground inst. trip, Breaker type, Mech.
Operations alarm, Breaker discrepancy alarm, Accumulated KA alarm
Bit 3 2 1 0 Ground O/C Curve
0 0 0 0 ANSI MODERATELY INVERSE
0 0 0 1 ANSI NORMALLY INVERSE
0 0 1 0 ANSI VERY INVERSE
0 0 1 1 ANSI EXTREMELY INVERSE
0 1 0 0 IAC SHORT INVERSE
0 1 0 1 IAC INVERSE
0 1 1 0 IAC VERY INVERSE
0 1 1 1 IAC EXTREMELY INVERSE
1 0 0 0 IEC SHORT INVERSE
1 0 0 1 IEC-A NORMALY INVERSE
1 0 1 0 IEC-B VERY INVERSE
1 0 1 1 IEC-C EXTREMELY INVERSE
1 1 0 0 DEFINITE TIME #1 ( 0.025 to 0.55 SEC ) Only Version
1 1 0 1 DEFINITE TIME #2 ( 0.25 to 5.5 SEC ) Only Version
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
F3 Unsigned 16 bit integer Ground O/C curve, Ground O/C alarm, Ground inst. trip, Breaker type, Mech.
Operations alarm, Breaker discrepancy alarm, Accumulated KA alarm
Bit 5 4 Function Ground Overcurrent
0 0 Alarm
0 1 Trip
1 0 Trip & Alarm
Bit 7 6 Reserved
Bit 8 Ground Instantaneous Trip
0 Disabled
1 Enabled
Bit 10 9 Reserved
Bit 11 Breaker Type
0 Circuit breaker
1 Disconnector
Bit 12 Mechanical operations alarm
0 Disabled
1 Enabled
Bit 13 Reserved
Bit 14 Breaker discrepancy alarm
0 Disabled
1 Enabled
Bit 15 Accumulated KA alarm
0 Disabled
1 Enabled
Write internal memory: Bit 0 = 1 of FB16h , Bit 1 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
F4 Unsigned 16 bit integer Disconnector with fuses
Bit 2 1 0 Reserved
Bit 3 Disconnector with fuses?
0 Yes
1 No
Bit 9 8 7 6 5 4 Reserved
Bit 11 10 Reserved
Bit 15 14 13 12 Reserved
Write internal memory: Bit 0 = 1 of FB16h , Bit 2 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
F5 Unsigned 16 bit integer Sampling frequency, VT connection, Undervoltage trip, Undervoltage alarm,
Overvoltage trip, Overvoltage alarm.
Bit 1 0 Reserved
Bit 2 Sampling frequency
0 60 Hz
1 50 Hz
Bit 4 3 VT connection
0 0 None
0 1 Wye
1 0 Open delta
1 1 Delta-delta
Bit 5 Undervoltage trip
0 Disabled
1 Enabled
Bit 7 6 Reserved
Bit 8 Undervoltage alarm
0 Disabled
1 Enabled
Bit 9 Overvoltage trip
0 Disabled
1 Enabled
Bit 11 10 Reserved
Bit 12 Overvoltage alarm
0 Disabled
1 Enabled
Bit 15 14 13 Reserved
Write internal memory: Bit 0 = 1 of FB16h , Bit 3 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
F6 Unsigned 16 bit integer Phase CT rating primary
Example: 100 stored as 100
Write internal memory: Bit 0 = 1 of FB16h , Bit 4 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
F7 Unsigned 16 bit integer Ground CT rating primary
Example: 100 stored as 100
Write internal memory: Bit 0 = 1 of FB16h , Bit 5 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
F8 Unsigned 16 bit integer Rating disconnector
Example: 100 stored as 100
Write internal memory: Bit 0 = 1 of FB16h , Bit 6 = 1 of FB18h
Bit 3 = 1 and Bit 8 = 1 of FB14h
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
F40 Unsigned 16 bit integer AMPS demand, KW demand, KVAR demand, KVA demand, Power factor alarm,
Power factor trip, Frequency alarm, Frequency trip, Positive/negative KW
alarm, Positive/negative KVAR alarm
Bit 11 Frequency trip
0 Disabled
1 Enabled
Bit 12 Positive / negative KW Alarm
0 Disabled
1 Enabled
Bit 13 Reserved
Bit 14 Positive / negative KVAR Alarm
0 Disabled
1 Enabled
Bit 15 Reserved
Write internal memory: Bit 2 = 1 of FB16h , Bit 0 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F41 Unsigned 8 bit integer Amps demand time period
Example: 5 stored as 5
Write internal memory: Bit 2 = 1 of FB16h , Bit 1 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F42 Unsigned 8 bit integer KW demand time period
Example: 5 stored as 5
Write internal memory: Bit 2 = 1 of FB16h , Bit 1 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F43 Unsigned 8 bit integer KVAR demand time period
Example: 5 stored as 5
Write internal memory: Bit 2 = 1 of FB16h , Bit 2 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F44 Unsigned 8 bit integer KVA demand time period
Example: 5 stored as 5
Write internal memory: Bit 2 = 1 of FB16h , Bit 2 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F45 Unsigned 8 bit integer Amps demand alarm level
Example: 100 stored as 100
Write internal memory: Bit 2 = 1 of FB16h , Bit 3 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
F46 Unsigned 16 bit integer, KW demand alarm level
multiply 10 Example: 100 stored as 10
Write internal memory: Bit 2 = 1 of FB16h , Bit 4 = 1 of FB1Ch
Bit 3 = 1 and Bit 8 = 1 of FB14h
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE
SMPR-1 MEMORY MAP DATA FORMATS (Revision 21/03/2000 Software 19/06/1999 &
04/02/2000)
FORMAT
TYPE DEFINITION
CODE