“移动”块的目的是什么?

时间:2012-10-16 14:36:48

标签: plc

当输出只是在功能块图中分配输入值时,使用MOVE块而不是直接连接有什么区别?

MOVE Example

1 个答案:

答案 0 :(得分:2)

“wire”告诉您左侧使用梯形图代码(AND,OR,...)计算的布尔值。右侧使用。它不会导致任何“记忆”改变。 (你的绘图只是导线使图表混乱;你真的应该在导线的两端显示操作符。)

MOVE运算符使任何类型的一个内存位置的内容有条件地复制到另一个内存位置。使用MOVE运算符,可以将整数,浮点或其他更复杂的值复制到新目标;我不记得你是否可以做一个值强制(例如,int to float)但我猜这个从控制器到控制器各不相同。作为副作用,MOVE运算符将左侧的输入布尔值复制到右侧的输出布尔值;梯形逻辑中的大多数“块”运算符都是这样做的。但是该输入布尔值控制块是否实际执行其操作。在您的示例中,您将显示MOVE块,但不显示关键参数:from和to locations;喂它的“电线”控制是否实际发生移动。所以一个更好的举动例子是:

---| X |------| MOVE(P,Q) |---( Y )---  

这就是说,“如果X为真,则将P复制到Q,并将真(从X)赋予Y; 如果X为假,则不进行任何操作,并将false(从X)赋值给Y.“(X的布尔值通过MOVE块复制)。

由于MOVE适用于任何类型,因此您可以使用MOVE将内存位置中的布尔值复制到另一个位置;想象一下P和Q是布尔变量。但是,布尔条件和操作也同样有效:

---| X |----( Y )---

将X的布尔值复制到Y的布尔值。

要真正模拟布尔MOVE命令,例如,“如果X为真,则有条件地将布尔P复制到Q”需要一些复杂的布尔逻辑:

--+--| X |----| P |---+--( Y )----
  |                   |
  |--| *X |---| Y |---|

其中* X表示“不是X”。 MOVE更容易“写”。