S7-1200的網口實現IO擴展方法(modbus tcp客戶端編程)
1. 網絡拓撲圖
客戶端:CPU 1211C
軟件:Portal V16
服務器:ZM14-8RTD-11(網口型8路三線熱電阻溫度采集器)
2. 新建工程,硬件設置
添加新設備
設置PLC的IP地址,子網在此應用上可以不用添加。
系統和時鐘存儲器勾選,地位我們分別定義在MB50和MB51,后面編程會用到。
3. MB_Client指令使用方法
先去了解MB_Client指令使用方法,這里就不再介紹其用法了。
4. 添加必用的全局數據區
添加2個數據區:1個用于MB_Client指令CONNECT指針指向的數據區(在此為了區分命名為MB_TCP連接數據區_1),1個用于客戶端與服務器的數據收發區域。
3.1 建立TCON_IP_v4系統數據并初始化參數
在“MB_TCP連接數據區_1”里面建立一個TCON_IP_v4,這個是系統數據類型,不是用戶數據類型,所以需要自己輸入,也可以COPY進去。
上圖上我們初始值鍵入interfaceld 64(16#40),需要與PN口硬件號一致。
ID號根據需求填寫,每使用1個MB_Client指令,ID號需要不一樣,ConnectionType保持默認16#0B,ActiveEstablished初始化必須為1,否則啟用時會出錯,填寫需要訪問的服務器IP,192.168.0.200,遠程端口號502,本地端口號0
3.2 在交換數據區建立對應的變量
ZM14-8RTD-11是8路三線制PT100熱電阻溫度采集模塊,溫度范圍-100℃~600℃,顯示-1000~6000的數據,所以我們需要建立8個有符號整型數據,變量名AI,數據類型Array[0..7]of Int即8個有符號整形數據。
5. 建立客戶端訪問單個服務器程序段
4.1. 調用MB_Client指令
4.2. 背景區
自動生成數據背景區DB1即可,也可自定義其它號的DB。
4.3. REQ、DISCONNET、MB_MODE、MB_DATA_ADDR、MB_DATA_LEN的使用
這里使用系統時鐘指令M51.0,10HZ即100mS一個上升沿來觸發REQ,DISCONNET需要設置為FALSE,功能碼、地址 、長度根據ZM14-8RTD的相關參數設置,具體參考下表
PLC地址 | Modbus地址 | 數據類容 | 功能碼 (16#) | 長度(INT) |
30001 | 0X 00 | 第1 路熱電阻溫度×10 | 04(讀) | 1 |
30002 | 0X 01 | 第2 路熱電阻溫度×10 | 04(讀) | 1 |
30003 | 0X 02 | 第3 路熱電阻溫度×10 | 04(讀) | 1 |
…… | …… | …… | …… | …… |
30008 | 0X 07 | 第8 路熱電阻溫度×10 | 04(讀) | 1 |
我們使用功能號104,地址0,數據長度8
4.4. MB_DATA_PTR的使用
MB_DATA_PTR指向上面已建立的數據收發區,注意:指針不要指向具體的一個變量,比如變量AI[0],如果這樣會造成MB_Client通訊狀態的ERROR標志置1,STATUS狀態代碼16#8383。應該需要指向AI變量的地址指針,而不是數據首地址,如下圖,應選擇無。
選擇“無”后顯示下圖
若數據交換區建立的數據變量只建立了一個數組變量,指針也可以指向DB區的首地址指針,如下圖
選擇“無”后顯示為下圖
4.5. CONNECT的使用
CONNECT指向建立的系統數據區的首地址即可,同MB_DATA_PTR的使用一樣,也不要指向內部具體的一個數據地址,選“無”即可。
4.6. DONE、BUSY、ERROR、STATUS
這幾個是MB_Client指令的輸出狀態,在監視狀態可查看其值來判斷有沒有錯誤信息,對編程很有幫助。
6. MB_Client背景數據區參數設置
其中的MB_UNIT_ID的設置尤為重要,西門子默認是16#FF,但實際運用中會根據作為服務器的擴展IO模塊的實際通訊站地址來設置。
以ZM14-8RTD-11,通訊站地址為01即撥碼開關前7位設置為“1000000”,則MB_UNIT_ID需要初始化設置成01;
也可將撥碼開關前7位都撥到OFF狀態“0000000”,即通訊站地址16#FF,這里的MB_UNIT_ID就可以不需要改變了。
7. 編譯、下載、查看狀態
編譯組態及程序,然后下載。
在監視狀態下查看DONE、BUSY、ERROR、STATUS狀態,DONE、BUSY的狀態是TRUE、FALSE之間變換,而ERROR的狀態沒有TRUE,STATUS狀態輸出字是16#7004、7005、7006來回變化,證明通訊成功。
不足的是我們用的系統時鐘指令M51.0,定時100mS來觸發REQ的,因為這種觸發沒有在乎主、從通訊是否已經完成,只要100mS時間段一到就會觸發下一條指令,這個只適用于單個服務器的使用。
PLC實現多個模塊擴展的方法請聯系我司15983845957微信同號?。?!
下一篇:PROFINET介紹