技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 西门子PLC > 【玩转485】5.数据的接收3【连载5】

【玩转485】5.数据的接收3【连载5】

林慧玲 发布于2015-02-13 15:41 2411 0 标签:通讯

上一篇文章向大家介绍了通过起始字符和结束字符判断一段报文的开始和结束,本文我们向大家介绍如何利用时间判断的方式来接收报文。


为什么要使用时间的方式来对报文进行判断呢?其实大家可以设想这样一种情况,当我们使用起始字符和结束字符的方式来判断一段报文的开始与结束,如果在报文中间出现了起始字符或者结束字符,将会发生什么情况能?相信看过上一篇文章的朋友肯定可以发现其中的缺点,那么解决这些缺点的方法就是通过时间来判断报文的起始与停止。

首先我们要明确报文一般分为固定长度不固定长度两种形式。

1 报文长度固定

.jpg
图1-1

当有些通讯协议中报文长度固定的情况下PLC接收每段报文所需的时间都是一样的,这样我们就可以根据报文的长度算出来接收报文所需的时间,然后PLC就可以从接收到个字符开始计时,计时达到设定时间就算一段报文接收完成。
这里我们打个比方,如果是通讯速率是9600bps,每个字符10个位(1个起始位、1个停止位、8个数据位、无效验位)那么我们接收一个字符就需要(1000/9600)*10≈1.04ms。如果每个报文6个字符那么PLC接收这段报文就需要6*1.04 = 6.24ms,这时我们就可以在PLC中设定从开始接收报文起6.24ms后停止接收报文,然后从新进入等待接收报文的状态。

2 报文长度不固定

.jpg
图2-1
在有的协议中报文的长度是不固定的,那这种情况下我们应该如何判断一段报文起始和停止呢?其实这个也是比较简单的当报文中字符的数量是不固定的时候,我们可以通过字符与字符之间的时间间隔来进行判断,通常情况是3.5个字符时间。那么在9600bps的通讯速率,每个字符10个位的情况下就是3.5*1.04 = 3.64ms的时间中如果PLC没有接收到数据,就认为一段报文已经接收完成,下面再接收到的数据就算一段新报文的开始。

这里可能有的朋友会有疑问,如果两段报文的间隔小于3.5个字符时长那不就出问题了么?其实有这种担心的朋友主要是对485通讯收发数据的方式不够了解。由于485通讯是半双工通讯方式,所以一般都是A站点接收一个B站点发送的报文,然后给B站点发送一个报文,B站点接收到A站点发送的数据后再返给A站点一个报文。如图 2-2

.jpg
图 2-2

因此当PLC接收到一个报文后不是立刻接收下一个报文,而是先发送一个报文出去,由于发送一组报文的时间肯定大于3.5个字符时长,所以不会存在被接收的两个报文之间的时长小于3.5个字符长度的情况。

本文就先给大家普及一下基本概念,下一篇文章我们来具体研究一下程序的编写。

作者:马乐
版权为技成所有,未经同意,盗取必究!

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

通讯

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签