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 复用技术的最大优势是服务器只需要一个进程来处理所有的客户机请求,所有程序没有创建和管理进程的开销,减少了系统运行中的系统开销,提高了服务质量; 同时服务器运行在单一进程上下文中,因此每个逻辑流都能访问该进程的全部地址空间使得在流之间共享变量很容易。