收藏 分享(赏)

西门子PLC的以太网通讯及OPC通讯介绍.doc

上传人:tangtianxu2 文档编号:2890809 上传时间:2018-09-29 格式:DOC 页数:13 大小:1.13MB
下载 相关 举报
西门子PLC的以太网通讯及OPC通讯介绍.doc_第1页
第1页 / 共13页
西门子PLC的以太网通讯及OPC通讯介绍.doc_第2页
第2页 / 共13页
西门子PLC的以太网通讯及OPC通讯介绍.doc_第3页
第3页 / 共13页
西门子PLC的以太网通讯及OPC通讯介绍.doc_第4页
第4页 / 共13页
西门子PLC的以太网通讯及OPC通讯介绍.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1西門子 PLC 的以太網通訊及 OPC 通訊介紹1. 以太網通訊CAL 有很多地方用到以太網通訊,L2 ,焊機與 PLC 間通訊等,表檢的成像原理為:在金屬板帶表面沒有缺陷時,反射的光在明視場下很強,而在暗視場的散射光很弱;如有缺陷,則明視場的光強減弱,而暗視場的光強增加。根據這個原理,通過檢測攝像頭裡光強的變化,可檢測出材料表面上的一些物理缺陷。CAL 僅僅用到了它的檢測破孔這一個功能。下面再來看西門子的以太網通訊,使用以太網通訊處理器可能的連接方式:我們可以看到不同的通訊方式在 PLC 裏面需要調用不同的功能塊。像 S7-Connection 方式連接的,需要調用 SFB12/FB12

2、等來讀取發送數據息,而 TCP 等連接的,需要 FC5 等來讀取發送數據。下面簡單介紹下每種連接特點:Send/receive: iso 連接:ISO 傳輸服務通過組態連接提供 SEND/REVEICE interface 服務在以太網上傳輸數據,此時服務使用的是 ISO 協議。此通訊速度較快,可是不能實現網絡路由,只能用於局域網通訊。Send/receive: iso-On-TCP 連接:突破了局域網的限制,可以路由到公網上去;數據重發功能和基於第 2 層的 CRC 校驗保證了數據傳輸的完整性和可靠性。2Send/receive: TCP 連接: TCP/IP 提供面向連接的數據通訊,數據並

3、不會被打包因而並沒有數據包確認位,在這 TCP 服務提供了統一的 sccket 接口到每一個終端,因而數據塊可以整體發送,這裡區別於 iso-On-TCP 連接。Send/receive: UDP 連接:UDP 提供簡單數據傳輸,無需確認,與 TCP 同屬第 4 層協議。與 TCP 相比, UDP 屬於無連接的協議,數據報文無需確認。S7 通信:S7 協議是西門子 S7 家族的標準通信協議,使用 S7 應用接口的通信不依賴特定的總線系統(Ethernet,PROFIBUS,MPI ) 。接口位於 ISO-OSI 參考模型的第 7 層,下面圖模型各層的通信方式。那麼根據表檢的通訊協議規定:Tra

4、nsmission mode:TCP protocol (not S7), PLC will always be the client , Gauge will always be the server.Byte order: use PLC Byte Order ( not x86 byte order ).我們建立通訊就需選擇 send/receive 中的 TCP 連接。因此,在 PLC 中做如下配置:1. 打開硬件配置-點擊網絡組態:32. 選擇需要組態網絡的 CPU,右擊選擇插入新連接,選擇 TCP Connection,當前 CAL 是出口的 PLC 用於和表檢通訊:3. 參數設置

5、,只需在 Address 一欄設置,其他選項默認:表檢的端口號根據協議設置,它有三個端口號,因此我們需要配置三條連接和 PLC 通訊:1. Coil information (Gauge Port 6201)2. Real-time information (Gauge Port 6202)3. Real-time defect (Gauge Port 6203)建立完連接如下:此處默認值IP 任意,只要不和其他局域網內電腦衝突。Port 有協議規定4三路連接區別在與 Port 號,其他都是一樣的。此時網絡配置完成,我們需要記下每路連接的 ID 和地址,在建立的連接屬性中可看到:對網絡配置完成

