APP下载

LXI网络仪器监管与测量的设计与实现∗

2020-05-15闫海卿李宥谋李延峰李晓俊

计算机与数字工程 2020年2期
关键词:控件测控仪器设备

闫海卿 李宥谋 李延峰 李晓俊

(西安邮电大学计算机学院 西安 710100)

1 引言

LXI是成熟的以太网技术在测控自动化领域应用的扩展,是将成熟的以太网技术应用到自动测控系统中,以替代传统的测试总线技术,随着信息技术的发展,仪器仪表的测控技术[2]发生了翻天覆地的变化,因此,LXI总线应运而生,LXI测试总线技术是信息化、网络化发展的必然趋势,在网络化的测控系统中,数据通过网络传输到用户终端,而用户可以不受时间和空间的限制对系统内的测量仪器进行远程操控、获取测量信息[3],LXI网络仪器是一种以LXI作为仪器内部总线的由不同功能的LXI模块所组成的新型仪器[4],传统仪器测量技术存在很多缺陷,容易受到地域或者其他条件的影响,监管和测控不方便,并且仪器不能单独使用,无法实时监测到数据,如果仪器设备发生故障的时候,无法快速准确定位故障点,还需要人工进行排查,并且也无法对之前采集的数据进行分析与统计。

LXI网络仪器可以实现远程实时测控[5]、监管与维护,因此设计一个用户感觉良好、功能完善的LXI网络仪器系统的测控平台具有深远意义[6],通过该平台可以将主界面和其他界面相互协作完成对LXI网络仪器的测量、监管和维护。

2 树形图的设计与实现

该测控平台在Windows操作系统下完成的,使用C#语言在.NET Framework4.5平台、Microsoft Vi⁃sual Studio 2012环境下开发的,在测控平台主界面中,左侧为树形图,右侧为拓扑图,本文中的树形结构[7]主要是利用控件TreeView动态将代理和仪器设备加载到树形图,树形图和拓扑图都可以直观地看到代理和仪器设备的连接情况,但是树形图可以直观地看到父子关系,和书的目录相似,功能完善,代理和仪器设备都可以通过树形结构进行动态显示,连接好的远端代理和设备的信息都可以通过测控平台的后台模块传送到测控界面中的MIB信息管理界面进行显示。

LXI网络仪器树形图,在TreeView控件的基础上进行设计,树形图的设计分为三层,层次结构明确,如图1所示,左侧为树形图,右侧为拓扑图[8],本文重点介绍树形图,拓扑图只是简单说明,树形图第一级为根节点,无实际意义,用于连接代理开发板,第二级是代理开发版,用于连接仪器、仪表或者传感器等设备,第三级就是仪器、仪表或者传感器等设备,整个三层结构显示了网路仪器的拓扑层次结构。

图1 树形图的生成

2.1 树形图相关操作

1)当点击树形图上的根节点的时候,会弹出相应的菜单栏,包含删除和添加菜单项,根节点无实际意义,只起到连接作用,可以在根节点进行添加,将代理节点添加到根节点下,代理最多可添加32个,每个代理下最多可添加四个仪器设备,同时将添加的代理和仪器设备存入数据库,也可以在根节点处进行删除操作,删除根节点下的所有代理节点,同时,数据库中的信息也进行变化,除了根节点之外,所有数据都将删除,树形图和拓扑图都动态变化。

2)当右击代理节点的时候,会弹出相应的菜单栏,包括查看代理信息、配置代理、MIB信息管理、添加组件和删除组件,对于添加组件和删除组件项,添加的是代理节点(代理节点最多32个),删除的是选中的该代理以及该代理下所连接的所有仪器设备,查看代理信息是将数据库[9~11]中已经存放好的该代理的详细信息进行显示,配置代理是将代理的ID编号和MAC地址进行添加,MIB信息管理界面是对MIB节点进行管理,可以获得代理以及带代理对应的详细信息,包括IP地址,可以将仪器设备端的数据通过代理,然后经过后台处理之后在MIB界面进行显示。

3)当右击设备节点的时候,弹出相应的菜单项,包含设备属性、MIB信息管理、设备配置、删除节点,因为最多三级节点,因此没有添加选项,设备属性是将设备的基本信息显示出来,设备配置是将设备的基本信息进行保存和删除,还包括该设备的上一级节点的信息,MIB信息管理可以对仪器设备节点进行管理并将采集的数据通过该节点进行显示,在TreeView属性图上进行添加和删除组件的操作都会影响数据库中的数据记录,操作结果的相关信息会在主界面的运行窗口进行显示,同时也会影响主界面中的ListView控件中所显示的信息,与此同时还会影响LXI网络仪器拓扑图区域中的拓扑图的信息显示,这几个部分的信息彼此相关联,无论是树形图还是拓扑图的改变,数据库和ListView控件中的信息都需要立即进行更新,从而保持数据的一致性。

