恭喜,你发布的帖子
发布于 2023-07-04 21:35:18
2楼
上面的程序用到了输出操作,有可能我们的报警变量不是连续的,比如下面的变量,
这种情况下可以用peak和poke指令将bool型或分散的bool变量整合程字节或是字,要批量操作的前提是变量地址有一定的规律,按照一定的规律就可以批量操作。
以下程序是将一个结构体中的部分位整合到一个word数组中,针对第二张图片中的结构体:
FOR #ForNum := 0 TO 23 DO
POKE_BOOL(area:=16#84,
dbNumber:=104,
byteOffset:=100+#ForNum/2,
bitOffset:=(#ForNum MOD 2)*4,
value:=PEEK_BOOL(area := 16#84, dbNumber := 102, byteOffset := 16 + #ForNum * 18, bitOffset := 4));
POKE_BOOL(area := 16#84,
dbNumber := 104,
byteOffset := 100 + #ForNum / 2,
bitOffset := 1 + (#ForNum MOD 2) * 4,
value := PEEK_BOOL(area := 16#84, dbNumber := 102, byteOffset := 16 + #ForNum * 18, bitOffset := 5));
POKE_BOOL(area := 16#84,
dbNumber := 104,
byteOffset := 100 + #ForNum / 2,
bitOffset := 2 + (#ForNum MOD 2) * 4,
value := PEEK_BOOL(area := 16#84, dbNumber := 102, byteOffset := 16 + #ForNum * 18, bitOffset := 6));
POKE_BOOL(area := 16#84,
dbNumber := 104,
byteOffset := 100 + #ForNum / 2,
bitOffset := 3 + (#ForNum MOD 2) * 4,
value := PEEK_BOOL(area := 16#84, dbNumber := 102, byteOffset := 16 + #ForNum * 18, bitOffset := 7));
END_FOR;
以下程序是将连续的BOOL变量存入到word数组中:
//将变量存入数组中,方便比较操作
FOR #ForNum := 0 TO 13 DO
POKE(area:=16#84,
dbNumber:=104,
byteOffset:=6+#ForNum,
value:=PEEK_WORD(area := 16#84, dbNumber := 102, byteOffset := #ForNum ));
END_FOR;
请填写推广理由:
分享
只看
楼主