上節(jié)中講到ModBus協(xié)議是工業(yè)應用中應用最廣泛的協(xié)議。在ModBus協(xié)議系統(tǒng)中,主機一般為PLC、HMI、組態(tài)軟件等,但是在一個略微復雜的系統(tǒng)中,通常會存在同時需要多個主機的情況。由于通信線纜一般是RS485,半雙工的特性導致多個主機同時采集數(shù)據(jù)時,會有較大的數(shù)據(jù)延遲。(因為同一時刻只能有一個主機或從機在發(fā)送數(shù)據(jù),否則會造成數(shù)據(jù)沖突,形成亂碼)
前文指路《串口服務器——簡單協(xié)議轉換介紹及使用方法》
因此主機在通信時一般會采用網(wǎng)口進行,這樣會保證數(shù)據(jù)的及時性。上一節(jié)給大家講到串口服務器可以將網(wǎng)口數(shù)據(jù)轉換為串口數(shù)據(jù)進行通信,這樣在保證了全雙工通信的同時,又可以將數(shù)據(jù)接入互聯(lián)網(wǎng),這樣大大提高通信距離。
雖然網(wǎng)線上可以做到全雙工(發(fā)送和接收同時進行),但是針對低延遲的應用場景,這樣一對一的通信優(yōu)勢不是很明顯,今天給大家講到一個特色功能——多主機網(wǎng)關模式。
ModBus多主機網(wǎng)關支持多臺ModBus TCP主機同時操作RTU設備,利用TCP/IP協(xié)議通訊打破RTU數(shù)據(jù)總線上同時只能存在一臺主機的限制。
簡單協(xié)議轉換模式只適用于單一主機用于與從機通信的場景,因為串口服務器只是將數(shù)據(jù)做了轉換,并且串口的數(shù)據(jù)會廣播給全部主機。如果遇到多個主機同時發(fā)送數(shù)據(jù)時,串口服務器會將數(shù)據(jù)直接進行發(fā)送,這樣就會造成通訊超時或數(shù)據(jù)異常。
多主機網(wǎng)關
多主機網(wǎng)關模式與簡單協(xié)議轉換比起來,針對多主機同時發(fā)送數(shù)據(jù)場景,做了單獨的數(shù)據(jù)處理。例如在主機1、2、3發(fā)送數(shù)據(jù)時間較短時,串口服務器將把請求的數(shù)據(jù)攔截在網(wǎng)絡端,數(shù)據(jù)將會按照先后順序?qū)⒅噶畎l(fā)送給串口設備,此時串口設備收到數(shù)據(jù)后將數(shù)據(jù)返回給主機,并且是哪個主機請求數(shù)據(jù)就會將數(shù)據(jù)指定發(fā)送給哪個主機,這樣就會避免出現(xiàn)通信異常現(xiàn)象,提高通信的可靠性。
下面主要給大家介紹一下多主機網(wǎng)關的應用方法,優(yōu)于主機端操作各有各的特色,本處只使用ModBus Pool與ModBus Slave作為展示,PLC/HMI等參照此進行鏈路連接。如何配置參數(shù)在上一章中已經(jīng)做出了講解,在本節(jié)不再單獨介紹。
使用EBYTE網(wǎng)絡配置工具查看當前串口服務器參數(shù)情況,IP需要修改為與電腦同一網(wǎng)段,設置串口服務器為TCP服務器模式,記錄當前本機IP、本地端口。
打開ModBus Slave軟件模擬從機,連接方式使用串口,選擇串口服務器的串口號、連接參數(shù)(波特率、數(shù)據(jù)位、校驗位、停止位,這里采用默認115200,8N1)
數(shù)據(jù)返回內(nèi)容選擇從機ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10(稍后讀取也為這個參數(shù))。
打開ModBus Pool軟件,連接方式選擇為ModBus TCP/IP,目標IP設置為串口服務器IP地址,目標端口設置為串口服務器本地端口(192.168.0.113/8887)超時時間可使用默認。
讀取參數(shù)也選用從機ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10。參照此參數(shù)可以連接6個主機,如下圖。
產(chǎn)品推薦
串口服務器——NA111