串口地址轉(zhuǎn)換的實現(xiàn)
武漢波仕電子有限公司 ________向麗
串口多機通信,就是RS-232/RS-485多機通信,要求通信的下位機必須帶地址。通信時由上位機先發(fā)送某個下位機的地址,位于同一個網(wǎng)絡中的所有下位機都同時讀取這個地址的值,然后與自己的地址進行比較,如果地址相同則接收后面的數(shù)據(jù),如果地址不同則不讀取后面的數(shù)據(jù)。某些情況下,下位機也可以主動向上位機發(fā)送數(shù)據(jù),但是必須按照預先設置的格式在數(shù)據(jù)前面加上下位機的地址,這樣上位機才可以知道是哪一個下位機發(fā)來的數(shù)據(jù)。可是在許多情況下,下位機沒有設置地址的功能,或者地址的格式不同,這就必須進行串口地址的轉(zhuǎn)換。本文介紹了如何實現(xiàn)串口地址的轉(zhuǎn)換。
如果上位機與多個下位機之間需要通信,但是下位機卻不帶地址。串口地址轉(zhuǎn)換器的原理就是利用轉(zhuǎn)換器兩個串口,稱為上位機串口和下位機串口,自動添加人為設置的地址。地址哦處理包括兩部分:1、將上位機串口接收到的數(shù)據(jù)去掉地址后從下位機串口發(fā)送出去;2、將下位機串口接收到的數(shù)據(jù)加上地址后從上位機串口發(fā)送出去。
1、用途
波仕電子的DIZ485地址串口轉(zhuǎn)換器用于實現(xiàn)串口(同時支持RS-232和RS-485)之間的帶地址的轉(zhuǎn)換。通過跳線設置地址編碼,DIZ485可以將串口接收到的數(shù)據(jù)附加上地址編碼發(fā)送出去,也可以將帶地址編碼的串口數(shù)據(jù)送到對應地址的轉(zhuǎn)換器的串口。DIZ485與其它同類產(chǎn)品相比的特點是可以識別下位機的地址、下位機可以主動發(fā)送帶地址的數(shù)據(jù)。DIZ485是世界上最小的帶地址的串口轉(zhuǎn)換器。
2、硬件安裝
波仕DIZ485地址串口轉(zhuǎn)換器的外形為DB-9/DB-9轉(zhuǎn)接盒大小,如圖,產(chǎn)品左邊為主串口,包括DB-9孔的RS-232口,和標明為A1、B1的RS-485口。右邊為從串口,包括DB-9針的RS-232口,和標明為A2、B2的RS-485口。左上側(cè)J2、J1、J0為波特率設置的跳線,右上側(cè)K2、K1、K0為地址編碼設置的跳線,下面中間為5V電源接線端子。主串口與從串口之間并不隔離,它們公用GND地線和+5V電源。DIZ485的左邊DB-9孔可以直接外插計算機的RS-232口,右邊的DB-9針引腳分配同計算機的RS-232口,但是都只有RXD、TXD、GND三根線。DIZ485需要外接直流5V電源。外接5V電源要求5V(±0.5V) 50mA,產(chǎn)品配套有5V微型開關穩(wěn)壓電源。
3、跳線設置
DIZ485通過跳線J2、J1、J0設置波特率,通過跳線K2、K1、K0設置地址。見下表。0-斷開,1-短路。注意每次更改跳線新設置波特率后必須重新加電源才能生效。
串口通信波特率設置 |
|
地址設置 |
J2 |
J1 |
J0 |
波特率 |
K2 |
K1 |
K0 |
地址 |
0 |
0 |
0 |
1200 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
2400 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
4800 |
0 |
1 |
0 |
2 |
0 |
1 |
1 |
9600 |
0 |
1 |
1 |
3 |
1 |
0 |
0 |
19200 |
1 |
0 |
0 |
4 |
1 |
0 |
1 |
38400 |
1 |
0 |
1 |
5 |
1 |
1 |
0 |
57600 |
1 |
1 |
0 |
6 |
1 |
1 |
1 |
115200 |
1 |
1 |
1 |
7 |
4、軟件使用
DIZ485 使用非常方便。首先根據(jù)用戶通信程序的波特率進行波特率設置,比如9600bps,則將J2斷開、J1短接、J0短接。然后設置本產(chǎn)品的地址,比如設置地址為1,則將K2斷開、K1斷開、K0短接。
左側(cè)的A1、B1的RS-485以及DB-9孔RS-232稱為“主串口”;右側(cè)A2、B2的RS-485以及DB-9針RS-232稱為“從串口”。
通信規(guī)則:主串口數(shù)據(jù)=地址碼+從串口數(shù)據(jù)
或者:從串口數(shù)據(jù)=主串口數(shù)據(jù)—地址碼
如果主串口收到 ###1:1234567,那么地址為1的產(chǎn)品的從串口發(fā)送出 1234567(地址不是1的產(chǎn)品的從串口不發(fā)送任何數(shù)據(jù)),就是去幀頭。地址碼就是在K2、K1、K0跳線設置值的前面加3個井號(###)和后面加一個冒號(:)的英文字符。
如果地址為1的產(chǎn)品的從串口收到abcdefg ,則主串口發(fā)送出###1:abcdefg 就是加幀頭。
在同一個RS-232/RS-485總線中可以同時接入一般最多8個DIZ485產(chǎn)品,定制最多可以到32個。使用時將這8個產(chǎn)品的地址分別設置為0、1、2、……、7不同的值。將所有DIZ485產(chǎn)品的主串口共同接入到一個總線并接到上位機的RS-232或RS-485口。
DIZ485接受定制開發(fā)。
超過8個地址要求的可以定制擴展地址編碼,最多可以達到32個。默認地址為0、1、2、3、4、5、6、7、8、9、a、b、……、t、u、v。
如果上位機要向某個下位機(比如地址為
1的DIZ485的從機)發(fā)送數(shù)據(jù),只需要在數(shù)據(jù)前面加上
###1:即可。地址為
1的DIZ485發(fā)送給上位機的數(shù)據(jù)都是加上了
###1:再發(fā)送給主機的;地址為
2的DIZ485發(fā)送給上位機的數(shù)據(jù)都是加上了
###2:再發(fā)送給主機的,都帶有地址,所以主機可以識別從哪個下位機(即從機)發(fā)來的。
