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