你的位置: 首页 > 电力配电 > 现场总线

自由通讯口如何正确接收结束消息

2016-10-26 12:01:53 | 人围观 | 评论:

本文以自由通讯口接收结束消息方式为例,通信伙伴的数据是一帧一帧发送的,比如通信伙伴每隔  100ms  发送一帧  01  02  03  04  05  给S7-200,S7-200接收这些数据,那么我们有几种方法可以正确接收到这些数据:
1、指定空闲线时间(可以理解为两帧数据之间的间隔)为50ms(小于发送间隔时间100ms),则当发送完第一帧  01  02  03  04  05  后,启动空闲时间检测,超过50ms即认为一帧数据结束,准备接收下一帧数据。这可以看做是“字符间定时器”结束消息方式。
2、指定接收结束字符为05,则当接收到  01  02  03  04  05  后,即收到结束字符05后,认为一帧数据结束,再接收到的  01  02  03  04  05  认为是下一帧数据,依此类推。这可以看做是“结束字符检测”结束消息方式。
3、指定接收数据长度为5,则收到  01  02  03  04  05  (5个字符)后,即认为一帧数据结束,再接收到的  01  02  03  04  05  认为是下一帧数据,依此类推。这可以看做是“最大字符计数”结束消息方式。
4、其他条件还包括“消息定时器”、“奇偶效验错误”、“用户终止”等结束消息的方式,或者这些条件的组合作为结束消息的方式。
那么在应用中选择哪种结束消息的方式,要具体情况具体分析。这话说起来很空洞,但确实如此,因为自由口通信本身就决定了,不同的通信对象间的数据帧格式(或协议)是设备厂家自由定义的,这就要求事先充分理解通信协议,并在此基础上进行选择。
另外一方面,如果能灵活掌握这部分内容,还可以解决一些实际问题。比如大家都知道数据要接收到接收缓冲区,而接收缓冲区的大小是有限制的(255个字节),那么怎么能够接收到大于255个字节的数据呢(缓冲区溢出后前面的数据被覆盖)?可以考虑设置“最大字符计数”为结束消息方式,将数据分为多个部分依次进行接收。




标签:

相关内容推荐: