Soft-PLC应用软件的结构采用多作业、多任务的组织形式。软件运行的过程中,对任务的调度和监测是必不可少的环节。任务是高内聚低耦合的运行实体,是系统中唯一能动的对象,由它们完成具体的应用功能。随着运行工况的不同,各自又会处于就绪、运行、挂起与睡眠四种不同的状态[107]。
图4-11 两类用户级任务下的Soft-PLC运行时序
(www.daowen.com)
图4-12 中断任务下的Soft-PLC运行时序
控制器系统中任务的调度就是如何平滑地处理多任务之间的状态切换,使它们有条不紊地运行,提高系统整体性能的可靠性。促使任务状态转换的方式从逻辑上可分两种:其一为直接方式,该方式是常规的按优调度的原则,即从完成PLC控制器系统功能的角度出发,对每个任务线程按其运行的紧迫程度分配一个优先级。其二为间接方式,该方式通过任务之间的相互关联与相互制约而进行的状态转换。这种任务之间的协调主要体现在:多任务争夺系统中的临界资源而弓起的互斥;由于完成相关功能而协调工作带来的同步与通信。间接调度实现了就绪及运行之外的其他状态的切换。RTX实时子系统中提供事件、互斥、信号量以及共享内存等同步对象来协调工作。
Soft-PLC系统本来就是循环扫描执行系列任务的控制器系统,在每个循环扫描周期内任务线程执行是有序的。系统为每个任务线程创建一个事件对象来协调多任务线程的执行。只要事件不被触发,线程永远处在睡眠状态。任务线程中使用RtWaitForSingieObject()或RtWaitForMuitiObjects()原语等待同步对象的触发。Soft-PLC系统管理任务线程依据当前程序执行状态宇信息,决定下一个或多个并行运行任务,触发相应的事件对象唤醒睡眠中的线程。例如:当读I/O状态任务线程运行结束后,PLC系统管理任务线程获得CPU资源,它读取运行状态宇RunState值,判断得知须运行程序执行线程并触发hEVent对象,唤醒程序执行线程后放弃CPU资源,操作系统自动调度程序执行线程。当定时扫描执行的任务线程运行结束,系统管理线程同样会依据状态宇确定其后调度写I/O状态任务线程。另外Soft-PLC运行系统与HMI和CNC之间则是因为双方对临界资源的访问而采用间接调度方式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。