1.关于APDU的定义
typedef IEC104_APDU
{
uchar startByte; /*启动字节68H*/
uchar lengthOfAPDU; /*APDU信息体总长度,最大为255*/
uchar ctrlArea[4]; /*控制8位数组*/
uchar asdu[249]; /*最大长度249(255-1-1-4)*/
} IEC104_APDU;
2.控制域的定义
3种控制域格式
I格式(信息传输)
S格式(编号的监视功能)
U格式(未编号的控制功能)
控制域第一个八位位组的第一位比特 = 0 定义了I 格式, I格式的APDU常常包含一个ASDU. I格式的控制信息如图6所示
比特 8 7 6 5 4 3 2 1
----------------------------------------------------------
| 发送序列号 N(S) LSB 0| 控制域1
----------------------------------------------------------
|MSB 发送序列号 N(S)
| 控制域2
----------------------------------------------------------
| 接收序列号 N(R) LSB 0| 控制域3
----------------------------------------------------------
|MSB 接收序列号 N(R)
| 控制域4
----------------------------------------------------------
IEC 2790/2000
信息传输格式类型( I格式)的控制域
控制域第一个八位位组的第一位比特 = 1 并且第二位比特 = 0 定义了S 格式. S格式的APDU只包括APCI. S格式的控制信息如图7所示。
比特 8 7 6 5 4 3 2 1
----------------------------------------------------------
| 0 | 1| 控制域1
----------------------------------------------------------
| 0
| 控制域2
----------------------------------------------------------
| 接收序列号 N(R) LSB 0| 控制域3
----------------------------------------------------------
|MSB 接收序列号 N(R)
| 控制域4
----------------------------------------------------------
IEC 2790/2000
信息传输格式类型( S格式)的控制域
控制域第一个八位位组的第一位比特 = 1 并且第二位比特 =1 定义了U格式. U格式的APDU只包括APCI. U格式的控制信息如图8所示。在同一时刻,TESTFR, STOPDT 或 STARTDT中只有一个功能可以被激活。
比特 8 7 6 5 4 3 2 1
----------------------------------------------------------
| TESTER STOPDT STSRTDT | 1 | 1| 控制域1
---------------------------------------------| | |
| 确认|生效 确认|生效 确认|生效 | | |
----------------------------------------------------------
| 0
| 控制域2
----------------------------------------------------------
| 0 0| 控制域3
----------------------------------------------------------
| 0 | 控制域4
----------------------------------------------------------
信息传输格式类型( U格式)的控制域
发送序列号N(S)和接受序列号N(R) 的使用与ITU-T X.25定义的方法一致。 为了简化起见,附加的次序如图9 至图12所示。
两个序列号在每个APDU和每个方向上都应按顺序加一。 发送方增加发送序列号而接受方增加接收序列号。当接收站按连续正确收到的APDU的数字返回接收序列号时,表示接收站认可这个APDU或者多个APDU.发送站把一个或几个APDU保存到一个缓冲区里直到它将自己的发送序列号作为一个接收序列号收回,而这个接收序列号是对所有数字小于或等于该号的APDU的有效确认,这样就可以删除缓冲区里已正确传送过的APDU。万一更长的数据传输只在一个方向进行,就得在另一个方向发送S格式,在缓冲区溢出或超时前认可APDU。这种方法应该在两个方向上应用。在创建一个TCP连接后,发送和接收序列号都被设置成0。
控制站等同于客户(连接者),被控站等同于服务器(监听者)
104规约报文顺序
一般而言,控制站连上被控站后,首先应当激活被控站
阅读(2521) | 评论(0) | 转发(0) |