LXI网络仪器后台处理的设计与实现
2019-03-21李延峰李宥谋闫海卿李晓俊
李延峰,李宥谋,闫海卿,李晓俊
(西安邮电大学 计算机学院,陕西 西安 710100)
0 引 言
目前,网络仪器测控系统蓬勃发展,在促进当代生产中扮演关键角色[1]。同时,总线技术是仪器进步的基础[2],总线技术由GPIB(general-purpose interface bus,通用接口总线)、VXI(VMEbus extension for instrumentation,VME总线在仪器领域的扩展)、PXI(PCI extensions for instrumentation,面向仪器系统的PCI扩展)向LXI(LAN extension for instrumentation,LAN在仪器领域的扩展)发展过渡。
GPIB、VXI、PXI仪器由于带宽和底板结构等限制,被测对象难于远距离分布[3]。LXI是继GPIB仪器、VXI/PXI虚拟仪器后新型的基于以太网的模块化互联架构标准[4]。LXI网络仪器测控系统是集成了RTOS(embedded real-time operation system,嵌入式实时操作系统)、嵌入式SNMP(simple network management protocol,简单网络管理协议)代理、嵌入式HiSLIP(high-speed LAN instrument protocol,高速以太网仪器协议)服务、嵌入式DHCP(dynamic host configuration protocol,动态主机配置协议)模块及各种接口驱动的大型应用系统,提供网络化仪器测量,实现仪器设备动态重组,降低了系统的复杂度和成本消耗[5]。
所以,文中对LXI网络仪器后台处理模块进行设计,包括SNMP、HISLIP、DHCP等客户端,实现仪器代理的主动感知及IP自动分配、控制指令和测量数据的实时高速传输、仪器代理的配置和测控管理等功能。另外,通过分析接口参数,设计了调用后台处理的统一接口程序,易于入门、方便后期功能扩展、提高后台操作与响应速度。
1 SNMP简单网络管理协议
SNMP基于TCP/IP协议工作,是对网络中支持该协议的网络节点进行管理的标准协议[6]。其采用C/S模式[7],SNMP客户端在管理端运行,SNMP服务器在被管理端运行。SNMP由SNMP代理、被管理的设备和网络管理系统组成[8]。
本项目中SNMP协议客户端主要完成测控端后台处理模块与远端仪器之间变量的属性信息、控制命令及异常信息的交互传输。SNMP客户端的总体操作由3类组成:仪器设备设置操作、属性值获取操作和被监管设备异常监测操作。客户端通过GET、GETBULK和GETNEXT向SNMP服务器请求相应操作;通过SET对设备参数值进行设置或修改;通过Trap将异常信息主动发送到管理端。
SNMP客户端以模块化方式设计实现,各模块间功能函数相互约束,同时接口函数相互配合,实现SNMP客户端功能需求。
2 HISLIP高速以太网仪器协议
HISLIP由IVI联盟推出,实现对仪器的控制和共享[9]。协议以C/S模式设计,控制端运行HISLIP客户端,远端代理运行HISLIP服务器端。HISLIP客户端与标准仪器程控指令SCPI配合使用,实现对远端仪器代理的测量控制与管理[10]。HISLIP协议信息交互有异步通道和同步通道两条链路,同步通道负责数据和指令的交互,异步通道负责异常处理[11]。
本项目中HISLIP协议客户端主要负责后台处理模块与远端代理间数据和指令的传输交互任务。HISLIP客户端整体设计可划分为数据包同步通道处理模块、数据包异步通道处理模块和双向通道建立模块三部分。处理模块流程如图1所示。
图1 HISLIP处理模块流程
HISLIP客户端设计采用模块化方式,相互制约配合,最终实现HISLIP客户端的功能。
3 DHCP动态主机配置协议
DHCP是优化主机等设备IP地址管理分配的标准协议[12],本项目中主要负责管理和分配IP地址,动态管理网络设备的上网环境,使设备的入网效率大幅提升。
LXI网络仪器的DHCP模块分四步实现。首先搭建DHCP服务器;其次以Linux系统的Inotify机制来监控DHCP服务器日志文件中IP、MAC地址的数据变化;然后HISLIP客户端给该IP设备发送SCPI指令获取属性;最后将仪器设备返回的属性信息链接到IP地址的尾部。具体如图2所示。
图2 自动发现模块DHCP功能测试
4 后台处理服务总调度模块
4.1 后台处理服务总调度模块架构研究与设计
LXI网络仪器整体软件结构可分为三层,分别是:仪器设备层、核心组件层和应用服务层[13]。仪器设备层实现测控数据采集等功能;核心组件层解决应用层的控制指令及仪器层上传的测控数据和异常消息,主要包含:HISLIP协议客户端、SNMP协议客户端、DHCP模块和统一调用接口程序;应用服务层负责提供友好界面以供人机交互,实现测量数据显示与修改、仪器管理等功能。系统软件结构如图3所示。
图3 LXI网络仪器整体软件结构
LXI网络仪器后台处理服务总调度模块由统一接口、任务调度和数据处理模块组成。统一接口模块为
外部调用后台处理服务提供统一化指令格式;任务调度模块主要为测控命令在后台的调度与处理服务;数据模块主要为仪器代理的数据处理服务。
为使程序健壮和稳定,故以进程实现调度,以共享内存实现数据通信。后台运行时,父进程创建共享内存和信号量后,实时监控应用层的命令[14]。当测控指令产生,父进程交由新建的子进程去解决问题,其继续监听。由于子进程直接调用了可执行代码,父进程不能直接接受数据结果,故以共享内存去实现数据信息的交互,同时以信号量进行读写的限制,流程如图4所示。
4.2 后台处理服务统一接口模块设计
统一接口模块能够让应用服务层以统一指令格式对核心组件层的SNMP客户端、HISLIP客户端和DHCP模块进行调度处理,在Linux操作系统下三个模块接口参数如下:
./snmp_client Instrument_IP OID Command;
./hislip_client Instrument_IP Command;
./dhcpr_client DHCP_SERVER_IP;
参数说明如下:
Instrument_IP:远端仪器代理的IP地址;
OID:SNMP协议的对象标识号;
Command:在SNMP客户端中,SNMP协议操作:SET、GET、GETNEXT、GETBULK等操作;在HISLIP客户端中,SCPI表示标准仪器的程控指令;
DHCP_SERVER_IP:表示系统中DHCP服务器仪器设备的IP地址;
图4 后台处理服务总调度设计流程
为了实现对模块接口的统一封装,同时基于功能模块的接口参数形式,定义命令格式如下:
typedef struct interface
{
int port;
charoid[60];
charip[20];
char command[120];
}interface, *interface;
统一接口模块程序根据公共端口号的不同解析服务层请求,然后调用相应客户端。HISLIP客户端端口号为4880,SNMP客户端端口号为161及DHCP客户端端口号为5000,所以本项目采用port参数作为区分三者的指标参数。
4.3 后台处理服务总调度模块的实现
系统主机以TCP Socket的形式连接到后台总调度模块。总调度模块接受主机指令,同时解析控制指令,根据解析结果去确定调用SNMP协议客户端、HISLIP协议客户端或DHCP自动发现模块[15]。后台处理服务总调度模块的父进程创建子进程去执行相应客户端请求,将结果存入共享内存后,由信号量通知主进程读取结果。其次,主进程在读取数据时通过信号量防止读写竞争。最后,总调度模块将结果通过TCP套接字发送给系统控制主机,完成主机对所需信息的获取与修改。总调度模块的处理流程如图5所示。
图5 后台处理模块的处理过程
后台处理服务总调度模块的主进程重复监听从系统控制主机发起的连接,当连接产生时,父进程创建单一子进程去处理该请求,子进程以Linux的EXECVP系统调用实现功能,在进程的代码段载入其对应客户端的可执行文件,同时后台模块填充EXECVP系统调用的环境变量与命令参数,以此方式就可以实现相应客户端的传参调用。
后台总调度模块的子进程调用EXECVP系统调用,然后相应客户端程序被对应执行。由于子进程直接调用了可执行代码,父进程不能直接接受数据结果,故以共享内存去实现数据信息的交互。父进程首先创建并初始化共享内存,然后用信号量防止进程对共享内存的读写竞争。共享内存有自己的权限位及拥有者,不受进程存在的影响。所有进程均可连接到共享内存并得到指向该共享内存的指针。当子进程将结果数据写入共享内存时,子进程会用信号量对共享内存段加锁,在写数据结束后释放锁。父进程读取共享内存时,执行相同操作,即对共享内存加锁,然后等读数据结束后释放锁[16]。最后,将结果数据发送给系统控制主机,完成数据修改、信息获取。至此,后台处理服务总调度模块的功能就可以实现。
5 LXI网络仪器后台处理功能测试
采用control_client模拟应用服务层向后台处理模块control_server下达调用HISLIP客户端的命令请求,control_client的命令:
./control_client 192.168.1.122 192.168.1.232 4880 1.3.6.1.4.1.1199.1.1.1.1.1.1.0 *IDN?DATa?*IDN?*IDN?
其中,192.168.1.122为后台模块系统主机的IP地址;192.168.1.232为仪器代理的IP地址;4880为HISLIP公共端口号;1.3.6.1.4.1.1199.1.1.1.1.1.1.0为项目上MIB库节点;*IDN?DATa?*IDN?*IDN?是SCPI指令。
control_client客户端的运行结果如图6所示。
图6 control_client调用HISLIP客户端的运行结果
后台处理服务总调度模块control_server服务器在接收到control_client客户端调用HISLIP客户端的任务指令后执行相应操作。
后台处理服务总调度模块首先分析命令行参数。其次由统一接口程序根据接口4880确定调用HISLIP客户端,并将HISLIP客户端的命令行补齐。最后成功调用HISLIP客户端服务。
本章主要对后台处理服务进行测试,由测试结果可知功能模块达到了预计需求。
6 结束语
综上所述,为实现LXI网络测控系统的后台处理调度服务、提高仪器设备的使用效益、降低使用成本,以LXI总线标准和特点优势进行设计,将SNMP客户端、HISLIP客户端、DHCP客户端等嵌入到测控系统中,并设计实现了调用后台处理服务的统一接口程序。LXI网络测控系统后台处理模块提高了后台与应用服务层、仪器设备层的传输效率,增加了系统的实时性和完备性,设计实现了LXI总线标准规范的网络测控系统的核心组件层,对项目发展有积极意义。而且,该项目已被验收,运行正常,达到了项目预期目标。