• <acronym id="gyolp"><strong id="gyolp"></strong></acronym>
    <object id="gyolp"></object>
    <output id="gyolp"></output>
    <pre id="gyolp"></pre>
      <p id="gyolp"></p>
    1. <pre id="gyolp"></pre>

    2. 當前位置:>> 首頁 > 常見問題 > 常見問題
      如何通過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通信的狀態代碼

      精品一级影院在线播放_国产高清精品二区_国产成人三级网址在线看_日韩女同中文字幕永久在线