Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

AttributeDescriptionExpected valuesMandatory
namethis identifies the protocol stackiec104client, iec104server, tase2client, tase2server, 61850client, 61850server, etc...Yes
versionversion number of the configuration file2 digits x.y => x = major change, y = minor changeYes
bind_on_ipbind on a dedicated local IP addressTRUE, FALSE, default = FALSENo
srv_ipServer IP addressIP address, machine's default IP for a given interfaceNo
portThis defines the TCP/IP port to be used by the server.default = 2404No
tlsactivation of TLS (see tls configuration chapter for details)TRUE, FALSE, default = FALSENo
k_valueMaximum number of outstanding (unacknowledged) APDU's at a given timedefault = 12No
w_valueAcknowledge the reception latest after this number of APDU'sdefault = 8No
t0_timeouttime out of connection establishmentdefault = 10No
t1_timeouttime out for send or test APDU'sdefault = 15No
t2_timeouttime out for acknowledges in case of no data messages (t2 < t1)default = 10No
t3_timeouttime out for sending test framesdefault = 20No
openorig_new_pathbind_on_activeaddrOriginator Addressdefault = 0Nodisc_on_iframeorig_sizeorig_addr
ca_asdu_sizestruct_addrasdu_sizedefault_classtime_synccomm_exec_timeoutcomm_recv_timeoutauto_comm_actconauto_comm_acttermcmd_block_selabs_timesize of "Common Address of ASDU"default = 2 (byte)No
ioaddr_sizesize of 'Information Object Address'default = 3 (byte)No
asdu_size

maximum ASDU size in transmission direction, if set to "0" => maximum possible value is automatically used.

default = 0 (byte)No
time_syncIf set on "TRUE" this parameter allows to synchronize the clock of the local computer by the server. If set on "FALSE", the clock is not synchronized.TRUE, FALSE, default = FALSENo
comm_exec_timeoutDefines the command execution monitoring timeout in milliseconds. The default setting is 20 seconds.default = 20 seconds (20 000 ms)No
comm_recv_timeoutThis parameter defines the highest allowable deviation of received command time tag and local clock. If the difference is too big, command is ignored.default = 0 (disabled)No
tsivspecifies what to do with a time stamp marked as 'invalid'remove, process, default = removeNo
resetreset/restart the system on C_RP_NA_1 ASDU (=TRUE) or not (=FALSE)TRUE, FALSE, default = FALSENo
filter_origaccept commands only originated from an authorized originator (=TRUE) or accept all originators (=FALSE)TRUE, FALSE, default = FALSE
filter_listList of Authorized Originators
Notzsourceset_wdaytsivspon_in_passiveresetfilter_origlifeactstartupactive

Configuration JSON file structure

Code Block
languagejs
{
  "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"
    }
  }
}

...