SEQ,称为序列号(SEQUENCE),用于在报文帧传输过程中上下行报文序号的区别,如IEC104协议定义如下:
图1 IEC104协议I帧序列号定义
如国网376.1协议定义如下:
图2 国网376.1协议序列域SEQ定义
还有,IEC102协议、DLMS协议等等都对传输帧的序列进行的定义。
帧序列SEQ标识发送帧和接收帧的序号,它的定义有如下好处:
1. 在一问一答应用中,标识接收帧对应的是那一条发送帧。
2. 能够实现发送、接收多窗口的应用,如在多问多答的场景。
3. 如果对SEQ的序列值进行分段,可以实现一台设备对多个主站的采集支持(这点需要多轨软件的支持)
但在实际的应用中,我们发现不少厂家对SEQ的理解并不深刻。不少厂家或者不支持SEQ、或者对SEQ的支持考虑的不够周全,主要表现在以下几点:
1. 不考虑SEQ的序列增加,每次都是用初始值,这将导致上送的报文并不是对方想要的报文。
2. SEQ递增到变量值最大值时应该如何回归变量?
3. 在多主站系统中,同一个设备支持多个主站系统,主站系统的seq变量应该如何变动,设备变量应该如何变化才能在多主站系统中不会引起seq变量的混乱?
根据以上厂家出现的问题和我们的切身体验,我们建议在与SEQ相关的协议中增加一句话:SEQ的变动指针对一次通信流程,在下一次的通信流程中,SEQ变量初始化到起始值。