2.2 树形图生成的实现

2.2.1 树形图的生成

TreeView树形图的生成是监管平台主控界面的核心功能,实现过程是首先从数据库t_Running⁃TreeView表中读取数据,而该表中的数据来自于中间交互处理模块对代理开发板的自动发现,然后根据该表的所有信息以及表中节点的ID和PID递归的调用自定义的额add_tree()方法,执行该方法的过程中,树形节点就会逐级的被添加到TreeView控件上,同时也会统计代理和仪器设备的数目。树形图的生成过程是首先从数据库中t_RunningTree⁃View表中读取数据并存入DataTable内存数据表中,利用DataTable类对象的Select方法,即Da⁃taRow[]dr=dt.Select(“pid=”+pid),从根节点开始递归,即pid=0的节点开始遍历dr,每次遍历实例化新的node对象,用于在树形图TreeView中添加新节点,即TreeNode node=new TreeNode(),将 dr对象的每行值与node的相关属性绑定,再把node节点通过Add方法添加到TreeView控件上,在此过程中要对本局域网中代理总数和仪器设备数目进行统计。生成树形图的关键代码为

string ostring=“select*from t_RunningTreeView”;DataSet ds=new DataSet();//实例化数据集

ds=MyMysqlMeans.getDataSet(ostring,“RunningTree⁃View”);//调用自定义的数据库公共类的静态数据方法,返回DataSet对象

DataTable dt=ds.Tables[“RunningTreeView”];//创建DataTable对象

//将t_RunningTreeView表中的代理以及仪器设备动态添加到TreeView控件

add_tree(dt,0,(TreeNode)null,random);//将根节点添加到树形图中

private void add_tree(DataTable dt,int pid,TreeNode pNode,Random random)

{//获取与筛选条件相匹配的所有DataRow对象的数组

DataRow[]dr=dt.Select(“pid=”+pid);

foreach(DataRow row in dr)//遍历数组dr

TreeNode node=new TreeNode();//实例化一个TreeNode节点对象

if(pNode==null)//如果父节点为空,则为根节点root

//设置树节点标签中显示的文本,即名称

node.Text=row[“name”].ToString();

node.Tag=row[“id”].ToString();//设置树节点的ID编号属性

node.ImageIndex=0;

node.SelectedImageIndex=0;//选定状态时的图像列表索引值

treeView1.Nodes.Add(node);//将创建的节点添加到树节点集合的末尾

//调用自定义的方法将row行表示的节点项添加到ListView列表控件中

add_listview(row);

//再次递归调用自定义的方法,递归创建并添加根节点的子节点

add_tree(dt,int.Parse(row[“id”].ToString()),node,ran⁃dom);

count_nodes++;//节点总数累加

else{

//添加当前节点的子节点

node.Text=row[“name”].ToString();

node.Tag=row[“id”].ToString();

int imageIndex=random.Next(1,33);//随机数

node.ImageIndex=imageIndex;//

node.SelectedImageIndex=imageIndex;

//node.ToolTipText=row[“notes”].ToString();

pNode.Nodes.Add(node);

add_listview(row);

add_tree(dt,int.Parse(row[“id”].ToString()),node,random);

if(node.Level==1)//一级节点

agentNum++;//统计代理数目

else if(node.Level==2)//节点深度为2,表示代理下面的设备节点

devNum++;//仪器设备数目统计

count_nodes++;//节点总数累加

2.2.2 树形图的动态刷新生成

树形图的动态生成实质上是清除已有的树状图和拓扑图,再将它们重新生成,是根据数据库表t_RunningTreeView中的数据生成TreeView目录树状图,再根据TreeView节点的数据绘制树状图和拓扑图,这样的缺点是无论树状图和拓扑图是否发生变化,都要人工去刷新,消耗体力,程序轮询控制时,在时间间隔上有局限性,要实现动态刷新,更新数据库表t_RunningTreeView,再进行程序控制的刷新,在动态刷新的时候,树形图和拓扑图自动动态更新,获取本局域网中动态树形图的方法有两种,方法之间相互协调,共同完成任务,动态树形图如图2所示,具体工作流程[12~13]如下。

1)IP地址自动发现:测控平台加载之后调用后台模块,后台模块调用开源DHCP模块,为代理开发板分配动态分配IP地址,然后后台将IP地址和MAC地址通过进程间通信socket通信推送到测控平台,测控平台创建线程[14]去接收,将接收到的消息通过主界面的运行栏进行显示,同时将其写入日志文件,以备后来查看,同时,测控平台主界面自定义函数getDHCPInfo()中将接收到的MAC地址在数据库表t_AgentIdMac中进行查询,如果不存在此MAC地址,则说明该代理不存在,则将该代理添加到此表中,然后在表t_RunningTreeView中通过代理名称来查询编号ID,如果不存在,则将该代理的名称、pid、ip和mac地址添加到此表中,点击刷新,树形图和拓扑图都发生改变。

2)扫描代理:代理通过DHCP模块为代理进行IP地址的分配,在主界面创建一个线程scanAgentIp(),测控平台每隔一定时间去读取数据库表t_Run⁃ningTreeView中所有代理的ID和IP地址,然后通过Ping类和PingReply类与代理的IP地址进行Ping操作,即发送ICMP请求,并获取ICMP应答状态,如果应答状态失败,则表明此代理不存在,则应该将该代理从数据库表中删除,并且将该代理下面的仪器设备进行删除,如果Ping操作成功,则在数据库中读取下一条ID和IP地址的记录,然后进行和上面同样的操作。

