3.2软plc运行系统的任务划分及实现
由2.4节可知,本软plc运行系统由通信接口模块、系统管理模块、程序执 行模块、存储模块和i/o接口模块五个模块组成,每个模块用于完成功能。 根据软plc运行系统的工作原理对每个模块的任务进行了划分:
与软plc开发系统的通讯任务、与软cnc的通讯任务、与hmi界面的通 讯任务、普通程序执行任务、快速程序执行任务、用户程序存储任务、指令存储 任务、数据存储任务和i/o读、写任务以及系统管理任务,软plc运行系统任 务组成如图3.1所示。
3. 2. 1系统管理模块
系统管理模块是软plc系统的“控制核心”。软plc运行系统启动后首先
进入系统管理模块,利用initialplcobjectsg函数定义并初始化plc全局对象, 接着创建任务管理线程jobschedulerthread和其它任务线程,在任务管理线程 jobschedulerthread调度下各任务线程顺序执行。当用户程序循环结束后,系统 管理模块删除所有任务对象、事件句柄、释放内存空间等计算机资源,对应工作 流程如图3.3所不。
3. 2. 2程序执行模块
程序执行模块通过解释和执行plc指令函数完成相应的逻辑运算,分为快 速程序执行和普通程序执行两个子模块。前者用于处理实时性要求较高的信号, 如急停信号、限位开关信号等等,执行周期5ms;后者则用来处理一般的循环扫 描任务,执行周期20ms。它们是两个独立的任务线程,执行指令函数的流程相 同:先从指令存储模块读取plc指令、判断指令类型,接着调取软plc指令函 数进行运算,后将运算结果保存在数据存储模块,然后循环执行指令,当执行 end指令后退出循环,完成一次用户扫描程序,执行流程如图3.4所示。
3. 2. 3通讯接口模块
通讯接口模块是数控应用程序之间通讯的通道,用于软plc运行系统与开 发系统、软cnc、人机界面hmi以及其它第三方程序的数据交换。其中软plc
运行系统与开发系统采用com^com方式进行通讯,即开发系统作为客户端向 运行系统发送用户程序,运行系统作为服务器端接收用户程序并反馈软plc的 运行状态。
软plc运行系统与软cnc、人机界面hmi是数控程序中的三个进程,它们 通过访问软plc运行系统创建的共享内存区plc_cncbuffer、plc_hmibuffer 进行数据交换。由于软plc运行系统和软cnc都是运行在rtss环境下两个进 程,所以利用rtx提供的ipc (进程通讯对象)可实现数据通讯任务;而人机 界面hmi是运行在win32环境下的非实时应用程序,它与软plc运行系统是不 同控制内核下的两个进程,由于win32进程优先级低于任何一个rtx进程,所 以在软plc运行系统启动后人机界面hmi进程无法获得cpu资源将数据写入 共享内存plc_hmffiuffer,因此需要解决win32程序与rtx程序cpu资源的 分配问题,通常有以下两种方法:
定时分配cpu资源
定时分配cpu资源是一个事件,一旦触发该事件rtx子系统就中断在 正在运行的软plc任务线程,将cpu资源让给win32环境下的应用程序,使人 机界面进程将数据写入共享内存plc_hmffiuffer中。中断事件对象由软plc运 行系统利用函数rtcreateevent〇创建,中断等待的时间由用户设置。
使用互斥体对象
互斥体对象是操作系统内核的一种数据结构,只允许获得该对象的任务线程 访问共享资源。利用互斥这一特性,首先在人机界面hmi程序中利用函数 rtcreatemutexg创建一个互斥体对象,虽然软plc运行系统的优先级高于人机 界面hmi进程,但软plc任务线程无法访问共享内存plc_hmibuffer中数据, 必须等待hmi线程调用rtclosehandleo函数释放掉互斥对象句柄 h_mutexhmiplc后才能访问该区域,在等待的这个时间片内win32应用程序获 得cpu资源,人机界面hmi线程将数据写入共享内存plc_hmibuffer,并读取 软plc给人机界面的数据,显示在人机界面上。
相比较定时分配cpu资源,使用互斥体对象等待的时间由操作系统分配, 占用软plc循环扫描的时间较少,因此本软plc运行系统采用互斥体对象实现 软plc与人机界面hmi之间的通讯任务。
由于通讯过程类似,这里仅以软plc运行系统与人机界面hmi的通讯为例 说明其执行流程,如图3.5所示。
3. 2.4 i/o接口模块
i/o接口模块是软plc系统与外部i/o输入输出模块进行数据交换的通道, 用于将i/o输入输出模块采集到的机床信号读入软plc输入映像区,同时将输 出映像区中状态输出给i/o端口。其执行过程分为两步:第一,根据软plc数 据存储区中i/o端子分配表与对应物理节点变量建立映射关系,完成端口配置; 第二,调用i/o接口模块的读写任务线程,在输入刷新和输出刷新阶段完成与外 部i/o输入输出模块的数据交换。
软plc系统采用softsercans被动式主站卡作为作为数控系统的接口,所 以i/o输入输出模块先将采集到的数据信息存储在sercos i/o从站,由从站向 主站发送中断请求,将数据包发送给主站,软plci/0接口模块通过读写 softsercans被动式主站卡双口存储区中数据与外部i/o模块进行数据交换, 本文第四章对软plc控制系统接口进行了详细的分析,这里只给出它们数据传递过程。
3. 2. 5存储模块
存储模块存储了软plc运行系统中所有的数据、操作指令和数据地址,可 表示为:存储模块=数据地址+数据+操作指令,因此分为:用户程序存储 区、数据存储区和指令存储区。
在执行用户程序前,程序执行模块将每一个软元件的信息存储到指令链表中 供执行程序时调用。
数据存储区
数据存储区保存了所有软元件的状态,按照数据的来源分为:输入映像区(i)、 输出映像区(q)、软plc内部存储区(r)、定时器区(t)、计数器区(a)、本地通讯 存储区(l)、hmi通讯存储区(p)和cnc通讯存储区(c),每个区域所包含的信息 见表3.1。
表3.1软plc运行系统数据存储区 table 3.1 data store of softplc running system
数据类型
标识符
含义
功能
unsigned char
i
输入映像区
存储所有输入软元件的状态
unsigned char
q
输出映像区
存储所有输出软元件的状态
unsigned char
r
内部存储区
存储软plc内部的数据
unsigned char
t
定时器区
存储定时器的数据
unsigned char
a
计数器区
存储计数器的数据
unsigned char
l
本地通讯存储区
存储与sercos的通信数据
unsigned char
p
hmi通讯存储区
存储与人机界面hmi的通信数据
unsigned char
c
cnc通讯存储区
存储与软cnc的通信数据
软plc运行系统以结构体的形式为每个存储区域分了配内存空间,除软plc 内部存储区、输入映像区、输出映像区外,其余每个存储区域有256个软逻辑位供外部的物理元件使用。以本地通讯存储区为例,它存储了软plc与sercos的 通讯数据。
(3)指令存储区
指令存储区存储了软plc系统的全部指令函数,当执行用户程序时,系统 从指令库中调取操作函数完成对操作数的运算,有关软plc指令的设计与实现 详见本章第四节。
本文采摘自“五轴数控加工中心软plc控制系统的研究”,因为编辑困难导致有些函数、表格、图片、内容无法显示,有需要者可以在网络中查找相关文章!本文由伯特利数控整理发表文章均来自网络仅供学习参考,转载请注明!