#02 磨刀不误砍柴工

凡事预则立,不预则废,硬件框架现在已经大致确立,现在要考虑设计流程了。

客户端操作流程

模块任务

所有相关模块:

1. DLL Controller
2. Setting Editor
3. DAQ
4. Logger
5. Sequencer
6. Timer
7. Collector
8. Error
9. UI
10. Alarm

DLL Controller 用于控制与服务器所有对接的DLL功能函数,包含SystemLogGetParametersSaveDataToDBTransStatusOpenDB
Setting Editor 用于处理用户编辑参数如报警限制、校准、样机信息,并广播在线参数至各模块。
DAQ 负责采集测测试数据并通过DataUpdated方法广播数据,而其他模块可以通过RegisterUnregister事件用于注册和取消注册数据的传送。
PCI Board 用于管理硬件驱动如AI采集、DO、AO控制,对应管理抽象硬件层。
Logger 用于处理报表记录。
Sequencer 用于处理硬件顺序流程控制,PID算法。
Timer 用于定时触发事件,调用Pump Transstatus事件用于发送心跳包。
Collector 为了避免其他模块直接调用DLL ControllerCollector用于统一并收集其他模块与DLL有关请求,并关联DLL Controller模块。
Error 统一管理所有模块广播过来的错误处理信息,包含用户提醒,错误记录。
UI 用于用户界面交互,统一管理所有模块生命流程周期。
Alarm 用于处理测试过程检测报警信息,如电流超过设定上限等。

Modules

DLL功能:

  • SystemLog函数用于记录样机测试信息,包含SampleNo, TRNo, SysEvent, EveBy, LogInfo(Cycles,Hours), SystemLogReturn
  • GetParameters函数用与获取测试步骤,包含SampleNo, TRNo, FixtureNo, CycleName, CycleProcess, GetParametersReturn
  • SaveDataToDB函数用于上传数据及log文件保存路径,包含SampleNo, TRNo, SummaryFilePath,TestDataFilePath, LogFilePath, SaveDataToDBReturn
  • TransStatus函数用于发送心跳包,包含SampleNo, TRNo, Status,TransStatusReturn
  • OpenDB函数参数用于打开数据库通讯所有功能,功能键使用位于SettingEditor 模块,其他模块初始化前即可获取OpenDB的值

数据库

数据库的检索类似于查字典的方式,所以一开始我们需要按一定业务逻辑定义成表,数据都按表的格式按部存储

定义客户端当前运行状态,以及10-20min测试数据格式,另外数据库需要保存客户端当前样板测试过程中产生的异常事件。

总结

1.服务器端通过DLL实现与客户端数据通讯。
2.正常使用时,用户可通过远程web界面接口定义Sequence参数,客户端只负责启动停止设备并做简易的报警设置,而在数据库无法使用时需要开启手动测试模式,用户需要在本地客户端设置Sequence参数,由于采用触摸屏控制,实际操作会比较麻烦。
3.测试过程中,用户通过web端可远程监测客户端通过心跳包发送至服务器的summary参数,由于服务器数据传输量,目前无法获得live data,但测试异常或完成后可以获得所有的Raw data。

发表评论