<font id="bbnvb"><font id="bbnvb"></font></font>

            <sub id="bbnvb"><sub id="bbnvb"><form id="bbnvb"></form></sub></sub>
            <b id="bbnvb"><em id="bbnvb"><p id="bbnvb"></p></em></b>

              <ruby id="bbnvb"></ruby>

                <mark id="bbnvb"><menuitem id="bbnvb"></menuitem></mark>

                  當前位置:>> 首頁 > 常見問題 > 常見問題
                  如何通過Modbus RTU協議實現S7-1200 與PAC3200的通信
                  發布時間:2014-06-23

                   
                   
                   

                  西門子S7-1200 緊湊型PLC在當前的市場中有著廣泛的應用,作為經常與SENTRON PAC3200系列儀表共同使用的PLC,其Modbus通信協議的使用一直在市場上有著非常廣泛的應用。本文將主要介紹如何使用Modbus 通信協議來實現S7-1200與SENTRON PAC3200儀表的通信。


                  1.西門子SENTRON PAC3200 儀表介紹

                  西門子的SENTRON PAC3200多功能電力儀表是一種用于面板安裝的儀表,可用來計量、顯示配電系統多達50個測量變量,例如電壓、電流、功率、有功功率、頻率以及最大值、最小值和平均值。中文大屏幕圖形液晶顯示使用戶可遠距離讀表。PAC3200儀表如下圖所示。


                  圖1:儀表PAC3200

                  1.1 SENTRON PAC3200 MODBUS RTU通信擴展模塊介紹

                  PAC3200多功能儀表的本體沒有MODBUS RTU通信的功能,如果希望將PAC3200作為從站連接到MODBUS RTU網絡與主站進行數據交換必須選用外部擴展通信模塊――SENTRON PAC RS485模塊。(注意: PAC RS485 擴展模塊使用錯誤的固件版本時將不能工作
                  SENTRON PAC3200 電力監測設備的固件版本最低應為FWV2.0X。 較早的版本不支持
                  PAC RS485 擴展模塊。)該擴展模塊具有下列性能特點:
                          • 可通過設備正面設置參數
                          • 即插即用
                          • 支持 4.8/9.6/19.2 以及 38.4 KBd 通信傳輸速率
                          • 通過6針螺釘端子接線
                          • 不需要外接輔助電源
                          • 通過模塊上的 LED 顯示狀態

                  PAC3200 MODBUS RTU通信擴展模塊如下圖所示。

                  (1) 通信接線端子

                  (2) 安裝螺釘

                  (3) 通風口

                  (4) LED


                  圖2:PAC3200 MODBUS RTU 通信模塊

                   

                  1.2 SENTRON PAC3200 MODBUS RTU通信擴展模塊的接線

                  SENTRON PAC3200 MODBUS RTU通信擴展模塊的接線如下圖所示



                  圖3:PAC3200 MODBUS RTU 通信模塊的接線圖

                   

                  1. 將電纜連接到端子排上相應的螺栓端子。
                  2. 將電纜屏蔽層的一端連接到保護性接地PE。
                  3. 將信號公共端連接到保護性接地。 這樣也使得擴展模塊接地。
                  4. 在第一個和最后一個通信節點上,在正信號和負信號之間接入總線端接電阻器。 為
                  此,PAC RS485 擴展模塊中集成了一個120 Ohm 的總線端接電阻器。 如果需要其它
                  電阻值,請使用外部總線端接電阻器。 將它連接到第一個和最后一個通信節點。

                  1.3 SENTRON PAC3200 MODBUS RTU通信的方式

                  1.SENTRON PAC3200設備支持的功能碼如下:
                   

                  FC 功能碼 數據類型 訪問權限
                  02 輸入的狀態 輸入 R
                  03 輸出寄存器 寄存器 輸出 R
                  04 輸入寄存器  寄存器 輸入 R
                  06 單一輸出寄存器 寄存器 輸出 RW
                  10 多個輸出寄存器  寄存器 RW
                  2B 設備識別 R

                  表1: SENTRON PAC3200設備支持的功能碼

                  R—可讀
                  RW—可讀寫

                  2.SENTRON PAC3200 MODBUS RTU 與S7-1200進行通信
                  S7-1200 PLC可以通過功能代碼0x03 和0x04 訪問儀表PAC3200的被測量數據。
                  下表是一些PAC3200 被測量的數據。


                  表2: SENTRON PAC3200設備的一些被測量數據


                  2.西門子SENTRON PAC3200 儀表與S7-1200進行通信的接線圖

                  下圖是SENTRON PAC3200儀表與S7-1200進行MODBUS RTU 通信的接線圖。


                  圖4:S7-1200與PAC3200進行MODBUS RTU 進行通信的接線圖


                  3.硬件需求
                  S7-1200 PLC目前有3種類型的CPU:
                          1)S7-1211C CPU。
                          2)S7-1212C CPU。
                          3)S7-1214C CPU。
                  這三種類型的CPU都可以使用MODBUS通信協議通過通信模塊CM1241 RS485來實現S7-1200與PAC3200儀表的通信。

                  本例中使用的PLC硬件為:
                          1)PM1207電源 ( 6EP1 332-1SH71 )
                          2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )
                          3) CM1241 RS485 ( 6ES7 241 -1CH30 -0XB0 )
                          4) 模擬器 ( 6ES7 274 -1XH30 -0XA0 )

                  本例中使用的PAC3200儀表硬件為:
                          1) PAC3200 (7KM2112-0BA00-3AA0)
                          2) MODBUS RTU 模塊 (7KM9300-0AB00-0AA0)
                          3) MODBUS 通信電纜 ( 6XV1830-0EH10)

                   

                  3.軟件需求

                  1) 編程軟件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)


                  4.S7-1200 MODBUS RTU的通信方式
                  S7-1200作為MODBUS RTU主站的通信方式是由DATA_ADDR 和 MODE 參數來選擇 Modbus 功能類型的。
                  DATA_ADDR(從站中的起始 Modbus 地址): 指定要在 Modbus 從站中訪問的數據的起始地址。MB_MASTER 使用 MODE 輸入而非功能代碼輸入。 MODE 和 Modbus 地址范圍一起確定實際 Modbus 消息中使用的功能代碼。

                  下表列出了 MB_MASTER 參數 MODE、Modbus 功能代碼和 Modbus 地址范圍之間的對應關系。



                  表3: MB_MASTER的MODBUS 功能

                  5.S7-1200 與PAC3200 進行MODBUS RTU的通信組態

                  我們通過一個實例來介紹如何在Step7 Basic V10.5 中組態S7-1214C 和PAC3200的MODBUS RTU通信。

                  5. 1 PLC 硬件組態

                  首先在Step7 Basic V10.5中建立一個項目,如圖1所示。


                  圖5: 新建S7 1200項目

                  在硬件配置中,添加CPU1214C和通信模塊CM1241 RS485模塊,如圖2所示。


                  圖6: S7 1200硬件配置

                  在CPU的屬性中,設置以太網的IP地址,建立PG與PLC的連接,如下圖所示。


                  圖7: S7 1200 IP地址的設置

                  5. 2 PAC3200參數設置
                  在SENTRON PAC 電力監測設備的主菜單中,調用“設置”>“RS485 模塊”,出現下面的設置畫面:


                  圖8: PAC3200 MODBUS RTU 通信參數的設置

                  1. 地址的設置范圍:1-247。本例中設為8。
                  2. 波特率的設置范圍:4800,9600,19200,38400。本例中設為38400。
                  3. 設置外部通信的數據位、奇偶校驗位及停止位:
                          • 8E1=8 個數據位,奇偶校驗位為even, 1 個停止位
                          • 8O1=8 個數據位,奇偶校驗位為odd, 1 個停止位
                          • 8N2=8 個數據位,無奇偶校驗位, 2 個停止位
                          • 8N1=8 個數據位,無奇偶校驗位, 1 個停止位
                          本例中根據S7-1200 MODBUS MASTER 的參數設置為 8N1。
                  4. 協議的設置:可選項為:SEABUS,MODBUS RTU。
                  本例中設為MODBUS RTU。
                  5.響應時間的設置:注意與波特率的設置相匹配,本例中設為10mS。

                   

                  6.S71200 與PAC3200的MODBUS RTU通信原理與編程的實現

                  6. 1 S7 1200 PLC與PAC3200 通過MODBUS RTU 通信的基本原理

                  S7 1200提供了專用的MODBUS庫進行MODBUS通信,如下圖所示:


                  圖9: S7 1200提供的專用MODBUS庫

                  西門子PLC S7-1200的模塊CM1241 RS232和CM1241 RS485都可以實現MODBUS RTU的通信,本例中采用CM1241 RS485模塊來實現與儀表PAC3200的MODBUS RTU 的通信。
                  S7-1200的MODBUS RTU通信的基本原理是:
                  首先S7-1200 PLC的程序調用一次MODBUS 庫中的功能塊MB_COMM_LOAD來組態CM1241 RS232和CM1241 RS485模塊上的端口,對端口的參數進行配置。
                  其次調用MODBUS 庫中的功能塊MB_MASTER或者MB_SLAVE作為MODBUS 主站或者從站與支持MODBUS協議的設備進行通信。

                  S7-1200 PLC作為MODUBUS 主站 與PAC3200 進行MODBUS RTU 通信的控制原理如下圖所示:


                  圖10:S7-1200 PLC作為MODUBUS 主站 與PAC3200 進行MODBUS RTU 通信原理

                   

                  S7-1200 PLC還可以作為MODBUS子站與作為MODBUS主站之間的PLC進行MODBUS RTU通信,其控制原理如下圖所示:



                  圖11:S7-1200 PLC作為MODBUS子站與作為MODBUS主站之間的PLC進行MODBUS RTU的通信原理

                   

                  每個S7-1200 CPU最多可帶3個通信模塊,而每個CM1241 RS485通信模塊理論上最多支持247個MODBUS子站。但是在實際應用時需要考慮CPU的性能以及輪循MODBUS子站的時間。

                  6. 2 S7 1200 PLC與PAC3200通過MODBUS RTU通信的編程

                  1.MODBUS RTU 通信接口參數的編程

                  MB_COMM_LOAD 功能塊用于組態點對點 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模塊上的端口,以進行 Modbus RTU 協議通信。

                  程序開始運行時,調用一次MB_COMM_LOAD功能塊,來實現對MODBUS RTU模塊
                  的初始化組態。
                  MB_COMM_LOAD執行一次的編程方式采用如下圖所示時鐘位M10.0來完成。


                  圖12:MB_COMM_LOAD執行一次的編程時鐘位的設置

                  MB_COMM_LOAD功能塊的編程如下圖所示。


                  圖13:MB_COMM_LOAD功能塊的編程

                  PORT:指的是通過哪個通信模塊進行MODBUS RTU通信。
                  BAUD:指的是和MODBUS子站進行通信的速率。
                                  通信端口的波特率。取值范圍為300,600,1200,2400,4800,9600,19200,38400,57600,
                  76800,115200。
                  注意:儀表PAC3200的波特率的設置范圍:4800,9600,19200,38400。因此上S7-1200
                              的波特率的設置一定要和儀表PAC3200的波特率的設置相一致。
                  MB_DB:對 MB_MASTER 或 MB_SLAVE 指令所使用的背景數據塊的引用。 在用戶程序中放置
                              MB_SLAVE 或 MB_MASTER 后,DB標識符會出現在 MB_DB 功能框連接的助手下拉列表中。
                              如“MB_MASTER_DB”或“MB_SLAVE_DB”。

                  STATUS:端口狀態代碼。具體含義如下表所示。


                  表4: MB_COMM_LOAD組態端口的狀態代碼

                  2.MODBUS_MASTER功能塊的編程

                  MB_MASTER 功能塊允許程序作為Modbus 主站使用點對點 (PtP, Point-to-Point) CM 1241 RS485 或 CM 1241RS232 模塊上的端口進行通信。 可訪問一個或多個 Modbus 從站設備中的數據。

                  MB_MASTER功能塊的編程如下圖所示。


                  圖14:MB_MASTER功能塊的編程

                  REQ:數據發送請求信號。0-無請求。1-請求將數據傳送到MODBUS從站。
                  MB_ADR:通信對象MODBUS從站的地址。有效地址范圍為0-247。值 0 被保留用于將消息廣播到所有 Modbus 從站。 只有Modbus 功能代碼 05、06、15 和 16 是可用于廣播的功能代碼。
                  注意:此處MODBUS從站的地址一定要與儀表PAC3200 的MODBUS 地址相一致。

                  MODE:模式選擇。選擇范圍為:讀、寫、診斷。
                  DATA_ADDR:從站中的起始地址: 指定要在 Modbus 從站中訪問的數據的起始地址。

                  特別注意的是:由于儀表PAC3200的寄存器與S7-1200 MODBUS RTU寄存器的不一致
                  性,讀取儀表PAC3200的DATA_ADDR的地址必須從40002開始。

                  注意: S7-1200的MODBUS RTU通信功能是通過使用“DATA_ADDR”和“MODE”的組合
                  來選擇MODBUS功能碼,如下表所示。


                  表5: S7-1200的MODBUS RTU通信功能碼

                  而儀表PAC3200 MODBUS RTU通信功能則是通過功能碼來實現的,如下表所示。

                   
                   
                   
                   
                   
                   
                   

                  FC 功能碼 數據類型 訪問權限
                  02 輸入的狀態 輸入 R
                  03 輸出寄存器 寄存器 輸出 R
                  04 輸入寄存器 寄存器 輸入 R
                  06 單一輸出寄存器 寄存器 輸出 RW
                  10 多個輸出寄存器 寄存器 RW
                  2B 設備識別 R

                  表6: 儀表PAC3200 MODBUS RTU通信功能碼

                  因此從上述可以得出如果需要讀取輸出寄存器的值時,需要使用模式0的03H功能,即
                  從寄存器40001到49999來讀取儀表的數據,但是由于儀表PAC3200的寄存器與S7-1200
                  MODBUS RTU寄存器的不一致性,讀取儀表PAC3200的DATA_ADDR的地址必須從40002開
                  始。

                  DATA_LEN:請求訪問數據的長度。位數或字節數。
                  DATA_PTR:數據指針: 指向要寫入或讀取的數據的 CPU DB 地址。 該DB 必須為
                  “非僅符號訪問”DB 類型。
                  NDR: 新數據就緒:
                          •0 – 事務未完成
                          •1 – 表示 MB_MASTER 指令已完成所請求的有關 Modbus從站的事務。
                  BUSY:忙:
                          •0 – 無正在進行的 MB_MASTER 事務
                          •1 – MB_MASTER 事務正在進行
                  ERROR:錯誤:
                          •0 - 未檢測到錯誤
                          •1 – 表示檢測到錯誤并且參數 STATUS 提供的錯誤代碼有效。
                  STATUS:狀態代碼,如下表所示。

                   


                  表7: MB_MASTER 進行MODBUS RTU通信的狀態代碼

                  在成功地編譯下載到在S7-1200 PLC中后,可以從變量表中看到儀表PAC3200的三相相電壓數據,如下圖所示。


                  圖15:在S7-1200中通過MODBUS RTU通信得到的儀表PAC3200的三相相電壓數據

                  Modbus 主站通信規則:
                  ● 必須先執行 MB_COMM_LOAD 組態端口,然后 MB_MASTER 指令才能與該端口通
                  信。
                  ● 如果要將某個端口用于初始化 Modbus 主站的請求,則 MB_SLAVE 將不能使用該端
                  口。MB_MASTER 執行的一個或多個實例可使用該端口。
                  ● Modbus 指令不使用通信中斷事件來控制通信過程。 用戶程序必須輪詢
                  MB_MASTER 指令以了解傳送和接收的完成情況。
                  ● 如果用戶程序操作 Modbus 主站并使用 MB_MASTER 向從站發送請求,則用戶必須
                  繼續輪詢(執行 MB_MASTER)直到返回從站的響應。
                  ● 請從同一個 OB(或 OB 優先等級)調用指定端口的所有 MB_MASTER 執行。

                  3.MODBUS_SLAVE功能塊的編程
                  由于S7-1200與PAC3200進行MODBUS RTU通信,沒有使用MODBUS_SLAVE功能塊,因此在此只作簡單介紹。
                  MB_SLAVE 指令允許程序作為 Modbus 從站使用點對點 (PtP, Point-to-Point) CM 1241RS485 或 CM 1241 RS232 模塊上的端口進行通信。 Modbus RTU 主站可以發出請求,然后程序通過執行 MB_SLAVE 來響應。
                  在程序中放置 MB_SLAVE 指令時,必須分配唯一的背景數據塊。 指定MB_COMM_LOAD 指令中的 MB_DB 參數時會用到該 MB_SLAVE 背景數據塊名稱。
                  Modbus 通信功能代碼(1、2、4、5 和 15)可以在 PLC 輸入過程映像及輸出過程映像中直接讀寫位和字。


                  圖16:MB_SLAVE 功能塊

                  MB_ADDR:Modbus RTU 地址(1 到 247):Modbus 從站的站地址。
                  MB_HOLD_REG:指向 Modbus 保持寄存器 DB 的指針。 保持寄存器 DB 必須為典型的全局 DB。

                  注意:在創建此數據塊時,請不要選擇“Symbolic address only僅通過符號地址訪問”。使用“MB_SLAVE”指令時,

                  NDR:新數據就緒:
                          •0 – 無新數據
                          •1 – 表示 Modbus 主站已寫入新數據
                  DR:數據讀?。?br />         •0 – 無數據讀取
                          •1 – 表示 Modbus 主站已讀取數據
                  ERROR:錯誤:
                          •0 - 未檢測到錯誤
                          •1 – 表示檢測到錯誤并且參數 STATUS 提供的錯誤代碼有效。
                  STATUS:錯誤代碼。如下表所示。


                  表8: MB_SLAVE 進行MODBUS RTU通信的狀態代碼

                  国产潮吹
                  <font id="bbnvb"><font id="bbnvb"></font></font>

                            <sub id="bbnvb"><sub id="bbnvb"><form id="bbnvb"></form></sub></sub>
                            <b id="bbnvb"><em id="bbnvb"><p id="bbnvb"></p></em></b>

                              <ruby id="bbnvb"></ruby>

                                <mark id="bbnvb"><menuitem id="bbnvb"></menuitem></mark>