645 97規(guī)約是電表使用的國標通訊協(xié)議,使用非常廣泛。一般通過RS485總線讀當前功率、當前電壓、本月電量等數(shù)據(jù)。但是由于RS485總線原理的限制,不能有兩臺主機同時去讀電表。但是在能源監(jiān)控領(lǐng)域,經(jīng)常需要有多個計算機、顯示屏獲取電表的數(shù)據(jù)。
普通的“透傳”的RS485轉(zhuǎn)TCP/IP的產(chǎn)品在這里無法使用,這里就介紹一下卓嵐的ZLAN5143的多主機功能如何解決這個問題。
如圖:ZLAN5143的多主機功能會調(diào)度RS485的總線,當主機1和主機2同時需要使用總線的時候ZLAN5143則會擔任“裁判”的角色,禁止同時搶占,并合理調(diào)度總線的使用時間,從而起到“多主機”順利同時訪問的效果。多主機還可以讓主機1查詢的返回數(shù)據(jù)不會發(fā)送到主機2,引起數(shù)據(jù)干擾。
需要指出的是Modbus網(wǎng)關(guān)一般具有自動查詢和存儲寄存器內(nèi)容的功能,從而解決多主機訪問的沖突問題,但是此類Modbus網(wǎng)關(guān)對于非Modbus RTU的RS485協(xié)議(例如645協(xié)議)則無能為力。但是5143則可以同樣可以適用于非Modbus RTU類型的多主機實現(xiàn)。
首先我們測試一下不啟用多主機,而是普通“透傳”方式下的情況:
我們使用兩個SocketDlgTest工具連接上5143,不斷同時發(fā)送645的協(xié)議指令68 50 00 00 00 00 00 68 01 02 46 C7 30 16,如圖所示本來為:68 50 00 00 00 00 00 68 81 06 46 c7 53 35 34 33 a3 16的指令沖突后變?yōu)?8 50 00 00 00 00 00 68 81 06 c6。也就是出現(xiàn)丟失和誤碼。另外只有一個SocketDlgTest發(fā)送時,在數(shù)據(jù)返回的時候兩個SocketDlgTest窗口都收到數(shù)據(jù),這樣也不符合要求。應(yīng)該是不發(fā)送數(shù)據(jù)的窗口不收到任何返回。
現(xiàn)在開啟“多主機功能”,配置5143時保持“轉(zhuǎn)化協(xié)議”為“無”,點擊“更多高級選項…”,設(shè)置如下。
由于這里串口為1200bps設(shè)置超時為1000。返回“設(shè)備設(shè)置”后點擊“修改設(shè)置”。此后再進行以上的實驗,發(fā)現(xiàn)無論如何同時發(fā)送,都會得到正確的數(shù)據(jù)。并且不發(fā)送的SocketDlgTest窗口不會收到數(shù)據(jù)。真正實現(xiàn)了防沖突和獨立收發(fā)通訊。另外結(jié)合ZLvricom的虛擬串口,可以在兩個主機上使用原來的串口軟件進行通訊。
總之,“多主機功能”為各類非Modbus RTU的RS485儀表的多主機訪問提供了一種有效的方案。