江苏机械门户网
 
用户名: 密码: 注册账号
 
文章查询:
 现在的位置:首页 >> 技术
  最新图文
  资    讯 更多..
4 创新志合,用科技智造未来 
4 杨国强:机器人将成为碧桂… 
4 2018年我国工业机器人产…
4 国内首款垃圾分类机器人…
4 创新驱动 中国一重锻造国…
4 中国一拖:再树农业装备辉…
4 机床利用率达98.6%!桑特…
4 2018年中国市场工业机器…
4 工业机器人用人市场出现…
4 关于工业机器人应用的十…
  法律法规 更多..
4 2020年全球船用燃油限硫…
4 江苏发布智能制造白皮书…
4 工信部对《制造业设计能…
4 三部门关于重点区域严禁…
4 科技部办公厅 财政部办公…
4 三部门:进一步深入推进首…
4 中华人民共和国工业和信…
4 科技部 教育部关于印发《…
4 动力电池和燃料电池行业…
4 2019年新能源汽车蓝皮书…
《基于C#的CCD光谱数据实时读取及数据处理的软件设计与开发》

内容来源:机械设计与制造工程      浏览次数:64      更新时间:2019-09-26

基于C#CCD光谱数据实时读取及数据处理的软件设计与开发

骆佳晨,吴绍锋,李东波

(南京理工大学机械工程学院,江苏 南京 210094)

作者简介:〖HTSS〗骆佳晨(1995—),男,硕士研究生,主要研究方向为光机电一体化,1096698325@qq.com.

摘要:为了实现光谱仪的集成化和智能化,设计开发了一款基于C#CCD光谱数据读取和处理软件。该软件主体部分使用C#语言编写,利用虚拟串口技术实现与光谱仪的通信,具有对光谱仪的采集控制、实时读取数据、对数据进行平滑降噪处理以及谱线绘制等功能。实验测试结果表明,该软件能够满足实际使用要求,具有良好的稳定性和实用性。

关键词:光谱仪;CCD;虚拟串口;读取数据

中图分类号:TP319   文献标识码:A   文章编号:2095-509X(2019)07-0056-06

 

一个完整的光谱仪包括光学光路系统、下位机数据采集系统和上位机及数据接收处理软件三大部分。光谱仪的基本工作流程为:通过光纤将待测样品的原始光信号利用光路系统变换为光谱信号照在CCDcharge coupled device,电荷耦合器件图像传感器)的感光面上,CCD将光谱信号转换成电信号再经过A/D转换之后,FPGAfield-programmable gate array,现场可编程门阵列)等的控制下由USB器件将数字信号传输到上位机,在上位机软件中完成数据处理并显示处理结果[1]。

数据接收与处理软件作为光谱仪的重要组成部分,是硬件集成化的体现,也是仪器智能化的关键。本文设计开发了基于C#CCD光谱数据读取和处理软件,完成了该软件与下位机之间的通信,接收来自下位机的实时数据并进行平滑降噪处理,实现了软件对硬件的控制。

 

1 软件系统整体设计

1.1 软件需求分析

1.2 数据接收与处理软件是为下位机硬件系统服务的,在数据采集过程中硬件系统所完成的工作需要通过上位机软件体现出来,并通过对软件界面的操作实现人机交互,因此该软件系统需要满足界面友好、操作便捷、高效准确等要求,且具备以下功能:

1)实时读取光谱仪通过串口发送的数据。

2)对光谱仪的数据采集进行一定的控制和参数设置。

3)判断并验证数据包是否完整、正确。

4)对完整正确的数据进行平滑降噪处理。

5)将处理过的数据以实时曲线的形式显示,并能将数据导出或保存。

1.3软件整体设计方案

1.4软件主体部分采用C#语言编写,利用Microsoft Visual Studio 2015开发工具在.NET Framework v4.5.1框架下进行应用程序的开发。C#具有语法自由简洁、代码稳定健壮、支持跨平台、与XML相融等优点。本软件属于桌面应用程序,通过C#创建Windows Form窗体应用程序来设计软件界面可以提高开发效率[2]。根据对软件功能的需求分析,可以将软件分为4个模块:光谱数据读取模块、数据解析模块、数据平滑处理模块和数据显示及存储模块。各个模块之间互相配合、协调工作,实现软件系统的整体功能。

1.2.1 软件系统的处理流程

光谱仪通过USB与上位机连接。光谱仪开机后启动读取软件,在软件初始化的同时查询该光谱仪对应的串口号并进行连接,连接成功后,在软件界面进行采集参数(如积分时间、滤波参数等)的设置,设置完成后由软件向光谱仪发送数据采集指令,光谱仪收到指令后控制CCD采集数据并将数据通过USB传输到上位机;当串口输入缓存区收到数据后触发串口的DataReceived事件,在该事件处理函数中读取缓存中的数据,将原始数据按照自定义的通讯协议解析数据包,在数据包完整以及正确的前提下对数据进行平滑处理,处理过的光谱数据以实时曲线的形式显示在软件界面上。

1.2.2 软件系统的结构设计

