Windows系统(Win7 Win10)本身作为一个非实时系统,运行在windows用户模式下的应用,受到windows的任务机制管理,应用会受到其他任务打断,照成延迟响应。
而TwinCAT作为一个软件,作为windows实时系统的一个扩展,代码运行在Windows内核模式下。内核模式和用户模式的区别可以去微软官网查找相关说明。内核模式可以认为是实时的。
在TwinCAT3软件下可以看到real-time设置
base time可以理解为CPU时钟周期
每一个base time,CPU占用80%的时间(core limit)运行 twincat的实时任务(plc nc等),20%的时间运行windows用户模式下的任务。
由于内核模式和windows用户模式的切换时,需要将一些数据保存在内存中,所以base time越短,这个切换占用资源时间就会变长,需要保存数据的大小,会造成一些系统抖动。除了XTS等一些需要快速任务周期(250us)的应用外,base time一般1ms足够大部分plc应用。
另外TwinCAT3提供了隔离CPU核的功能,可以将core完全分配给twincat real time,这在一定程度上减小了用户模式造成的系统抖动,但是需要注意的是在一些系统中,单core能力比不上整个CPU多核的运算能力。所以隔离核的功能,需要根据plc本身执行所需要的时间进行合理分配。plc执行是否周期溢出。