來源:跟我學PLC吧
一、 導讀
Modbus 通信是一種應用廣泛的通信協議 ,在變頻器、智能儀表或是其他的一些智能設備上應用的一種通用通信協議,本文以S7-1200系列PLC作為Modbus主站,以歐姆龍E5EZ的智能溫控儀表作為從站為例,使用SCL編程語言編寫S7-1200實現對歐姆龍智能溫控儀表的當前溫度值的讀取和修改設定溫度值。
二、硬件選擇與儀表通信參數設置
(1)硬件選配
在本案例中S7-1200PLC選擇CPU型號為 CPU1214C,RS485通信接口,選擇通信板CB1241 ,歐姆龍智能儀表為歐姆龍E5EZ型儀表。PLC通信信號板與歐姆龍智能儀表的接線如下圖所示:
(2)儀表通信參數設置 儀表通信參數主如下圖所示,主要包括通信協議選擇,站號設置,波特率,數據位,校驗位等。
ü通信協議選擇Modbus通信協議,在儀表上選擇Mod。
ü通信單元號(站號),這里設置為01
ü通信波特率設置,這里設置9.6,表示9600bps
ü數據位,這里設置為8位數據位
ü停止位,這里設置為1個停止位
ü奇偶校驗,這里設為EVEN(偶校驗)
三、通信程序編寫
(1)地址的計算
根據歐姆龍E5EZ儀表的通信說明書中關于Modbus通信數據的查詢表,可查找到PV值的數據地址為0404H,大小為32位,設定溫度值的地址為0106H,大小同位32位地址,如下標所示:
根據S7-1200Modbus通信指令上對地址的規定采用的是Modbus寄存器地址,所以經過換算后地址PV值的地址Modbus寄存器地址為十進制數的41029,設定溫度值的Modbus寄存器地址為十進制數的40263。
注:Modbus寄存器地址主要有4種類型,分別為0XXXX類型,表示對線圈的讀寫,1XXXX類型,表示對輸入離散量的讀取,3XXXX,表示對輸入寄存器讀取(對應Modbus功能碼為04),4XXXX表示對保持性寄存器的讀寫操作(對應功能碼為06,03,16)。 計算方法,把對應的十六進制的數據地址換算為十進制數后,再加上1,最后在等到的結果前面添加一個數字4,表示對應類型。
(2)新建通信數據塊DB1000
新建一個數據塊DB1000,在該數據塊中定義通信相關的變量,并給對應的變量賦值通信相關的數值,如下圖所示:
其中,變量CommunicationData的定義結構按通信指令“Modbus_Master”指令管腳進行定義,可根據通信數據調試多少來修改定性的數組元素的數量。
(3)新建通信程序塊FB1000
新建一個FB塊并對該FB塊命名為”儀表通信程序”,該塊的編程語言選擇SCL編程語言,在該FB塊的接口區中建立如下圖所示的接口區變量。
啟用通信連接和調用通信端口初始化操作程序
調用Mast指令完成數據交換和改變需要發送數據的程序
在OB塊中調用該通信程序,并為該通信程序的接口分配對應的實參。
四、結語
該案例中需要注意:
(1)修改修改初始指令中的模式,在首次掃描位接通時,把4傳送給“Modbus_Comm_Load_DB.MODE”變量中。
(2)若CommunicationData變量數值的元素是從0開始時,那么在通信程序的FB塊的接口區中定義的常量StartValue的值應設置為0。
(3)若通信的條數增加時,可修改CommunicationData變量數值的元素的數量,并對元素中的變量定義相關的數據,然后在DataCount中指定通信的數據條數,無需對通信程序進行調整。
-
通信協議
+關注
關注
28文章
996瀏覽量
40933 -
MODBUS
+關注
關注
28文章
1995瀏覽量
78932 -
歐姆龍
+關注
關注
3文章
385瀏覽量
66065 -
S7-1200
+關注
關注
11文章
333瀏覽量
18432
原文標題:
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
S7-1200與S7-1200/S7-1500不同項目下UDP通信
基于S7-1200的PLC的編程及擴展
S7-1200與PROFINET的通信

關于S7-1200和S7-1200之間UDP的通信與仿真

西門子S7-1200的TCP通信配置過程及數據交換方式
S7-1200 Modbus RTU 從站通信組態及編程步驟
S7-1200和S7-300 CP342-5的DP口的主從通信
S7-1200 CPU與S7-200 SMART S7通信指南
一文解析S7-1200與S7-1500 S7通信

評論