根据软件处理流程中指令和数据的调用传递过程,可将软件结构分为3层:虚拟串口层、数据处理层、界面应用层。

 

2 光谱数据读取模块设计与开发

目前实现下位机与上位机之间数据通信的常用方式有两种:1)USB转串口方式。上位机和下位机通过USB转串口数据线连接进行数据交互。2)串口转WiFiESP8266)方式。上位机和下位机基于TCP/IP协议通过WiFi传输数据[3]。由于本文中研究的光谱仪一般在室内使用,工作环境相对来说不算复杂,数据传输距离较短,但对数据的完整性和正确率要求较高,因此本文选择传输稳定且开发成本相对较低的USB转串口通信方式。此外从数据传输效率方面考虑,在下位机数据采集系统中使用的是TCD1304线阵CCDFT245RLUSB芯片,该CDD共有3 648个像元,一个像元占用2个字节,形成一个unsigned short16Bit)型的数字,像元信号输出的时间间隔为1/125ms, 所以CCD最大采集数据的速率约为2Mbps。该USB控制芯片支持USB2.0协议,有效数据传输速率为12Mbps,最高可达480Mbps,完全能够满足高效传输数据的要求。基于以上考虑,本软件使用虚拟串口(virtual COM portVCP)技术来实现与下位机的通信。

2.1串口连接

数据采集设备通过USB模块与上位机连接,第一次连接时上位机需要安装设备的驱动程序。驱动程序安装成功后,可以在上位机的设备管理器通用串行总线控制器下查看到设备对应的端口号。在后台代码中使用SerialPort类中的静态方法GetPortNames()查询并获取到所有的端口,找到该设备对应的COM口,然后创建一个SerialPort类的对象,根据自定义的通讯协议设置串口对象的属性值,进行初始化后便可利用该对象的Open()函数打开串口连接。

2.2 参数设置

在软件界面的参数设置模块中设置合理的积分时间、采样间隔、平均扫描次数以及滤波参数等,同时在平滑处理模块中选择合适的处理算法,等待获取校验成功的数据后进行数据的平滑去噪。软件的后端代码在获取到界面控件中用户设置的参数值后按照制定好的通讯协议将参数写入指令,再利用CRC16Check()函数计算出一个CRC校验码构造成一个完整的数据包,最后使用串口对象的Write()函数将数据包写入串口对象的输出缓冲区发送给下位机。下位机采集系统接收到包含参数的采集指令即刻进行设备初始化,控制CCD进行数据采集并将数据传输给上位机。

2.3 数据读取

在上位机发送采集指令后,数据的读取首先使用缓存机制完成。CCD采集到的一帧数据有7 296个字节,再加上通讯协议数据包格式中的其他8个字节,因此可通过定义一个成员变量List<byte>  bufferData = new List<byte>(7 304) 来存放一个数据包的完整数据。基于Window Form开发的桌面程序,默认会有一个主线程,即图形用户界面(graphical user interfaceGUI)线程。GUI线程主要负责处理和界面控件相关的逻辑代码,如果把数据接收等一些较耗时的操作都运行在GUI线程中可能会阻塞主线程,〖HJ*4/9〗从而导致用户点击控件响应滞后,甚至可能造成程序崩溃,影响系统的稳定性和用户体验[4],因此需要添加串口对象的DataReceived事件注册,即串口数据接收的监听线程[5]。当有数据传输到串口对象的输入缓冲区时触发DataReceived事件,此时开辟一个新线程,在新线程中调用数据接收处理函数Sp_DataReceived()。在数据接收处理函数中,串口对象利用Read()函数先从输入缓冲区读取一些字节并写入临时字节数组中,再利用bufferData.AddRange()方法不断地将临时数组中的数据添加到bufferData中暂存。

 

3 数据解析模块设计与开发

在数据读取过程中还要根据事先制定的通讯协议来确定一帧数据从什么位置开始、何时数据接收完整以及数据是否正确,以保证数据传输的安全性和可靠性。

3.1 解析数据包

将暂存在bufferData中的一帧数据按照事先制定的通讯协议进行判断解析。数据包中至少包含帧头(3bytes)、长度(2bytes)、指令名称(1byte)、校验码(2bytes),所以当bufferData.Count至少达到8个字节时才能进入数据解析的循环。首先查找数据头,判断bufferData中的前3个字节是否与协议格式一致。判断正确后便可获得第4和第5字节所表示的长度值,再利用刚获得的长度值判断数据区是否接收了完整的数据。确认得到完整数据后将bufferData中用于校验的数据段复制到另一个成员变量receiveBytes数组中等待校验。

3.2 CRC16数据校验

数据在传输过程中有可能由于电磁干扰、硬件驱动效率不够、软件缓存出错等问题造成数据丢失或数据突变的情况,因此需要对接收到的数据进行校验[6]。本软件采用的是基于CRC16/XMODEM通讯模式的CRC校验算法,生成的多项式为x16+x12+x5+1。

 

分享到:

 
版权所有:南京蓝页动力文化传播有限公司  苏ICP备14020118号-1

该网站由小贝网络工作室提供技术支持

 
360网站安全检测平台