從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記錄指令發送程序,可以在TesterInfo\logs檔案夾下,找到對應插件的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 ,
如有疑問和建議,敬請留言...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412751.html
標籤:.NET技术
