1. <del id="sqmd4"></del>
      <object id="sqmd4"></object>
      1. <object id="sqmd4"></object>
          加入收藏 在線留言 聯系我們
          關注微信
          手機掃一掃 立刻聯系商家
          全國服務熱線13185520415
          公司新聞
          西門子S7-1200 PLC四種以太網通信應用實例之三:Modbus TCP通信應用實例
          發布時間: 2024-09-06 11:14 更新時間: 2024-11-22 08:00
          觀看西門子S7-1200 PLC四種以太網通信應用實例之三:Modbus TCP通信應用實例視頻


          一.功能概述


          Modbus TCP通信是施耐德公司于1996年推出的基于以太網TCP/IP的Modbus協議,即Modbus TCP。Modbus TCP通信協議是開放式協議,很多設備都集成此協議,比如PLC、機器人、智能工業相機和其他智能設備等。Modbus TCP通信結合了以太網物理網絡和TCP/IP網絡標準,采用包含有Modbus應用協議據的報文傳輸方式。Modbus設備間的數據交換是通過功能碼實現的,有些功能碼是對位操作,有些功能碼是對字操作。S7-1200 CPU集成的以太網口支持Modbus TCP通信,可作為Modbus TCP客戶端或者服務端。Modbus TCP通信使用TCP通信作為通信路徑,其通信時將占用S7-1200 CPU的開放式用戶通信連接資源,通過調用Modbus TCP客戶端(MB_CLIENT)指令和服務端(MB_SERVER)指令進行數據交換。


          二.指令說


          在指令選項卡中選擇“通信”→“其他”→“MODBUS TCP”,Modbus TCP通信指令列表如圖1。

          圖1 Modbus TCP指令

          Modbus TCP通信主要包括兩個指令,“MB_CLIENT”指令和“MB_SERVER”,每個指令塊拖拽到程序工作區中將自動分配背景數據塊,背景數據塊的名稱可自行修改,背景數據塊的編號可以手動或自動分配。


          1.“MB_CLIENT”指令


          (1) 指令介紹

          “MB_CLIENT”指令作為 Modbus TCP 客戶端指令,可以在客戶端和服務器之間建立連接、并發送 Modbus 請求、接收響應和控制服務器斷開,指令如圖2所示。

          圖2 MB_CLIENT指令


          (2) 指令參數

          該指令的輸入輸出引腳參數的意義如表1所示。

          表1 “MB_CLIENT”指令引腳參數


          2.“MB_SERVER”指令


          (1) 指令介紹

          “MB_SERVER”指令作為 Modbus TCP 服務器通過以太網連接進行通信。“MB_SERVER”指令將處理 Modbus TCP 客戶端的連接請求,并接收處理 Modbus 請求和發送響應,指令如圖3所示。

          圖3 MB_SERVER指令


          (2) 指令參數

          該指令的輸入輸出引腳參數的意義如表2所示。

          表2 “MB_SERVER”指令引腳參數





          三.實施內容


          1.實例名稱


          Modbus TCP通信應用實例


          2.實例描述


          兩臺S7-1200 PLC之間作Modbus TCP通信,一臺作為客戶端,一臺作為服務器??蛻舳藢B10.DBW0- DB10.DBW4的數據寫到服務器的DB100.DBW0- DB100.DBW4中。


          3.硬件組成


          (1) CPU1214C DC/DC/DC,兩臺,訂貨號:6ES7 214-1AG40-0XB0;(2) 四口交換機,一臺;(3) 編程電腦,一臺,已安裝博途V15.1軟件。





          四.實例實施


          1.客戶端程序編寫


          第一步:新建項目及組態S7-1200 CPU

          打開博途軟件,在Portal視圖中,單擊的“創建新項目”按鈕,并輸入項目名稱(Modbus TCP通信應用實例),路徑和作者等信息,然后單擊“創建”即可生成新項目。進入項目視圖,在左側的項目樹中,單擊“添加新設備”,隨即彈出添加新設備對話框,如圖4所示。在此對話框中選擇的CPU型號和版本號(必須與實際設備相匹配),然后單擊“確定”按鈕。

          圖4 添加新設備對話框


          第二步:設置CPU屬性

          在項目樹中,選擇“PLC_1[CPU 1214C DC/DC/DC]”,雙擊“設備組態”,在“設備視圖”的工作區中,選中PLC_1,在其巡視窗口中的“屬性”→“常規”的選項卡中,選擇“PROFINET接口[X1]”→“以太網地址”,修改CPU以太網IP地址如圖5所示。

          圖5 以太網IP地址


          在其巡視窗口的“屬性”→“常規”的選項卡中,選擇“系統和時鐘存儲器”,激活“啟用時鐘存儲器字節”復選框,如圖6所示。

          圖6 系統和時鐘存儲器


          備注:程序中會用到時鐘存儲器M0.5。


          第三步:創建PLC變量表

          在項目樹中,選擇“PLC_1[CPU 1214C DC/DC/DC]”→“PLC變量”,雙擊“添加新變量表”,并命名變量表為“PLC變量表”,在“PLC變量表”中新建變量如圖7所示。

          圖7 PLC變量表


          第四步:創建發送數據區

          (1) 在項目樹中,選擇“PLC_1[CPU 1214C DC/DC/DC]”→“程序塊”→“添加新塊”,選擇“數據塊(DB)”創建DB塊,數據塊名稱為“數據塊_1”,手動修改數據塊編號為10,單擊“確認”按鈕,如圖8所示。

          圖8 創建數據塊


          (2) 需要在DB塊屬性中取消優化的塊訪問,單擊“確認”按鈕,如圖9所示。

          圖9 取消優化塊的訪問


          (3)在DB塊中,創建5個字的數組用于存儲發送數據,如圖10所示。

          圖10 發送數據區


          第五步:創建MB_CLIENT指令的連接描述DB塊

          在項目樹中,選擇“PLC_1[CPU 1214C DC/DC/DC]”→“程序塊”→“添加新塊”,選擇“數據塊(DB)”創建 DB 塊,數據塊名稱為“數據塊_2”,手動修改數據塊編號為11 ,單擊 “確定”按鈕。添加變量“通信設置”,數據類型為TCON_IP_v4,如圖11所示。

          圖11 通信數據設置


          主要參數說明如下:

          ① InterfaceID:在變量表的默認變量表中可以找到PROFINET接口的硬件標識符;② ID:輸入一個介于 1 到 4095 之間的連接 ID 編號;③ ConnectionType:對于 TCP/IP,使用默認值 16#0B(十進制數 = 11);④ ActiveEstablished:該值必須為1或TRUE。主動連接,由 MB_CLIENT啟動Modbus TCP通信;⑤ RemoteAddress:目標Modbus TCP服務器的IP地址;⑥ RemotePort:默認值為 502。該編號為 MB_CLIENT試圖連接和通信的Modbus服務器的IP端口號;⑦ LocalPort:對于 MB_CLIENT 連接,該值必須為 0。


          第六步:編寫OB1主程序

          編寫“MB_CLIENT”指令程序段部分,如圖12所示。當M0.5上升沿有效時,客戶端將MB_DATA_PTR數據寫入服務器的Modbus地址40001~40005。

          圖12 MB_CLIENT指令


          主要參數說明如下:

          ① REQ:在上升沿時執行該指令;② DISCONNECT:0表示建立連接;③ MODE:1表示寫操作;④ MB_DATA_ADDR:從站中的起始地址;⑤ MB_DATA_LEN:寫的數據長度;⑥ MB_DATA_PTR:寫的數據地址;⑦ CONNET:引用包含系統數據類型為“TCON_IP_v4”的連接參數的數據塊。


          2.服務端程序編寫


          第一步:組態S7-1200 CPU

          在左側的項目樹中,單擊“添加新設備”,隨即彈出添加新設備對話框,如圖13所示。在此對話框中選擇的CPU型號和版本號(必須與實際設備相匹配),然后單擊 “確定”按鈕。

          圖13 添加新設備對話框


          第二步:設置CPU屬性

          在項目樹中,選擇“PLC_2[CPU 1214C DC/DC/DC]”,雙擊“設備組態”,在“設備視圖”的工作區中,選中PLC_2,在其巡視窗口中的“屬性”→ “常規”的選項卡中,選擇“PROFINET接口[X1]”→“以太網地址”,修改CPU以太網地址如圖14所示。

          圖14 以太網IP地址


          第三步:創建PLC變量表

          在項目樹中,選擇“PLC_2[CPU 1214C DC/DC/DC]”→“PLC變量”,雙擊“添加新變量表”,并命名變量表為“PLC變量表”,在“PLC變量表”中新建變量如圖15所示。

          圖15 PLC變量表


          第四步:創建數據接收區

          (1) 在項目樹中,選擇“PLC_2[CPU 1214C DC/DC/DC]”→“程序塊”→“添加新塊”,選擇“數據塊(DB)”創建DB塊,數據塊名稱為“數據塊_1”,手動修改數據塊編號為100,單擊“確認”按鈕,如圖16所示。

          圖16 創建數據塊


          (2) 需要在DB塊屬性中取消優化的塊訪問,單擊“確認”按鈕,如圖17所示。

          圖17 取消優化塊的訪問


          (3) 在DB塊中,創建5個字的數組用于存儲發送數據,如圖18所示。

          圖18 接收數據區


          第五步:創建MB_CLIENT指令的CONNECT引腳的連接描述指針DB塊

          在項目樹中,選擇“PLC_2[CPU 1214C DC/DC/DC]”→“程序塊”,雙擊“添加新塊”, 選擇“數據塊(DB)”創建 DB 塊,數據塊名稱為“數據塊_2”,手動修改數據塊編號為101 ,單擊“確定”按鈕。添加變量“通信設置”,數據類型為TCON_IP_v4,如圖19所示。

          圖19 通信數據設置


          主要參數說明如下:

          ① InterfaceID:在變量表的默認變量表中可以找到PROFINET接口的硬件標識符;② ID:輸入一個介于 1 到 4095 之間的連接 ID 編號;③ ConnectionType:對于 TCP/IP,使用默認值 16#0B(十進制數 = 11);④ ActiveEstablished:該值必須為0或 FALSE。被動連接,MB_SERVER正在等待Modbus客戶端的通信請求;⑤ RemoteAddress:目標Modbus TCP客戶端的IP地址;⑥ RemotePort:對于MB_SERVER 連接,該值必須為0;⑦ LocalPort:默認值為 502。該編號為MB_SERVER 試圖連接和通信的Modbus客戶端的IP端口號。


          第六步:編寫OB1主程序

          編寫“MB_SERVER”指令程序段部分,如圖20所示。服務端將Modbus地址40001~40005的數據寫入DB100.DBW0-DB100.DBW5中。

          圖20 MB_SERVER指令


          主要參數說明如下:

          ① DISCONNECT:0表示建立連接;② MB_HOLD_REG:Modbus保持寄存器40001對應的地址;③ CONNET:引用包含系統數據類型為“TCON_IP_v4”的連接參數的數據塊。


          3.程序測試


          程序編譯后,下載到S7-1200 CPU,通過監控表監控通信數據,監控表如圖21和22所示。

          圖21 PLC_1監控表

          圖22 PLC_2監控表





          五.應用經驗總結


          ① Modbus TCP客戶端可以支持多個TCP連接,連接的Zui大數目取決于所使用的CPU;② Modbus TCP客戶端如果需要連接多個Modbus TCP服務器,需要調用多個MB_CLIENT指令,每個MB_CLIENT指令需要分配不同的背景數據塊和不同的連接ID;③ Modbus TCP客戶端對同一個Modbus TCP服務器進行多次讀寫操作時,需要調用多個MB_CLIENT指令,每個MB_CLIENT指令需要分配相同的背景數據塊和相同的連接ID,且同一時刻只能有一個MB_CLIENT指令被觸發。

          聯系方式

          • 電  話:13510737515
          • 聯系人:董海波
          • 手  機:13185520415
          • 微  信:13185520415