当前位置: 主页 > PLC控制

西门子315-2PN/DP以太网通讯 数据接收位错位

在西门子315-2PN/DP与PC通讯时候发现将通讯程序放在OB1中,如果通讯发送TSEND速率过快(比方10ms发送一次)或者外部干扰等原因会造成通讯程序TRCV接收位发生错位的情况,详细情况见图。
当前报头报尾以7B7D来定义,如果考虑到外部干扰强制性以7B为首位接收字节如何进行设定,如果无法进行设定如何通过编写程序实现?

图片说明:

西门子315-2PN/DP以太网通讯 数据接收位错位0bfb6b0d8b084c17c1fa6a84c9e477FC cBFac5b1324e99dd6b14dc513827461a8a1dca26d28950bffbf2aae552d6CE10 西门子315-2PN/DP以太网通讯 数据接收位错位西门子315-2PN/DP以太网通讯 数据接收位错位

最佳答案

这个问题以前也遇到过,发生这种情况需要重启CPU比较麻烦,所以可以以下两种解决方案:
1、每次收到的数据首先校验DB块第一个字节是否是报文头,如果不是就丢弃让PC重发,或者尝试重新建立连接
2、写个程序从接收DB块查找报文头在那个字节,从报文头所在的字节开始把数据取出放在另一个DB块中(比如你现在的程序接收字节数是13,假如接收的数据报文头在第5个字节,那么把接收的数据从第五个字节开始放在另一个DB块的第一个字节,以此类推,接收数据的第13个字节就应该存放到另一个DB块的第9个字节,接收DB块的第1个字节放在另一个DB块的第10个字节;……接收DB块的第4个字节放在另一个DB块的第13个字节)

提问者对于答案的评价:
重新建立链接倒是较为简单的方式

  • 关注微信

猜你喜欢

微信公众号