...
IEC 104 Protocol stack configuration
The IEC 104 protocol stack configuration specifies communication parameters and is a collection of entries containing information about OSI Transport and OSI Application layers objects.
Each entry is comprised of attributes that describe the object. All the configuration data are structured using JSON.
Each entry shall be mapped with the corresponding configuration function in the chosen implementation protocol library.
Attributes definition
Attribute | Description | Expected values | Mandatory |
---|---|---|---|
name | this identifies the protocol stack | iec104client, iec104server, tase2client, tase2server, 61850client, 61850server, etc... | Yes |
version | version number of the configuration file | 2 digits x.y => x = major change, y = minor change | Yes |
bind_on_ip | |||
port | |||
tls | activation of TLS (see tls configuration chapter for details) | TRUE, FALSE, default = FALSE | No |
k_value | Maximum number of outstanding (unacknowledged) APDU's at a given time | default = 12 | No |
w_value | Acknowledge the reception latest after this number of APDU's | default = 8 | No |
t0_timeout | time out of connection establishment | default = 10 | No |
t1_timeout | time out for send or test APDU's | default = 15 | No |
t2_timeout | time out for acknowledges in case of no data messages (t2 < t1) | default = 10 | No |
t3_timeout | time out for sending test frames | default = 20 | No |
open_new_path | |||
bind_on_active | |||
disc_on_iframe | |||
orig_size | |||
orig_addr | |||
ca_asdu_size | |||
struct_addr | |||
asdu_size | |||
default_class | |||
time_sync | |||
comm_exec_timeout | |||
comm_recv_timeout | |||
auto_comm_actcon | |||
auto_comm_actterm | |||
cmd_block_sel | |||
abs_time | |||
tzsource | |||
set_wday | |||
tsiv | |||
spon_in_passive | |||
reset | |||
filter_orig | |||
lifeact | |||
startup | |||
active |
Configuration JSON file structure
Code Block | ||
---|---|---|
| ||
{
"protocol_stack": {
"name": "iec104server",
"version": "1.0",
"transport_layer": {
"bind_on_ip": "FALSE",
"port": 2404,
"tsecurity": "NONE",
"k_value": 12,
"w_value": 8,
"t0_timeout":10,
"t1_timeout": 15,
"t2_timeout": 10,
"t3_timeout": 20,
"open_new_path": "TRUE",
"bind_on_active": "FALSE",
"disc_on_iframe": "TRUE"
},
"application_layer": {
"orig_size": 1,
"orig_addr": "0",
"ca_asdu_size": 2,
"ioaddr_size": 3,
"struct_addr": "FALSE",
"asdu_size": 0,
"default_class": "CLASS1",
"time_sync": "FALSE",
"comm_exec_timeout": 20000,
"comm_recv_timeout": 5000,
"auto_comm_actcon": "FALSE",
"auto_comm_actterm": "TRUE",
"cmd_block_sel": "FALSE",
"abs_time": "TRUE",
"tzsource": "OS",
"set_wday": "TRUE",
"tsiv": "IGNORE",
"spon_in_passive": "TRUE",
"reset": "TRUE",
"filter_orig": "FALSE",
"lifeact": "TRUE",
"startup": "FALSE",
"active": "TRUE"
}
}
} |
...