恭喜,你发布的帖子
发布于 2024-05-17 11:15:32
4楼
//对输入区 I 进行间接寻址,转换成二维数组
FOR #k := 0 TO 24 DO
FOR #j := 0 TO 7 DO
#I[#k, #j] := PEEK_BOOL(area := 16#81,
dbNumber := 0,
byteOffset := #k,
bitOffset := #j); //读取 I 点的数据,存放到二维数组 #I
END_FOR;
END_FOR;
//将二维数组赋值给DB块
#In_BitOffset := 0;
#In_ByteOffset := 0;
#In_Times := 0;
FOR #k := 0 TO 24 DO
FOR #j := 0 TO 7 DO
POKE_BOOL(area:=16#84,
dbNumber:=1,
byteOffset:=#In_ByteOffset+4*#In_Times,
bitOffset:=#In_BitOffset,
value:=#I[#k,#j]); //把二维数组 #I 的数据写入到 DB1 中
#In_BitOffset := #In_BitOffset + 1;
IF #In_BitOffset > 1 THEN
#In_BitOffset := 0;
#In_Times := #In_Times + 1; //In_Times 进位标志
END_IF;
END_FOR;
END_FOR;
//对DB进行间接寻址,转换到二维数组
#Out_ByteOffset := 2;
#Out_Times := 0;
FOR #k := 0 TO 24 DO
FOR #j := 0 TO 7 DO
#Q[#k, #j] := PEEK_BOOL(area := 16#84,
dbNumber := 1,
byteOffset := #Out_ByteOffset+4*#Out_Times,
bitOffset := #Out_BitOffset); //读取 DB1 中的数据存放到二维数组 #Q
#Out_BitOffset := #Out_BitOffset + 1;
IF #Out_BitOffset > 1 THEN
#Out_BitOffset := 0;
#Out_Times := #Out_Times + 1; //In_Times 进位标志
END_IF;
END_FOR;
END_FOR;
//将二维数组写入到输出区Q
FOR #k := 0 TO 24 DO
FOR #j := 0 TO 7 DO
POKE_BOOL(area := 16#82,
dbNumber := 0,
byteOffset := #k,
bitOffset := #j,
value := #Q[#k, #j]); //把二维数组 #Q 中的数据写入到 (Q区)16#82对Q区寻址
END_FOR;
END_FOR;
请填写推广理由:
分享
只看
楼主