wnsr888手机版

海天精工机床有限公司 海天精工博客

软PLC任务线程的调度|加工中心

3. 3软PLC任务线程的调度3. 3. 1多线程多线程程序是指在一个进程中同时运行多个线程,每个线程完成不同的任 务。采用多线程编程可充分利用进程中的共享资源、减少进程切换所需的资源切 换、从而大幅提升CPU的使用效率,多用于需要花大量时间处理以及处理大量 10数据等耗时的应用程序。软PLC运行系统主要是对I/O输入输出影响区的数据进行处理,采用多线 程编程可提升控制系统的性能,因此在程序启动后主线程会为每个任务创建对应 的线程。然而通用PC机只有一个CPU,每一时刻只能执行一个任务线程,多个 线程之间通过快速地进行切换来实现运行。因此要实现软PLC运行系统多任务 的并行运行就必须对任务线程进行调度,确保每个任务顺序执行。下面在介绍操 作系统调度原理的基础上给出本软PLC系统的调度方法。3. 3. 2线程调度原理线程是操作系统的最小调度单位。对于通用PC机而言,计算机操作系统以 轮转方式向每个任务线程提供运行时间片,利用“中断”机制对线程的运行状态 进行切换,从而确保每个任务线程都能得到CPU时间片而被执行。3. 3. 3软PLC运行系统任务线程的调度软PLC运行系统需要对系统管理任务、通信任务、程序执行任务以及I/O 读写任务进行调度。通信任务包括软PLC与HMI进程的通讯任务、软PLC与软 CNC的通讯任务,I/O读写任务包括I/O读任务和I/O写任务。每个任务线程对 应就绪、运行、终止和阻塞四种状态,因此对软PLC运行系统多个任务的调度 可通过改变任务线程的状态来实现。本文结合以下两种方式对任务线程进行调 度。 直接调度直接调度按任务执行的先后顺序设定任务线程的优先级进行调度,使任务线 程队列中的优先级最高的任务优先获得CPU时间片而被操作系统调用执行。RTX实时子系统提供了 128个线程优先级,其系统内核按照优先级从高到 低的顺序安排任务线程占有CPU资源。由于采用抢占式调度算法,所以RTX允 许高优先级的任务打断正在运行的低优先级任务线程,以此抢占对CPU的控制 权,这非常方便我们对软PLC运行系统的每个任务线程进行调度和管理。在软PLC运行系统的设计过程中,系统任务管理线程负责软PLC运行系统 所有任务的调度,不应被软PLC系统中的其它任务线程所打断,因此设置为第 一优先级。通讯任务线程和I/O读写任务线程用于提供操作数和指令,是执行用 户程序的先决条件,所以设置为第二优先级。程序执行任务设置为第三优先级, 其中快速执行任务线程的优先级高于普通执行任务线程。 间接调度间接调度采用同步对象进行调度,利用多个任务为争夺同一临界资源引起的 互斥来协调多任务的运行。也就是说只有获得同步对象句柄的任务线程才能被执行,对共享资源进行操作,未获得的任务线程只能等待同步对象被释放。RTX提供四种同步对象:信号量对象Semaphore、事件对象Event、互斥体 X寸象Mutex和共享内存对象SharedMemory。其中事件对象Event具有使用简单、 易于实现多个任务的同步运行等优点,所以软PLC运行系统为每个任务创建了 相应的事件对象,利用函数RtWaitForSingleObjectG等待单个事件对象的信号状 态,以及函数RtWaitForSingleObjects〇等待多个事件对象的信号状态。当等待时 间达到设定值时,改变当前执行线程的状态,转去执行获得同步事件对象句柄的 任务线程,执行完返回当前任务线程继续执行;若设定的等待时间为INFINITE, 则当前任务线程一直等待同步事件对象句柄。这使程序运行过程中只有一个任务 线程能够操作数据共享区,从而保证数据访问的安全性。 软PLC运行系统创建的事件对象初始时都处于FALSE(无信号)状态,在事 件被触发后变为有信号状态,事件所对应的任务线程获得临界区资源被执行,然 后利用RtResetEventG函数重置为无信号状态,让软PLC运行系统触发其它事件 对象,以此协调多任务的运行。软PLC任务线程的调度过程如图3.8所示。本文采摘自“五轴精工加工中心软PLC控制系统的研究”,因为编辑困难导致有些函数、表格、图片、内容无法显示,有需要者可以在网络中查找wnsr888手机版相关的文章!本文由海天精工整理发表文章均来自网络仅供学习参考,转载请注明!
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。