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