图2 代理和仪器连接

3 MIB信息管理界面的设计与实现

LXI网络仪器测控平台主界面中的树形图和拓扑图都可以动态显示代理以及仪器设备,也可以实现动态添加、删除、查看对应属性信息,远端代理和仪器设备的信息获取是使用的 SNMP[15~16]的 Get和Set操作,用户可以将远端数据通过MIB界面进行正确显示,实现远程监控和数据查看。

1)当加载此窗体时,窗体在加载的过程中会对DataGridView控件进行自定义设置,例如在该控件中创建复选框列,从数据库中加载信息,显示在该控件的指定位置,并进行分页显示,在图3中的MIB表中,可以单击某行后面的“获取”或者“设置”按钮,从而实现对选定行中的OID进行SNMP的“Get”和“Set”操作,也可以在复选框中选择一个起始的OID,单击“批量获取”按钮进行连续四个OID符号表示的信息的获取,当点击“获取”时,会弹出一个小窗口,需要填充该OID对应的代理的IP地址,可以通过单击该小窗口上的“自动获取”按钮进行快速获取,然后点击“提交”按钮之后,通过中间交互处理模块即后台处理模块向代理发送Get或者Set请求,对于“获取”、“设置”和“批量设置”操作实现比较复杂,用到数据库技术、多线程、内存映射文件、socket套接字以及序列化与反序列化操作等,这里不做详细说明。

2)在实验中用到的有基于Linux操作系统的开发板、基于μC/OS-II[17]操作系统的开发板、示波器、信号发生器和温度传感器等设备,本测试用Linux操作系统的开发板进行测试,5号代理将示波器和传感器分别接在代理的USB和UART接口上,上图2中device-5-1和device-5-3分别代表示波器和传感器分别接入到5号代理的接口1和接口3,选择OID号为1.3.6.1.4.1.1199.5.1.4.0,表示5号代理第一个接口所连接的设备的第4个属性。

图3 MIB信息管理界面

3)在MIB信息表中,选中OID号为1.3.6.1.4.1.1199.5.1.4.0所在的行,点击“获取”之后,在图5所示的窗口点击自动获取填充此代理的IP地址,可在MIB信息管理界面看到结果,结果如图4所示。当点击该行的“设置”(SNMP协议中的Set),表示对示波器device-5-1的操作,设置其无效值为“5.1E1”,并在信息显示窗口查看显示结果,然后再对其设置有效值“5.0E0”,查看设置结果,当点击“获取”的时候,两次设置对比图分别如图6和图7所示。

图4 “获取”属性值

图5 “设置”属性值

图6 第一次设置结果

图7 第二次设置结果

4 结语

本文主要研究的是局域网内树形图的生成及远程管理和测量,属于LXI网络仪器测控与管理的系统监管平台项目的一部分,该项目是陕西省重大科技创新专项资助项目,实现了仪器设备的远程测量与监控,具有创新性和开发的价值,该项目已经成功验收,测控界面直观、易操作,达到预期目标。

猜你喜欢

控件测控仪器设备
扬州英迈克测控技术有限公司
基于C++Builder 的电子邮件接收程序设计*
星载测控终端型谱化研究
使用“填表单”微信小程序 统计信息很方便
采购与论证分离模式下的大型仪器设备购置论证思考与探索——以吉林大学为例
基于.net的用户定义验证控件的应用分析
昆山祺迈测控设备有限公司
如何做好实验室仪器设备检定或校准证书的确认工作(二)
做好农作物种子检验机构仪器设备维护管理工作的建议
食品检测实验室中大型仪器设备的管理