求解释:
DEF STRING[120] UPNAM1, UPNAM2, WORKPIECE_PATH, PREFIX
DEF BOOL PROVO1, PROVO2, SPANN, TAKT, LOESE, AB1PRG, ZUSA
SCHLEIFE:
TAKT = $A_DBB[17] B_AND 'B00000001'
SPANN = $A_DBB[17] B_AND 'B00000010'
LOESE = $A_DBB[17] B_AND 'B00000100'
AB1PRG = $A_DBB[17] B_AND 'B00100000'
ZUSA = $A_DBB[17] B_AND 'B01000000'
最佳答案
1、$A_DBB或DBW或DBR这些交换数据只能传送的最小单位是字节,FC21传送都是以字节为单位的,
2、而在你的程序中只需要位变量的判断,这个判断只需要1位,B_AND是二进制的与,只有1与1才为1,所以他的作用就是屏蔽掉不用的位,只留下你想要的那一位,后面的B00000001'' 就是为了屏蔽,只有为1的那位才保留,
3、所以就TAKT = $A_DBB[17] B_AND ''B00000001'' 这条而言,需要的只是传送过来的DBX17.0这一位,其他的语句类似。
提问者对于答案的评价:
能不能再透彻解释下呢?
最佳答案作者回复:
PLC里的逻辑输出都是位,比如夹紧M1.0,松开M1.1等。但传送的最小单位是字节,比如送到$A_DBB[17]里,$A_DBB[17]里包含了8个位的信息,有夹紧、松开等等,那要判断是否夹紧了,就要屏蔽掉1-7位,只留下0位的夹紧状态才行。 二进制的与操作可以用0来屏蔽掉不用的位,只留下想要位。如要判断松开M1.1,就要$A_DBB[17] B_AND ''''B00000010'',这样就只留下第1位松开的状态
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc294714.html