Modbus網(wǎng)關(guān)是一種能夠?qū)odubs TCP協(xié)議轉(zhuǎn)化為Modbus RTU協(xié)議的設(shè)備。Modbus廣泛應(yīng)用于儀表和傳感器領(lǐng)域,可以獲得儀表和傳感器的數(shù)據(jù),但是傳統(tǒng)的基于RS485的Modbus RTU(或ASCII)速度和擴(kuò)展性較差,所以后來(lái)出現(xiàn)了Modbus TCP這種基于網(wǎng)絡(luò)的協(xié)議。所以Modbus網(wǎng)關(guān)這種轉(zhuǎn)換器就應(yīng)運(yùn)而生了。
四種Modbus網(wǎng)關(guān)從簡(jiǎn)單協(xié)議轉(zhuǎn)換到多主機(jī)網(wǎng)關(guān),再到存儲(chǔ)型網(wǎng)關(guān),再到ZLMB這種可配置網(wǎng)關(guān)。從簡(jiǎn)單到復(fù)雜也是反映了它的發(fā)展過(guò)程,了解他們的優(yōu)缺點(diǎn)有助于工程師更好掌握它們的使用方法。
這里特別推薦的是ZLMB可配置網(wǎng)關(guān),它可以預(yù)先配置需要讀取的多個(gè)從站的多個(gè)寄存器列表,然后網(wǎng)口可以用一條指令一次性讀取所有寄存器,讀取效率非常高。且讀取速度很快。具體參考《可配置Modbus網(wǎng)關(guān)ZLMB》。
最初的Modubs網(wǎng)關(guān),只不過(guò)是需要解決數(shù)據(jù)格式的轉(zhuǎn)化。舉一個(gè)例子,Modbus RTU(RS485端)中03功能碼,讀取00開(kāi)始的1個(gè)寄存器的指令為:01 03 00 00 00 01 84 0a,其中84 0a是CRC校驗(yàn)。而一個(gè)Modbus TCP指令(網(wǎng)絡(luò)端)為00 00 00 00 00 06 01 03 00 00 00 01。我們知道普通的澳門永利yl6776是“透?jìng)鳌钡模簿褪前l(fā)送串口發(fā)送01 03 00 00 00 01 84 0a,網(wǎng)口也是01 03 00 00 00 01 84 0a。為了實(shí)現(xiàn)這個(gè)RTU轉(zhuǎn)Modbus TCP功能,對(duì)比發(fā)現(xiàn)只要去掉CRC校驗(yàn)84 0a加上開(kāi)頭的00 00 00 00 00 06即可。
這種簡(jiǎn)單的格式轉(zhuǎn)化確實(shí)能夠初步地滿足要求。但是缺點(diǎn)是:
1.無(wú)法多主機(jī)訪問(wèn):不能實(shí)現(xiàn)多個(gè)Modbus TCP主機(jī)去訪問(wèn)網(wǎng)關(guān),因?yàn)橹鳈C(jī)A和主機(jī)B發(fā)送的數(shù)據(jù)在RS485總線上會(huì)產(chǎn)生搶占總線沖突,引起數(shù)據(jù)錯(cuò)亂。
2.返回?cái)?shù)據(jù)干擾:設(shè)備對(duì)主機(jī)A的應(yīng)答不僅會(huì)返回給主機(jī)A也會(huì)返回給主機(jī)B,這樣主機(jī)B的返回?cái)?shù)據(jù)中就會(huì)有干擾數(shù)據(jù)。
雖然簡(jiǎn)單協(xié)議轉(zhuǎn)化進(jìn)本已經(jīng)被淘汰,這里也簡(jiǎn)要介紹一下它的設(shè)置方法:在ZLVircom配置工具的“設(shè)備編輯”界面中選擇轉(zhuǎn)化協(xié)議為“Modbus TCP轉(zhuǎn)RTU”,在高級(jí)選項(xiàng)中去掉“多主機(jī)”和“RS485防沖突”兩個(gè)勾。
多主機(jī)模式的Modbus網(wǎng)關(guān)正是為解決“簡(jiǎn)單協(xié)議轉(zhuǎn)化”模式的缺點(diǎn)設(shè)計(jì)的。如上圖所示,當(dāng)主機(jī)A和主機(jī)B同時(shí)訪問(wèn)是Modbus網(wǎng)關(guān)會(huì)進(jìn)行總線的占用調(diào)度,從而解決總線沖突問(wèn)題,另外主機(jī)A訪問(wèn)的數(shù)據(jù)也不會(huì)再發(fā)送給主機(jī)B,解決了返回?cái)?shù)據(jù)干擾問(wèn)題。
數(shù)據(jù)通訊步驟如下:
1.當(dāng)網(wǎng)關(guān)收到主機(jī)A的查詢請(qǐng)求時(shí),檢查總線是否有在使用,如果空閑則發(fā)送到RS485總線上,否則等待到總線空閑。
2.網(wǎng)關(guān)記錄下來(lái)當(dāng)前查詢的主機(jī),這里是主機(jī)A。
3.當(dāng)數(shù)據(jù)從RS485總線返回時(shí),網(wǎng)關(guān)將其轉(zhuǎn)化為Modbus TCP格式轉(zhuǎn)發(fā)給相應(yīng)的主機(jī)(這里是主機(jī)A)。
多主機(jī)模式的優(yōu)點(diǎn)是,實(shí)現(xiàn)了多臺(tái)主機(jī)的同時(shí)訪問(wèn),解決了總線沖突和返回?cái)?shù)據(jù)干擾問(wèn)題,但是仍然存在不足之處:
1.數(shù)據(jù)返回慢:從以上的數(shù)據(jù)通訊步驟可以看出,一臺(tái)主機(jī)獲得數(shù)據(jù)需要數(shù)據(jù)線從網(wǎng)絡(luò)轉(zhuǎn)發(fā)到RS485總線,等待設(shè)備返回后再?gòu)腞S485轉(zhuǎn)發(fā)到網(wǎng)絡(luò)。由于RS485總線本身是慢速通信方式,主機(jī)一般需要等待50~100ms才能獲得一個(gè)數(shù)據(jù)。
2.主機(jī)數(shù)量很多時(shí),等待容易超時(shí):這也是數(shù)據(jù)返回慢引起的另外一個(gè)問(wèn)題。
對(duì)于早期的ZLAN5142默認(rèn)即“多主機(jī)模式”;對(duì)于ZLAN5143(1.565之前版本)不支持“多主機(jī)模式”,只支持“存儲(chǔ)型”;對(duì)于于ZLAN5143(1.565及其之后版本)支持“多主機(jī)模式”,設(shè)置方法為:在ZLVircom配置工具的“設(shè)備編輯”界面中選擇轉(zhuǎn)化協(xié)議為“Modbus TCP轉(zhuǎn)RTU”,在高級(jí)選項(xiàng)中將RS485總線沖突最多等待時(shí)間改為2秒即可。
存儲(chǔ)型網(wǎng)關(guān)正是為了解決“多主機(jī)模式”的缺點(diǎn)而設(shè)計(jì)的,由于“多主機(jī)模式”的慢速問(wèn)題主要是由于RS485總線返回?cái)?shù)據(jù)太慢引起的,“存儲(chǔ)型”的思路就是通過(guò)預(yù)先獲得某些需要的數(shù)據(jù),事先存儲(chǔ)起來(lái),等網(wǎng)絡(luò)端需要數(shù)據(jù)時(shí)可以立即提供,從而減少數(shù)據(jù)查詢時(shí)間。
存儲(chǔ)型網(wǎng)關(guān)有兩個(gè)特點(diǎn):
1.自學(xué)習(xí):存儲(chǔ)型網(wǎng)關(guān)無(wú)需配置,因?yàn)樗梢栽谥鳈C(jī)索要一個(gè)查詢數(shù)據(jù)的時(shí)候就會(huì)將這個(gè)記錄保存一起,網(wǎng)關(guān)內(nèi)部會(huì)自動(dòng)學(xué)習(xí)當(dāng)前網(wǎng)口需要的數(shù)據(jù)。
2.事先查詢:當(dāng)網(wǎng)關(guān)獲悉所有主機(jī)索要的所有的寄存器之后,網(wǎng)關(guān)會(huì)事先進(jìn)行逐條查詢,并把結(jié)果存儲(chǔ)到網(wǎng)關(guān)的內(nèi)部。
如此一來(lái),當(dāng)主機(jī)A想要之前要過(guò)的數(shù)據(jù)的時(shí)候,網(wǎng)關(guān)會(huì)從自己的內(nèi)存中調(diào)取數(shù)據(jù),并立即返回給主機(jī)A,由于沒(méi)有轉(zhuǎn)發(fā)到RS485總線的過(guò)程,這個(gè)時(shí)間大約在1~2ms,比之前的50~100ms大大提高。
存儲(chǔ)型網(wǎng)關(guān)的優(yōu)點(diǎn):
1.返回速度快:主機(jī)A查詢返回?cái)?shù)據(jù)時(shí)間大大提高。
2.無(wú)需配置:由于采用自學(xué)習(xí)方式,無(wú)需配置,操作起來(lái)和“多主機(jī)模式”并沒(méi)有差別。
存儲(chǔ)型網(wǎng)關(guān)的問(wèn)題:
1.首條指令返回慢:由于網(wǎng)關(guān)是通過(guò)學(xué)習(xí)來(lái)獲得主機(jī)索要的寄存器號(hào)的,在獲得這個(gè)信息前,無(wú)法事先查詢。所以主機(jī)發(fā)送的第一條指令仍然需要通過(guò)轉(zhuǎn)到RS485總線來(lái)獲得數(shù)據(jù)。首條指令返回和多主機(jī)模式一樣慢。
2.RS485總線查詢過(guò)快可能影響設(shè)備工作:由于一般默認(rèn)情況下RS485總線會(huì)以最快速的速度查詢從站設(shè)備內(nèi)部的寄存器內(nèi)容,而某些儀表可能無(wú)法適應(yīng)這么快速的查詢導(dǎo)致設(shè)備工作異常。對(duì)于這點(diǎn)實(shí)際可以加大“RS485總線空余時(shí)間”參數(shù)來(lái)解決查詢過(guò)快的問(wèn)題,實(shí)際是可以解決的。
3.不是最新數(shù)據(jù):由于數(shù)據(jù)是事先查詢獲得,存儲(chǔ)起來(lái)的,所以查到的數(shù)據(jù)可能并不是新的數(shù)據(jù),雖然這個(gè)時(shí)間也就只有幾百毫秒,對(duì)于某些特殊情況也需要考慮到這種延時(shí)。
4.時(shí)序問(wèn)題:某些Modbus TCP的讀取和存儲(chǔ)需要按照寫、讀等時(shí)序操作的,“存儲(chǔ)型”的這種預(yù)先存儲(chǔ)會(huì)打亂這種時(shí)序,會(huì)引起某些設(shè)備無(wú)法兼容的問(wèn)題。
這里的缺點(diǎn)2、3、4都可以撤回到“多主機(jī)模式”的網(wǎng)關(guān)來(lái)解決這個(gè)問(wèn)題,注意撤回到“多主機(jī)模式”后,數(shù)據(jù)返回會(huì)變慢。注意ZLAN5143的新固件支持“多主機(jī)模式”和“存儲(chǔ)型”兩種模式。而上述缺點(diǎn)1(首條指令返回慢),將會(huì)在后面的“可配置”網(wǎng)關(guān)中解決。
ZLAN5142不支持“存儲(chǔ)型”,ZLAN5143設(shè)置為“存儲(chǔ)型”的方法為:在ZLVircom配置工具的“設(shè)備編輯”界面中選擇轉(zhuǎn)化協(xié)議為“Modbus TCP轉(zhuǎn)RTU”即可。
為了解決“存儲(chǔ)型”網(wǎng)關(guān)的首條指令返回慢的問(wèn)題可以采用可配置網(wǎng)關(guān)??膳渲镁W(wǎng)關(guān)也采用“存儲(chǔ)型”網(wǎng)關(guān)的事先查詢獲得RS485總線從站寄存器內(nèi)容的辦法。但是它不采用自學(xué)習(xí)的方法,為了解決首條指令返回慢的問(wèn)題,必須事先把需要的寄存器列表配置到網(wǎng)關(guān)內(nèi)部。它可以預(yù)先配置Modbus RTU端的設(shè)備的地址、功能碼和寄存器列表,并存儲(chǔ)到網(wǎng)關(guān)內(nèi)部。網(wǎng)關(guān)會(huì)自動(dòng)采集這些配置的RTU設(shè)備的數(shù)據(jù),然后映射到連續(xù)的Modbus TCP寄存器地址,從而允許Modbus TCP端一次性讀取所有的設(shè)備的不同寄存器的數(shù)據(jù)。
卓嵐可配置網(wǎng)關(guān)又稱之為ZLMB網(wǎng)關(guān),有如下的優(yōu)點(diǎn):
1.所有指令返回速度都快:即使是首條指令也同樣快速。
2.指令合并提高效率:可以將分散的不同的站地址、寄存器映射到同一片寄存器。這樣Modbus TCP端可以用一條指令采集所有數(shù)據(jù),包括不同站地址的設(shè)備的數(shù)據(jù),而不是分為幾條指令分別去采集,提高了Modbus TCP端的傳輸效率。
3.地址重映射:對(duì)于某些情況需要將不同分散的寄存器重新映射到整片連續(xù)的區(qū)域,ZLMB網(wǎng)關(guān)可以實(shí)現(xiàn)這個(gè)要求。
可配置網(wǎng)關(guān)的缺點(diǎn):
1.需要手動(dòng)配置:如果“存儲(chǔ)型”網(wǎng)關(guān)就能夠滿足要求的可以優(yōu)先選擇“存儲(chǔ)型”,因?yàn)椤按鎯?chǔ)型”無(wú)需任何配置。ZLMB方式需要手動(dòng)使用ZLVircom配置需要的寄存器。
2.事先預(yù)讀取引起的問(wèn)題:和存儲(chǔ)型一樣存在“不是最新數(shù)據(jù)”和“時(shí)序問(wèn)題”。
卓嵐ZLAN5143、ZLAN7144、ZLAN7146、ZLAN8303等都支持可配置Modbus網(wǎng)關(guān)功能。其中ZLAN5143需要固件版本1.579及以上版本,配合ZLVircom5.15及以上版本來(lái)使用。7144需要固件版本1.491及以上版本。配置方法是:在ZLVircom配置工具的“設(shè)備編輯”界面中點(diǎn)擊“固件和配置”按鈕,然后在彈出的“網(wǎng)頁(yè)程序下載工具”對(duì)話框中,選擇“網(wǎng)頁(yè)目錄下載”,然后點(diǎn)擊“ZLMB”按鈕,設(shè)計(jì)完畢后點(diǎn)擊“下載”按鈕下載到設(shè)備內(nèi)容。具體內(nèi)容請(qǐng)參考《可配置Modbus網(wǎng)關(guān)ZLMB》的詳細(xì)介紹。
網(wǎng)關(guān)類型 | 簡(jiǎn)單協(xié)議轉(zhuǎn)化 | 多主機(jī)模式 | 存儲(chǔ)型網(wǎng)關(guān) | 可配置網(wǎng)關(guān) |
---|---|---|---|---|
多主機(jī)支持 | ╳ | √ | √ | √ |
返回指令快 | ╳ | ╳ | √ | √ |
首條指令返回快 | ╳ | ╳ | ╳ | √ |
不存在預(yù)先讀取引起的問(wèn)題 | √ | √ | ╳ | ╳ |
無(wú)需配置 | √ | √ | √ | ╳ |
支持指令和合并和重新映射地址 | ╳ | ╳ | ╳ | √ |
總的來(lái)說(shuō),可配置網(wǎng)關(guān)是讀取效率最高的,最為先進(jìn)的Modbus網(wǎng)關(guān),但是配置較為繁瑣;而存儲(chǔ)型網(wǎng)關(guān)是默認(rèn)的模式,也是使用最簡(jiǎn)便的模式,同時(shí)具有多主機(jī)、讀取速度快等特點(diǎn);而在某些RS485設(shè)備不適應(yīng)“預(yù)先讀取”這種的情況下,可以退回到“多主機(jī)”模式這種慢速模式。而“簡(jiǎn)單協(xié)議轉(zhuǎn)化”模式由于存在多主機(jī)時(shí)有總線誤碼和丟失,一般情況不會(huì)采用。
四種Modbus網(wǎng)關(guān)模式和對(duì)應(yīng)的型號(hào)現(xiàn)列出到如下表:
名稱 | 型號(hào) | 簡(jiǎn)單協(xié)議轉(zhuǎn)化 | 多主機(jī)模式 | 存儲(chǔ)型網(wǎng)關(guān) | 可配置網(wǎng)關(guān) |
---|---|---|---|---|---|
多串口Modbus網(wǎng)關(guān) | ZLAN5240、ZLAN5443A、ZLAN5843A、ZLAN5G40A | √ | √ | ╳ | ╳ |
單串口Modbus網(wǎng)關(guān) | ZLAN5142、ZLAN5142-3 | √ | √ | ╳ | ╳ |
新一代多串口Modbus網(wǎng)關(guān) | ZLAN5443D、ZLAN5443-232 | √ | √ | √ | √ |
以太網(wǎng)Modus網(wǎng)關(guān) | ZLAN5143 | √ | √ | √ | √ |
Wifi+以太網(wǎng)Modus網(wǎng)關(guān) | ZLAN7144 | √ | √ | √ | √ |
Wifi Modus網(wǎng)關(guān) | ZLAN7146 | √ | √ | √ | √ |
4G+以太網(wǎng)Modbus網(wǎng)關(guān) | ZLAN8303-7 | √ | √ | √ | √ |
Zigbee Modbus網(wǎng)關(guān) | ZLAN9543 | √ | √ | √ | √ |
Lora Modbus網(wǎng)關(guān) | ZLAN9743 | √ | √ | √ | √ |