(轉載)倍福 Beckhoff TWinCAT ADS PLC編程簡述
原創: https://www.apps121.com/2018/07/30/beckhoff-twincat-ads-plc/
一、 倍福TWinCAT ADS簡述
在Beckhoff TwinCAT 系統中,各個軟體模塊(如TwinCAT PLC、TwinCAT NC、Windows 應用程式等)及硬體系統CX、BX、BC 系列控制器中包含TwinCAT 資訊路由器。因此各個ADS 設備之間都能夠交換資料和資訊。
二、 TWinCat ADS 設備標識
每臺TwinCAT ADS 設備都有各自不同的AdsAmsNetId 和AdsPort(埠號), AdsAmsNetId 是TCP/IP 地址的擴展,默認為在IP基礎上增加.1.1,也可以進行修改。
ADS 客戶端(ADS Client)應用程式的AdsPort 則是可變的。不同ADS 設備的AdsPort 如下圖所示:

三、 TwinCat ADS通訊方式(同步和異步兩種方式)
異步方式(Asynchronous)
ADS 客戶端向ADS 服務器發送ADS 請求,同時客戶端繼續自己的作業。ADS 服務器處理請求后,把回應以Call-back 函式方式發給客戶端。
優點:不會造成系統堵塞
缺點:不能確保每次請求都有回傳
同步方式(Synchronous)
ADS 客戶端向ADS 服務器發送ADS 請求,在通訊程序中客戶端程式停止執行,直到獲得ADS 服務器回傳的回應
優點:能即時回傳結果
缺點:如果通訊故障會造成系統堵塞
同步方式(Synchronous)通訊分為兩種,即讀操作和寫操作,針對于讀和寫操作又分別分為兩種方式,即按變數名進行讀寫和按照地址進行讀寫。
1.變數名方式
在TwinCAT PLC程式中每個變數都有一個句柄(Handle)。在對變數進行操作之前,首先我們要通過相關路徑得到變數的句柄,然后進行讀寫操作,操作完畢后對句柄進行釋放。
2. 地址方式
在TwinCAT PLC中一個變數的地址由兩部分組成,即GroupIndex和OffsetIndex, GroupIndex為該變數所在的暫存器型別,為一常量; OffsetIndex為該變數在暫存器中得地址偏移量,為一變數。

1.對于MX,IX,QX暫存器的偏移地址的單位是“位”,而不是位元組,計算地址需要注意
2.M暫存器偏移地址最大值為0x0000FFFF,而MX,I,IX,Q,QX偏移地址最大值為0xFFFFFFFF。
3.上表后三個主要用于C++語言,其他高級語言已經封裝成專有方法,不需直接呼叫。
四、 按變數名和按變數地址進行操作的比較
1.變數名方式
優點:
A、 無需知道變數的具體地址;
B、 可以省略計算地址的作業;
C、 可對程序變數進行操作;
缺點:
A、 因為要抓放句柄(10ms),和地址方式比較通訊速度慢
B、 對BC、BX系列不能進行操作
2. 地址方式
優點:
A、 直接對地址進行操作,省去抓放句柄時間,通訊速度快;
B、 無需知道變數的具體路徑;
C、 可以操作BC、BX系列控制器
缺點:
A、使用中需考慮不同變數的偏移地址,容易出錯。
五、 TwinCAT 通訊高級語言介面
? 開放、簡單、 靈活、 檔案齊全

六、 TwinCAT 通訊高級語言組件
為方便各種計算機高級語言及其環境使用ADS通訊,Beckhoff TwinCAT提供相如下組件:
?ADS .NET Component
適用.NET平臺,VB.NET,C#等
? ADS-OCX (ActiveX COM控制元件)
適用于Visual Basic, Visual C++, Delphi等.
? ADS-DLL
適用于Visual C++等.
? ADS-Script-DLL
適用于 VBScript, Jscript等腳本,創建B/S架構的應用.
?JAVA DLL
適用于JAVA語言。
? “PlcSystem.lib” PLC 庫
ADS設備可以通過據此和其他ADS設備以及Windows進行通訊
七、 TwinCAT 通訊高級語言組件獲取
ADS組件庫集成在TwinCAT軟體中,安裝任何版本的TwinCAT軟體都包含ADS通訊組件,如果用戶希望在沒有安裝TwinCAT軟體的計算機適用ADS通訊組件可以安裝Supplement中的TwinCAT_ADS_Communication_Library此為免費產品。
八、 Qt C++ VS2015 工程設定示例
A、需要的相關檔案
需要包含的頭檔案: TcAdsAPI.h 和 TcAdsDef.h
需要包含的Lib檔案: TcAdsDll.lib
程式運行目錄需要包含庫檔案: TcAdsDll.dll
B、設定方式
我們在工程目錄下面新建一個目錄,命名為: ads_include 【包含檔案TcAdsAPI.h 和 TcAdsDef.h】
加入工程方法:工程屬性 -> C/C++ -> 常規 附加包含目錄 中添加 ads_include即可
我們在工程目錄下面新建一個目錄,命名為: libs 【包含檔案TcAdsDll.lib】
加入工程方法:工程屬性-> 聯結器 -> 常規 附加庫目錄 中添加 libs即可
工程屬性-> 聯結器->輸入 附加依賴項 中添加TcAdsDll.lib即可
同時需要把TcAdsDll.dll 庫放置于程式的執行目錄中。
九、 推薦的Qt C++ 軟體結構設計圖【已經產品化實踐過】

十、 其他問題
1、 注意位元組對齊,盡量統一使用4倍或者8倍位元組數,也能大大提高記憶體訪問命中率
2、 注意通訊高效性,盡量使用地址訪問方式
3、 注意執行緒同步,保持主界面執行緒操作流程
原創: https://www.apps121.com/2018/07/30/beckhoff-twincat-ads-plc/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/28518.html
標籤:企業信息化
