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