自由口通讯一段程序

自由口通讯编了程序,可是不知道为什么用S-R指令转换后,得到的不是预想的。大家帮忙看下。
 MAIN:
 LD     SM0.1
 MOVB   16#09, SMB30
 MOVB   16#B0, SMB87
 MOVW   3, SMW90
 MOVB   16#0, SMB89
 MOVB   255, SMB94
 ATCH   INT_0:INT0, 23
 ENI
 RCV    VB560, 0

 INT_0:
 LDB<>  SMB86, 0
 LPS
 BMB    VB560, VB570, 9
 STR    VB570, 1, VD500
 AB=    VB572, 16#31
 =      Q0.3
 LRD
 AB=    VB574, 16#2E
 =      Q0.5
 LRD
 AB=    VB571, 16#31
 =      Q0.2
 LRD
 AB=    VB573, 16#33
 =      Q0.4
 LRD
 AB=    VB575, 16#30
 =      Q0.6
 LRD
 AR=    VD500, 112.9
 S      Q1.0, 1
 LPP
 AR=    VD500, 113.0
 S      Q1.0, 1

 中断程序中,用了很多比较是为了判断是否自由口通讯成功传输过来数据,VB571-VB575的判断都是对的,也就是说我的PLC执行完后,Q0.2-Q0.6都是1,对应的S-R指令完后应该对应VD500=113.0,但是Q1.0却没有置1,也就是说VD500不等于113.0。是我程序错了还是怎样?请大家帮忙看看。
 

问题补充:
按LAOHUAI的方法,问题已经解决,可是不明白为什么就可以了。一定要明确给它赋值?
 我是想连续接收,不过不知道如何做,按什么来确定每8个字节它的开始和结束?

最佳答案

你知道VB560等于多少吗?
 1 加一句MOVB   5, VB570试试
 BMB    VB560, VB570, 9
 MOVB   5, VB570
 STR    VB570, 1, VD500

 2 中断程序越小越好。

 3 你的程序只能接收一次,接收结束执行中断后,就没有可执行的程序了。

提问者对于答案的评价:

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午1:02
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论