请讲解自由口通讯程序的几处疑问

以下是一个自由口程序,下载到PLC中正常,但是有几处疑问请各位师傅讲解,不胜感激!
 主程序
 // 网络注释
 LD     SM0.1
 MOVB   16#49, SMB30              
 MOVB   16#9C, SMB87                 
 MOVW   +100, SMW92                 
 MOVW   0, SMW90
 MOVB   21, SMB94                   
 ENI

 Network 2 
 LD     SM0.1
 ATCH   INT0, 9                     //传输完成中断
 MOVB   150, SMB34
 ATCH   INT1, 10                    //定时中断

 INT_0
 LD     SM0.0
 RCV    VB100, 0
 MOVB   250, SMB34
 ATCH   INT_1, 10

 INT_1
 LD     SM0.0
 DTCH   10
 XMT    VB0, 0

 问题一:主程序网络2为何用sm0.1?那中断程序不是只执行一次了吗?sm0.1
 导通一个周期之后断开了,后面的程序不是都不执行了吗?
 问题二:主程序网络二的SMB34的值和INT_0程序里边的SMB34值的设置有什么讲究吗?
 问题三:为何主程序里边有定时中断,中断0程序里边又来一次,实验证明去掉一个都不能正常通讯。

 

 

 

问题补充:
是不是ENI指令使得两个ATCH中断指可以一直使能,就是执行?

最佳答案

从这断程序中可以看出你对中断比较爱好,鼓励!但是这样写有点复杂了。
 一、SM0.1为开机脉冲,初始化。你这有定时,链接中断,开中断,这些只需要开机运行一次就够了。只要你不关中断,那就会一直运行中断的。
 二、其实这两个地方的SMB34没有任何联系,你放心。因为开始150ms是你开机到第一次发送的时间间隔,等到发送的时候呢,就关掉这个中断连接了。等发送完开始接收的时候,又更改了SMB34的数值,开始了接收的倒计时,然后时间到了又进入到了INT1,INT0如此循环。
     但是有几点要求,INT0里的SMB34最小值要给足接收数据的时间,否则还没结束就开始发送,绝对报错!最大值当然是不用超过255ms了。
 三、你明白我上个解答后,这你就应该能明白了。如果你把这150ms去掉根本无法开始发送,更别说结束后的接收了。250ms去掉后,要是还有开中断连接,那150ms就有开始了,报错。要是连INT0里的开中断连接都没有的话,那一个发送一个接收就结束了。
 补充、ENI是全局开放所有被连接的中断事件,但是你可以单个中断分离,如DTCH,针对的还有个全局关DISI。
 如果还有问题可以联系我

提问者对于答案的评价:
非常感谢,谢谢回复!

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午10:39
下一篇 2021年7月4日 下午10:39

相关推荐

发表回复

登录后才能评论