前文講到多主機(jī)網(wǎng)關(guān)模式與簡(jiǎn)單協(xié)議轉(zhuǎn)換比起來(lái),針對(duì)多主機(jī)同時(shí)發(fā)送數(shù)據(jù)場(chǎng)景,做了單獨(dú)的數(shù)據(jù)處理。例如在主機(jī)1、2、3發(fā)送數(shù)據(jù)時(shí)間較短時(shí),串口服務(wù)器將把請(qǐng)求的數(shù)據(jù)攔截在網(wǎng)絡(luò)端,數(shù)據(jù)將會(huì)按照先后順序?qū)⒅噶畎l(fā)送給串口設(shè)備,此時(shí)串口設(shè)備收到數(shù)據(jù)后將數(shù)據(jù)返回給主機(jī),并且是哪個(gè)主機(jī)請(qǐng)求數(shù)據(jù)就會(huì)將數(shù)據(jù)指定發(fā)送給哪個(gè)主機(jī),這樣就可以避免出現(xiàn)通信異常現(xiàn)象,提高通信的可靠性。
但是主機(jī)端的讀取還是會(huì)受限于串口端通信速率(因?yàn)榫W(wǎng)絡(luò)端速率遠(yuǎn)高于串口速率),如此,在多主機(jī)同時(shí)讀取時(shí),雖然不會(huì)引起數(shù)據(jù)沖突,但是在多個(gè)主機(jī)同時(shí)快速讀取的時(shí)候,仍然會(huì)等到串口端排隊(duì)處理。
存儲(chǔ)型網(wǎng)關(guān)
本節(jié)先給大家介紹一種針對(duì)多個(gè)主機(jī)讀取相同相同寄存器或線圈數(shù)據(jù)時(shí),給到一種高速率解決方案——存儲(chǔ)型網(wǎng)關(guān)。存儲(chǔ)型網(wǎng)關(guān)特別適用于讀取固定寄存器內(nèi)容且適用于多主機(jī)高速刷新數(shù)據(jù)場(chǎng)景。
存儲(chǔ)型網(wǎng)關(guān)原理上來(lái)說(shuō),就是在串口服務(wù)器內(nèi)部開(kāi)辟一塊單獨(dú)的數(shù)據(jù)暫存區(qū)域,將前一個(gè)主機(jī)讀取的內(nèi)容進(jìn)行存儲(chǔ),如在指令存儲(chǔ)時(shí)間內(nèi),其余主機(jī)再次讀取數(shù)據(jù),為了減少延遲,串口服務(wù)器將在存儲(chǔ)區(qū)間內(nèi)將數(shù)據(jù)直接取出并回復(fù)給第二個(gè)查詢的主機(jī)。并且在主機(jī)任意查詢一次數(shù)據(jù)后,如串口服務(wù)器沒(méi)有讀取其余主機(jī)內(nèi)容(串口總線閑置),將按照讀取先后順序自動(dòng)輪詢歷史查詢指令。歷史查詢指令最大可存儲(chǔ)50條。
優(yōu)點(diǎn)在于當(dāng)主機(jī)讀取任意指令后,串口服務(wù)器會(huì)按照輪詢時(shí)間間隔定時(shí)查詢歷史輪詢指令,并將數(shù)據(jù)一直更新,確保后續(xù)查詢的指令內(nèi)容是最新的。當(dāng)歷史存取指令長(zhǎng)時(shí)間無(wú)主機(jī)讀取,存儲(chǔ)時(shí)間超過(guò)指令存儲(chǔ)時(shí)間后,會(huì)將指令自動(dòng)清空,避免浪費(fèi)存儲(chǔ)資源。
存儲(chǔ)型網(wǎng)關(guān)與多主機(jī)網(wǎng)關(guān)使用方式一致,本處只使用Modbus Pool與Modbus Slave作為展示,PLC/HMI等參照此進(jìn)行鏈路連接。
如何配置參數(shù)在前面的文章中已經(jīng)做出講解,本節(jié)不再單獨(dú)介紹。
使用EBYTE網(wǎng)絡(luò)配置工具查看當(dāng)前串口服務(wù)器參數(shù)情況,IP需要修改為與電腦同一網(wǎng)段,設(shè)置串口服務(wù)器為T(mén)CP服務(wù)器模式,記錄當(dāng)前本機(jī)IP和本地端口。
打開(kāi)ModBus Slave軟件模擬從機(jī),連接方式使用串口,選擇串口服務(wù)器的串口號(hào)、連接參數(shù)(波特率、數(shù)據(jù)位、校驗(yàn)位、停止位,這里采用默認(rèn)115200,8N1)
數(shù)據(jù)返回內(nèi)容選擇從機(jī)ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10(稍后讀取也為這個(gè)參數(shù))。
打開(kāi)ModBus Pool軟件,連接方式選擇為ModBus TCP/IP,目標(biāo)IP設(shè)置為串口服務(wù)器IP地址,目標(biāo)端口設(shè)置為串口服務(wù)器本地端口(192.168.0.113/8887)超時(shí)時(shí)間可使用默認(rèn)。
讀取參數(shù)也選用從機(jī)ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10。參照此參數(shù)可以連接6個(gè)主機(jī),如下圖。
可配置網(wǎng)關(guān)
存儲(chǔ)型網(wǎng)關(guān)缺點(diǎn)在于第一次讀取指令邏輯還是在于主動(dòng)向串口端輪詢,因此首條查詢指令時(shí)間會(huì)偏長(zhǎng)一點(diǎn),配置型網(wǎng)關(guān)優(yōu)點(diǎn)在于可以將要查詢的指令預(yù)先配置給串口服務(wù)器,在串口服務(wù)器上電后將主動(dòng)按照指令順序進(jìn)行讀取,完成后將數(shù)據(jù)返回內(nèi)容存儲(chǔ)在內(nèi)部空間中,只要主機(jī)在指令存儲(chǔ)時(shí)間內(nèi)進(jìn)行讀取,串口服務(wù)器將立即將數(shù)據(jù)進(jìn)行返回。
配置時(shí),只需將要查詢的指令進(jìn)行配置,無(wú)需輸入ModBus CRC校驗(yàn),設(shè)備將自動(dòng)進(jìn)行校驗(yàn),在輸入框中輸入指令后,點(diǎn)擊添加即可,此時(shí)設(shè)備會(huì)校驗(yàn)當(dāng)前輸入是否是標(biāo)準(zhǔn)指令,如不滿足格式將無(wú)法添加,如下圖:
添加完成后,保存配置,重啟設(shè)備即可,設(shè)備重啟完成后即開(kāi)始按照輪詢時(shí)間間隔想串口查詢數(shù)據(jù),如指令超時(shí)時(shí)間到了之后還未返回正確數(shù)據(jù),將自動(dòng)跳過(guò)該指令,繼續(xù)進(jìn)行下一條指令查詢。最大可配置50條指令,如需要添加多余指令則需要將前期配置指令進(jìn)行刪除。
無(wú)主機(jī)讀取數(shù)據(jù),串口服務(wù)器也會(huì)按照輪詢時(shí)間間隔定時(shí)查詢歷史輪詢指令,并將數(shù)據(jù)一直更新,確保后續(xù)查詢的指令內(nèi)容是最新的。
本處使用Modbus Pool與Modbus Slave展示查詢指令效果,PLC/HMI等參照此進(jìn)行鏈路連接。
使用EBYTE網(wǎng)絡(luò)配置工具查看當(dāng)前串口服務(wù)器參數(shù)情況,IP需要修改為與電腦同一網(wǎng)段,設(shè)置串口服務(wù)器為T(mén)CP服務(wù)器模式,記錄當(dāng)前本機(jī)IP和本地端口。
打開(kāi)ModBus Slave軟件模擬從機(jī),連接方式使用串口,選擇串口服務(wù)器的串口號(hào)、連接參數(shù)(波特率、數(shù)據(jù)位、校驗(yàn)位、停止位,這里采用默認(rèn)115200,8N1)
數(shù)據(jù)返回內(nèi)容選擇從機(jī)ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10(稍后讀取也為這個(gè)參數(shù))。
打開(kāi)ModBus Pool軟件,連接方式選擇為ModBus TCP/IP,目標(biāo)IP設(shè)置為串口服務(wù)器IP地址,目標(biāo)端口設(shè)置為串口服務(wù)器本地端口(192.168.0.113/8887)超時(shí)時(shí)間可使用默認(rèn)。
讀取參數(shù)也選用從機(jī)ID為1,功能碼選擇03,寄存器地址選擇為0,數(shù)量為10。參照此參數(shù)可以連接6個(gè)主機(jī),如下圖。
-
通信
+關(guān)注
關(guān)注
18文章
6070瀏覽量
136423 -
網(wǎng)關(guān)
+關(guān)注
關(guān)注
9文章
4586瀏覽量
51493 -
串口服務(wù)器
+關(guān)注
關(guān)注
1文章
165瀏覽量
17414
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論