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