- A+
从21年10月份创建项目到1.0功能基本完成(包括设计,开发,测试),耗时已经有3个多月,开发效率非常低,基本都是利用零碎时间完成,废话不多说。
1. 介绍
设计Gcs Communication主要解决系统集成和测试自动化领域的各种通讯问题,让工程师能快速上手完成产品验证、系统搭建和设备部署。
Gcs Communication基于C# 和 TestStand engine搭建框架,通讯模块会包含常用的通讯协议:ModbusTCP,ModbusRTU,RS232,TCP/IP ,CAN, HTTP , MQTT,SSH等,这些模块都会以插件的形式嵌入通讯平台。
Gcs Communication拥有”编辑“和”运行时“两种模式,在编辑状态下可以编辑具体协议、指令和参数,并可以运行调试,如果命令验证结束即可保存,运行模式下可以直接运行保存的命令及参数。
可以理解为离线调试完,测试程序也已经完成,无需再集成一遍代码。
2. 安装使用
软件需求:
- .NET Framework 4.6.1 or later
- TTStand 2.5.3.3 or later
点击exe文件,默认安装即可。
在TTStand环境下使用:打开Development环境,右击插入步骤如下图
可以右击步骤选择Edit或者直接按快捷键Ctrl+E,打开编辑界面。
3. 图形界面
下图展示了Gcs Communication功能块:
主要功能块:
- 主设置
- 物理层插件设置
- 指令编辑
- 结果输出
- 编辑控件和状态显示
具体功能会在下面小节一一介绍。
4. 主设置
Socket: 指测试工位号,默认值为1,在运行模式下,该值由TTStand传入。
Task: 默认值为Normal。有些通讯协议需要创建循环帧任务,可以选择非Normal项。
Physical Layer: 直接关联物理层硬件和相应的协议。选择不同,物理层的插件界面会随之切换。
选择不同的插件,插件需要完成:
- open -> 处理跟硬件建立通讯连接
- SendMessage -> 处理按照相应的参数发送信息给硬件
- ReceiveMessage -> 处理接收来之硬件的反馈信息并且判断结果是否Pass or Fail ,通讯平台不负责判断反馈的是否正确,完全由插件负责判断。除非插件由异常发生,平台会停止任务并判定Fail
- ClearBuffer -> 处理硬件或者软件的缓存信息的清除
- Close -> 处理跟硬件断开通讯连接
Init: 如果勾选,Gcs Communication会调用对应插件的Open函数。
Send & Receive: 如果勾选,Gcs Communication会调用对应插件执行如下表格中指令的发送和接收任务。
Clear Buffer: 如果勾选,Gcs Communication会将使能信号传递给插件执行,Send & Receive定义的指令是如果是多条,那么没条指令都会执行Clear Buffer任务。
Stop On Fail: 如果勾选,指示有指令Fail,Gcs Communication将停止发送指令,假设只有一条指令,此项将不起作用。
Close: 如果勾选,Gcs Communication会调用对应插件的Close函数。
5. 物理层插件设置
这个区域用于动态加载插件的特有设置,当Physical Layer没有任何定义,这个区域将是空白。
6. 指令编辑
这个区域用于配置和外设、仪器、产品等发送和接收的指令。
这个表格支持多行配置,当"Send & Receive"被勾选,这个区域将被使能。
指令执行的顺序会按照表格定义的顺序。
TagName: 预留功能,后面的版本会支持从数据库加载指令。
MessageToSend: 需要通过插件发送给硬件、仪器或者产品的指令。如果协议支持只读,这项可以为空。
这项可以通过加载TTStand表达式变量,作为需要发送的指令
在MessageToSend区域鼠标右击可以插入表达式,插入的变量类型需要是字符串类型,否则会提示插入变量失败。
TTStand变量通过 '^'符号进行标记,同时支持和其他指令混合存在,这部分都由Gcs Communication负责解析。
ExpectedAnswer: 这条指令期望接收硬件、仪器或者产品的反馈信息,可以为空。
Period(ms): 在物理层期望信息以周期性发送,单位为ms,这项功能取决于插件的功能,不由Gcs Communication负责。默认值为-1,没有周期性发送。
Timeout(ms): 单条指令的超时设置,如果超时,Gcs Communication将判定这步骤Fail。默认值100ms。
Delay(ms): 在当前指令结束后执行这个同步延时,单位为ms,默认值为0。
7. 结果输出
结果输出区域会显示指令执行的结果,将会被展示在一个树形控件中,如下图。
Socket: 执行任务所在的工位号
Result: 可能的值为PASS,FAIL
Actual Answer: 实际从硬件、仪器或者产品反馈的数据
StepName: 当前步骤的名称
Time Stamp(ms): 当天的时间戳,单位为ms
MessageToSend: 请求发送的数据
ExpectedAnswer: 期望接收的数据
Error Info: 指令发生错误的信息
Execution Time(ms): 当前指令执行的时间,单位为ms
8. 编辑控件和状态显示
执行控件->这个区域包含如下按钮:
Run: 执行当前配置的指令。
Save: 保存当前配置的参数和指令
Revert: 将所有配置的参数恢复到初始位置
Cancel: 取消操作,关闭编辑界面,如果有参数改动且未保存的,将不会被保存。
步骤状态结果显示控件:
当指令执行Fail时,可以查看Fail原因。
同时在结果显示区也可以查看Fail原因:
9. 菜单
Execution
- Exit 退出编辑界面。
Tool:
- Convert 转换指令工具
10. 步骤参数
输入参数:
输入 参数都被保存在Step的容器中,详细如下:
Step.ThreadTask
Step.LogEnabled
Step.Init、Step.EnableSendAndReceive、Step.ClearBuffer、Step.StopOnFail、Step.Close
Step.PhysicalLayerName
Step.PhysicalLayerString
Step.Tags
Step.MessagesToSend
Step.ExpectedAnswers
Step.Periods
Step.Timeouts
Step.Delays
输出参数:
Step.Outputs
11. Log
当使能Log记录指令发送过程。可以在TesterInfologs文件夹下,找到对应插件的log文件。
文件名会以插件名+日期命名。
如下是一条指令log记录的内容:
2022-01-12T19:03:27.2755336+08:00---{"Socket":"1","StepName":"Read Version1","Result":"PASS","MessageToSend":"03 00 0D 00 0A","ExpectedAnswer":"GcsCommunication1.0","ActualAnswer":"GcsCommunication1.0","TimeStamp":"68607274","ExecutionTime":"6.71","Error":""}
12. 运行时模式
运行时模式相对比较简单,在编辑状态下保存的参数,不管单步执行,在Process环境中执行都可以。
在TTStand的支持下,在生产环境中,可以在线调试Gcs Communication通讯。
使用Interactive Step Into功能,实现可视化在线调试,如下图:
通过这个功能可以清晰的分析运行时通讯失败的原因,提升寻找问题的速度,达到快速解决问题的目的,对已经投产的设备尤为重要!
总结:
Gcs Communicaiton通讯软件的功能已经介绍完成,总算有个交代,插件模块功能的介绍将分开介绍,1.0版本已经实现Modbus TCP、Modbus RTU 、RS232 。
如有疑问和意见,敬请留言...