姬寧博 李高益 王 冠
(西安工業大學,陜西 西安710021)
EtherCAT(Ethernet for Control Automation Technology)是一種基于以太網的實時工業現場總線通信協議和國際標準。它具有高速和高數據有效率(data ratio)的特點,支持多種物理拓撲結構。[1]符合該總線的主站采用標準的以太網控制器,通過5 類非屏蔽雙絞線進行傳輸交互,物理層上使用網絡接口卡集成功能。EtherCAT 主站通過純軟件實現,一種是倍福公司自行研發的TwinCAT 自動化編程開發軟件,另一種是基于NDIS 的主站以及基于實施擴展的主站[2]。
TwinCAT 是一款由BECKHOFF 自主設計開發的軟件,有控制編程以及可視化操作的功能。不單單適用于Windows 操作系統而且還不需要其他的硬件來支持,將非實時系統改變為實時性系統,適用于高性能、高精度的控制任務。TwinCAT 可通過對象類別擴充組件或者動態鏈接庫等方式訪問自主設計的人機界面,而且可通過傳輸控制協議/網際協議等實現遠程訪問。ADS 通訊是通過調用動態鏈接庫文件的方式實現TwinCAT 控制器與上位用戶界面通信的協議[3]。
TwinCAT 系 統 中,包 括TwinCAT PLC、TwinCAT NC、Windows 應用程序等的工作模式類似于硬件設備,相互之間可以獨立工作。模塊之間的信息交換通過ADS 完成。ADS(Automation Device Specification)自動化設備規范,為設備之間通訊提供路由[3]。

圖1 人機界面設計
ADS 以傳輸控制協議/網際協議為基礎,相當于網絡通訊協議的應用層。屬于ADS 設備通訊使用多種方式,每一種方式都有它獨特的亮點。異步方式(Asynchronous)——Client 一邊持續自己的輸出工作,一邊向Server 發送傳輸請求。Server 把請求處理后,使用Call-back 函數的方式重新發給Client。通知方式(Notification)——Client 向Server 發 送 傳 輸 請 求,Server 使 用Call-back 函數的方式不斷向Client 發送響應,直到Server 中止這個請求。
TwinCAT 提供多種接口組件用于ADS 通訊,ADS .NET Component、ADS-OCX、ADS-DLL。
TwinCAT ADS 訪問的其中一種方式是地址方式——一個PLC 變量的地址由兩部分組成:分組索引和偏移量索引:分組索引是用來區別寄存器的類型,是一個常量,。偏移量索引是變量的偏移地址,可以確定在PLC 中為變量的地址。另一種方式是變量名方式——在TwinCAT PLC 程序里邊中任意變量都有一個專屬句柄,使用變量名訪問變量首先捕獲它的句柄,然后讀寫操作,最后釋放句柄。

圖2 I/O 變量鏈接

圖3 onlion 界面實時監控

圖4 實驗板現象
總體設計:
設計使用VS2017 的MFC 模塊,實現實驗板通過記數方式點亮LED 流水燈以及按鍵顯示的設計面板。設計面板中用到的PLC 程序中任意變量以文件方式存放在上位機中,根據變量名稱獲取變量地址信息。
為了得到相應PLC 變量的句柄,使用接口函數“AdsSyncReadWriteReq”,上位機軟件對PLC 進行數據讀寫,人機界面設計如圖1 所示。
在運行時需要將PLC 程序與開關量模塊的物理地址完成關聯,在TwinCAT 的System Manager 下將I/O 變量實現鏈接,如圖2 所示。
實驗運行界面,如圖3 和圖4 所示。
為了實現上位機軟件與實驗板通信端口的數據傳輸,通訊程序以Visual Studio 作為開發平臺,設計了基于C++程序與TwinCAT PLC 程序之間的傳輸模塊,采用ADS 通訊協議通信。通過實驗證明,通訊模塊設計合理,數據傳輸正常、效率高,能夠實現人機界面以及控制系統的數據交互,為后續的上位機軟件設計奠定了基礎。