TwinCAT Runtime是一个分时多任务系统。TWinCAT 2.0设计预留了 61 个优先级的任务,各个任务可以定义不同的任务周期。在每一个Time base 的起点,CPU 按优先级由高到低的顺序依次扫描每个任务,根据任务的周期决定是否执行该任务。扫描到没有启用的任务和还没有到执行周期的任务,就跳转到下一任务。
在TwinCAT System Manager 中打开控制器上当前生效的配置文件:

TwinCAT Runtime 预留了4 套口PLC 程序的任务(优先级 24-55),而每套
PLC 程序预留了4 个周期性任务优先级,所以一个PLC程序,最多可以配置4个优先级任务。比如优先级 25-28 就是预留给 PLC Runtime 1 的逻辑程序使用的。任务周斯可以相同,但优先级不能重复。
TwinCAT扫描PLC程序的入口是Task,Task1的任务周期是多少,调用的Program扫描周期就是多少。Programe 没有被任何 Task 调用,所以它不会周期性执行。
在 PLC程序中配置分时多任务,新建 TWinCAT PLC 项目时,默认建立一个叫“Main”的程序。同时,默认建立一个名为“ Standard” 的任务,默认周期为 10ms,默认为最高优先级“0”。如图所示:

可以添加一个 Task,程序中的多个程序分别以什么顺序执行,执行周期是怎样,这取决于 Task 的设置。假如有的程序需要快速响应,以 1ms 的周期执行,而其它程序以标准周期 10ms 执行。就需要在默认设置之外,再增加1个 Task,设置如下:

然后选择需要快速执行的程序:

然后在程序中调用程序。

这种方法可以增加执行条件,例如手自动切换,可在主程序里加一个切换条件bSwitch,以此作为切换开关。

默认的 Time Base 为 1ms,可以满足绝大多数的应用。如果要求 PLC 或者 NC 的任务周期低手1ms,就需要修改 Time Base 的设置。

Time Base 可选的最小值为 50us,最大值为 1ms。 所有任务周期必须是 Time Base 的整数倍。同样的程序,同样的任务周期,Time Base 越小,由于线程切换频繁,所以 CPU 消耗越大。因此,在满足任务周期设定的前提下,Time Base 应尽可能设置得大,比如,等于最小任务周期。当设置 Time Base 小于 1ms的任务时,应考虑硬件 CPU 的运算能力。否则根据经验,Time Base 设置 50us,即使代码行为空,CPU 利用率也会直接高至崩溃。
当与总线通讯时,优先级最高的若干个任务为同步通讯,其它任务为异步通讯。最佳设置是,周期越短的任务优先级越高,这样可以及时刷新所有任务的数据。但默认分配和手动分配任务优先级时却不确定能实现这一点。此时,最简单的办法是启用 “Automatic Priority Mangaer”。