如果在网格内读取变量或地址的值,当编译器开始处理网格时,编译器始终使用变量和地址具有的值。
请注意,当变量或地址的值改变然后读取时,意外编程错误经常发生。
这通过以下机制实现:在网格的开头,相关变量的值被复制到临时变量。从临时变量执行所有进一步的读取访问;在原始变量上执行所有写入访问。
示例1:
编辑器 |
程序代码 |
描述 |
|
LD |
因[来自临时副本的读取值]产生意外结果。 |
||
附加代码,用于将DT768处iVariable的值复制到DT769处的临时变量 |
|||
从DT769处的临时变量读取,加5并将其写入DT768处的iVariable。 再次从DT769处的临时变量读取,乘以3并将其写入DT768处的iVariable。 |
|||
GR类型编辑器 |
因没有[来自临时副本的读取值]产生意外结果 |
示例2:
编辑器 |
程序代码 |
描述 |
|
LD |
因bOutput的[来自临时副本的读取值]产生期望结果 |
附加代码,用于将R0511处bOutput的值复制到R0500处的临时变量 |
|
从临时变量R0500读取 |
|||
GR类型编辑器 |
因没有[来自临时副本的读取值]产生期望结果 |