RS485雙絞電纜
基于RS485接口的DGL通信協(xié)議(修改)
1. 前言
在常見的數(shù)字式磁致伸縮液位計中,多采用RS485通信方式。但RS485標準僅對物理層接口進行了明確定義,并沒有制定通信協(xié)議標準。因此,在RS485的基礎(chǔ)上,派生出很多不同的協(xié)議,不同公司均可根據(jù)自身需要設(shè)計符合實際情況的通信協(xié)議。并且,RS485允許單總線多機通信,如果通信協(xié)議設(shè)計不好,就會造成相互干擾和總線閉鎖等現(xiàn)象。如果在一條總線上掛接不同類型的產(chǎn)品,由于協(xié)議不一樣,很容易造成誤觸發(fā),造成總線阻塞,使得不同產(chǎn)品對總線的兼容性很差。
隨著RS485的發(fā)展,Modicon公司提出的MODBUS協(xié)議逐步得到廣泛認可,已在工業(yè)領(lǐng)域得到廣泛應(yīng)用。而MODBUS的協(xié)議規(guī)范比較煩瑣,并且每字節(jié)數(shù)據(jù)僅用低4位(范圍:0~15),在信息量相同時,對總線占用時間較長。
DGL協(xié)議是根據(jù)以上問題提出的一種通信協(xié)議。在制定該協(xié)議時已充分考慮以下幾點要求:
a. 兼容于MODBUS 。也就是說,符合該協(xié)議的從機均可掛接到同一總線上。
b. 要適應(yīng)大數(shù)據(jù)量的通信。如:滿足產(chǎn)品在線程序更新的需要(未來功能)。
c. 數(shù)據(jù)傳輸需穩(wěn)定可靠。對不確定因素應(yīng)加入必要的冗錯措施。
d. 降低總線的占用率,保證數(shù)據(jù)傳輸?shù)耐〞场?br />2. 協(xié)議描述
為了兼容其它協(xié)議,現(xiàn)做以下定義:
通信數(shù)據(jù)均用1字節(jié)的16進制數(shù)表示。從機的地址范圍為:0x80~0xFD,即:MSB=1;命令和數(shù)據(jù)的數(shù)值范圍均應(yīng)控制在0~0x7F之間。即:MSB=0,以區(qū)別地址和其它數(shù)據(jù)。
液位計的編碼地址為:0x82~0x9F。其初始地址(出廠默認值)為:0x81。
罐旁表的編織地址為:0xA2~0xBF。其初始地址(出廠默認值)為:0xA1。
其它地址用于連接其它類型的設(shè)備,也可用于液位計、罐區(qū)表地址不夠時的擴充。
液位計的命令范圍為:0x01~0x2F,共47條,將分別用于參數(shù)設(shè)定、實時測量、診斷測試、在線編程等。
通信的基本參數(shù)為:4800波特率,1個起始位,1個結(jié)束位。字節(jié)校驗為奇校驗。
本協(xié)議的數(shù)據(jù)包是參照MODBUS RTU 通信格式編寫,并對其進行了部分修改,以提高數(shù)據(jù)傳輸?shù)乃俣?。另外,還部分參照了HART協(xié)議。其具體格式如下:
ADDRESS
COMMAND
Byte Count
DATA
Check SUM
地址
命令
字節(jié)數(shù)
數(shù)據(jù)
校驗和
1 Byte
1 Byte
=n, 1 Byte
n Byte
1 Byte
80~9F
01~2F
00~10
0~7F
0~7F
表中,數(shù)據(jù)的大字節(jié)數(shù)為16個。也就是說,整個數(shù)據(jù)包長為20個字節(jié)。
“校驗和”是其前面所有數(shù)據(jù)異或得到的數(shù)值,然后將該數(shù)值MSB位清零,使其滿足0~7F的要求。在驗證接收數(shù)據(jù)包的“校驗和”是否正確時,可將所有接收數(shù)據(jù)(包括“校驗和”)進行異或操作,得到的數(shù)據(jù)應(yīng)=0x80。這是因為,只有“地址”的MSB=1,所以異或結(jié)果的MSB也必然等于1。
本協(xié)議不支持MODBUS中所規(guī)定的廣播模式。
3. 時序安排
在上電后,液位計將先延遲10秒,等待電源穩(wěn)定。然后,用5秒的時間進行自檢和測試數(shù)據(jù)。接著產(chǎn)品進入待機狀態(tài)并打開RS485通信接口,等待主機的請求。因此,主機應(yīng)在液位計上電20秒后,再將液位計置為工作狀態(tài),進行測量操作。
液位控制器(HMT-900或H-1000)主要用于液位計的供電和防爆安全隔離。主機可通過RTS信號控制(HMT-900或H-1000)供給液位計的電源。當RTS有效時,電源將被打開。因此,液位計的電源是可以通過主機軟件控制的。
在現(xiàn)場應(yīng)用中,主機軟件的工作時序一般應(yīng)遵循以下幾個步驟。
1) 在開主機前,并認真檢查各相關(guān)設(shè)備的電源和電纜連接情況。
2) 在啟動主機軟件時,打開相應(yīng)串行端口。使能RTS信號,給液位計上電。
3) 軟件初始化操作,延遲20秒。
4) 讀液位計的相應(yīng)參數(shù),然后將液位計置為工作狀態(tài)。
5) 此時,主機可進入正常的輪訓(xùn)、記錄、顯示、報警等工作
RS485雙絞電纜