好吧,我在学校学习codesys,我在使用函数块。然而,在更新局部变量时,它们似乎没有更新,所以我做了一个测试,如下所示。正如你所看到的,在下面的FB中;GVL.sw1";变为True,但是";a";没有。为什么它没有变成真的?我测试了一个朋友的代码,他的代码运行得很好,但我的代码不。。。
https://i.stack.imgur.com/IpPPZ.png
您正在显示一个名为"的程序的源代码;主要";。你有一个名为";Main_Task";。程序和任务不是直接相关。
是";主";在任何地方被呼叫。
所以我在";"主要任务";它奏效了。我不知道为什么它在真正的任务中不起作用,但也许我会解决它,因为我已经走了这么远。
在您的示例中,您有两个程序(PRG(:main
和PLC_PRG
。
创建一个程序并不意味着它将被执行/运行。为此,您需要将程序添加到任务配置中的任务中。默认情况下,每个任务都将根据其配置的优先级在每个周期执行(您也可以让它们在事件等上执行(。当任务被执行时,添加到该任务中的每个程序都将按照它们的放置顺序执行(您可以随时对它们进行重新排序(。
话虽如此,如果您查看任务配置,MainTask只添加了程序PLC_PRG
,因此只有该程序会运行。您正在检查的main
程序甚至从未运行过。