HNZ connexion initialization
When the HNZ south plugin establishes a new connection wit ha with a HNZ device, it will automatically send the following messages to the device:
...
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 |
connections | array of connections | Yes | |
connections.srv_ip | IP address to remote HNZ server | IP address | Yes |
connections.port | port number to remote HNZ server | default = 6001 | No |
remote_station_addr | remote server station address | 6 bits | Yes |
Inacc_timeout | timeout before declaring the remote server unreachable (DF.GLOB.TS) | default = 180 (seconds) | No |
max_sarm | max number of SARM messages before handing over to the passive path (A/B) | default = 30 | No |
repeat_path_A | max number of authorized repeats for path A | default = 3 | No |
repeat_path_B | max number of authorized repeats for path B | default = 3 | No |
repeat_timeout | time allowed for the receiver to acknowledge a frame, after this time, the sender repeats the frame. | default = 3000 | No |
anticipation_ratio | number of frames allowed to be received without acknowledgement | default = 3 | No |
test_msg_send | test message code in sending direction | default = 1304 | No |
test_msg_receive | test message code in receiving direction | default = 1304 | No |
gi_schedule | scheduled time for General Interrogation sending | default = 99:99 (disabled) | No |
gi_repeat_count | repeat GI for this number of times in case it is incomplete | default = 3 | No |
gi_time | time to wait for General Interrogation (GI) completion | default = 255 (seconds) | No |
c_ack_time | time to wait before receving a acknowledgement for a control command | default = 10 (seconds) | No |
cmd_recv_timeout | time to wait for bytes when receiving data from the HNZ device | default = 100000 (microseconds) | No |
bulle_time | time to wait before sending a BULLE message after the previous message sent | default = 10 (seconds) | No |
south_monitoring.asset | asset name used to send the connection and gi status information to the north | default = "CONNECTION-1" | No |
Configuration JSON structure
Code Block | ||
---|---|---|
| ||
{ "protocol_stack":{ "name":"hnzclient", "version":"1.0", "transport_layer":{ "connections":[ { "srv_ip":"192.168.0.10", "port":6001 }, { "srv_ip":"192.168.0.11", "port":6002 } ] }, "application_layer":{ "remote_station_addr":12, "inacc_timeout":180, "max_sarm":30, "repeat_path_A":3, "repeat_path_B":3, "repeat_timeout":3000, "anticipation_ratio":3, "test_msg_send":"1304", "test_msg_receive":"1304", "gi_schedule":"99:99", "gi_repeat_count":3, "gi_time":255, "c_ack_time":10, "cmd_recv_timeout":100000, "bulle_time": 10 }, "south_monitoring":{ "asset":"CONNECTION-1" } } } |
...
Attribute | Description | Expected values | Mandatory |
---|---|---|---|
do_type | message type | TS, TM, TC, TVC | YES |
do_station | station address | YES | |
do_address | message address | YES | |
do_value | value | TM (do_an = TMA): [-127..127] TM (do_an = TM8): [0..255] TM (do_an = TM16): [-32768..32767] TMTS: [0..1] TC: [1..2] (01b = offon, 10b = onoff) TVC: [-255..255] | YES except in quality update readings |
do_valid | validity | valid = 0 or invalid = 1 | YES |
do_an | TM type (analogic / numeric) | "TMA", "TM8", "TM16" | TM only |
do_cg | TS source | CG = 1 or CE = 0 | TS only |
do_outdated | Outdated message (after connection loss) | up to date =0, outdated = 1 | TM and TS only |
do_ts | timestamp | epoch timestamp in milliseconds | TS CE only |
do_ts_iv | timestamp invalid | valid = 0 or invalid = 1 (from bit HNV) | TS CE only |
do_ts_c | loss of chronology | lost = 1 else = 0 (from bit CV) | TS CE only |
do_ts_s | ts not synchronized | synchronized = 0 else = 1 (from bit S) | TS CE only |
...
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TM", "do_station":12, "do_addressaddr":71, "do_value":-15, "do_valid":0, "do_an":"TMA", "do_outdated":0 } } |
...
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TM", "do_station":12, "do_addressaddr":71, "do_value":42, "do_valid":0, "do_an":"TM8", "do_outdated":0 } } |
...
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TM", "do_station":12, "do_addressaddr":71, "do_value":420, "do_valid":0, "do_an":"TM16", "do_outdated":0 } } |
...
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TM", "do_station":12, "do_addressaddr":71, "do_valid":0, "do_an":"TMA", "do_outdated":1 } } |
...
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TC", "do_station":12, "do_addressaddr":71, "do_value":1, "do_valid":0 } } |
Example for a TVC (after receiving ACK):
Code Block | ||
---|---|---|
| ||
{ "data_object":{ "do_type":"TVC", "do_station":12, "do_addressaddr":31, "do_value":42, "do_valid":0 } } |
NB: if an attribute is not required, then it is not put in the output data object, which means that the output object structure always fits the protocol model object type.
...
Order | Attribute | Description | Expected values | Mandatory | ||
---|---|---|---|---|---|---|
0 | co_type | message type | TC, TVC | YES | ||
1 | co_addressaddr | message address | YES | 2 | co[0..255][0..7] (ADO + ADB) for a TC, [0..31] for a TVC | YES |
2 | co_value | value | [1..2] (01b = on, 10b = off) | YES |
The processing of FLEDGE commands should evolve. Below is an example of JSON format :
Example for a TC:
Code Block | ||
---|---|---|
| ||
{ "command_object":{ "co_type":"TC", "co_addressaddr":325, "co_value":1 } } |
Example for a TVC:
Code Block | ||
---|---|---|
| ||
{ "command_object":{ "co_type":"TVC", "co_addressaddr":31, "co_value":1 } 42 } |
NB: if an attribute is not required, then it is not put in the output data object, which means that the output object structure always fits the protocol model object type.
...