1. 一台电脑监控程序及状态表,另一台电脑用串口调试助手监控串口数据。电脑,电缆,串口等都没有问题。
2. 手册上的自由口通讯例程已经做通的。
3. 我现在要做一个自由口通讯,发送和接收均是 以7e开始 以5e结束。
4. 我的程序是首先PLC发送一个数据包,然后接收。
5.因为人为操作串口调试助手的发送数据,所以PLC可能接收数据比较困难,所以SWB90及SWB92均有设置。
6. 现在的问题好像是RCV一直占用了自由口,串口除了接收到PLC初始化发送的一次数据外,人为的定时发送数据都不行。
程序如下:
主程序
网络1
LD SM0.1
MOVB 16#09, SMB30 //初始化自由口
MOVB 16#A2, SMB87 // 16#B2.16#B0 均设置过,没有成功
MOVB 16#7E, SMB88 //起始字符
MOVB 16#5E, SMB89 ///结束字符
MOVW +5, SMW90 ///空闲超过5毫秒
MOVW 15, SMW92 ///计时器超过15毫秒
MOVB 100, SMB94 ////最大接收100个字符
ATCH INT_0:INT0, 23 /// 连接中断0到接收结束事件
ATCH INT_2:INT2, 9 /// 连接中断2到发送结束事件
XMT VB500, 0 /// 发送数据
ENI
网络2 // 新加的程序,M0.5和SM0.5一样,只是是5秒触发。程序不起作用
LD M0.5
EU
XMT VB500, 0
INT_0 RCV指令接收完成中断
网络1
LD SM0.0
XMT VB500, 0
网络2
LD SM0.0 ///新加的程序,无效
CRETI
INT_2 中断 XMT指令发送完成中断
LD SM0.0
RCV VB300, 0
根据以上是不是RCV指令一直占用了自由口?占用了为何结束不了。SMB87设置有问题?我的目的就是发送一个数据包,然后接收一个数据包。PLC没有发送数据包的时候不需要接收。
谢谢各位关注!
最佳答案
前段时间我还是在弄自由口通信,我得出的就是无论你是在执行接收还是在执行发送,设置SM87.7 这个位是很有必要的,发送信息的时候接收使能最好关闭,但是,在设置sm87.7以后,记得需要执行一次RCV或者是XMT指令。我这有一个自由口的文档,自己写的。是PLC作为主站,PC作为从站的。需要加QQ605711338传给你。
提问者对于答案的评价:
谢谢各位!
这个程序有点小问题,在之后提的问题已经说明了,就是在NOT指令后面加了RCV指令。
实际上SMB87经过了多种设置,SMB88,SMB89,SMW90,SMW92均有设置为多个不同数据,最终还是没有解决RCV指令自动停止接收的问题,是强制将SMB87等于0,这样停止接收的。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc311888.html