服务器Server程序主要包括通信、开关控制、信号采集、资源虚拟化和资源动态调度五类模块,首先针对各个模块进行程序设计,然后进行汇总、调试,最终完成服务器Server程序整体设计工作。由于在实验室环境下无法完整模拟部队装备保障活动的所有细节,针对资源动态调度模块仅做了程序设计,并通过前人的相关实例验证了调度模块在理论上的可行性,详见第5章中三类算法的伪代码、具体操作流程以及实例验证。
1.通信模块
通信模块负责服务器与多个客户端之间的信息通信,通过局域网向客户端发送测试数据或者从客户端接收测试需求等信息,其设计思路如图6-12所示。首先完成TCP(传输控制协议)服务器的有效注册(调用回调函数RegisterTCPServer),使得控制器转变为与端口号相关联的服务器;注册完毕后,实时监测到来自客户端的测试请求,从而获得客户机的名称和端口号(调用GetTCPPeerName和GetTCPPeerAddr);等待连接成功后,服务器和客户端之间进行信息通信(调用ServerTCPWrite、ServerTCPRead等)。
图6-12 通信模块设计思路1
2.开关控制模块
开关控制模块控制开关设备引导测试信号和传感器特征参数通过特定通道分别传输到对应的采集通道和控制器,其设计思路如图6-13所示。首先初始化开关设备(调用回调函数NIDAQmx_NewDeviceCtrl),设置拓扑结构以及连接通道(调用回调函数DAQmxSwitchSetTopologyAndReset和DAQmxSwitchConnectMulti);等待开关实际操作(调用DAQmxSwitchWait-ForSettling);等待测试信号和特征参数传输完毕,断开所有连接通道(调用DAQmxSwitchDisconnectMulti)。
图6-13 开关控制模块设计思路
3.信号采集模块
信号采集模块控制振动信号采集卡采集传感器输出的模拟信号,并将其转换为能被计算机识别的数字信号,其设计思路如图6-14所示。
图6-14 信号采集模块设计思路(www.daowen.com)
首先创建一个NI-DAQ任务和一条模拟输入通道(调用回调函数DAQmxCreateTask和NIDAQmx_NewPhysChanAICtrl);然后设定时钟的采样频率和采样模式(调用回调函数DAQmxCfgSampClkTiming和DAQmxGet-TaskAttribute),然后制定测试数据的存储模式和读取模式(调用回调函数DAQmxRegisterEveryNSamplesEvent和DAQmxReadAnalogF64);开始采集测试信号(调用DAQmxStartTask);最后等待测试信号采集完毕后,停止NIDAQ任务并初始化(调用DAQmxStopTask和DAQmxClearTask)。
4.资源虚拟化模块
基于第4章中针对硬件测试资源虚拟化的相关研究以及实例验证,资源虚拟化模块的设计主要采用数据库编程技术,其设计思路如图6-15所示。
图6-15 资源虚拟化模块设计思路
首先创建数据库链接,获得链接句柄(调用回调函数DBConnect);将描述列表中修改后的数据映射到变量中(调用DBMapColumnToInt、DBMap-ColumnToChar等);激活映射(调用DBActivateMap);从第一条记录一直检查到最后一条记录,更新现有数据库(调用DBFetchNext和DBPutRecord);数据库更新完毕,关闭数据库链接(调用DBDeactivateMap);依据更新后的测试资源特征参数,将其重新映射到虚拟测试能力中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。