微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 自由通讯口如何正确接收结束消息

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

时间:12-19 来源:互联网 点击:
本文以自由通讯口接收结束消息方式为例,通信伙伴的数据是一帧一帧发送的,比如通信伙伴每隔 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个字节的数据呢(缓冲区溢出后前面的数据被覆盖)?可以考虑设置“最大字符计数”为结束消息方式,将数据分为多个部分依次进行接收。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top