(六)串口无协议读写指令RXD、TXD
有了串品读写,PLC就可以发信息给上位机,这样可以做许多有意思的事情,比如写个小游戏,可以让PLC做逻辑,上位机程序负责更新界面。
RXD为读串口,TXD为写串口。
下面的程序中,A526.01的作用如下:
当通讯突然中断时,缓冲区内的数据一直保存,事实上,RXD指令并不负责清空缓冲区,换句话说,缓冲区内始终为接收的数据。
所以,如果遇到这种问题,你可以执行A526.0或者A526.1为ON,进行串口初始化,这样你可以清空缓冲区。
当使用的是串口1时,A392.14当满足接收条件时置为ON(这个条件就是串口设置面板中的“结束码”中设置的条件)就代码此时串口已经收到了数据了,你可以查看内存D0验证。
当满足了发送条件时,你会看到A392.13为ON,此时会把D10起头的2个字发送出去。注意控制字#101中包含了一条信息就是发送口为串口1
代码:
勇哥花了2天都没有调通上面的程序,因为我发现A392.13,A392.14始终为OFF!
我怀疑过线是不是有问题?是不是指令哪里有问题?是不是串口设置有问题?就差没怀疑自己人品有问题了。
勇哥使用的是USB转串口线,品牌Z-TEK 使用芯片FT232,这里强调的是,这种USB转232是兼容性最好的一款,事实证明这条线是绝对没有问题的!
官方罗列了串口读写指令没有效果的原因:
① 观察串口 COM 指示灯,如果灯不闪:
a. 检查和第三方设备通信电缆制作是否正确,管脚接线是否有断线或者是短路;
b. 对方设备的串口数据是否有发送。
② 如果串口 COM 指示灯会亮,说明对方设备有数据发送且接线正常:
a. 检查串口模式设置为 RS232C 模式;
b. 检查串口的 DIP 开关设置;
c. 核对 RXD 指令的控制字设置为无 CS,DR 信号控制;
d. 检查 RXD 指令的执行条件,如果使用的是接收完成标志位,核对串口设置中的起始码,结束码,字节数与第三方的发送数据是否是一致,可以使用电脑利用串口调试软件来接收第三方发送的数据来进行验证;
e. 检查串口错误标志位和错误代码。
其实,勇哥测试串口收发的时候遇到无效果的原因并不是上面罗列的这些,而我设置串口的时候,并没有把设置保存成功!
正确的做法是在设置好串口参数后,使用下图所示的“到PLC”
注意一定要勾选“设置”项目,不然你刚才修改的PLC串口1的设置就没有保存成功!
错误的方式是使用工具栏上那个下载到plc按钮,它的下载选项里面不包含“设置”选项的。
之前勇哥之所以串口读写不成功的原因是因为使用这个下载功能,造成串口设置实际上没有保存成功,每天重新上电后其实PLC的串口设置还是原来的设置,没有变化的。
注:后来发现这个“传送到plc”就工具栏上的划线的功能,而不是右边没划线的。之前一直都是用错了!
程序测试效果
(1)读串口助手发来的字符串
注意串口内容发送字符串最后加一个CR符,即回车
查看plc内存,看到收到了串口助手发来的字符。
如果想重新再收发,你得接下1.09,置位A526.01清除串口缓存。
(2)向串口助手发送字符
先按下1.09, 这时候内在数据清空,串口缓冲也清空,然后你会发现A392.13为on,这时候证明发送条件已经满足了。
我们先人工初始化d10的内存数据
打开串口助手,配置好参数,然后按下1.07
我们观察到串口助手显示收到4个字节,收到字符ba
为什么不是ab,而是ba呢?这是因为在TXD的控制字#101里面,有一条是发送时设置低字节先发送。这个要搞明白就要知道控制字的详细设置。
另外,不知道你注意到没有,勇哥在发送到串口助手时,这个串口助手不一样哦?!
为什么?
因为我用接收实验时那个串口助手,收不到plc串口发出来的内容!!!又多告诉你们一个秘密!这就是为什么许多童鞋搞不定串口发送的原因!
这个原因勇哥想了一下,可能是控制字的设置中的一些内容,某些串口助手编程时其默认条件中没考虑到。
所以各位童鞋,有多个不同的串口助手软件是很重要的哦!
另外,TXD命另有一篇教程请参看下面的贴子。
OMRON_CP1H串口无协议通讯(TXD指令)
串口收发还有一对指令是RXDU,TXDU。
RXDU,TXDU用于读写串口通讯单元,这个是附加模块,例如CJ1W-SCU41
这个模块勇哥截了个图,如下。
引用官方的介绍如下,涨下姿式:
看了介绍,可能这个模块比起主机的串口来说可能通讯距离是个优势吧。说错了的话请懂的童鞋指正。
1.2及1.3以上的版本,CJ一个机架最多可带10块SCU;另外,CP1H最多可带2块。 2.0版本的SCU,除了支持CJ、CP1H外,还支持NJ上。 ②支持协议的区别 1.2版本以上的SCU模块相比1.2以下版本支持了更多协议(Host link,NT Link,无协议,串口网关,Modbus-RTU从站(仅V1.3)…等。 ③速度区别 >V2.0——230,400bps ≥ V1.2 及V1.3——57,600bps <v1.2——38,400bps ④其他区别 2.0版相比1.3版,增加了高速处理的无协议指令(DRXDU、DTXDU),可通过中断信号来调用中断任务 RS485通信距离增加到1200m; 且RS422A/485较以往采用了新的接线头,接线更方便。 另外,何为422呢,当你485只接两根线的时候,称为422,和485之间只是接线方法不同。 更多详细内容请参考e-Learning视频,网址:http://www.fa.omron.com.cn/elearning/video/946
附件1: TXD指令的命令字
附件2:RXD指令的命令字
附件3:相关的特殊辅助继电器
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
其它相关文章:
欧姆龙cp1h常用指令学习(十五)多重互锁指令MILH,MILC
欧姆龙cp1h常用指令学习(四)串口无协议读写指令TXD,RXD

