|
RS-485多從機競爭的解決方案
-- 武漢波仕電子公司-代先生
在RS-485多機通信中,往往會出現多個從機同時向主機發送數據。比如在RS-485溫度測量係統中,多個RS-485從機的溫度測量值隻要超過報警點就立即向主機發送報警信息,但是這也可能會出現2個或者2個以上的RS-485從機同時向主機發送報警信息。如果不采取RS-485競爭解決機製,那麼就可能會導致2個從機同時發送的信息重疊,這樣主機就無法接收到正確的信號,嚴重的還可能導致整個RS-485係統的崩潰。傳統的解決方案是由主機循環輪流對各個RS-485下位機點名通信,這雖然解決了RS-485duocongjidejingzheng,danshitongshiyanwuleshishibaojingxinxi。benwenjieshaodexinfanganzhiyinenggoushibiecongjifasongxinhaodeshijianshunxu,xianfasongdecongjixinhaokeyitongshiyizhiqitacongjideRS-485發送信號,隻有等先發送信號的從機發送完畢之後其它從機才能夠發送RS-485xinhao。benwenjieshaodexinfanganzhierkeyirangxiaweijinenggouzhudongfasongzijidedizhi,zheyangjiuwuxuzhujiduigecongjijinxinglunliuzhaxun。benwenjieshaodexinfanganzhisanshijiangcongjizhuanhuanweibutongdebotelv,youyuzhujimeicizhinenggoujieshoumouyizhongbotelvdexinhao,zheyangjiuwanquanbimianleduocongjidejingzheng。benwenzhongde“上位機”即“主機”,“下位機”即“從機”。
1、在RS-485總線中接入RS-485智能共享器
2路RS-485對1路RS-485智能共享器(型號:HUB2485Z)本來是用於兩個RS-485上位機共同控製一個RS-485下位機的通信連接,在這裏我們將HUB2485Z用於兩台下位機的RS-485口共享一台上位機的RS-485口。HUB2485Z使RS-485總線同時接2個從機(下位機)。HUB2485Z已經有2個下位機RS-485(1)和RS-485(2)的插座(DB-9針並且配接線端子)和1個上位機的接線端子,無需修改軟件、5V供電。HUB2485Z適用於兩台下位機的RS-485口同時驅動一台上位機的RS-485口。HUB2485Z的外型為DB-9(針)/ DB-9(針)轉接盒大小,其中兩個DB-9針的RS-485口均配接線端子。兩個DB-9針的下位機RS-485口,如圖RS-485(1)和RS-485(2)是完全一樣的,可以互換。上位機RS-485為接線端子,位於如圖產品的上側麵,與電源接線端子在一起。HUB2485Z需要外接5V電源,配套提供。

圖1 RS-485智能共享器外形圖
波仕HUB2485Z智能RS-485集線器能夠識別兩個下位機RS-485(1)和RS-485(2)的發送順序,避免同時發送導致的係統癱瘓。也就是說,即使兩個下位機正在同時發送,HUB2485Z會選取發送開始時間領先的下位機正確發送數據,而隻有等到這一個下位機的數據發送完畢後,另外一個下位機才可以開始發送數據。HUB2485Z的具有雙向通信功能,當上位機發送時,兩個下位機同時接收到相同的數據,並不區分地址。

