加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線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