报文长度不固定,如何控制PLC接收信息?【RS-485专业讲解】系列7
通过时间方式判断进行数据的接收的两种方式,我已经详细的向大家介绍了固定长度报文情况下PLC如何接收数据,本文我就向大家介绍一下当报文长度不固定的情况下我们该如何控制PLC接收信息。
首先我们回顾一下当协议中报文的长度不固定的情况下,我们是通过判断字符间的空闲时间的方式来判断一段报文的起始,通常是字符与字符之间空闲时间超过3.5个字符传输时间,我们就认为一段报文接收完毕,之后接收到的报文就是一段新的报文。下面我们来看看这个程序如何写。
图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
以上就是报文长度不固定方式下,接收数据的程序,下面我们从电脑向PLC发送两组长度不同的报文 AA 11 22 BB 23 45 C1和AA11 22 BB 23 45 C1 54,看看效果。
图2-3
图2-4
图2-5
图2-6
由上面两次操作我们可以看到当报文长度不固定的时候电脑向PLC发送几个字符PLC就会接收几个字符。
作者:技成培训网(马乐)
版权为技成所有,未经同意盗取必究!
——END——
RS-485通讯:如何对固定长度报文方式来编程?这种专业好文不多见
上一篇文章我们搞清楚了固定长度报文,和不固定长度报文通过时间来判断报文的起始与结束的原理,本文我们先对固定长度报文方式进行编程。
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#10011100 =16#9C
图1-2
1) 不使用中断条件作为检测信息的开始。第1位。SM87.1=0
2) 当SMW92中的定时时间超出时终止接收。第2、位。SM87.2=1
3) 定时器是信息定时器。第3位。SM87.3=1
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 = 6
由于我们设定SM87.3为1确定使用固定报文长度方式,假设报文长度为6个字符,那么在9600bps通讯速率下1个字符(10个位)的接收需要1.04ms,6个字符的接收就需要6.24ms,因此将SMW92设定成6表示从接收到第一个字符开始后6ms停止接收信息,同时空闲4ms后(SMW90 = 4)接收到的第一个字符是新信息的开始。
SMB94 = 255
SMB94定义接收缓冲区大小,此处定义为最大255字节。(注:接收缓冲区是用来存放接收到的数据的区域,最大255字节,大家可以根据通讯情况自由定义。)
2、程序编写
图2-1
图2-2
以上就是固定报文长度方式下接收数据的程序,此处我们设定的报文长度是6个字符,下面我们通过串口调试软件给PLC发送7个字符长度(AA 1122 BB 23 45 C1)的一个报文看看会发生什么情况。
图2-3
图 2-4
由图 2-4状态表监控结果我们可以发现我们只能接收到6个字符,第7个字符C1并没有接收到。
(未完待续)
作者:马乐
技成培训原创,未经授权不得转载,违者必究!
——END——
相关问答
plc怎么输入长度尺寸?
PLC测量长度一般都是使用电子尺或接线式编码器。电阻尺可以直接测量出绝对长度、测量精确、使用简单等特点。我用的是良石技术的LS21-E4KT电阻尺模块,将电子...
轮子周长可以随时更换(周长可以触摸屏更改),plc怎么写定长?
以前做过这项目。当时记得是一个自动定长皮带切割机。皮带传动采用变频器控制,PLC采用欧姆龙CP1E,触摸屏采用的威纶TK6070当传动运转后,输入信号从开始置位,...
plc测量钢丝绳长度的方法?
PLC测量长度一般都是使用电子尺或接线式编码器。电阻尺可以直接测量出绝对长度、测量精确、使用简单等特点。我用的是良石技术的LS21-E4KT电阻尺模块,将电子尺...
西门子200PLC编码器信号怎么转换成测量距离的长度显示和速度显示?
使用双相双输入的高速计数器(EH系列用C251等),这个计数是硬件计数的,无论方向还是脉冲计数都是自动完成,你只要在要处理的地方直接读取就可以(如转换角度值...
编码器和西门子PLC与输出长度的问题?
手动运行一米,标注编码器真有多大的码制增长。手动运行两米,标注编码器真有多大的码制增长。利用KX+B倒推系数手动运行一米,标注编码器真有多大的码制增长。...
在PLC里的扫描周期?
扫描周期是plc的一个重要指标,小型plc的扫描周期一般为十几毫秒到几十毫秒。plc的扫描周期长短取决于扫描速度和用户程序的长短。毫秒级的扫描时间对于一般工...
plc控制步进伺服电机每次长度不一致?
1、检查是不是伺服被卡住了,或者阻力明显变大,如果是那么调整机械。2、检查运行状态,看看是不是跑得不好了,如果调整PID能在保证平稳运行的情况下,还能缩...
plc的扫描周期是多少长时间?好心人告诉我?
PLC扫描周期长短与CPU运行速度、PLC硬件配置和用户程序长短有关.PLC扫描周期T=(输入—点时间*输入端子数)+(指令执行速度*指令的条数)+(输出一点的时间*...
PLC的扫描周期和什么有关系?
可编程控制器的工作过程包括两部分:自诊断及通信响应的固定过程和用户程序执行过程.PLC在每次执行用户程序之前,都先执行故障自诊断程序、复位、监视、定时等...
plc网线通讯线能用多少米?
关于这个问题,PLC网线通讯线可以使用的长度取决于多个因素,包括:1.线缆类型:不同类型的线缆具有不同的传输性能和阻抗特性,因此可以传输的距离不同。2....