圖2 RS-485智能共享器使用布線圖
在圖2中,舉例說明了同時接4個RS-485下位機的布線圖,實際上還可以一直繼續接下去。以接4個下位機為例,下位機4和下位機3分別接入3號HUB2485Z的RS-485(1)和RS-485(2)口,共享的RS-485口再級聯接入另外一個2號HUB2485Z的RS-485(2)口,2號HUB2485Z的RS-485(1)接下位機2。以此類推,2號HUB2485Z的RS-485(2)口接下位機2,共享的RS-485接到1號HUB2485Z的RS-485(2),1號HUB2485Z的RS-485(1)接下位機1。在這樣的布線結構中,每一個下位機都接入到了HUB2485Z共享器,由於HUB2485Z是可以級聯的,所以非常靈活地接入多個下位機。實際上,1號HUB2485Z的RS-485(1)也可以繼續級聯新的HUB2485Z。
2、在RS-485總線中接入RS-485地址轉換器
傳統的RS-485多機通信方案是每次都由主機循環輪流對各個RS-485下(xia)位(wei)機(ji)點(dian)名(ming)通(tong)信(xin),主(zhu)機(ji)先(xian)發(fa)送(song)被(bei)呼(hu)叫(jiao)的(de)從(cong)機(ji)的(de)地(di)址(zhi),總(zong)線(xian)中(zhong)每(mei)一(yi)個(ge)從(cong)機(ji)都(dou)將(jiang)這(zhe)個(ge)地(di)址(zhi)信(xin)號(hao)與(yu)自(zi)己(ji)的(de)地(di)址(zhi)進(jin)行(xing)比(bi)較(jiao),地(di)址(zhi)一(yi)樣(yang)就(jiu)繼(ji)續(xu)也(ye)主(zhu)機(ji)通(tong)信(xin),不(bu)一(yi)樣(yang)就(jiu)不(bu)與(yu)主(zhu)機(ji)通(tong)信(xin)。這(zhe)樣(yang)可(ke)能(neng)存(cun)在(zai)的(de)問(wen)題(ti)就(jiu)是(shi)從(cong)機(ji)發(fa)送(song)的(de)信(xin)號(hao)是(shi)可(ke)以(yi)不(bu)帶(dai)本(ben)從(cong)機(ji)地(di)址(zhi)的(de),因(yin)為(wei)主(zhu)機(ji)已(yi)經(jing)發(fa)送(song)了(le)從(cong)機(ji)地(di)址(zhi)信(xin)息(xi),緊(jin)接(jie)著(zhe)收(shou)到(dao)的(de)從(cong)機(ji)信(xin)號(hao)一(yi)定(ding)就(jiu)是(shi)這(zhe)個(ge)被(bei)點(dian)名(ming)的(de)從(cong)機(ji)的(de)信(xin)號(hao),而(er)且(qie)從(cong)機(ji)信(xin)號(hao)不(bu)帶(dai)地(di)址(zhi)可(ke)以(yi)極(ji)大(da)簡(jian)化(hua)主(zhu)機(ji)的(de)信(xin)號(hao)處(chu)理(li)程(cheng)序(xu)。從(cong)機(ji)發(fa)送(song)的(de)信(xin)號(hao)不(bu)帶(dai)從(cong)機(ji)地(di)址(zhi)就(jiu)會(hui)限(xian)製(zhi)RS-485多機通信的實時性,比如RS-485多機溫度測量係統就不能夠實時報警,因為主機不知道發送報警信號的從機的地址。

