...
To set the bits of "status" byte (SCO for ASDU 45,58; DCO for ASDU 46,59; RCO for ASDU 47,60; QOS for ASDU 48..50,61..63), the flags A (0.bit), B (1.bit) .. H (7.bit) are used, except the bits, which are directly set by the variable value (SCO bit 0, DCO and RCS bits 0-1). Having received a response (positive/negative), the A .. H flags are set according to the bits of the "status" byte.
When sending commands (ASDU 45-64), the value of 6 [Activation] is sent as a CauseOfTransmission. The expected response from the controlled station depends on the Command Confirm parameter. There are the following possibilities:
- writing is successful if the packet with RSN confirming the SSN packet with the write command
- writing is finished, if there is a response with CauseOfTransmission=7 [Activation Confirmation] and/or with 10 [Activation Termination]. Success/failure depends on the setting of the P/N bit in CauseOfTransmission.
...
For all the stations with a defined synchronization (see the article below), an ASDU type 103 [Clock synchronisation command] with CauseOfTransmission=6 [Activation] is sent, and a reply (depending on the Command Confirm parameter) is expected.
Then a sequence of 0 up to N I-frames with ASDU 100 [Interrogation Command] and ASDU 101 [Counter Interrogation Command] is sent, both with CauseOfTransmission=6 [Activation]. The I-frames are sent for each station with at least one input I/O tag (i.e. Ai, Di, Qi, Ci). As a response, there is expected (in any order):
...
- I/O tag address is mapped to the Information object address, i.e. it has 3 bytes and must be within the range of 0..16777215. It can be specified as a decimal number or as a hexadecimal number with a hash at the beginning (e.g. #0A).
The I/O tag with an address starting with %IGNORE will be ignored. - Input tags must be of particular types (Ai, Ci, Di, Qi) for received ASDU, see table 1 and also table 2 in the balanced mode.
- For a particular type of output tag (Ao, Dout, Co), it is necessary to set an ASDU type, that has to be used, see table 2.
- Archive for providing historical values: if the client asks for historical values through ASDU 250, the server sends:
- the values of the historical value specified by this input entry field,
- if the input entry field is not filled, then the values of the historical value that archives the I/O tag,
- if the specified historical value does not exist, then the values of the I/O tag that archives the control object of the specified I/O tag,
- if the control object does not exist (or the archive is not available), the server returns an error.
...