基于.NET框架的实验仪器监控系统设计
2020-12-01徐闯王亚刚
徐闯 王亚刚
摘 要:为提高实验室工作效率,降低人为误差、减少人工成本,使实验操作过程更方便、直观,设计了基于 .NET框架的实验仪器监控系统。在Visual Studio 2019平台上运用.NET框架和C#语言实现系统软件开发,通过Modbus-RTU通讯协议采集设备数据,采用轻量化Access数据库结构对数据进行存储。该监控系统具有友好的用户交互界面,能够实时监控多台设备。采用图形化界面显示数据,根据不同用户需求自动生成数据报表供研究人员分析参考。测试结果表明,与传统人工方式相比,时间效率提高8.3%,数据准确率达到100%,证明该系统能提高实验人员工作效率与实验质量。
关键词:C#;.Net;Access;WinForm;VS 2019;Modbus-RTU
DOI:10. 11907/rjdk. 201777
中图分类号:TP319文献标识码:A 文章编号:1672-7800(2020)010-0160-05
Abstract:In order to improve the efficiency of researchers in the laboratory, reduce human errors and labor costs, and make the experimental operation process more convenient and intuitive, combined with a variety of experimental equipment provided by a company, an experimental instrument monitoring system based on .NET framework is designed. The .NET framework and C# language are used to realize the development of system software on the Visual Studio 2019 platform, collect device data through the Modbus-RTU communication protocol, and use a lightweight Access database structure to store the data. The monitoring system has a user-friendly interaction interface which can monitor the status, parameters and indicators of multiple devices in real time. A graphical interface is used to display the data, and data reports are automatically generated according to the needs of different users for analysis and reference by researchers. The test results show that the time efficiency is increased by 8.3% and the data accuracy rate is 100% compared with the traditional manual. This proves that the system can improve the work efficiency and quality of the experiment.
Key Words:C#;.Net;Access;WinForm;VS 2019;Modbus-RTU
0 引言
高校实验室的仪器设备,不仅仅是高校办学能力水平以及综合实力的一个重要评定指标,还是保障高校顺利进行教学和科研实验的重要物质基础[1]。近年来,由于高校办学规模不断扩大,实验设备也逐步增多,致使实验者在做并行实验时难以同时操作所有设备,从而导致工作效率低、人为误差大、人工成本高等缺陷[2]。物联网技术迅速发展,其应用越来越广泛,但应用在实验仪器监控方面却相对较少[3-5]。裴斐等[6]设计一种基于RFID(Radio Frequency Identification)、JNA(Java Native Access)、Web Socket API、服务器、监控模块和网络通信等物联网技术的实验仪器智能管理平台,针对设备仪器进行定位管理分配,提高了实验室设备使用效率;王宇鑫[7]采用ZigBee、射频識别技术以及红外等当今热门物联网技术,对实验室设备、人员等进行管理,使实验室具有共享性,更加符合数字化信息管理需求。以上研究虽然对实验仪器开发了管理定位共享功能,但却没有解决实验员本身操作时的不便问题。
本文设计一种基于.NET框架的实验仪器监控系统,运用.NET框架在VS 2019平台上利用C#语言进行系统软件开发,采用物联网思想,将实验室所有仪器看作一个小型局域网,进而通过电脑终端实现对所有实验仪器进行监控操作和数据化分析,一个实验即可同时操作多台实验仪器,具有数据采集存储分析、控制设备启停、设置参数、根据不同需求生成实验报表、导出实验数据进行分析并共享等功能,很好地解决了上述问题。
1 系统总体设计
1.1 系统组成
采用物联网思想设计的实验室仪器监控系统分为硬件和软件两个部分。系统总体架构如图1所示。
硬件部分:用搭载STM32F103RC芯片并带有RS-485通信串口模块的实验仪器,通过两根RS-485总线并行连接,经过RS-485转RS-232转换器连接到USB串口线,最后连接至电脑终端的COM口上,构成一个小型局域网络。
软件部分:借助VS 2019平台运用C#语言搭建WinForm桌面系统软件,结合轻量化Access数据库和Modbus-RTU通信协议,使用户可实时监控所有局域网内的实验仪器。
1.2 系统工作原理及流程
实验员先建立整体网络,打开系统软件平台进行准备工作。
(1)自动检测是否已存在Access数据库文件,存在则进行下一步,反之则利用OLEDB类[8]库函数创建Access数据库,用来存储每次实验采集的数据信息。
(2)自动检测是否有串口接入,如果没有则会提示实验员“未检测到串口,请先确定串口线接好和驱动安装好!”并退出程序。反之将监测到的串口号存储到列表,为后面通信做好准备。部分代码如下:
SerialPort serialhander;
//获取计算机所有串口的个数
n = SerialPort.GetPortNames().Length;
if (n == 0)//如果是0个的话,说明连串口都没有
{
this.Tag = 0;
MessageBox.Show(“未检测到串口,请先确定串口线接好和驱动安装好!”);//弹框提示
Application.Exit();//关闭程序
}
//这个循环,将所有串口名
//(例如;com1)存入--串口名--中
for (int num = 0; num < SerialPort.GetPortNames().Length; num++)
{
serialhander = new SerialPort(SerialPort.GetPortNames()[num]);
serialhander.Open();
serialhander.Close();
串口名。Add(SerialPort.GetPortNames()[num]);
}
准备工作完成后,实验员添加要监测的设备号,填写对应的设备信息,点击开始联机,主界面会依次排列所添加的设备窗口,在每个设备窗口可独立控制设备启停,设定参数,如温度、速度、定时、光照度、真空度、PH值等,查看实时动态数据曲线图等功能。
与此同时,点开查询历史数据功能,选择好要查询的时间区间,点击查询,就可列出这段时间内所有实验数据記录。双击任意一个单元格则进入该横条实验记录中,显示详细的实验记录信息。
功能键有3个:①数据报表:软件会自动生成一个PDF文件,将实验名、实验者信息、设备照片、实验数据曲线、数据分析处理等进行打印输出,供实验员参考研究;②曲线展示:弹出窗口,利用Chart类控键显示对应数据的曲线表现形式,供实验员初步直观研究;③数据共享:软件将自动生成一个Excel文件,将实验中所记录的所有相关数据提取出来导入到文件中。实验员可将其共享给他人,一同进行数据分析研究。
还有一些辅助性功能,如存储时间设定系统采集数据每隔多少时间存储一次数据;语言设定将语言切换成英文,方便外国留学生使用;帮助中的使用说明和版本信息介绍该系统软件功能如何使用以及软件版本信息,使用者能快速了解该系统软件工具。
2 系统软件设计
2.1 语言及平台
该监控系统是在VS平台上运用C#语言开发WinForm桌面系统软件。
经过C和C++的融合进化的C#语言具有更安全稳定的性能和简单易懂的编程逻辑思路,同时兼具可视化功能,运行效率高,是.NET开发的首选语言[9]。
VS是Microsoft Visual Studio的简称,因其具有一整套完善的开发工具集,基本上囊括整个软件开发生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。Visual Studio是目前最流行的Windows平台应用程序的集成开发环境,最新版本为 Visual Studio 2019版本,基于.NET Framework 4.7[10]。
2.2 通讯方式与协议
该监控平台采用工业通用的Modbus-RTU通信协议[11],多台设备可通过RS-485[12]并行连接,通过RS-458转RS-232接口,通过USB串口线连接至电脑,通过SerialPort[13]传输数据方式与设备进行通信。包括串口配置,打开port,传输数据,关闭port等。部分代码如下:
//串口参数初始化配置
串口.BaudRate = 9600;
串口.Parity = System.IO.Ports.Parity.None;
串口.DataBits = 8;
串口.StopBits = System.IO.Ports.StopBits.One;
串口.RtsEnable = true;
串口.ReceivedBytesThreshold = 1000;
串口.ReadTimeout = 1000;
串口.WriteTimeout = 1000;
for (n = 0; n < 串口名.Count; n++)
{
串口.PortName = 串口名[n].ToString();
串口.Open();
modbusrtu协议 = ModbusSerialMaster.CreateRtu(串口);
for (i = 1; i <= 增减设备.num[0]; i++)
{
ushort[] 数据 = new ushort[5];
当前设备地址 = 增减设备.num[i];
数据 = modbusrtu协议.ReadHoldingRegisters(当前设备地址, 0, 5);
Thread.Sleep(50);
if (数据[0] != 0)
{ break; }
}
if (i <= 增減设备.num[0])
{ break; }
串口.Close();
Thread.Sleep(50);
}
通信逻辑流程如图2所示。
根据Modbus-RTU通信协议[11],数据标准的传输字节段编排如表1所示。
其中,每个字节所代表的含义如下:
起始位:就是传输数据的开始。
主机号:例如1,2,3。依据RS-485协议[12],一根总线最多可挂载32台设备接入。
功能码:本平台主要使用03和06功能码,03功能是读取一个或多个保持寄存器;06是写入单个寄存器。
起始地址:读取或写入的开始地址,本文依据设备通讯协议采用4000起头。
数据:传输如温度、电机转速、湿度、光照强度、PH值等参数数据,设定参数。
CRC校验:为保障数据在传输过程中不丢失或不产生错误,要进行数据校验。
停止位:即传输数据的截止位置。
2.3 功能架构
结合实验功能需求,设计平台功能架构如图3所示。
(1)设备管理:确定对几台设备进行监控。①添加删减设备:最大可添加数32台,采用“写读INI”类[14]进行ini文件编写,进而记录每一次所加载的设备号,为下一次实验进行缓存处理。②设备配置:记录每次实验信息,如设备号、实验员姓名、实验目的、实验时间、备注等。查看以往记录,了解实验目的以及相关内容。
(2)历史数据:运用Access数据库搭建存储操作,存储所有实验数据记录供查询及研究。①数据报表:运用iTextSharp类库[15-17]以PDF的形式将实验数据记录及数据处理分析结果输出保存,内容有实验名称、实验者信息、数据曲线图、数据分析表、原始数据表等。②数据曲线:以图形曲线形式将实验采集到的数据显示,供实验员直观研究与对比。③数据导出:运用NPOI类[18-19]库以Excel形式将实验数据信息(实验名称、操作人员信息等)输出保存,与其他实验员共享。
(3)软件配置:进行相应的功能配置。①存储配置:设置时间间隔实时采集数据,设定间隔时间将采集到的数据进行存储。②语言设置:软件以中英文两种模式转换,目的是方便国外研究人员使用。
(4)帮助:软件信息与操作说明。①使用说明:该软件完整的配套使用说明。②版本信息:显示该软件的一些版本信息。
(5)开始联机:与联通设备进行通信采集。
通信连接:通过BackgroundWorker[20]控件类进程多线程数据采集以及数据指令下发操作任务;通过IModbusSerialMaster类创建一个实例,针对Modbus通信协议进行相应功能指令代码编写;通过SerialPort[13]类将指令代码通过串口下发给设备,达到与设备实时通信的目的。
(6)设备状态:将每台设备作为一个窗口显示,展示具体操作信息。①实时监控:实时读取下方设备状态数据,显示到界面的每个对应label控件中,例如实时温度,温度设定值;实时速度,速度设定等相关数据展示。每次数据改变时都进行界面刷新,以达到实时监控效果目的。②实时图像:采用chart类[13]控件将实时读取的数据以键值对形式添加到列表中,进而显示曲线图。每次读取都添加一个位点数据,进而展现出动态图像效果。③仪器操作:可进行设备的开关机、相关参数设定,如温度、速度等参数设定。④报警提示:当出现温度超过安全值、传感器跌落、电机堵转等故障时,对应的设备界面会显示出红色并告之故障信息,提示实验员检查设备。
该软件系统程序设计逻辑流程如图4所示。
3 运行与测试
该监控系统经过长时间运行,反复测试和修改bug,达到预期效果,具有友好的交互界面、简单的操作方式以及实时显示等各项功能。
将某公司实验设备进行50组并行实验测试,每组同时操控10台不同仪器, 24小时不间断监控操作。对每组实验完成情况进行时间效率与数据准确率分析。50组实验完成时间求取平均值,每组采集数据与真实数据对比计算正确率后再取平均值。将本文系统与传统操作进行对比,时间效率提高了8.3%,数据准确率从95%提高到100%,如表2所示。
测试结果表明,本系统软件使工作效率大大提高,人为导致的误差减小,人工成本降低,该系统有效实用。软件运行效果如图5所示(彩图扫OSID码可见)。
图5(a)是系统的主页面,左边是功能菜单栏,右边显示监控设备窗口。
图5(b)是点击实时曲线后弹出的窗口,进行实时温度曲线展示,红线是温度设定值,黄线是实时采集到的真实温度值。
图5(c)是点击查询历史数据弹出的窗口,可选择时间区间进行实验记录查询。
图5(d)是双击第3个图中任意单元格弹出的详细实验数据记录,左上角实现数据报表、曲线展示、数据共享3个功能。
图5(e)是点击数据报表后软件自动生成的数据分析报表,显示实验名称、操作者信息、设备仪器突显、数据曲线图像、数据分析表和采集的原始数据。
4 结语
本文研究设计了基于.NET框架的实验仪器监控系统。该系统交互性好、操作简单、兼容性强,实验人员在做并行实验时可监测控制多台设备仪器,在提高实验效率的同时降低了人为误差,节省了人工成本,具有很好的推广价值。但该系统暂未集成数据分析算法,对采集数据缺少深度分析,后续可加入算法功能进行研究。另外,还需提高界面展示和操作功能,让实验者能更好地进行实验操作。
参考文献:
[1] 王青伟. 高校实验室仪器设备管理与使用[J]. 科技经济导刊,2020,28(5):157-158.
[2] 张皓瑜,陈媛媛. 物联网技术在高校实验室管理中的应用[J]. 河南科技,2019,18(28):29-31.
[3] 李柏华. 基于物联网技术的生态环境监测应用研究[J]. 科技创新与应用,2020,19(16):149-150.
[4] 杨锦辉,王开心,黄艾璇,等. 基于物联网的智能窗户系统设计实现[J]. 物联网技术,2020,10(4):76-79.
[5] 马莉,李维康,梁晨,等. 面向资源的物联网系统形式化建模与验证[J]. 小型微型计算机系统,2018,39(1):140-145.
[6] 裴斐,金秋. 基于物联网技术的实验仪器智能管理平台设计研究[J]. 信息与电脑(理论版),2017,16(23):113-115.
[7] 王宇鑫. 物联网技术应用于多设备共享实验室管理的研究与实现[D]. 沈阳:沈阳工业大学,2019.
[8] 陈洪磊,施秋萍. 基于C#的OLEDB和COM组件对Excel文件操作[J]. 大众科技,2014,16(6):6-9.
[9] 金晓松. 基于C#的远程视频监控系统设计[J]. 科技视界,2014,21(13):75-128.
[10] 曾轩哲,张志东,王麒麟,等. 基于Microsoft Visual Studio 2010开发的井控装置自动试压检测系统[J]. 钻采工艺,2014,37(5):82-83.
[11] 马秋芳. 智能设备中的Modbus RTU协议开发与实现[J]. 仪表技术,2019,18(8):24-26.
[12] 张生磊,王磊,代亮. 基于RS-485总线与无线射频的智能供暖通讯系统的设计[J]. 电子设计工程,2018,26(6):138-142.
[13] 王刚. 基于. NET的串口示波器开发[J]. 电子测试,2016,15(13):82-83.
[14] 李国贞,于会智. 动态修改INI文件应用分析[J]. 软件导刊,2011,10(6):26-27.
[15] 胡陽,邹海. 基于iTextSharp的报表打印技术[J]. 计算机与现代化,2011,32(1):60-62.
[16] 李宽,张志红. 基于C# iTextSharp类库PDF文档生成技术的研究与应用[J]. 昆明学院学报,2011,33(3):68-75.
[17] 杨晓辉. 基于iTextSharp的PDF生成技术应用研究[J]. 电脑知识与技术,2012,8(28):6853-6855.
[18] 蔡小艳,卢莉娜,郑炎,等. 基于NPOI组件生成Excel报表的设计与实现[J]. 电脑知识与技术,2016,12(1):64-65.
[19] 连俊光. 基于NPOI数据导出方法的研究与实现[J]. 电脑知识与技术,2017,13(28):8-9.
[20] 舒清录,廖明梅. 基于. NET的后台线程在数据导出中的应用与实现方法[J]. 安阳师范学院学报,2013,20(5):61-64.
(责任编辑:杜能钢)