人机界面(Human Machine Interface,HMI)是提供给用户执行操作控制的界面平台,与控制系统实时进程之间传递着实时或非实时的信息。
HMI是运行在Win32系统环境下的界面应用程序,而Soft-PLC是运行在实时子系统RTX环境下的应用程序。两个不同的环境拥有各自的控制内核,实时环境下运行的线程优先级要高于所有Win32环境中的线程。实时子系统RTX提供IPC(进程间通信)对象以及一些RTAPI函数,为控制系统开发人员实现进程间、不同环境中进程间的通信。包括事件、信号量、互斥、共享内存等IPC对象,以及创建对象、触发对象、注销对象等函数。HMI进程与Soft-PLC系统之间的通信是在建立共享内存的基础上,通过互斥协调两者之间的通信。这也是前面分析的多任务调度中间接调度方式的一种,属于因对临界资源访问弓起的互斥。互斥对象协调HMI与Soft-PLC通过共享内存通信,如图4-13所示。控制系统具体实现过程中发现,HMI与Soft-PLC运行系统之间的通信并不是直接应用RTX提供的函数和对象那么简单。
首先要考虑实时响应用户的输入,例如:用户通过鼠标按键操作某个界面按钮,那么就得保证鼠标单击事件首先在界面程序中得到响应。这点与实时子系统进程优先级高于Win32进程优先级相矛盾,PLC系统是一个循环扫描多任务执行的控制系统,启动PLC运行系统后,RTX子系统任务调度内核中就会时刻充实着实时线程,那么Win32系统几乎得不到CPU资源,也就无从执行其环境下的应用程序,用户通过鼠标单击事件得不到响应。所以在单CPU、单操作系统的支撑平台上,首先得解决Win32与RTX环境使用CPU资源的分配问题。
图4-13 HMI与Soft-PLC通信
其次是HMI对共享内存访问的方法,HMI与Soft-PLC运行系统两者之间的信息交换有事件、数据等,对于数据的交互按事先设定的格式读写。Soft-PLC运行系统中有个专门负责读写共享内存的任务线程,将共享内存区的数据传递到系统内部指定的I/O数据存储区。这类似I/O接口模块任务封装了底层的I/O接口信息,系统外部的更改并不会太多地影响系统改变。HMI应用程序的设计中,采用了用户界面与系统数据相分离的原则,使用户界面完全独立成为一个子系统,从而实现了系统操作界面的用户定制。用户界面操作涉及的数据大部分封装在一个共享内存数据类中,通过类提供的数据读写接口进行访问。
本书在解决首要问题的过程中提出了三种解决方案:
(1)给定PLC系统最小循环扫描周期 给定最小循环扫描周期具体的周期时间是由用户依据其程序量的大小设定的,最小扫描时间给定原则是保证绝大多数扫描周期小于最小设定时间。采用最小循环扫描时间设定方法,PLC运行时出现的工作时序状况如图4-14所示。
其中第1个周期内PLC正常扫描执行,用时小于最小设定周期,剩余的时间内可以用于响应Win32应用程序;第2个周期内PLC程序执行了子程序,扫描时间消耗大于最小设定周期,没有时间空缺,但Soft-PLC系统将继续执行下一个周期;第2周期结束后立即执行第3周期的同时,重新启动最小循环扫描时间定时。结合实验以及方法间的比较分析,这种方法适用于用户程序包含子程序段少以及子程序段多但调用不频繁的情况。(www.daowen.com)
(2)定时挂起PLC所有多任务线程 Soft-PLC系统设定一个定时触发的任务,任务负责挂起Soft-PLC系统中所有的任务线程,无论其是否处在运行(被此任务中断)、就绪以及等待状态。其后系统等待少许时间,RTX调度内核中无线程就绪的情况下,主动将CPU资源让于Win32环境,响应用户输入。PLC系统循环工作时序如图4-15所示。这种方法需要考虑定时周期和挂起中断时间片对Soft-PLC扫描周期的影响,频繁的定时中断和长时间挂起会增加每个扫描周期的时间。系统可以提供参数供用户权衡设定这两个时间片的大小。
图4-14 给定最小扫描周期情况下PLC运行时序
图4-15 定时挂起情况下Soft-PLC运行时序
(3)利用MUTEX(互斥对象)特性 互斥对象允许创建它的线程可以立即获得其控制权,在系统中获得互斥对象控制权是取得对共享内存临界资源访问的前提条件。HMI应用程序利用RTAPI方法函数RtCreateMutex()创建MU-TEX对象,在Soft-PLC系统中打开此特定名称标识的互斥对象句柄。对临界区共享内存的访问是通过RtWaitForSingieObject()原语等待互斥对象的控制权,该原语被用在Soft-PLC与HMI通信的线程,以及HMI内的实现对共享内存读写的封装类接口函数中。因为RTX实时系统采用优先级提升的方法解决优先级倒置问题,当一个较高优先级的线程等待一个较低优先级正在使用的资源,则这个较低优先级线程的有效优先级被提升到那个较高优先级线程的水平,所以通过互斥资源协调HMI和PLC间的通信,实时PLC读共享内存线程需等待HMI读写线程,HMI的用户响应不会被中断。但是频繁地响应界面点击输入会占据CPU资源,导致PLC系统实时运行扫描时间的增加。
HMI与PLC在这种方式下通信,必须将共享内存和互斥对象的创建工作留在HMI应用软件内,否则人机界面输入输出几乎得不到响应。项目中最终采用这种方法实现HMI与Soft-PLC的通信。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。