如何编写一段最简单的程序 来判断 一个双字地址里(比如MD100)有几个位被置1? (如果有超过2个位被置1,我需要发出报警。) 根据大家的知识和经验,这样的程序如何编写?
最佳答案
你这个问题貌似论坛里有人发过贴啊,可以找找!
楼上 “十叁” 回答不太准确,MD00大于3可不代表,MD100里的1 的个数大于2啊!MD100=4的时候呢?
我也贴一个自己写的子程序吧!
子程序里新建一个输入变量MD_IN,类型DWORD;一个输出变量NM_OUT,类型BYTE。
网络1
LD SM0.0
MOVB 0, LB12
MOVD 1, LD20
网络2
LD SM0.0
FOR LW10, 1, 32
网络3
LD SM0.0
LPS
MOVD #MD_IN:LD0, LD24
ANDD LD20, LD24
AD= LD24, LD20
INCB LB12
LPP
SLD LD20, 1
网络4
NEXT
网络5
LD SM0.0
MOVB LB12, #NM_OUT:LB4
将以上子程序在主程序里面调用即可。
图片说明:
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc231926.html