simatic net opc服務器常作為simatic plc與第三方上位機通訊的中介。在tdc系統中調用相應的功能塊,也可以實現simatic tdc 與 opc的通訊,為上位機提供更靈活的訪問tdc的方式。本文簡要的介紹了建立 tdc 與opc ethernet通訊的方法與步驟。
1. 建立tdc與opc的s7連接
1.1 tdc的軟硬件配置
建立基于以太網的s7通訊,需要為tdc系統配置以太網通訊模塊cp51m1(6dd1661-0ae1),并調用tcp/ip初始化功能塊。
圖1 組態tdc并配置cp51m1
cp51m1的ip地址通常與pc站網卡處于同一網段,如:
cp51m1:192.168.0.220;pc站網卡:192.168.0.24。
圖2 tcp/ip初始化
“@tcp/ip”用來建立tcp/ip通訊耦合,并且必須在大于等于32ms并小于等于256ms的循環周期中調用。
建立s7通訊之前必須調用“s7con”塊,初始化s7應用層服務。
圖3 s7服務初始化
同樣“s7con”塊也必須在大于等于32ms并小于等于256ms的循環周期中調用。
其中主要參數的含義為:
“us”:格式為 最多6個字符的通道名稱. cpu槽號,如“yyu.01”。
“tnr”:s7 tsap號,默認為3。
“nos”:通訊設備的個數(與tdc通訊的opc服務器的個數)。
“tld”:通訊報文格式,默認為0,最大通訊字節240。
tdc為opc服務器提供可供訪問的db塊,調用“s7db_p”建立db1,并為db1賦值
圖4 s7服務初始化
其中“s7db_p”主要參數的含義為:
“len”:db塊長度。
“nbf”:db塊緩沖區個數,一般設為1。
“bsl”:選擇緩沖區,一般設為1。
“sav”:db是否存儲在sav區域。
“s7db_p”功能塊只是開辟了通訊的數據存儲區,如果要對存儲區的數據進行讀寫操作,就需要調用讀寫功能塊。本文中所示的例子程序使用“read int”讀取整數數據,“write in”寫入整數數據。
其中“read int”及“write in”主要參數的含義為:
“off1”和“off2”:讀寫數據在數據存儲區內的偏移量。如兩參數之和為零,存取存儲區內的第一個整數;兩參數之和為2,存取存儲區內的的第二個整數,以此類推。
“swp”:用來設定是否交換高低字節,此處設為1。
讀取或寫入其它類型數據的方法與本例相同,只是調用的讀寫功能塊稍有不同,本文不再詳述。
1.2 pc站及opc的組態
組態pc站,并建立與tdc的s7連接。
圖5 組態pc站
圖6 建立s7連接
圖中的“partner”的rack/slot指tdc的機架號與槽號,connection resource為連接資源號,“local”為10,“partner”為3。具體含義見下表
表1 s7連接資源
然后就可以通過opc scout來測試opc服務器是否能正常通訊。
圖7 測試s7連接
由于opc scout不能直接瀏覽到tdc的db1,需要手動輸入存取地址。如果s7連接名稱是“s7_connection_1”,存取地址“s7:[ s7_connection_1]db1.int0代表db塊中的第1個16位整數。
2. 建立tdc與opc的tcp連接
2.1 在tdc中調用發送和接收功能塊
圖8 發送功能塊
其中“ctv_p”主要參數的含義為:
“at”:通道參數,如“ct.t-02001”,其中“ct”為用戶定義的通道名稱,“2001”為tcp通訊的本地端口號。
“mod”:通訊模式,對于tcp通訊,一般設為“h”。
“en”:發送勢能,設為1。
“nby”:發送的字節長度。
圖9 接收功能塊
“crv_p”功能塊比“ctv_p”功能塊多一個參數,設為1000ms,其它參數含義相同。
2.2 為pc站組態tcp連接
圖10 建立tcp連接并設置地址、端口
圖11 設置發送接收字節
“send buffer size”等于“crv_p”的“nby”參數值!皉eceive buffer size”等于“ctv_p”的“nby”參數值。
通過opc測試建立的tcp連接。
圖12 測試tcp連接