2 基于以太网的桥梁健康监测系统的软件设计
2.1 软件设计需求分析
现场监测仪将采集到的信号通过以太网传送到上位机PC,在PC机上实时显示、保存、分析采集数据信息,既能够充分利用了DSP在现场高速采集处理数据的能力,又能够充分利用了上位PC机在绘制图像和保存数据方面的优势。因此,一个完整的桥梁健康监测系统在中央监控部分应该完成以下几个功能:
(1)每台监测仪IP地址、MAC地址、Port端口等网络地址信息、运行模式以及系统采样时间的设定;
(2)监测仪8个通道的采样频率、放大倍数、采样保存时间的设定以及每个通道对应传感器类型的选择;
(3)动态实时显示数据曲线。数据的显示可以以原始数据和FFT两种格式,并且可以调整采样时间设定一帧采集的数据量的大小;
(4)八个通道数据采集数据的长度、采集的时间能够同步实时显示在中央控制机上;
(5)越限报警。当采集到的数据出现异常,超出正常的数据范围的时候,能够向中央控制单元报警,便于工作人员及时查找出现的故障和损伤;
(6)能够对采集到的数据进行实时分析。
2.2 软件系统整体设计和流程
软件设计核心部分主要有两个,一个是中央控制单元向监测仪发送命令参数,另一个是中央控制单元接收监测仪发送回来的采集数据信息。PC机接收到采集的数据信息后,还需要根据系统要求绘制出数据曲线图,便于对采集到的数据进行分析,同时为了历史数据信息的查阅,还必须将采集到的数据保存到Excel文件,其流程图如图2所示。根据软件设计的整体设计和流程,采用了四个线程:
线程1:UINT SendCMDToDSP(LPVOID IParam),完成向DSP发送在主程序设定的命令参数;
线程2:UINT、RecieveData(LPVOID IParam),完成接收采集的数据信息;
线程3:UINT DrawCurve(LPVOID IParam),将采集到的数据绘制成曲线图像;
线程4:UINT StoreToExcel(LPVOID IParam),将采集到的数据保存到Excel文件,便于查阅分析历史数据。
其中,由于PC是被动接收监测仪采集的数据,为了保证在接收数据时没有数据丢失,要把RecieveData线程的优先级设为最高。
Windows本身采用的是消息驱动机制,当一个线程发出一条消息时,操作系统首先接收到该消息,然后把该消息转发给目标线程。所以可以自定义消息,然后通过操作系统来实现一个线程向另一个线程发送消息。
首先SendCMDToDSP线程发送参数命令给监测仪主板核心器件DSP,DSP收到参数命令后,按参数命令的要求向PC发送数据,RecieveData线程监听到DSP开始发送采集数据后,开始接收数据。由于Recie-veData线程优先级别高于SendCMDToDSP线程,所以当接收数据时发送命令参数,SendCMDToDSP线程则需要等待RecieveData线程接收完数据才能开始发送命令参数,这样就不会造成命令参数的覆盖。在PC机内存区域开辟一块缓冲区用于接收数据,RecieveData开始接收数据,当内存缓冲区满的时候,RecieveData线程PostThreadMessage一个消息给DrawCurve线程,将缓冲区指针和大小作为消息参数传递过去,然后释放缓冲区,再等待接收数据;DrawCurve线程接收到消息后,分配另一块内存保存数据,绘完采集数据的曲线图像后,DrawCurve线程PostThreadMessage一个消息给StoreToExcel线程,将新的内存指针和大小作为消息参数传递过去,然后把数据缓冲区释放,再继续等待消息;StoreToExcel线程获取消息后,同样分配另一块内存保存数据,将采集的数据保存到Excel文件,然后把缓冲区释放,再继续等待消息。
2.3 以太网通信模块设计
PC与DSP的数据通信采用的是以太网通信,上位PC机向DSP发送设定好的命令参数,DSP则按照接收到的命令参数采集数据,然后向PC机发送采集到的数据。以太网通信部分采用的是套接口Socket编程,套接口Socket提供了许多函数,利用这些函数,程序员就可以实现DSP和上位PC机的以太网通信。