在博途的S7-300环境下,SCL中其中一段是:
#iDIAddr:=0;
FOR #i:=0 TO 15 DO
"DIValue".DIValue[#i]:=%IX(#iDIAddr+#i / 8,#i MOD 8);
END_FOR;
意思是把从I0.0到I1.7这16个DI,做循环读到DIValue这个DB块中的DIValue[0]到DIValue[15]中去。
那么在S7-1200环境下,SCL语法应该如何表达了呢?我试了下把中间关键语句改为:
"DIValue".DIValue[#i] := PEEK_BOOL(area:=16#81,dbNumber:=0,bitOffset:=(#iDIAddr+#i / 8,#i MOD 8));
仍然有错,求解?
哈哈,自己没搞懂,现在搞定了,应该是这样写的:
"DIValue".DIValue[#i] := PEEK_BOOL(area:=16#81,dbNumber:=0,byteOffset:=(#iDIAddr+#i / 8),bitOffset:=(#i MOD 8));