6、後,就需要對程序進行編寫,因為西門下 PLC 本身支持以太網通訊,因此可以直接使用它本身的功能塊。第一路連接,端口號 6201,通訊協議如下:這是 PLC 發送給表檢的數據,規定了 8 字節的報頭,20 字節的鋼卷號,4字節鋼卷寬度,4 字節鋼卷厚度,4 字節鋼卷長度。其中,報頭格式如下:這個是第一路連接的配置:ID:3地址:16 進制 3FF6 其他 2 路 ID 分別為 4 和 5,地址都是 3FF65此處我們需要處理 counter 及 length,其他兩個可以不用管。Counter 是發送依次累加 1,length 是固定值 40(因為共發送 40 個字節) 。在西門子 PLC 中,

7、可以直接調用發送數據功能塊:具體定義我們可以按“F1”會彈出幫助信息如下,詳細說明每個引腳如何使用:此處就是上面提到的第一路的 ID和地址數據起始位數據長度幫助信息中功能塊的引腳定義及使用說明6上面我們知道第一路連接需要發送 40 個字節,我們是把它放在 DB380 這個數據塊中,因此 DB380 中需要定義如下:DB380 裏面內容完全根據表檢協議來定義,此處不一一例舉。接下來只需要把數據傳送到 DB380 就可以了。鋼卷的信息的傳送現在是在 9#BR 標誌未處發出下一卷的鋼卷信息:數據長度:DB380.DBW6每發送依次加1: DB380.DBW4鋼卷寬度:DB380.DBD287接下來第

8、二路連接,端口號 6202,協議定義數據格式如下:報頭同上,此處需發送焊縫過焊縫檢測後的長度,CAL 離表檢最近的焊縫偵測器是 4#,因此在 4#處把長度清零,然後一直累加發送:累加長度是根據 9 號張力輥編碼器計算得來,程序如下:鋼卷厚度:DB380.DBD32字符串的複製功能塊:把從 DB1255 的DBB240 開始的 20 個字節複製到 DB380 的DBB8 開始的 20 個字節。由於 CAL 之前的程序鋼卷號是定義的字符串 string,現在定義的是字符 char,本來應該是 DB1255.DBX238.0 BYTE 22,但是 string 類型前面 2 個字節不是真正的數據,因

9、此需從 DB1255.DBX240.0 開始8同樣的,只需調用西門子 PLC 自帶的發送功能塊就可以,此處不列舉,區別只在於引腳“send”是從 DB380.DBX100.0 開始,引腳 “length”是 16。最後,是 PLC 接收表檢發過來的數據,也就是第三路連接,端口號過 4#焊縫偵測器清零過 4#偵測器累加長度計算96203,數據協議定義如下:此處之前由於 PLTCM 是有 9 中缺陷,表檢共發送給 PLC 414 個字節,連退這邊僅僅只需要破孔信號,詢問了下廠商,我們只需對 Defect Count 或者Defect Name Code 做處理,name code=2 就代表破孔,

10、count 來一個缺陷信號累加 1 次,這一塊由於破孔信息還沒有完全收集,很多其他缺陷都會報出來,最多同時會有 9 處,等圖像收集完成後,我們只要判斷 count 數值,每累加 1 次就說明有一個破孔。接收數據也就用的西門子的功能塊,同發送數據功能塊一樣,引腳定義按 F1 就可以看到詳細信息,此處不列舉。接收到的破孔信號做如下處理:最後當觸發報警時,在 Wincc 上調用生成的 wav 語音文件就可以,在此也10不做介紹了。2. OPC 通訊OPC 全稱是 Object Linking and Embedding(OLE) for Process Control,它的出現為基於 Windows

