发布时间:2017-09-05作者:智汇胡妮
0 引言
随着计算机技术、通信技术、控制技术的迅速发展,出现了 IPC 工控机以及大量的智能仪表,其应用使得工业生产过程的自动化水平得到了很大的提高。过程分析技术( Process Analytical Technology,PAT) 的出现,促使装备制造业引入该技术来提高产品的精度以及生产过程自动化的水平。远程监控是指利用计算机通过网络系统实现对远程工业生产过程控制系统的监视和控制。工业生产过程的监控信息接入 Internet,在一定条件下就可以通过 Internet 监控生产系统和现场设备的运行状态和各种参数,控制者就不必亲临现场,这能够节省大量的人力物力。
本文采用硬件抽象层、共享内存以及 I/O 多路复用技术实现对数控系统加工过程的远程监控。数控系统加工过程中轴位置、轴速等信息通过共享内存技术与服务器进行交互,以 C/S 模式构成远程监控系统,client 可以通过运行客户端应用程序监控数控系统加工过程的状态信息。
1 相关技术
1.1 硬件抽象层( Hardware Abstract Layer,HAL)
数控系统作为一个复杂的嵌入式系统,具有专用性强、外围设备多样的特性,这决定了其应用的硬件环境差异性较大。系统软件模块与硬件之间的接口是系统设计过程中的必需环节,也是影响数控系统应用前景的关键问题之一。HAL 的引入可有效的解决该问题,HAL 是将硬件平台与应用软件隔离开来的的软件层次,通过硬件抽象层技术实现硬件相关和硬件无关两部分程序代码的隔离,为应用程序提供一个没有硬件特性的接口。硬件抽象层的引入不仅是系统体系结构设计方法的改进,更直接关系到整个系统的开发模式以及嵌入式操作系统的可移植性。硬件抽象层的引入大大推动了嵌入式系统开发的规范化进程。
EMC2 中设计硬件抽象层的目的是使 EMC2 可以快速的针对不同的硬件进行配置而不需要改变上层程序,实现在 I/O 接口和其他底层模块之间传输实时数据。HAL 的设计采用了传统的电路设计的模式,I/O设备以软元件的形式存在于 HAL 中,HAL 软元件和传统元件类似,包括引脚( pin) 、参数( parameter) 等信息。可以通过 HAL 中软元件的加载和相连形成复杂多样的控制系统,如图 1 所示,利用 HAL 组件构建并口输出 PWM 信号驱动 X-Y 轴的直流伺服电机的连接图。
图 1 井口输出 PWM 信号驱动 X-Y 轴的直流伺服电机 HAL 连接图
1.2 I/O 多路复用
在 Linux 服务器编程中,系统资源的利用率是一个令人关注的问题。本系统通过采用单进程 I/O 多路复用的方式解决了传统的创建子进程方式带来的系统资源消耗,并极大地提高了 CPU 的利用率,同时也可以方便的支持多个客户端,理论上,在一个线程中可支持 63 个客户端; 可以采用多线程支持更大数量的 clients。
I/O 多路复用,即一个进程需要在多个 I/O 端口上等待读取或写入数据,可选择将自己挂起,如果一个或多个 I/O 满足数据操作时,进程将被通知,继续运行,并作相应的判断处理和 I/O 操作。select( ) 方法可以对多路 I/O 进行阻塞式查询。它提供同时对多个 I/O 描述符进行阻塞式查询方法,可以方便地实现 I /O多路复用。
2 系统设计
远程监控工具利用模块化的设计思想,从纵向来看总体框架自底向上包含 linux 操作系统、RTAI 模块、硬件抽象层模块、数据采集程序和客户端程序。RTAI模块和硬件抽象层模块运行在内核空间,数据采集程序和客户端程序运行在用户空间,它们之间的数据通信利用 rtai 提供的共享内存和 I/O 多路复用技术来实现的,总体结构如 2 图所示。
图 2 远程监控工具总体结结构图
2.1 数据结构设计
数据采集方法的设计以 RTAI 的共享内存为数据传输介质。共享内存在内核空间和用户空间之间进行数据传输,具有较高的灵活性,所以在数控系统中应用广泛,因此提高共享内存的管理效率对各种使用共享内存的应用具有很重要的意义。采用两级数据管理结构,能够有效的分配和释放共享内存,使用 C 语言实现的该共享内存管理层具有很好的可移植性,能够减少共享内存分配和释放时间,同时互斥量的使用也能保证共享内存的并发访问。数控系统加工过程远程监控工具的设计是基于一个共享内存的管理工具来实现的。使用共享内存池和共享内存块这两种结构来完成对共享内存管理工具的设计,共享内存管理工具的结构如图 3 所示。
图 3 共享内存管理工具结构图
2.2 远程监控工具设计
主要是描述利用 I/O 多路复用技术实现多个客户端的登录服务器的流程,登陆处理流程图如图4 所示。
图 4 客户端登陆流程图
客户端登陆服务器端,首先需要打开远程调试模式,并利用 I/O 多路复用技术创建 TCP 并发服务器;客户端登陆成功后,可以通过终端输入 halcmd 命令,实现远程查看数控系统运行状态。当输入 exit 或 quit命令时,客户端终止这一次的连接。
利用 I/O 多路复用技术设计的服务器端架构大致如下:
初始化( socket,bind,listen) ; while( 1) { 设置监听读写文件描述符; 调用 select; 如果是监听套接字就绪,说明一个新的连接请求 建立。 { 建立连接( accept) ; 加入到监听文件描述符中 } 否则说明是一个已经连接过的描述符 { 进行 read 或 write 操作 }}
与多进程并发方式相比,采用 I/O 复用技术的最大优势是服务器只需要一个进程来处理所有的客户机请求,所有程序没有创建和管理进程的开销,减少了系统运行中的系统开销,提高了服务质量; 同时服务器运行在单一进程上下文中,因此每个逻辑流都能访问该进程的全部地址空间使得在流之间共享变量很容易。
3 系统实现
3.1 关键数据结构
在内核空间和用户空间之间的通信主要是嵌入硬件抽象层来实现的,硬件抽象层的设计又采用了共享内存技术。共享内存结构体 hal_data_t 的主要组成为:
typedef struct { . . . . . . int comp_free_ptr; / / 存储空闲的 comp 地址 int pin_free_ptr; / / 存储空闲的 pin 地址 int param_free_ptr; . . . . . . unsigned long mutex; / /该结构互斥访问信号量地址 int shmem_bot; int shmem_top; / / 共享内存的首地址和尾地址 int comp_list_ptr; / /已加载的 comp 模块的首地址 int pin_list_ptr; / /已加载的 comp 模块的首地址 . . . . . . } hal_data_t;
该结构作为全局变量,halcmd 的命令是通过获取互斥信号量来对该内存区域进行访问的。以 loadrtsiggen 为例,流程图 5 如所示。
图 5 处理 loadrt siggen 命令流程图
用户输入 loadrt siggen 命令时,该命令的功能是实现加载软元件 siggen,通过 halcmd _commands 查找loadrt 对应的操作函数 do _loadrt _cmd ( ) ,如果 siggen模块尚未插入,则利用 insmod siggen. ko 将该模块插入。并将 siggen 加入到 hal_data - > pin_list_ptr 的链表中。命令执行完毕,返回 halcmd 命令行。
3.2 远程监控工具的实现
远程监控工具是 halcmd 应用程序的一部分,它的主要任务是完成对输入命令的读入,解析命令,执行命令,返回命令执行结果。
具体的代码实现:
if( rmonitoring = = 1) / /监测是否开始远程监控模块 { / / 创建远程监控模块 createTCPServer( ) ; / /创建本地 select 并发服务器; select( maxfdp1,readfds,writefds,NULL,tvptr) ; / /查找接入的 socket 连接 read( sockfd,buf,BUFSIZE) ; halcmd_parse _cmd ( tokens) ; / /在服务器端处理远程输入命令 / /关闭 halcmd 应用程序 halcmd_shutdown( ) ; / /关闭 socket 连接 shutdown_socket( ) ; } else / /启用本地调试模式 { get_input( srcfile,raw_buf,MAX_CMD_LEN) ; / /从终端获取输入的命令 halcmd_parse_cmd( tokens) ; / /执行命令,并将结果输出到终端 / /关闭 halcmd 应用程序 halcmd_shutdown( ) ; }
其中 halcmd_parse_cmd( tokens) 主要是根据 to-kens,按照命令索引跳转到相应的命令函数中执行。可以实现加载模块,模块互联,模块信息读取等命令功能; print_info( ) 根据 tokens 执行的结果将命令反馈信息发送给相应的客户端程序,从而实现对数控系统的加工状态的远程监测过程。
4 实验
在 pc1 上运行数控系统仿真软件 EMC2,打开终端,使用 halcmd -kfr 启用加工过程远程监测模式。分别在 pc2 和 pc3 上运行. /monitor 192. 168. 2. 14,连接到 pc1 服务器端。查看 pc2 和 pc3 的输出情况,同时也可以执行 halcmd 命令。实验结果如图 6 所示。
图 6
上图是在 pc2 和 pc3 上显示的对引脚变化的图形化显示的结果,显示了三种不同的引脚曲线: 正弦,余弦和方形曲线。用户可以方便使用该工具远程查看各个引脚的变化情况。
5 总结与展望
本文使用硬件抽象层技术和 I/O 多路复用技术,提出了一个数控系统加工过程远程监测工具的设计方案,并利用 EMC2 开源数控软件对数控数控加工过程进行仿真,运用该远程监测工具进行对其进行远程监测,能够获得数控加工过程中的轴的速度、轴的当前位置、轴的位置反馈等信息,表明了该设计方案在对加工过程远程监控方面是可行的。
Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有
电话:010-62314658 邮箱:service@ilinki.net
主办单位:智汇万联(北京)信息技术有限公司