SCL 赋值与 MOVE — 把值写到变量
SCL 里用 := 赋值;LAD 的 MOVE 在 SCL 中就是赋值,不要生搬硬套。
SCL 的“移动”分三层:单个赋值 :=、数组块复制 MOVE_BLK/UMOVE_BLK、数组填充 FILL_BLK/UFILL_BLK。
BLKMOV 是 legacy 的按字节/字指针写法,只在维护旧程序时用;新代码优先块移动/填充指令。
数组的 IN/OUT 用起始元素,COUNT 是元素个数,不是字节数。
| 需求 | 写法 |
|---|---|
| 单个变量赋值 | #Target := #Source; |
| 数组复制 | MOVE_BLK / UMOVE_BLK |
| 数组填充 | FILL_BLK / UFILL_BLK |
| 旧程序按字节移动 | BLKMOV(legacy) |
1MOVE_BLK(IN := #Source[0], COUNT := #Count, OUT => #Dest[0]);
2FILL_BLK(IN := 0, COUNT := #Count, OUT => #Dest[0]);
需要执行期间不被中断,用 UMOVE_BLK/UFILL_BLK;数据一致,但扫描周期可能变长。
普通赋值一次写一个元素;MOVE_BLK 一次复制一段元素,适合数组/缓冲区。
MOVE_BLK/FILL_BLK 的 COUNT 是元素个数;BLKMOV 才是 BYTE/WORD 长度。
需要数据一致性、不能被中断打断时;代价是扫描周期可能变长。