从西周大侠提供的链接看,WINAC RTX是基于IntervalZero RTX结构,这个结构本身是多任务的,并不是单任务的。WINAC是虚拟一个PLC系统,包括,OB程序的调度、中断的执行、时钟系统等。这些程序的执行对应RTX来说应该都是线程,这些线程的调度应该是基于时间片的。只不过这些时间片的调度的算法更优化、更符合PLC系统的特点。实时系统的关键不是程序运行速度的快慢,而是对于事件的响应速度。
SIMOTION是一个面向运动控制的控制器,它也是分时间片执行的。贴上以前看过到一些资料:
首先Simotion中有task的概念,不同的task处于不同的优先级。撇开ipo、servo以及中断等task不说,backgroundtask和motiontask的执行时序就有点让人不清白,呵呵ipo、servo task在每个DP CYCLE中都是要执行一次的,谁叫它们的优先级那么高呢。而时间中断硬件中断等是在中断被触发的时候执行,当然中断的执行肯定也是在Dp Cycle中的某个时候。那么每个DP Cycle中除了刚刚说的这些task 之外一般还会剩下不少时间,这些时间就是用来处理BackgroundTask 和Motiontask。
在某一个DP Cycle中剩下的时间里(注意这个条件哦),Simotion的规则是BackgroundTask 先执行,接着执行32个Motiontask(如果32个都被使用了的话)。
时间片是simotion中的嵌入式实时操作系统分配给各个进程执行的一小段时间.
操作系统在各个任务之前切换也需要时间,如果时间片设置得太短了,那么用于任务切换的时间反而比程序本身执行的时间还要多,这样效率就太低了; 如果时间片设置得太长了,那么一个程序的响应速度就太慢了。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。