今天做了一下S1200与VB进行TCP通讯的实验,编程软件用的10.5版本,发现了一些问题,不知道这些现象是否正常:
1. S1200只能接收固定长度的数据
2. 一旦VB漏发或者多发(不等于TRCV的LEN)数据,接收DB块中的数据就会发生错位,后一帧数据会附加在前一帧数据里面,凑满LEN长度后整体转移到接收DB块,这样无法保证一帧数据的完整性。
3. 重启通讯(或者断开再连接),只要VB发送数据长度与LEN一致,通讯就会恢复正常。
查询了一些资料和网上的相关帖子,没找到相似的问题和解决方法,是否我在某些地方的操作或设置出现问题。如果这种现象正常的话,那么我又有下面的一些疑问:
1. 如果VB要采用自定义的协议与S1200通讯,每帧数据长度都不一致,该怎么解决?
2. S1200有自带的Modbus on TCP的驱动,它应该也是TCP通讯,它是如何处理这个问题的?
接触S1200时间尚短,可能我的理解或者程序的处理不正确,还请大家指正。