所以我有一个问题,在我的 SFC 中它跳转到一个初始步骤,但在该步骤中写入的命令不会注册。
在 SFC 结束时,步将 5 输入到 A_Status(INT)。下一个转换检查 A_Status 的值是否为 5。到目前为止没有问题,但是在转换后跳转到 SFC 的开头,其中第一步应该将 0 输入到 A_Status 中,A_Status 保持在 5。
我的程序的循环时间是 100 毫秒。我曾尝试减慢周期,但没有奏效。这里似乎有什么问题?也许在这样的序列中使用的相同变量不起作用?
将不胜感激。
所以我有一个问题,在我的 SFC 中它跳转到一个初始步骤,但在该步骤中写入的命令不会注册。
在 SFC 结束时,步将 5 输入到 A_Status(INT)。下一个转换检查 A_Status 的值是否为 5。到目前为止没有问题,但是在转换后跳转到 SFC 的开头,其中第一步应该将 0 输入到 A_Status 中,A_Status 保持在 5。
我的程序的循环时间是 100 毫秒。我曾尝试减慢周期,但没有奏效。这里似乎有什么问题?也许在这样的序列中使用的相同变量不起作用?
将不胜感激。
您没有提及是否在进入/退出期间或在 SFC 步操作中写入值。但请注意,在某些情况下,上一步中的代码可能会比新步骤中的代码执行得晚。
这是一个链接,解释了调用顺序以及为什么有时部分代码会执行两次: https ://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/45035999420423563.html
我已经成功地在所有操作中添加了以下代码以防止这种情况发生。
IF STEP_NAME.x THEN // Only execute this while the step is active.
// Insert code here.
END_IF