圖3 為RS-485下位機加上地址
波仕電子的DIZ485地址串口轉換器用於實現串口(同時支持RS-232和RS-485)之間的帶地址的轉換。通過跳線設置地址編碼,DIZ485可以將串口接收到的數據附加上地址編碼發送出去,也可以將帶地址編碼的串口數據送到對應地址的轉換器的串口。 DIZ485與其它同類產品相比的特點是可以識別下位機的地址、下位機可以主動發送帶地址的數據。 波仕DIZ485地址串口轉換器的外形為DB-9/DB-9轉接盒大小,如圖,產品左邊為主串口,包括DB-9孔的RS-232口,和標明為A1、B1的RS-485口。右邊為從串口,包括DB-9針的RS-232口,和標明為A2、B2的RS-485口。左上側J2、J1、J0為波特率設置的跳線,右上側K2、K1、K0為地址編碼設置的跳線,下麵中間為5V電源接線端子。
DIZ485 使用非常方便。首先根據波特率進行波特率跳線設置,然後跳線設置本產品的地址。通信規則:主串口數據=地址碼+從串口數據 如果主串口收到 ###1:1234567,那麼地址為1的產品的從串口發送出 1234567(地址不是1的產品的從串口不發送任何數據),就是去幀頭。地址碼就是在K2、K1、K0跳線設置值的前麵加3個井號(###)和後麵加一個冒號(:)的英文字符。如果地址為1的產品的從串口收到abcdefg ,則主串口發送出###1:abcdefg 就是加幀頭。
加入RS-485地址轉換器可以使得RS-485從機可以隨時主動向上位機發送消息,因為信號中自動加上了從機地址信息,這樣主機就可以識別下位機。
3、在RS-485總線中接入串口波特率轉換器
RS-485多機通信,本來是要求通信的雙方波特率等通信格式一樣才可以通信成功。可是為了解決在這種情況下出現RS-485多從機競爭的問題,波仕電子在世界上首次提出了一種多波特率的多機通信方式。本來是相同波特率的RS-485從機設備,我們人為地將從機進行串口波特率的轉換。當多個從機都轉換為不同的波特率後,由於每個RS-485從機發送信號的波特率不同,而主機同一時間隻能夠收到某一種波特率的信號,這樣就自然避免了多從機同時發送的競爭問題。本節介紹如何實現串口波特率的轉換。
串口波特率轉換器用於實現不同波特率的RS-485/RS-232口的通信轉換,純硬件跳線設置,無需任何軟件設置。串口波特率轉換器的外形為DB-9/DB-9轉接盒大小,如圖4。串口波特率轉換器的內部有一個帶雙串口的單片機。單片機自動完成兩個串口之間的數據交換。單片機程序用C語言編寫,核心功能就是先將兩個串口UART1和UART2根據跳線設置的狀態進行波特率等初始化設置,然後隨時將UART1接收的數據立即送到UART2的發送區、以及將UART2接收的數據立即送到UART1的發送區。

圖4 RS-485/RS-232波特率轉換器
上位機串口A的波特率通過產品的J2、J1、J0來設置,下位機串口B的波特率通過產品的K2、K1、K0來設置,見表格。波特率轉換器的兩邊的串口可以分別獨立設置波特率,見下表。
|
DB-9孔RS-232口波特率設置
|
|
DB-9針RS-232口波特率設置
|
|
J2
|
J1
|
J0
|
波特率
|
K2
|
K1
|
K0
|
波特率
|
|
0
|
0
|
0
|
1200
|
0
|
0
|
0
|
1200
|
|
0
|
0
|
1
|
2400
|
0
|
0
|
1
|
2400
|
|
0
|
1
|
0
|
4800
|
0
|
1
|
0
|
4800
|
|
0
|
1
|
1
|
9600
|
0
|
1
|
1
|
9600
|
|
1
|
0
|
0
|
19200
|
1
|
0
|
0
|
19200
|
|
1
|
0
|
1
|
38400
|
1
|
0
|
1
|
38400
|
|
1
|
1
|
0
|
57600
|
1
|
1
|
0
|
57600
|
|
1
|
1
|
1
|
115200
|
1
|
1
|
1
|
115200
|
由串口波特率轉換器實現的RS-485多機通信圖與圖3所示的“為RS-485下位機加上地址”的de布bu線xian結jie構gou完wan全quan相xiang同tong。由you於yu每mei次ci主zhu機ji通tong信xin程cheng序xu隻zhi能neng夠gou設she置zhi為wei某mou一yi種zhong波bo特te率lv,所suo以yi也ye就jiu每mei次ci隻zhi能neng給gei與yu某mou一yi個ge從cong機ji進jin行xing通tong信xin,其qi它ta從cong機ji即ji使shi同tong時shi發fa送song信xin號hao但dan由you於yu波bo特te率lv不bu一yi樣yang所suo以yi也ye不bu會hui對dui主zhu機ji產chan生sheng影ying響xiang。這zhe種zhong方fang案an的de優you點dian之zhi一yi在zai於yu完wan全quan無wu競jing爭zheng,缺que點dian是shi最zui多duo8個下位機,因為這種串口波特率轉換器隻能夠提供8種不同的波特率。這種方案的優點之二在於如果用戶自己可以修改從機的波特率,那麼可以實現零成本的解決方案。
本文介紹的3種解決RS-485多從機競爭的方案可以形象地稱為搶答、報名和調頻。這3種方案各有特色,也各有局限性,但是互不排斥。也就是說,這3種方案還可以組合使用。
|