您好,欢迎访问一九零五行业门户网

plc自由口编程处理

plc做主站的时候,不管plc连接的是单从站还是多从站,主站程序都应该考虑到从站会发生故障,从站故障有两种,一种是有故障,但不影响和主站通讯,另一种是有故障,不能和主站通讯,例如从站掉电,通讯线故障或者从站本身故障导致的不能和主站通讯。
对于后者,主站在发送后,从站是不会回复数据的,主站不能等,而应该结束rcv接收状态,然后发送,那么为什么和如何结束rcv接收状态呢?
一 为什么要结束rcv接收状态呢?
发送指令xmt将数据发送出去就完事,而接收rcv不一样,一次完整成功的rcv过程需要以下步骤:
1 使能位:sm87.7=1/sm187.7=1,执行rcv的时候会检查该位
2 执行rcv
3 等待消息起始条件
4 接收信息
5 等待消息结束条件
6 退出接收状态
rcv指令启动后并不一定就接收消息,如果消息起始条件没有达到,那就一直处于等待接收的状态;
如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行xmt指令,就不会发送任何消息。
所以要结束接收rcv接收状态后才能执行xmt。
二:如何结束rcv接收状态?
手册上给出6种结束条件:
1.结束字符检测
2.字符间计时器
3.信息计时器
4.最大字符计数
5.校验错误
6.用户终止
方法1:前4种条件在从站发生通讯故障后就失效了,必须要配合用户终止
一般执行xmt后,在发送完成中断里执行rcv,同时启动定时中断或者启动定时器或者执行开始间隔时间bitim,计时时间到复位使能位sm87.7/sm187.7,同时执行rcv,这样结束rcv指令,比如定时中断里发送:
ld sm0.0
r sm87.7, 1
rcv vb0, 0
s sm87.7, 1
ld sm0.0
dtch 10
ld sm0.0
xmt vb100, 0
方法2:设置:smb87=16#9c, smw90/smw190=0,smw92/smw192=x
执行rcv指令x毫秒后自动结束接收状态。
如果用的是字符中断方式接收信息,那么将中断分离后即可发送
dtch 8
xmt vb100, 0
用结束字符作为结束条件的时候,如果与设备的通信断了,cpu就会停滞在接受状态,之后的发送也不成功了,通讯也彻底断了。
后来别人教我在发送前面用复位smb87.7结束发送就好了。
自由口用rcv接收,接收到的数据总是一部分,不全,反复检查做实验,才发现原来是结束的定时器时间设短了,导致数据没有接收完,rcv就结束了,增大了时间,一切就ok了。
刚做自由口编程时,一下载下去,编程软件就无法和cpu通信了,后来打到停止状态,cpu才恢复ppi,可以正常监控,下载了。
其它类似信息

推荐信息