本文主要是IEC104协议的参数的定义及个人的理解,如有错误请指正
重要参数
104规约规定了两个参数K和W,其取值为1到32767,其中K表示发送方在有K个I格式报文未得到对方的确认时,将停止数据发送;W表示接收方最迟在接收W个I格式报文后应发出认可。104规约规定K和W的默认值分别为12个APDU和8个APDU,推荐关系式为w<k*2/3。
在实际中,K和W的具体取值可以根据TCP连接双方的数据通信量加以确定。对于从站RTU来说,每收到一个调度端的I格式报文都应立即响应,其W的取值实际上为1,由于RTU端可以循环向主站发送遥信、遥测等信息,因此K的取值与其循环发送的定时周期有关,通常12到20个APDU就足够了;对于主站端,由于不停接收RTU数据,因此应及时地给以确认,通常W取小于8个APDU的值。
当未确认I格式APDU达到K个时,发送方停止发送。如果t1超时仍未收到确认,则重启链路。
个人理解:从站(调度站)开发时需要关注K值,主站(厂站)开发时需要关注W值。
超时定义
为了能对TCP连接进行检查和维护,104规定了几个超时时间:t0、t1、t2、t3。它们的取值范围为1~255s,准确度为1s。
t0规定了主站和从站建立一次TCP连接的最大允许时间,即主站端一直发出连接请求,在t0时间内得不到连接建立成功的状态下,要向应用层提示,说明无法建立连接,一般可设置进行多次连接,当每次连接都超过t0无法建立成功时都应给出提示。默认值30s。
t1规定发送一个I格式报文或U格式报文后,必须在t1的时间内得到接收方的认可,否则发送方认为TCP连接出现问题并应重新建立连接。这个过程是双向的,即对于厂站端和主站端当这个过程任一方发生时,两方的连接都需关闭,重新建立连接。默认值15s。
t2规定接收方在接收到I格式报文后,若经过t2时间未再发送新的I格式报文,则必须向发送方发送S格式帧对已经收到的I格式报文进行认可,显然t2必须小于t1。默认值10s。
t3规定主站或从站每接收一个I,S,U报文将重新触发计时器t3,若再t3内未能接收到任何报文,将向对方发送测试链路报文(U帧)。发送测试帧后,若在t1时间内没有收到测试确认,则连接关闭,若达到t3时间,则再次发送测试链路报文(U帧)。默认值20s。
个人理解:
- 从站
- 从站作为服务器端等待连接的话,需要实现:t1和t3;
- 从站作为客户端连接主站的话,需要实现:t0、t1和t3;
- 主站
- 主站作为客户端连接时,需要实现:t0、t2和t3;
- 主站作为服务器端等待连接时,需要实现:t2和t3;