首先我们回顾一下当协议中 文的长度不固定的情况下,我们是通过判断字符间的空闲时间的方式来判断一段 文的起始,通常是字符与字符之间空闲时间超过3.5个字符传输时间,我们就认为一段 文接收完毕,之后接收到的 文就是一段新的 文。下面我们来看看这个程序如何写。
1 、寄存器设定
SMB30 = 2#00001001=16#9
图1-1
1)自由口模式。第0、1位。SM30.0=1、SM30.1=0
2)通讯速率9600bps。第2、3、4位。SM30.2=0、SM30.3=1、SM30.4=0
3)每个字符的数据位是8位。第5位。SM30.5=0
4)不选用奇偶效验。第6、7位。SM30.6=0、SM30.7=0
SMB87 = 2#10010100 =16#94
图1-2
1) 不使用中断条件作为检测信息的开始。第1位。SM87.1=0
2) 当SMW92中的定时时间超出时终止接收。第2、位。SM87.2=1
3) 定时器是内部字符定时器。第3位。SM87.3=0
4) 使用SMW90的值检测空闲状态。第4位。SM87.4=1
5) 不检测结束字符。第5位。SM87.5=0
6) 不检测起始字符。第6位。SM87.6=0
7) 允许信息接收功能。第7位。SM87.7=1
注:第0位为无效位不使用,永久为0。
SMW90 = 4
将SMW90设定成4表示 文间空闲时间大于4ms后接收的第一个字符是新信息的开始。
SMW92 = 4
由于我们设定SM87.3 = 0确定使用 文长度不固定方式,在9600bps通讯速率下1个字符(10个位)的接收需要1.04ms,3.5个字符的时间需要3.64ms,因此将SMW92设定成4表示当字符与字符之间的空闲时间超过4ms时停止接收信息(注:SMW92不支持小数),同时空闲4ms后(SMW90 = 4)接收到的第一个字符是新信息的开始。
SMB94 = 255
SMB94定义接收缓冲区大小,此处定义为最大255字节。(注:接收缓冲区是用来存放接收到的数据的区域,最大255字节,大家可以根据通讯情况自由定义。)
2、程序编写
图2-1
图2-2
图2-3
图2-4
图2-5
图2-6
由上面两次操作我们可以看到当 文长度不固定的时候电脑向PLC发送几个字符PLC就会接收几个字符。
版权为技成所有,未经同意盗取必究!
——END——
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!