一、硬件連線
1 串口接口
Modbus通訊原理(lǐ):Modbus通訊爲主從(cóng)通訊,即一問一答(dá)的方式進行通訊。主站(zhàn)發送響應的數據給某個從(cóng)站(zhàn),從(cóng)站(zhàn)響應;主站(zhàn)沒有數據發送時(shí),從(cóng)站(zhàn)不響應。
這(zhè)個通訊機制,貫徹到(dào)編程思路,後文(wén)編程章節中會(huì)講到(dào)。
Modbus協議(yì)是運行在串口接口上(shàng),常見的串口接口有RS-232,RS-485,RS-422。Modbus常用(yòng)RS-485接口。
一般RS-232三條通訊線即可完成通訊鏈路。如圖1所示,RS232的設備1的txd接到(dào)設備2的rxd,rxd接到(dào)txd,可以同時(shí)接受或發送,這(zhè)是全雙工(gōng)模式。因RS-232特性限制,隻能(néng)一對(duì)一連接,即一個主站(zhàn)連接一個從(cóng)站(zhàn)。因此在Modbus通訊上(shàng)RS-232接口不多見。
圖一 RS-232
RS-485兩條通訊線即可完成通訊鏈路。如圖2所示,多台設備的A短接爲一條線路,B短接爲另一條線路。同一時(shí)間隻能(néng)發送或者接受,此爲半雙工(gōng)。多台設備可以挂載同一鏈路,可實現(xiàn)一台主站(zhàn)、多台從(cóng)站(zhàn)之間進行通信。此應用(yòng)場景最爲多見。
圖2 RS-485
UN 200 SMART串行接口爲RS-485,引腳示意圖如表3。
表3 UN 200 SMART DB9引腳定義
注意:RS-485的A\B信号線,通俗叫法有A\B;485+\485-。UN 200 SMART DB9引腳中的3号引腳,即RS-485 信号 B,爲通俗叫法的A或485+;8号引腳,即RS-485 信号 A,爲通俗叫法的B或485-。
2.總線連接器
在複雜(zá)的工(gōng)業現(xiàn)場或長距離通訊的情況下(xià),建議(yì)選擇優質的總線連接器和(hé)電纜。總線連接器自(zì)帶終端電阻和(hé)偏置電阻,在此情況下(xià),可提高(gāo)通訊的穩定和(hé)抗幹擾能(néng)力。
總線連接器和(hé)電纜,訂貨号如表4。
表4 總線鏈接器&電纜
3.爲什(shén)麽選擇總線連接器和(hé)總線電纜
衆所周知(zhī),網線有超五類和(hé)超六類之分,超五類傳輸帶寬可高(gāo)達1000Mb/s,但(dàn)一般隻應用(yòng)在100Mb/s的網絡中;超六類主要應用(yòng)在千兆網絡中,在傳輸性能(néng)上(shàng)遠遠高(gāo)于超五類網線标準。超五類,超六類的電纜直觀區(qū)别就是電纜銅芯線徑不同,超六類銅芯明(míng)顯粗于超五類。
同理(lǐ)推測,總線電纜,回路阻抗:<150R/KM,優于一般通訊電纜。線阻小(xiǎo),通訊距離長,抗幹擾能(néng)力強。
總線連接器,自(zì)帶終端電阻和(hé)偏置電阻,同樣可以提高(gāo)通訊的質量。
建議(yì)組網方式如圖5:
圖5總線接頭
終端和(hé)偏置電阻如圖6:
圖6 終端和(hé)偏置電阻
4. 通訊距離
通訊波特率越高(gāo),通訊距離越短。在長距離通訊下(xià),适當降低(dī)通訊速率。9600波特率的最長距離建議(yì)在1200米。
二. Modbus 地址
通訊的目的是對(duì)寄存器進行讀寫操作(zuò),因此需要了(le)解Modbus地址的表示方式。
Modbus地址表示有多種方式,如40001,4x0001,0000H,此三個地址實爲同一個地址。地址中有4标識的,爲十進制表示方式,起始地址爲1,即實際起始地址爲40001;地址标識中有H的,爲十六進制表示方式,起始地址爲0。在SMART PLC中,地址表示爲40001;
億維HMI或常見組态軟件中,地址表示爲4x1;在變頻器或儀表中,地址常表示爲0000H。
UN 200 SMART做從(cóng)站(zhàn),地址對(duì)應如下(xià):
Modbus地址通常被寫爲包含數據類型和(hé)偏移量的5個字符的數值。第一個字符決定數據類型,最後四個字符在數據類型中選擇适當的數值。然後,Modbus主設備将地址映射至正确的功能(néng)
Modbus從(cóng)站(zhàn)指令支持下(xià)列地址:
00001至00128是映射至Q0.0 - Q15.7的離散輸出
10001至10128是映射至I0.0 - I15.7的離散輸入
30001至30032是映射至AIW0至AIW62的模拟輸入寄存器
40001至4xxxx是映射至V存儲器的保持寄存器。
所有Modbus地址均以1爲基位。下(xià)表顯示映射至UN-200地址的Modbus地址。
Modbus地址 UN-200地址
00001 Q0.0
00002 Q0.1
00003 Q0.2
... ...
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
... ...
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
... ...
30032 AIW62
40001 Hold Start
40002 HoldStart+2
40003 HoldStart+4
... ...
4xxxx HoldStart+2 x (xxxx-1)
對(duì)于億維HMI,地址對(duì)應如表7:
表7 HMI modbus地址及功能(néng)碼
三、報(bào)文(wén)
對(duì)不同的Modbus地址進行讀或寫操作(zuò),需要不同的功能(néng)碼,如上(shàng)表7。
常見用(yòng)的功能(néng)碼有FC03、FC06,在此以功能(néng)碼03對(duì)報(bào)文(wén)進行說明(míng)。
功能(néng)碼03,對(duì)寄存器006BH開(kāi)始的三個寄存器進行讀操作(zuò),主站(zhàn)報(bào)文(wén)示例如下(xià):
表8 主站(zhàn)03報(bào)文(wén)
從(cóng)站(zhàn)報(bào)文(wén)響應報(bào)文(wén)如下(xià):
表9 從(cóng)站(zhàn)03報(bào)文(wén)
其他(tā)報(bào)文(wén)格式不再說明(míng),有興趣的可以到(dào)官網查詢https://modbus.org/
四. UN 200 SMART Modbus RTU 從(cóng)站(zhàn)編程
圖10 從(cóng)站(zhàn)程序
上(shàng)面程序實現(xiàn)的功能(néng):将CPU的0口設置爲從(cóng)站(zhàn)地址爲1,波特率9600,偶校驗的Modbus從(cóng)站(zhàn)。
允許主站(zhàn)操作(zuò)的IO數量爲128個,模拟量32個,以VW0開(kāi)始的1000個寄存器。CPU的VW0爲Modbus地址40001,VW2爲40002,依次類推。
參數說明(míng):
“模式”(Mode) 輸入的值用(yòng)于選擇通信協議(yì):輸入值爲 1 時(shí),分配 Modbus 協議(yì)并啓用(yòng)該協議(yì);輸入值爲 0 時(shí),分配 PPI 協議(yì)并禁用(yòng) Modbus 協議(yì)。
參數“地址”(Addr) 将地址設置爲 1 至 247 之間(包括邊界)的值。
參數“波特”(Baud) 将波特率設置爲 1200、2400、4800、9600、19200、38400、57600 或 115200。
參數“奇偶校驗”(Parity) 應設置爲與 Modbus 主站(zhàn)的奇偶驗校相匹配。所有設置使用(yòng)一個停止位。接受的值如下(xià):0(無奇偶校驗)、1(奇校驗)和(hé) 2(偶校驗)。
參數“端口”(Port) 設置物理(lǐ)通信端口(0 = CPU 中集成的 RS-485,1 = 可選信号闆上(shàng)的 RS-485 或 RS-232)。
參數“延時(shí)”(Delay) 通過使标準 Modbus 信息超時(shí)時(shí)間增加分配的毫秒數來(lái)延遲标準 Modbus 信息結束超時(shí)條件。在有線網絡上(shàng)運行時(shí),該參數的典型值應爲 0。如果使用(yòng)具有糾錯功能(néng)的調制解調器,則将延時(shí)設置爲 50 至 100 ms 之間的值。如果使用(yòng)擴頻無線通信,則将延時(shí)設置爲 10 至 100 ms 之間的值。“延時(shí)”(Delay) 值可以是 0 至 32767 ms。
參數 MaxIQ 用(yòng)于設置 Modbus 地址 0xxxx 和(hé) 1xxxx 可用(yòng)的 I 和(hé) Q 點數,取值範圍是 0 至 256。值爲 0 時(shí),将禁用(yòng)所有對(duì)輸入和(hé)輸出的讀寫操作(zuò)。建議(yì)将 MaxIQ 值設置爲 256。
參數 MaxAI 用(yòng)于設置 Modbus 地址 3xxxx 可用(yòng)的字輸入 (AI) 寄存器數,取值範圍是 0 至 56。值爲 0 時(shí),将禁止讀取模拟量輸入。
參數 MaxHold 用(yòng)于設置 Modbus 地址 4xxxx 或 4yyyyy 可訪問的 V 存儲器中的字保持寄存器數。例如,如果要允許 Modbus 主站(zhàn)訪問 2000 個字節的 V 存儲器,請(qǐng)将 MaxHold 的值設置爲 1000 個字(保持寄存器)。
參數 HoldStart 是 V 存儲器中保持寄存器的起始地址。該值通常設置爲 VB0,因此參數 HoldStart 設置爲 &VB0(地址 VB0)。也(yě)可将其它 V 存儲器地址指定爲保持寄存器的起始地址,以便在項目中的其它位置使用(yòng) VB0。Modbus 主站(zhàn)可訪問起始地址爲 HoldStart,字數爲 MaxHold 的 V 存儲器。
MBUS_INIT 指令完成時(shí),“完成”(Done) 輸出接通。
Error 輸出字節包含指令的執行結果。僅當“完成”(Done) 接通時(shí),該輸出才有效。如果“完成”(Done) 關閉,則錯誤參數不會(huì)改變。
五、UN 200 SMART Modbus RTU 主站(zhàn)編程
上(shàng)文(wén)講到(dào)Modbus通訊機制,主站(zhàn)設備同一時(shí)間或當前時(shí)間隻允許發送或接受,對(duì)于多個從(cóng)站(zhàn),或多次對(duì)寄存器進行操作(zuò),建議(yì)采用(yòng)輪詢機制,即同一時(shí)間隻允許觸發一次MSG指令。按照此編程思路,推薦兩種輪詢操作(zuò)。
1. 主站(zhàn)初始化
将Modbus通訊波特率設爲9600,偶校驗,超時(shí)時(shí)間1000ms,使用(yòng)本體DB9通訊。
圖11 主站(zhàn)初始化
2..輪詢模式一
思路:用(yòng)C0寄存器的數值變化,觸發MSG指令,确保同一時(shí)間隻有一個MSG在執行。
圖12 輪詢1-1
程序功能(néng):上(shàng)電C0清零;主站(zhàn)初始完成後,C0爲1;每MSG指令完成後,C0自(zì)加1;第三次完成後,再執行第一個MSG指令
輪詢:
圖13 輪詢1-2
網絡3程序功能(néng):讀取從(cóng)站(zhàn)地址爲1的412345開(kāi)始的5個寄存器,存放(fàng)在主站(zhàn)CPU VW100開(kāi)始的5個字。
網絡4程序功能(néng):讀取從(cóng)站(zhàn)地址爲2的40001開(kāi)始的5個寄存器,存放(fàng)在主站(zhàn)CPU VW110開(kāi)始的5個字。
3.輪詢模式二
圖14 輪詢2
程序功能(néng):讀取從(cóng)站(zhàn)地址爲1的40001開(kāi)始的5個寄存器,存放(fàng)在主站(zhàn)CPU VW100開(kāi)始的5個字。
将CPU VW110開(kāi)始的5個字寫入從(cóng)站(zhàn)地址爲2的40001開(kāi)始的5個寄存器。
也(yě)有習慣使用(yòng)MSG指令的完成位置位一個内部繼電器Mx.x,Mx.x觸發下(xià)一條MSG指令,如此循環的;或固定時(shí)間的觸發方式,等不同編程思路。不論哪種編程思路,都要确保同一時(shí)間隻有一條MSG指令被觸發。
六.注意事(shì)項
A. Modbus主站(zhàn)或從(cóng)站(zhàn)初始化指令初始化後,PPI協議(yì)不可用(yòng)。
B.同一個串口,隻能(néng)用(yòng)作(zuò)Modbus主站(zhàn)、從(cóng)站(zhàn)、PPI等其中的一種(程序控制初始化外(wài))。
C.CPU做主站(zhàn)時(shí),同一時(shí)間隻能(néng)有一條MSG指令被觸發(重要的事(shì)說N遍)。
D.UN 200 SMART 的DB9 RS485的A、B有别于通俗說法的A、B。
E. 認清從(cóng)站(zhàn)寄存器地址表示方式,是十進制還是十六進制。
F.通訊順利的情況下(xià),可用(yòng)跳過前四個章節。
七. 問題排查
通訊異常時(shí),建議(yì)從(cóng)以下(xià)幾個方面排查:
A.确保通訊電纜連接正确。參考第一章節,重點關注1.1章節。
B.确保主從(cóng)通訊參數一緻。
C.确認從(cóng)站(zhàn)的寄存器能(néng)被主站(zhàn)進行讀寫操作(zuò)。某些(xiē)變頻器或儀表的寄存器隻讀或隻寫,或可讀可寫。某些(xiē)變頻器一次可讀或可寫的數據長度有限。
D.以上(shàng)正常,監控PLC程序,檢測某一個MSG指令是否一直觸發,而沒有跳轉動作(zuò)。
E.用(yòng)電腦(nǎo)串口助手軟件,監控通訊報(bào)文(wén),定位是主站(zhàn)沒有發出數據,還是從(cóng)站(zhàn)沒有響應數據,還是從(cóng)站(zhàn)響應的報(bào)文(wén)有誤。參考第三章節。
監控通訊報(bào)文(wén):将電腦(nǎo)485的A、B并聯在通訊鏈路上(shàng)。
圖15 電腦(nǎo)監聽
八.通訊時(shí)效
從(cóng)站(zhàn)數量越多,操作(zuò)寄存器的次數越多,通訊周期越長。爲快(kuài)速通訊,批量讀取或寫入寄存器、或提高(gāo)通訊波特率。若有從(cóng)站(zhàn)不在線或異常,通訊周期不可控。
以遠程會(huì)議(yì)爲例,說明(míng)Modbus通訊機制:
5個人遠程會(huì)議(yì),5個人同時(shí)說話(huà),大(dà)家都聽不清,實現(xiàn)不了(le)信息交流。
引入主持人機制,主持人即主站(zhàn),主持人把另外(wài)4個人都排上(shàng)序号,1、2、3、4,即4個從(cóng)站(zhàn)。
主持人說話(huà),即主站(zhàn)發送報(bào)文(wén),該報(bào)文(wén)有固定格式,第一個字節爲從(cóng)站(zhàn)地址,即人員編号。
主持人不說話(huà),其他(tā)四人不準說話(huà),即便是說話(huà)也(yě)會(huì)被主持人屏蔽。即從(cóng)站(zhàn)任意發送報(bào)文(wén),主站(zhàn)接受的也(yě)認爲是無效信息。
隻有主持人點到(dào)誰,誰才能(néng)說話(huà),且按照主持人規定的格式發言,即報(bào)文(wén)格式固定。
主持人說:1号xxxx。4個人都能(néng)聽到(dào),但(dàn)隻有1号可以響應,且要以正确的方式響應。響應錯誤,主持人也(yě)會(huì)将信息視(shì)爲無效信息。
主持人在叫1号的時(shí)候,1号開(kāi)小(xiǎo)差,沒有及時(shí)響應,超過預定的超時(shí)時(shí)間,主持人再叫一次,如此三次。
三次以後,1号仍沒有響應,主持人放(fàng)棄1号,繼續叫2号、3号、4号,如此即爲輪詢機制。
正常情況下(xià),一問一答(dá),響應很(hěn)快(kuài)。如有一人開(kāi)小(xiǎo)差,通訊周期延長3倍的超時(shí)時(shí)間。
所以,在全員在線的情況下(xià),通訊周期和(hé)語速,即波特率有關,人數,即從(cóng)站(zhàn)數量有關;不在線,通訊周期不可控。
如此,要确保有優質的通訊鏈路和(hé)正常在線的從(cóng)站(zhàn),才能(néng)保證通訊周期的穩定。