Modbus網關是一(yi)種(zhong)能(neng)夠將Modubs TCP協(xie)議(yi)轉化為Modbus RTU協(xie)議(yi)的設備。Modbus廣泛應(ying)用于(yu)(yu)儀(yi)表和(he)(he)傳感器(qi)領域,可以(yi)獲得儀(yi)表和(he)(he)傳感器(qi)的數據,但是傳統的基(ji)于(yu)(yu)RS485的Modbus RTU(或ASCII)速度(du)和(he)(he)擴展性較差,所(suo)以(yi)后來出現了Modbus TCP這種(zhong)基(ji)于(yu)(yu)網絡的協(xie)議(yi)。所(suo)以(yi)Modbus網關這種(zhong)轉換器(qi)就應(ying)運而生了。
四種(zhong)Modbus網關(guan)(guan)從簡單(dan)協議轉換到多主機網關(guan)(guan),再到存儲型網關(guan)(guan),再到ZLMB這種(zhong)可配(pei)置網關(guan)(guan)。從簡單(dan)到復雜也是(shi)反映(ying)了它(ta)的(de)發展(zhan)過程,了解他們(men)的(de)優缺點(dian)有助于工程師更好掌握它(ta)們(men)的(de)使(shi)用方法。
這(zhe)里特別推薦(jian)的是ZLMB可(ke)配置網關,它(ta)可(ke)以(yi)預先配置需(xu)要讀(du)取的多(duo)個從站的多(duo)個寄存器列表,然后網口可(ke)以(yi)用一條指令一次性讀(du)取所有寄存器,讀(du)取效率非常高(gao)。且(qie)讀(du)取速度很(hen)快。具體參考《可(ke)配置Modbus網關ZLMB》。
最初的Modubs網(wang)關,只不過是(shi)需要解決數據(ju)格式的轉化(hua)。舉一個例子(zi),Modbus RTU(RS485端(duan))中03功能(neng)碼,讀取00開(kai)始(shi)的1個寄存器(qi)的指令為:01 03 00 00 00 01 84 0a,其(qi)中84 0a是(shi)CRC校(xiao)驗。而一個Modbus TCP指令(網(wang)絡端(duan))為00 00 00 00 00 06 01 03 00 00 00 01。我們知道普通的串(chuan)口服務器(qi)是(shi)“透(tou)傳”的,也就是(shi)發送(song)串(chuan)口發送(song)01 03 00 00 00 01 84 0a,網(wang)口也是(shi)01 03 00 00 00 01 84 0a。為了實現(xian)這(zhe)個RTU轉Modbus TCP功能(neng),對比發現(xian)只要去掉CRC校(xiao)驗84 0a加上開(kai)頭的00 00 00 00 00 06即(ji)可。
這種簡單的格式轉(zhuan)化確實能夠初步地滿足要求。但(dan)是缺(que)點是:
1.無法多(duo)主(zhu)機訪(fang)問:不能實現(xian)多(duo)個Modbus TCP主(zhu)機去訪(fang)問網關(guan),因(yin)為主(zhu)機A和主(zhu)機B發送的(de)數據在RS485總線上會產生搶占總線沖突,引起數據錯(cuo)亂(luan)。
2.返(fan)回數(shu)據(ju)干(gan)擾:設備對主機A的(de)應答不僅(jin)會(hui)返(fan)回給主機A也會(hui)返(fan)回給主機B,這(zhe)樣主機B的(de)返(fan)回數(shu)據(ju)中就會(hui)有干(gan)擾數(shu)據(ju)。
雖然簡單協議轉化進本(ben)已經被淘汰,這里也簡要介(jie)紹一(yi)下它的(de)設(she)置方法:在ZLVircom配(pei)置工具的(de)“設(she)備編輯”界面中選擇轉化協議為“Modbus TCP轉RTU”,在高(gao)級選項中去(qu)掉(diao)“多主機”和“RS485防(fang)沖(chong)突”兩個勾。
多主機(ji)模(mo)式的Modbus網關正是為解決“簡單協議轉(zhuan)化”模(mo)式的缺點設(she)計的。如上圖(tu)所示,當主機(ji)A和主機(ji)B同(tong)時(shi)訪(fang)問是Modbus網關會(hui)進行(xing)總線的占用調(diao)度,從而解決總線沖(chong)突(tu)問題,另外(wai)主機(ji)A訪(fang)問的數(shu)(shu)據也不會(hui)再(zai)發送給主機(ji)B,解決了返(fan)回數(shu)(shu)據干(gan)擾問題。
數據通訊步驟如下:
1.當(dang)網關收到主(zhu)機A的查詢請求(qiu)時,檢查總線是否(fou)有在使用,如果(guo)空閑則發送到RS485總線上,否(fou)則等待到總線空閑。
2.網關記錄下來(lai)當前(qian)查詢的(de)主(zhu)機,這里(li)是主(zhu)機A。
3.當數據從(cong)RS485總(zong)線(xian)返(fan)回時,網關將其轉化為Modbus TCP格式轉發給相應的主機(這里是主機A)。
多(duo)主機(ji)模式的(de)優點是,實現了多(duo)臺主機(ji)的(de)同(tong)時(shi)訪問,解決(jue)了總線(xian)沖突和返回數(shu)據干擾問題,但是仍然存在不足之處:
1.數(shu)(shu)據(ju)返回慢(man):從(cong)以(yi)上(shang)的數(shu)(shu)據(ju)通訊步驟可以(yi)看(kan)出,一(yi)臺主機(ji)獲(huo)得(de)數(shu)(shu)據(ju)需(xu)要數(shu)(shu)據(ju)線從(cong)網絡轉(zhuan)發(fa)到RS485總線,等(deng)待(dai)設備返回后(hou)再從(cong)RS485轉(zhuan)發(fa)到網絡。由于RS485總線本(ben)身是慢(man)速通信方式,主機(ji)一(yi)般需(xu)要等(deng)待(dai)50~100ms才能獲(huo)得(de)一(yi)個(ge)數(shu)(shu)據(ju)。
2.主機數(shu)量很多時(shi),等待容易超時(shi):這也(ye)是數(shu)據返回慢引起的另(ling)外一個問題。
對于(yu)早期(qi)的ZLAN5142默認(ren)即“多主機模(mo)式(shi)”;對于(yu)ZLAN5143(1.565之(zhi)前(qian)版(ban)本)不支(zhi)(zhi)持“多主機模(mo)式(shi)”,只(zhi)支(zhi)(zhi)持“存(cun)儲型”;對于(yu)于(yu)ZLAN5143(1.565及(ji)其(qi)之(zhi)后版(ban)本)支(zhi)(zhi)持“多主機模(mo)式(shi)”,設(she)置方法為:在ZLVircom配置工具的“設(she)備(bei)編輯”界面中選擇轉(zhuan)化(hua)協議(yi)為“Modbus TCP轉(zhuan)RTU”,在高級(ji)選項中將(jiang)RS485總(zong)線沖(chong)突最多等待時(shi)間改為2秒即可。
存儲(chu)型網關正是為了解決(jue)“多主(zhu)機(ji)模式(shi)”的(de)缺點(dian)而(er)設計的(de),由于“多主(zhu)機(ji)模式(shi)”的(de)慢速問題主(zhu)要(yao)(yao)是由于RS485總(zong)線返回數(shu)據太慢引起的(de),“存儲(chu)型”的(de)思路就是通過預先(xian)獲得(de)某(mou)些(xie)需要(yao)(yao)的(de)數(shu)據,事先(xian)存儲(chu)起來,等網絡(luo)端需要(yao)(yao)數(shu)據時可以立即(ji)提供,從而(er)減(jian)少(shao)數(shu)據查詢時間。
存(cun)儲(chu)型網關(guan)有兩個特點:
1.自學習(xi):存儲型(xing)網(wang)關(guan)無(wu)需配置,因為它可以在主機索要一個(ge)(ge)查詢數(shu)據的時候就會將(jiang)這個(ge)(ge)記錄保存一起,網(wang)關(guan)內部會自動學習(xi)當前網(wang)口需要的數(shu)據。
2.事先查詢:當網(wang)(wang)關獲悉所有主機(ji)索要(yao)的(de)所有的(de)寄存器(qi)之(zhi)后(hou),網(wang)(wang)關會事先進(jin)行逐條查詢,并把結(jie)果存儲到網(wang)(wang)關的(de)內(nei)部。
如此一來(lai),當(dang)主機A想(xiang)要之(zhi)前(qian)要過(guo)的(de)(de)數(shu)據(ju)(ju)的(de)(de)時候,網關會(hui)從自己的(de)(de)內(nei)存中調(diao)取數(shu)據(ju)(ju),并立即(ji)返回給主機A,由于(yu)沒有轉發到RS485總線的(de)(de)過(guo)程,這個時間(jian)大約在1~2ms,比之(zhi)前(qian)的(de)(de)50~100ms大大提高。
存儲型網關的優點:
1.返回(hui)速度快:主機(ji)A查詢返回(hui)數據時間大大提高。
2.無需配置:由于(yu)采用自學習方式,無需配置,操作起來(lai)和“多主(zhu)機模式”并(bing)沒有(you)差(cha)別。
存儲型網關的問題:
1.首(shou)條指(zhi)令返回(hui)慢:由于(yu)網關(guan)是通過學習(xi)來(lai)獲得主(zhu)機(ji)(ji)索要的寄(ji)存器號(hao)的,在獲得這個信(xin)息(xi)前,無法事先查詢。所以主(zhu)機(ji)(ji)發送的第一條指(zhi)令仍然(ran)需(xu)要通過轉(zhuan)到(dao)RS485總線來(lai)獲得數據。首(shou)條指(zhi)令返回(hui)和多(duo)主(zhu)機(ji)(ji)模式一樣慢。
2.RS485總(zong)線(xian)查(cha)詢過快可(ke)能(neng)影響設備(bei)(bei)(bei)工作:由(you)于一般(ban)默認情況下RS485總(zong)線(xian)會以(yi)(yi)最快速的(de)(de)速度查(cha)詢從站設備(bei)(bei)(bei)內部(bu)的(de)(de)寄存器內容,而某些儀表可(ke)能(neng)無法適(shi)應這么快速的(de)(de)查(cha)詢導致設備(bei)(bei)(bei)工作異常(chang)。對于這點實(shi)際可(ke)以(yi)(yi)加大“RS485總(zong)線(xian)空余時間”參(can)數(shu)來解(jie)決(jue)查(cha)詢過快的(de)(de)問題,實(shi)際是可(ke)以(yi)(yi)解(jie)決(jue)的(de)(de)。
3.不是(shi)最新(xin)數據(ju)(ju):由于數據(ju)(ju)是(shi)事先查(cha)詢(xun)獲得,存(cun)儲起來的,所以查(cha)到(dao)(dao)的數據(ju)(ju)可能并(bing)不是(shi)新(xin)的數據(ju)(ju),雖然(ran)這個(ge)時(shi)間(jian)也(ye)就只有幾(ji)百(bai)毫秒(miao),對于某些特殊情況也(ye)需要考慮到(dao)(dao)這種延時(shi)。
4.時序問(wen)題:某些Modbus TCP的讀取和存(cun)儲需要(yao)按照寫、讀等時序操(cao)作的,“存(cun)儲型”的這種預先存(cun)儲會打亂這種時序,會引起某些設備無(wu)法兼(jian)容的問(wen)題。
這(zhe)里的缺點2、3、4都可以撤回(hui)(hui)到(dao)(dao)“多主機模(mo)式”的網關來(lai)解決(jue)這(zhe)個問題,注意撤回(hui)(hui)到(dao)(dao)“多主機模(mo)式”后(hou),數據返回(hui)(hui)會變慢。注意ZLAN5143的新固件(jian)支持“多主機模(mo)式”和“存儲型”兩種(zhong)模(mo)式。而上述缺點1(首條指令(ling)返回(hui)(hui)慢),將(jiang)會在后(hou)面(mian)的“可配置”網關中解決(jue)。
ZLAN5142不支持“存儲型(xing)”,ZLAN5143設置(zhi)為“存儲型(xing)”的方法(fa)為:在ZLVircom配置(zhi)工具的“設備編輯”界面中選擇(ze)轉化協議為“Modbus TCP轉RTU”即可。
為了解(jie)決(jue)“存(cun)儲(chu)型”網(wang)關(guan)(guan)的(de)(de)(de)(de)首(shou)條指令返(fan)回慢的(de)(de)(de)(de)問(wen)題可以(yi)采用(yong)(yong)可配置(zhi)網(wang)關(guan)(guan)。可配置(zhi)網(wang)關(guan)(guan)也采用(yong)(yong)“存(cun)儲(chu)型”網(wang)關(guan)(guan)的(de)(de)(de)(de)事先(xian)查詢獲得RS485總線從站寄(ji)存(cun)器(qi)內(nei)容(rong)的(de)(de)(de)(de)辦法(fa)。但是它不采用(yong)(yong)自學習(xi)的(de)(de)(de)(de)方(fang)法(fa),為了解(jie)決(jue)首(shou)條指令返(fan)回慢的(de)(de)(de)(de)問(wen)題,必(bi)須事先(xian)把(ba)需要的(de)(de)(de)(de)寄(ji)存(cun)器(qi)列(lie)表配置(zhi)到網(wang)關(guan)(guan)內(nei)部。它可以(yi)預(yu)先(xian)配置(zhi)Modbus RTU端(duan)的(de)(de)(de)(de)設備的(de)(de)(de)(de)地址(zhi)、功能碼和寄(ji)存(cun)器(qi)列(lie)表,并(bing)存(cun)儲(chu)到網(wang)關(guan)(guan)內(nei)部。網(wang)關(guan)(guan)會自動采集這些配置(zhi)的(de)(de)(de)(de)RTU設備的(de)(de)(de)(de)數據,然后映射到連續(xu)的(de)(de)(de)(de)Modbus TCP寄(ji)存(cun)器(qi)地址(zhi),從而允許(xu)Modbus TCP端(duan)一次性讀取(qu)所有的(de)(de)(de)(de)設備的(de)(de)(de)(de)不同寄(ji)存(cun)器(qi)的(de)(de)(de)(de)數據。
卓嵐可配置網關又稱之為ZLMB網關,有如下的優點:
1.所有指令返回速度都快(kuai):即使是首(shou)條(tiao)指令也同(tong)樣快(kuai)速。
2.指(zhi)(zhi)令合(he)并提(ti)高效率:可(ke)以(yi)將(jiang)分散的不(bu)同的站地(di)址、寄存(cun)器(qi)映(ying)射(she)到同一片(pian)寄存(cun)器(qi)。這樣(yang)Modbus TCP端可(ke)以(yi)用(yong)一條(tiao)指(zhi)(zhi)令采集所有(you)數據,包括不(bu)同站地(di)址的設備的數據,而不(bu)是分為(wei)幾(ji)條(tiao)指(zhi)(zhi)令分別去采集,提(ti)高了Modbus TCP端的傳輸效率。
3.地(di)址重(zhong)映射(she):對于某些情況需(xu)要將(jiang)不同分(fen)散的寄存器(qi)重(zhong)新映射(she)到(dao)整片連續(xu)的區域,ZLMB網關可(ke)以(yi)實(shi)現(xian)這個要求。
可配置網關的缺點:
1.需要(yao)(yao)手動配置:如果“存(cun)儲(chu)型(xing)”網關就能夠滿足要(yao)(yao)求的可以優先選(xuan)擇“存(cun)儲(chu)型(xing)”,因(yin)為“存(cun)儲(chu)型(xing)”無(wu)需任何配置。ZLMB方式需要(yao)(yao)手動使用ZLVircom配置需要(yao)(yao)的寄存(cun)器(qi)。
2.事先預讀(du)取引起的問題:和存(cun)儲型(xing)一樣存(cun)在“不(bu)是最新數據”和“時序問題”。
卓嵐ZLAN5143、ZLAN7144、ZLAN7146、ZLAN8303等都(dou)支(zhi)持可配(pei)(pei)置(zhi)Modbus網關功能。其中ZLAN5143需(xu)要(yao)固(gu)件(jian)版(ban)本(ben)1.579及(ji)(ji)(ji)以上版(ban)本(ben),配(pei)(pei)合ZLVircom5.15及(ji)(ji)(ji)以上版(ban)本(ben)來使用。7144需(xu)要(yao)固(gu)件(jian)版(ban)本(ben)1.491及(ji)(ji)(ji)以上版(ban)本(ben)。配(pei)(pei)置(zhi)方法是:在ZLVircom配(pei)(pei)置(zhi)工具的(de)“設備(bei)編輯”界面中點擊(ji)“固(gu)件(jian)和配(pei)(pei)置(zhi)”按(an)鈕(niu),然(ran)后在彈出(chu)的(de)“網頁(ye)程序下(xia)載工具”對話框(kuang)中,選擇“網頁(ye)目錄下(xia)載”,然(ran)后點擊(ji)“ZLMB”按(an)鈕(niu),設計完畢(bi)后點擊(ji)“下(xia)載”按(an)鈕(niu)下(xia)載到設備(bei)內容。具體內容請參(can)考(kao)《可配(pei)(pei)置(zhi)Modbus網關ZLMB》的(de)詳細(xi)介紹。
網關類型 | 簡單協議轉化 | 多主機模式 | 存儲型網關 | 可配置網關 |
---|---|---|---|---|
多主機支持 | ╳ | √ | √ | √ |
返回指令快 | ╳ | ╳ | √ | √ |
首條指令返回快 | ╳ | ╳ | ╳ | √ |
不存在預先讀取引起的問題 | √ | √ | ╳ | ╳ |
無需配置 | √ | √ | √ | ╳ |
支持指令和合并和重新映射地址 | ╳ | ╳ | ╳ | √ |
總的(de)(de)來說,可配(pei)置網關(guan)(guan)是讀(du)取(qu)效率最(zui)高的(de)(de),最(zui)為先進的(de)(de)Modbus網關(guan)(guan),但(dan)是配(pei)置較為繁瑣;而存儲型(xing)網關(guan)(guan)是默認的(de)(de)模式(shi)(shi),也是使用最(zui)簡便的(de)(de)模式(shi)(shi),同(tong)時(shi)具有多主機、讀(du)取(qu)速度快等特點;而在(zai)某些(xie)RS485設備不適應“預(yu)先讀(du)取(qu)”這(zhe)種(zhong)(zhong)的(de)(de)情況下(xia),可以(yi)退回到“多主機”模式(shi)(shi)這(zhe)種(zhong)(zhong)慢速模式(shi)(shi)。而“簡單協議轉化”模式(shi)(shi)由于存在(zai)多主機時(shi)有總線誤(wu)碼和(he)丟失(shi),一般情況不會(hui)采用。
四種Modbus網(wang)關模式和(he)對(dui)應的型(xing)號(hao)現列出到如下(xia)表(biao):
名稱 | 型號 | 簡單協議轉化 | 多主機模式 | 存儲型網關 | 可配置網關 |
---|---|---|---|---|---|
多串口Modbus網關 | ZLAN5240、ZLAN5443A、ZLAN5843A、ZLAN5G40A | √ | √ | ╳ | ╳ |
單串口Modbus網關 | ZLAN5142、ZLAN5142-3 | √ | √ | ╳ | ╳ |
新一代多串口Modbus網關 | ZLAN5443D、ZLAN5443-232 | √ | √ | √ | √ |
以太網Modus網關 | ZLAN5143 | √ | √ | √ | √ |
Wifi+以太網Modus網關 | ZLAN7144 | √ | √ | √ | √ |
Wifi Modus網關 | ZLAN7146 | √ | √ | √ | √ |
4G+以太網Modbus網關 | ZLAN8303-7 | √ | √ | √ | √ |
Zigbee Modbus網關 | ZLAN9543 | √ | √ | √ | √ |
Lora Modbus網關 | ZLAN9743 | √ | √ | √ | √ |