欢迎来到西门子工业支持中心网站!
欢迎来到西门子工业支持中心网站!
悬赏:1西币 | 解决时间:2022-07-28 12:55
产品版区:
SIMATIC S7-1200
手机用户20210828763257
手机用户20210828763257 - 新生  第1级
我创建了array[1..100] of bool,想传送到q0.0开始的100个位。
小程序:
最佳答案
回答者:
CoolCool的猪
回答时间:2022-07-27 19:45
提问者对于答案的评价:
谢谢各位
专家置评
已阅,最佳答案正确
置评专家:西门子自动化产品支持 2022-07-30 10:33
首推块移动,次推指针循环。
可以使用“块移动”指令将一个存储区(源区域)的数据移动到另一个存储区(目标区域)
中。移动操作沿地址升序方向执行。该指令的变量仅适用于尚未激活属性“优化块访问”的存储区,适用于数据块(DB)、组织块 (OB)、函数 (FC)、位存储器 (M)、输入 (I) 和输出 (Q)。
可以用循环写,大致写法,可以参考
FOR #I := 1 TO 100 DO
#J := FLOOR(#I / 8);
#K := #I MOD 8;
IF #K = 0 THEN
#L := #J - 1;
#H := 7;
ELSE
#L := #J;
#H := #K - 1;
END_IF;
POKE_BOOL(area:=16#82,
dbNumber:=0,
byteOffset:=#L,
bitOffset:=#H,
value:="w".q[#I]);
END_FOR;
1.使用peek,poke来传送;
2.使用mov_blk_variant;
3.创建UDT,然后在变量表里创建相应的Q区的变量,直接用move
在定义时不能使用AT??
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!