modbus協(xié)議是一項應用層報文傳輸協(xié)議,包括ascii、rtu、tcp三種報文類型。標準的modbus協(xié)議物理層接口有rs232、rs422、rs485和以太網(wǎng)接口,采用master/slave方式通信。modbus設備可分為主站(master)和從站(slave),主站只有一個,從站有多個,主站向各從站發(fā)送請求幀,從站給予響應。在使用tcp通信時,主站為client端,主動建立連接;從站為server端,等待連接。對于這三種通信在數(shù)據(jù)模型和功能調(diào)用上都是相同的,只有封裝方式是不同的。modbus tcp協(xié)議是一個運行在tcp/ip網(wǎng)絡連接中的一種協(xié)議,與傳統(tǒng)的串口方式相比,modbus tcp插入一個標準的modbus報文頭到 tcp報文中,不再帶有差錯校驗和地址域,如下圖所示。mbap為報文頭,長度為7字節(jié)。
一、simatic s7-1500 modbustcp 通信使用要求
從tia portal v12 sp1開始軟件中增加了s7-1500的modbus tcp塊庫(v3.0及以上版本),用于s7-1500與支持modbus tcp的通信伙伴進行通信。s7-1500支持modbustcp指令的所有庫版本,在用戶程序中調(diào)用和參數(shù)化mb_client和mb_server指令。 mb_client指令通過cpu 或 cm/cp 的本地接口作為modbustcp客戶端進行通信,無需要任何額外的硬件支持。使用mb_client指令在客戶端和服務器之間建立連接,發(fā)送請求和接收響應,并控制斷開連接。 mb_server指令通過cpu 或 cm/cp 的本地接口作為modbustcp服務器進行通信,無需要任何額外的硬件支持。mb_server指令處理modbustcp客戶端的連接請求,接收modbus客戶端的請求并發(fā)送響應消息。
軟件需求:
tia v16 professionalmodbus pollmodbus slave
硬件需求:
cpu 1511-1 pn v2.8cp 1543-1 v2.2
二、modbus tcp 通信程序
1、打開 tia portal v16軟件,新建一個項目命名為 modbustcp,在項目中添加 cpu1511-1pn v2.8 及cp1543-1 v2.2,為cp1543-1以太網(wǎng)接口新建一個子網(wǎng)并設置 ip地址為 192.168.0.3。
2、在 cpu1511-1pn的 ob1組織塊中添加modbus tcp server功能塊 mb_server,軟件將提示會為該 fb塊增加一個背景數(shù)據(jù)塊,本例中為 db1mb_server_db,如下圖所示。接下來為指令塊分配引腳,各引腳的具體含義如下圖所示。
3、保持性寄存器存儲區(qū)與mb_server管腳參數(shù)mb_hold_reg進行映射,對于線圈、離散輸入、輸入寄存器等通過功能塊均已經(jīng)與 s7-1500的過程映像區(qū)進行了映射,其映射地址對應如下圖所示。
4、使用上述指令實現(xiàn)cp1543-1為modbus tcp的 server與通信伙伴建立通信,通過表2可知connect參數(shù)的設定有兩種方式,下面分別介紹這兩種方式如何創(chuàng)建connect參數(shù)。
1)使用tcon_ip_v4結(jié)構(gòu)創(chuàng)建連接參數(shù)。
添加一個全局數(shù)據(jù)塊用于匹配功能塊mb_server的管腳connect,本例中為數(shù)據(jù)塊db2(塊名稱:mb_connect),打開該數(shù)據(jù)塊,創(chuàng)建變量 mb_server,手動在數(shù)據(jù)類型框中輸入tcon_ip_v4,并將該變量關聯(lián)到功能塊mb_server的管腳參數(shù)connect上。
2)通過網(wǎng)絡視圖創(chuàng)建tcp連接后,再使用tcon_configured結(jié)構(gòu)創(chuàng)建連接參數(shù)。
在網(wǎng)絡視圖窗口,左上側(cè)選擇連接按鈕,選擇”tcp連接“,然后在cpu上點擊鼠標右鍵并選擇添加新連接。在添加新連接窗口中,類型選擇為tcp連接,伙伴選擇未指定,本地接口選擇cp1543-1,以太網(wǎng)接口_1[x1],分配本地連接id,服務器為被動連接,點擊 添加創(chuàng)建tcp 連接。
tcp_連接_1為建立的連接,選中該連接,在屬性的地址詳細信息中可以設置該tcp 連接的相關信息。
添加一個全局數(shù)據(jù)塊用于匹配功能塊mb_server的管腳connect,本例中為數(shù)據(jù)塊db2(塊名稱:mb_connect),打開該數(shù)據(jù)塊,創(chuàng)建變量 mb_server,手動在數(shù)據(jù)類型框中輸入tcon_configured,并將該變量關聯(lián)到功能塊mb_server的管腳參數(shù)connect上。