11、 的應用程式和現場程序控制應用建立了橋樑。在過去,為了存取現場設備的資料資訊,每一個應用軟體發展商都需要編寫專用的介面函數。由於現場設備的種類繁多,且產品的不斷升級,往往給用戶和軟體發展商帶來了巨大的工作負擔。通常這樣也不能滿足工作的實際需要,系統集成商和開發商急切需要一種具有高效性、可靠性、開放性、可互通性的隨插即用的設備驅動程式。在這情況下,OPC 標準應運而生。OPC 標準以微軟公司的 OLE 技術為基礎,它的制定是通過提供一套標準的 OLE/COM 介面完成的,在 OPC 技術中使用的是 OLE 2 技術, OLE 標準允許多台微機之間交換文檔、圖形等物件。下圖是 OPC 前後對比:如

12、上所說,西門子 PLC 是支持 OPC 通訊的,像在 CAL 其實也用到過,產線速度的採集和 IBA 焊接機數據的採集都是通過 OPC 來實現的。通俗的說當上位機軟件不支援直接訪問西門子 plc 時,就需要 simaticnet 了。simaticnet 相當於一個 opc,它起 連接上位機與下位機的作用。例如:siemens公司對自己的 plc 與 wincc 的通訊協定一般都可以用 mpi 等,所以用不到;但當11plc 與上位機之間沒有通訊協定,連不上時,就要借助 opc 了。即 simatic 在 pc平臺實現與 s7,s5plc 系統通訊的驅動產品集就是 simaticnet。通訊包

13、括profibus,ie,mpi,冗餘通訊等。一般情況下,當實現應用中所用產品都是西門子的可以不配 simaticnet。因此,當時想實現 IBA 在異常時的報警就需和 IBA 實現通訊,那在電腦上裝了 Simatient net 軟件後,我們會發現有一個 OPC Scout 這個軟件,利用它在IBA 電腦上打開會發現 IBA 也是可以作為 OPC 服務器的,那麼接下來我們只需編寫 OPC 的客戶端實現和服務器通信來處理報警信息就可以了。OPC 服務器支持自動化及自定義訪問接口,本例使用自定義接口,在 C#中引用的庫為 OpcNetApiChs.dll。界面如下,模擬了一個 OPC 服務器(D

14、SXPOPCSimulator 軟件) ,然後用自己編寫的 OPC 客戶端連接,正常情況下,能讀取到測點值以及質量值,若與服務器連接失敗,則產生報警。實際只要把服務器選擇為 IBA 就可以了,測試可用。列出了所有點,選取任意一個讀取數據,當服務器出現問題時,數據會讀取不到,質量代碼會異常,此例以質量代碼來判斷12由於代碼有點長,此處只列出主函數部分,如下:主函數:private void opc_read() /線程-讀取OPC服務器數據while (true)tryOPCItemState rslt;OPCDATASOURCE dsrc = OPCDATASOURCE.OPC_DS_DEVI

15、CE;int rtc = mySyncIOGroup.Read(dsrc, ItemData, out rslt);if (flag = 1)if (HRESULTS.Failed(rtc)txtItemValue.Text = string.Empty;txtItemQuality.Text = string.Empty;txtTimeStamp.Text = string.Empty;tsslStatus.Text = mySyncIOGroup.GetErrorString(rtc);flag = 0;return;if (rslt != null)if (HRESULTS.Succee

16、ded(rslt.Error)txtItemValue.Text = rslt.DataValue.ToString();tsslStatus.Text = string.Empty;elsetxtItemValue.Text = string.Empty;tsslStatus.Text = mySyncIOGroup.GetErrorString(rslt.Error);13txtItemQuality.Text = mySyncIOGroup.GetQualityString(rslt.Quality); DateTime dt = DateTime.FromFileTime(rslt.T

17、imeStamp); /顯示時間txtTimeStamp.Text = dt.ToString(); /顯示當前值/*IBA不抓取數據使執行*/if (txtItemQuality.Text.ToString().ToUpper() != “GOOD“) flag = 0; /標誌位置0Thread.Sleep(1000);else if(flag=0) /当標誌位為0時,執行語音報警player.Play();/調用語音文件Thread.Sleep(2000);catch (Exception err) /若IBA進程出錯,也執行語音報警player.Play();Thread.Sleep(2000);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报