劉碩

【摘 要】針對目前自動測試系統仍需要人工對接被測件的應用現狀,以及測試系統與測試產線間未打通實時交互的問題,設計了用于轉發(fā)、處理、存儲的服務器端,用于顯示的Web客戶端,用于控制測試執(zhí)行并與產線實時交互的本地客戶端,研究了基于WebSocket及Modbus技術的實時通信技術,實現了自動測試系統與測試產線間的協調,同時實現了測試系統客戶端、Web客戶端與服務器間的實時交互。
【關鍵字】自動測試系統;測試產線;WebSocket;Modbus;TestCenter
中圖分類號: V249.1 文獻標識碼: A 文章編號: 2095-2457(2019)05-0076-003
0 引言
工業(yè)4.0是繼機械化、電氣化和信息技術之后,以智能制造為主導的第四次工業(yè)革命,或革命性的生產方法。工業(yè)4.0主要是指基于信息物理系統(Cyber-Physical System)相融合的技術,將制造業(yè)向智能化轉型,最終建立一個高度靈活的個性化和數字化的產品與服務生產模式。本文將在智能測試領域進行工業(yè)4.0的進一步探索,以將人工或半人工測試完全轉變?yōu)闊o需人工現場操作的全自動測試。
1 系統結構
本文旨在設計自動測試系統、服務器、測試產線間的框架關系,自動測試系統通過WebSocket[1-2]技術與服務器間進行連接,通過Modbus協議[3]與測試產線間建立連接,實現實時數據的及時傳輸。其中自動測試系統中的軟件是基于TestCenter開發(fā),實時通信模塊以插件的形式嵌入到TestCenter[4-5]。TestCenter是一款專為加速開發(fā)自動測試系統而設計的測試開發(fā)與管理軟件平臺,由中國電子科技集團公司第四十一研究所獨立自主研發(fā)的自動測試平臺軟件,配備TestCenter的自動測試系統在航空航天、國防/軍工、汽車電子、無線通信、醫(yī)療電子等領域的應用日益廣泛。服務器上運行的是基于Java EE開發(fā)的Web程序,部署在undertow中。
在一個測試網絡內,信息流通過機械設備→傳感器→PLC→TestCenter→服務器/數據庫→Web傳遞,如圖 1所示,控制流反向傳遞,即Web→服務器/數據庫→TestCenter→PLC→機械設備傳遞,如圖 2所示。
在一個測試網絡內一般會有多臺功能相同或不同的自動測試系統,用于實現多種被測件的測試,同時配備一條或多條產線,而服務器只有一個。自動測試系統作為測試集群中的獨立站點同遠程中心服務器進行信息交互,遠程中心通過Web服務器進行測試信息的采集以及存儲,同時,遠程中心通過網頁的方式對外提供信息服務。整個系統的結構如圖3所示。
首先是自動測試系統同服務器的交互。自動測試系統內置工作站并作為訪問端,主動向服務器申請建立基于WebSocket的可靠連接。自動測試系統獲取的數據一方面作為一般數據傳輸給服務器進行存儲,包括系統配置、資源配置、被測件、測試程序、測試項目、測試結果等信息,另一方面測試過程中的瞬時數據將作為實時數據傳輸給服務器,服務器接收數據后再向客戶端的訂閱者群發(fā),此類數據主要包括用戶的操作指令和測試進度。
其次是自動測試系統同測試產線的交互。自動測試系統內置工作站并作為訪問端,主動向PLC申請建立Modbus的可靠連接。測試產線實時狀態(tài)通過Modbus上傳至自動測試系統,自動測試系統對產線狀態(tài)進行邏輯判斷同時將實時狀態(tài)通過WebSocket上傳至服務器;自動測試系統接收服務器端下發(fā)的指令或在接收產線狀態(tài)邏輯分析后進行測試,測試完畢后將測試狀態(tài)通過Modbus傳遞給PLC指導產線的進一步動作。
最后是客戶端以網頁的形式同遠程中心進行信息交互。實時通信功能是通過B/S體系體現的,用戶通過瀏覽器同Web服務器建立WebSocket連接,發(fā)送實時數據請求并查看實時數據。
本系統將WebSocket與Modbus與自動測試相結合,利用WebSocket進行TestCenter與服務器、服務器與Web端的實時交互,使自動測試系統的測試狀態(tài)更為及時、主動和便捷,利用Modbus進行TestCenter與PLC間的實時交互,將自動測試系統與產線進行狀態(tài)實時互傳,從而將自動測試與工業(yè)級產線間最后一道屏障打通,最終實現自動測試流水線的全自動化測試。
2 系統設計
系統設計分為兩大部分,第一部分是利用WebSocket進行測試系統客戶端(TestCenter)與服務器端、服務器端與Web端的交互,第二部分是利用Modbus進行測試產線與測試系統客戶端(TestCenter)的交互。
2.1 服務器端WebSocket實現
服務器端引用undertow-core-2.0.16.Final.jar和undertow-websockets-jsr-2.0.16.Final.jar兩個包,主要時間如下:
@ServerEndpoint("/websocket")
public class WebSocket{
@OnOpen
public void onOpen(Session session, EndpointConfig config){……}
@OnClose
public void onClose(Session session){……}
@OnError
public void OnError(Session session, Throwable t){……}
@OnMessage
public void onMessage(Session session, String msg, boolean last){……}
@OnMessage
public void onBinaryMessage (Session session, byte[] buffer, boolean last){……}
}
需要注意的是,在OnOpen事件中,需要將Web端申請與TestCenter發(fā)起的客戶端申請分離,進行分別處理。
2.2 TestCenter客戶端WebSocket實現
在TestCenter中C#的API中基礎上進行二次開發(fā),通過引用websocket-sharp組件構件WebSocket客戶端的監(jiān)聽與發(fā)送。
初始化:
WebSocket ws = new WebSocket(url);
連接:
ws.Connect();
監(jiān)聽:
ws.OnOpen += (send , e) => {……};
ws.OnClose += (send , e) => {……};
ws.OnError += (send , e) => {……};
ws. OnMessage += (send , e) => {……};
發(fā)送:
ws.send(byte[]);
ws.send(System.IO.FileInfo);
ws.send(string);
ws.send(System.IO.Stream , int);
斷開:
ws.Close();
ws.Close(ushort);
ws.Close(WebSocketSharp.CloseStatusCode);
ws.Close(ushort , string);
ws.Close(WebSocketSharp.CloseStatusCode , string);
2.3 Web客戶端的WebSocket實現
利用JavaScript技術插入WebSocket,利用HTML5自帶的API實現WebSocket,過程同上。
2.4 TestCenter客戶端Modbus實現
通過引用nmodbuspc程序集,在.Net環(huán)境中實現與PLC的通信。
連接:
ModbusIpMaster modbus = ModbusIpMaster.CreateIp(Modbus.IO.IStreamResource);
ModbusIpMaster modbus = ModbusIpMaster.CreateIp(System.IO.Ports.SerialPort);
ModbusIpMaster modbus = ModbusIpMaster.CreateIp(System.Net.Sockets.TcpClient);
ModbusIpMaster modbus = ModbusIpMaster.CreateIp(System.Net.Sockets.UdpClient);
寫入M區(qū):
modbus.WriteSingleCoil(byte , ushort , bool);
讀取M區(qū):
bool[] m = modbus.ReadCoils(byte , ushort , ushort);
寫入D區(qū):
modbus.WriteSingleRegister(byte , ushort , ushort);
讀取D區(qū):
bool[] d = modbus.ReadCoils(byte , ushort , ushort);
斷開:
modbus. Dispose();
3 結束語
本文通過WebSocket技術與Modbus技術,設計解決了自動測試系統與測試產線間的協調問題,同時解決了測試系統客戶端、Web客戶端與服務器間的實時交互問題。
【參考文獻】
[1]張藝.基于WebSocket的即時通信系統研究與實現[J].軟件,2015,3.
[2]劉維峰,左澤軍,趙利強等.基于HTML5的生產裝置實時監(jiān)測可視化[J].計算機工程與設計,2015.3.
[3]杜佳良,劉美俊,李俊蒂,湯宗清.基于Modbus協議的智能儀表自動檢測系統[J].鹽城工學院學報(自然科學版),2016,9.
[4]宋斌,方葛豐,劉毅.自動測試系統軟件平臺TestCenter體系結構設計與分析[J].測控技術,2013,8.
[5]方葛豐,劉毅,等.自動測試系統軟件平臺技術[J].儀器儀表,2009,10.