SPA-bus protocol
Introduction
SPA-bus = Strömberg Protection Acquisition bus
SPA-bus is a fieldbus protocol used in substation automation. One master and many slaves. It's ASCII based.
SPA-bus was developed by Strömberg in Finland (now ABB). It's used mostly in ABB protection relays and substation automation products.
Physical layer
Usually a RS232 (V.24) serial connection.
Link layer
Usually:
- 1 start bit
- 7 data bits
- 1 parity bit (even)
- stop bit
- 9600 baud
Master message
Read
Byte pos | Length | Value | Description |
---|---|---|---|
0 | 1 | 0x3e '>' | Start character |
1 | 1-3 | Address | |
.. | 1 | Message Type | |
.. | 0-3 | Channel | |
.. | 1 | Data Category | |
.. | 0-6 | Data Number | |
.. | 1 | 0x3a ':' | Separator |
.. | 2 | Checksum | |
.. | 1 | 0x0d CR | Stop character |
Write
Byte pos | Length | Value | Description |
---|---|---|---|
0 | 1 | 0x3e '>' | Start character |
1 | 1-3 | Address | |
.. | 1 | Message Type | |
.. | 0-3 | Channel | |
.. | 1 | Data Category | |
.. | 0-6 | Data Number | |
.. | 1 | 0x3a ':' | Separator |
.. | .. | New value | |
.. | 1 | 0x3a ':' | Separator |
.. | 2 | Checksum | |
.. | 1 | 0x0d CR | Stop character |
Slave message
Data
Byte pos | Length | Value | Description |
---|---|---|---|
0 | 1 | 0x0a LF | Start character |
1 | 1 | 0x3c '<' | Start character |
2 | 1-3 | Address | |
.. | 1 | 0x44 'D' | Message Type |
.. | Value | ||
.. | 1 | 0x3a ':' | Separator |
.. | 2 | Checksum | |
.. | 1 | 0x0d CR | Stop character |
.. | 1 | 0x0a LF | Stop character |
Acknowledge
Byte pos | Length | Value | Description |
---|---|---|---|
0 | 1 | 0x0a LF | Start character |
1 | 1 | 0x3c '<' | Start character |
2 | 1-3 | Address | |
.. | 1 | 0x41 'A' | Message Type |
.. | 1 | 0x3a ':' | Separator |
.. | 2 | Checksum | |
.. | 1 | 0x0d CR | Stop character |
.. | 1 | 0x0a LF | Stop character |
Negative acknowledge
Byte pos | Length | Value | Description |
---|---|---|---|
0 | 1 | 0x0a LF | Start character |
1 | 1 | 0x3c '<' | Start character |
2 | 1-3 | Address | |
.. | 1 | 0x4e 'N' | Message Type |
.. | 1 | 0x3a ':' | Separator |
.. | 1 | Negative acknowledgement code | |
.. | 1 | 0x3a ':' | Separator |
.. | 2 | Checksum | |
.. | 1 | 0x0d CR | Stop character |
.. | 1 | 0x0a LF | Stop character |
Description
Address
1-999
0 is unavailble and 900 is broadcast (for time synchronization).
Message Type
Character | Description |
---|---|
R | Read |
W | Write |
D | Data |
A | Acknowledge |
N | Negative acknowledge |
Channel
0-999, default is 0 if omittedData Category
Character | Type | Notes |
---|---|---|
I | Input data | |
O | Output data | |
S | Setting values | |
V | Variables (internal) | |
M | Memory data | |
C | Slave status (condition) | (Channel 0 only) |
F | Slave identification | (Channel 0 only) |
T | Time | (Channel 0 only) |
D | Date and time | (Channel 0 only) |
L | Last events | (Channel 0 only) |
B | Last events from backup buffer | (Channel 0 only) |
A | Alarms valid | (Channel 0 only) |
Data Number
1-999999
Negative acknowledgement code
Character | Description |
---|---|
1 | Slave is busy |
2 | Overflow |
3 | Message to complicated |
4 | reserved |
5 | Syntax error |
6 | Slave does not contain all data requested in the message |
7 | Addressed data is impossible to write or read |
8 | Data in write message not validated |
9 | Undefined negative acknowledgment |
Checksum
Hexadecimal digits of data Xor:ed. Or 'XX' if unused.
SerialMon support
- Framing.
- Decoding.
- Tracking.