系列文章目录
前言
TwinCAT平台实现了一种对Windows系统内核调度机制的一种实时性扩展,其具备实时可行的调度、进程的并行执行、硬件资源的直接访问等特点,以满足工业控制对实时性的要求。
TwinCAT的实时性任务既可以被分配在隔离核中,也可以被分配在共享核中,例如Windows操作系统核中。
一、实时性调度原理
TwinCAT使用双时钟法进行任务间的调度
二、抢先式多任务处理
抢占式多任务处理意味着,在发生中断(由更高优先级的进程引起)时,会保存进程的当前状态(CPU和浮点寄存器),并暂停当前进程。如果发生这种情况,调度器会根据任务优先级确定要执行的新进程。一旦被中断的进程完成,就会恢复进程上下文,并且"旧"进程继续。
个人观点:抢占式显然无法满足实时性。
三、TwinCAT平台调度任务的设计
TwinCAT 4026版本目前支持UserMode和KernelMode两种用户程序的运行模式。
有实时性要求的任务,应使用内核模式。
依个人经验,产生的最佳实践为:
1、用户任务和Windows核进行隔离设置,当用户任务出现异常时,因为Windows核还正常,可以远程登录到控制器内查看系统记录,这样可以提高问题调查的效率。
2、用户任务和Windows核进行隔离设置,在设计阶段可清晰的进行任务调度时序的微观分析设计,排除Windows系统任务的干扰。
四、PLC模块和TcCom模块运行时环境的差异
从上图可见,PLC 运行时模块独立执行输入和输出更新。如果两个 PLC 任务相互通信,第二个执行的运行时模块直接从第一个运行时模块接收当前值。因此,从第一个运行时模块到第二个运行时模块的通信方向不存在周期偏移,但在另一个方向上确实存在这样的偏移。
个人见解:需要及时通过IO的输出来响应IO输入的应用场景,应使用PLC任务。
目录