1引言
开关量控制是构成数控系统控制功能的重要部分,主要负责对机床IO和操作面板等进行逻辑控制。目前数控系统中对开关量控制的实现方式主要有三种:独立硬件PLC、内嵌PLC和软PLC。独立型PLC采用通用的硬件PLC完成机床的开关量控制,具有稳定性好、可靠性高以及技术成熟等方面的优点。内嵌型PLC则将开关量控制的功能在数控系统内部实现,与数控系统集成在一起,PLC与数控系统在内部实现数据交换,简单可靠。但是,独立型PLC和内嵌型PLC也存在自身的缺点,结构封闭开放性差。
在Windows+RTX实时操作平台上开发用于开放式数控系统的软PLC系统,并基于RTX实时扩展平台对软PLC运行系统的技术细节进行了进行具体的分析和设计。
2软PLC的总体设计
2.1软件平台的选择
选择WindowsXP+RTX实时扩展作为软PLC的开发平台。Windows是被广泛应用的商用操作系统,具有良好的开放性和丰富的软件资源。但是目前的Windows操作系统都非“硬实时”系统,无法满足软PLC实时性的要求。同数控系统一样,软PLC具有很强的实时性,特别是对于限位和刀库等开关量信号的控制。
RTX同时提供了进程间通信(Interprocess Communication,IPC)对象,主要有四种:事件(Event)、互斥体(Mutex),信号量(Semaphore)和共享内存(Shared Memory)。通过IPC我们就可以实现实时与非实时进程间,以及实时进程间的通信与同步。RTX也提供了高分辨率的时钟和定时器,以及中断管理。这些可以更有效地帮助开发人员进行实时程序的开发。
由此可见,我们采用Windows+RTX作为开发平台,可以充分利用RTX提供的API函数、IPC以及定时器等各种优异性能实现软PLC模块的开发,并通过与CNC系统的通信与同步实现对机床开关量的逻辑控制。
2.2软PLC的结构
设计的软PLC系统由开发系统和运行系统两部分组成,如图1所示。
图1 软PLC的结构框图 图2任务执行模块流程图
开发系统运行于Win32环境中,独立于运行系统存在,主要功能是提供一个界面友好的开发软件,用来完成PLC源程序的编辑、检错、编译以及仿真。开发系统最终产生一份满足控制要求的合格的目标代码,运行系统在启动时就可以加载该目标代码.并对目标代码进行解释执行,最终实现控制功能。
软PLC运行系统运行于RTSS环境中,主要功能是按照PLC程序完成相应的逻辑控制。软PLC运行系统随数控系统一起启动,负责完成机床相关的开关量控制。通过与数控系统之间的通信与同步,运行系统能够和数控系统相互协作,共同完成数控功能。软PLC运行系统是软PLC的核心部分,将着重对软PLG运行系统的设计进行详细的介绍。
3软PLC运行系统的设计
3.1软PLC运行系统的组成
3.1.1任务执行模块
任务执行模块是软PLC的重要组成部分,主要完成用户程序的执行。为了满足用户不同实时性的要求,我们将任务执行模块又分为普通任务执行模块和高速任务执行模块。在系统管理模块的调度下,普通任务执行模块每20ms执行一次,用来完成实时陕要求较低的控制;而高速任务执行模块每5ms执行一次,完成实时性要求较高的控制,如刀库,限位等等。这两个模块均为独立的普通线程。
如图2所示,为任务执行模块的工作流程。从图中可以看出,任务执行模块被启动后的工作过程是一个循环。在一次循环中,任务执行模块首先从代码存储区读取一条指令,接着对该指令进行分析,根据分析结果从指令库中调取该指令对应的执行函数进行处理。读取处理完一条指令后一个循环结束,任务执行模块冉读取下一条指令进行处理,进行下一个循环,遇到End指令后,任务执行模块退出循环,完成一个软PLC周期的用户程序执行任务。