詳細介紹
西門子以太網模塊用作輸出變量的有效數據 / 用作 PROFINET IO 設備 / 值512 byte● 用作輸入變量的有效數據 / 各個子模塊用作 PROFINET IO 設備240 byte● 用作輸出變量的有效數據 / 各個子模塊用作 PROFINET IO 設備240 byte● 用作每個子模塊兼容范圍的有效數據240 byte子模塊數量 / 各個 PROFINET IO 設備32性能數據 / 遠程控制系統協議 / 支持
● TCP/IP是的產品功能 / 管理、配置、組態產品功能 / MIB 支持&
著工業自動化的發展, 客戶一些特殊的要求普通的觸摸屏加PLC的人機交互方案已經不能滿足,比如數據庫儲存,數據查詢,壓力位移曲線的保存,簡易視覺的構建等等,這樣我們就需要通過工控機帶PCI總線板卡實現整套自動化系統的方案,但是這種應用在中大型自控系統是沒有問題的,而一些小型自動化解決方案,用工控機自控系統性價比不高,方案競爭力不足,而且整個工控機編程對程序員的文本邏輯性要求比較高,針對上述情況,推出使用觸摸一體機與下位機PLC以太網通訊來實現,PLC是邏輯控制的可以選擇]器件,上層功能則在觸摸一體機中實現。
本文檔針對西門子S7-1200PLC來做此次說明,首先好實現的就是OPC通訊,但是測試下來數據延遲比較高,S7協議又是封閉的,所以只能通過OpenIE 開放式以太網的方式來實現!
什么是OPENIE(開放式以太網)?
西門子S7-1200 Profinet端口支持多種以太網網絡上的通信標準:
1.傳輸控制協議(TCP)
2.ISO on TCP(RFC 1006)
3.用戶數據報協議(UDP)
測試硬件:S7-1200 1215C V4.0
PC機或者工控機
測試軟件:labview 2014
編程軟件:TIA Protal V13
測試目的:通過上位機控制PLC的輸出點,以及在上位機上反饋PLC輸入點狀態。
下位機程序編寫步驟:
1.在MAIN程序OB1中添加TSEND_C(帶連接控制的以太網發送指令)
2.配置發送指令TSEND_C,配置方法:鼠標右鍵指令屬性打開配置對話框
具體參數配置如下:
注意:連接數據也就是指令中的CONN西門子以太網模塊ECT不要自己手動建,否則會出現通訊不上。
3.在MAIN程序OB1中添加TRCV_C(帶連接控制的以太網接收指令)
接收指令參數配置如下:
關于上述配置中端口的說明:
注意:建立被動的TCP 、ISO on TCP 和UDP的連接時,建議使用端口范圍: 2000~5000。一些端口號和TSAP 號是受到限制不能被使用的。 下列端口號和TSAP號不能使用:
ISO TSAP (passive): 01.00, 01.01, 02.00, 02.01, 03.00, 03.01
TCP/UDP port (passive): 20, 21, 25, 80, 102, 135, 161, 34962 … 34964,53, 80, 162, 443, 520, 9001。
我們好端口號從2000開始。
關于發送指令與接收指令中DATA參數的鏈接說明:
符號尋址:如果建立的DB塊是符號尋址,那么DATA端口上直接填寫DB塊名稱即可,另外需要注意的是LEN長度參數一定要設置為0.
地址:如果建立的DB塊是非優化的訪問,也就是地址尋址,那么DAT端口上只能通過輸入指針的形式來指向數據區,同事參數LEN一定到準確,否則會造成通信錯誤,另外S7-1200PLC開放式以太網通訊不支持布爾尋址,指針指向形式為:“P#DB3.DBX0.0 BYTE 100”。
具體下位機程序如下:
MAIN中主要通訊程序:
PLC輸入點反饋程序:
PLC輸西門子以太網模塊出點控制程序:
發送數據區DB塊:直接使用IW0或者IB0數據。
接收數據區DB塊:
上位機labview程序前面板:
上位機labview程序框圖:
測試結果:通訊速度10ms 快5ms穩定,適合繪制實時曲線,滿足工業要求。
常見問題:
為什么通信數據區在輸入指針形式的地址時不允許輸入?
答:通信數據區 “DATA” 在輸入指針形式的地址時,雖然輸入地址格式*正確,但仍會出現紅色 “P#DB3.DBX0.0 BYTE 100”,表示地址錯誤而不允許輸入。這是因為在創建通信數據區 DB 塊時選擇了“Symbolic access only(僅符號尋址)”,只能用符號尋址方式訪問這個DB塊。只要在創建DB塊時,不勾選“Symbolic access only(僅符號尋址)”,就可以正常輸入指針形式的地址了。
Tblock 通信指令是同步傳輸還是異步傳輸?
答:Tblock 通信指令是異步于程序傳輸的,每個掃描周期分配給通信任務的時間百分比可以在CPU屬性中的 “Communication load(通信負載)" 中設定,默認值是 “20%”。這就要求在每個通信任務完成之前要保證數據區數據的*性。
為何發送通信任務不執行或只執行了一次?
答:在執行發送指令時,“REQ” 輸入端的每次上升沿