我想对某些连续位进行循环操作,可否实现这样的指令.
举个例子:我要检测V1.2----V10.5所有位,判断是否为1. 若为1,则算出所在的序号.
最佳答案
我用的是移位检测,只检测第一个置一的位。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=
BEGIN
Network 1
LD SM0.0
CALL SBR0, VD1, VD5, VW9, VB20
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=
VAR_INPUT
dInput1:DWORD;
dInput2:DWORD;
wInput3:WORD;
END_VAR
VAR_OUTPUT
bOutput:BYTE;
END_VAR
VAR
wTemp:INT;
END_VAR
BEGIN
Network 1
LD SM0.0
MOVB 0, LB10
FOR LW11, 1, 76
INCB LB10
SHRB L9.5, L0.2, -1
A SM1.1
CRET
Network 2
NEXT
Network 3
LD SM0.0
MOVB 0, LB10
END_SUBROUTINE_BLOCK
提问者对于答案的评价:
此计甚好,
最佳答案作者回复:
那是,几年前刚编程时抓耳挠腮想了好几天才搞定的。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc300685.html