通訊協(xié)議標(biāo)準(zhǔn)_第1頁(yè)
通訊協(xié)議標(biāo)準(zhǔn)_第2頁(yè)
通訊協(xié)議標(biāo)準(zhǔn)_第3頁(yè)
通訊協(xié)議標(biāo)準(zhǔn)_第4頁(yè)
通訊協(xié)議標(biāo)準(zhǔn)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

編號(hào):密級(jí):內(nèi)部頁(yè)數(shù):__________基于RS485接口的DGL通信協(xié)議(修改) 編寫(xiě):____________________ 校對(duì):____________________ 審核:____________________ 批準(zhǔn):____________________北京華美特科貿(mào)有限公司二○○二年十二月六日

前言在常見(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ì)導(dǎo)致互相干擾和總線閉鎖等現(xiàn)象。假如在一條總線上掛接不同類型的產(chǎn)品,由于協(xié)議不同樣,很容易導(dǎo)致誤觸發(fā),導(dǎo)致總線阻塞,使得不同產(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)規(guī)定:兼容于MODBUS。也就是說(shuō),符合該協(xié)議的從機(jī)均可掛接到同一總線上。要適應(yīng)大數(shù)據(jù)量的通信。如:滿足產(chǎn)品在線程序更新的需要(未來(lái)功能)。數(shù)據(jù)傳輸需穩(wěn)定可靠。對(duì)不擬定因素應(yīng)加入必要的冗錯(cuò)措施。減少總線的占用率,保證數(shù)據(jù)傳輸?shù)耐〞?。協(xié)議描述為了兼容其它協(xié)議,現(xiàn)做以下定義:通信數(shù)據(jù)均用1字節(jié)的16進(jìn)制數(shù)表達(dá)。從機(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ù)包是參照MODBUSRTU通信格式編寫(xiě),并對(duì)其進(jìn)行了部分修改,以提高數(shù)據(jù)傳輸?shù)乃俣?。此外,還部分參照了HART協(xié)議。其具體格式如下:ADDRESSCOMMANDByteCountDATACheckSUM地址命令字節(jié)數(shù)數(shù)據(jù)校驗(yàn)和1Byte1Byte=n,1BytenByte1Byte80~9F01~2F00~100~7F0~7F表中,數(shù)據(jù)的最大字節(jié)數(shù)為16個(gè)。也就是說(shuō),整個(gè)數(shù)據(jù)包最長(zhǎng)為20個(gè)字節(jié)?!靶r?yàn)和”是其前面所有數(shù)據(jù)異或得到的數(shù)值,然后將該數(shù)值MSB位清零,使其滿足0~7F的規(guī)定。在驗(yàn)證接受數(shù)據(jù)包的“校驗(yàn)和”是否對(duì)的時(shí),可將所有接受數(shù)據(jù)(涉及“校驗(yàn)和”)進(jìn)行異或操作,得到的數(shù)據(jù)應(yīng)=0x80。這是由于,只有“地址”的MSB=1,所以異或結(jié)果的MSB也必然等于1。本協(xié)議不支持MODBUS中所規(guī)定的廣播模式。時(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)供應(yīng)液位計(jì)的電源。當(dāng)RTS有效時(shí),電源將被打開(kāi)。因此,液位計(jì)的電源是可以通過(guò)主機(jī)軟件控制的。在現(xiàn)場(chǎng)應(yīng)用中,主機(jī)軟件的工作時(shí)序一般應(yīng)遵循以下幾個(gè)環(huán)節(jié)。在開(kāi)主機(jī)前,并認(rèn)真檢查各相關(guān)設(shè)備的電源和電纜連接情況。在啟動(dòng)主機(jī)軟件時(shí),打開(kāi)相應(yīng)串行端口。使能RTS信號(hào),給液位計(jì)上電。軟件初始化操作,延遲20秒。讀液位計(jì)的相應(yīng)參數(shù),然后將液位計(jì)置為工作狀態(tài)。此時(shí),主機(jī)可進(jìn)入正常的輪訓(xùn)、記錄、顯示、報(bào)警等工作。主機(jī)軟件的重要工作是通過(guò)RS485總線和各個(gè)液位計(jì)進(jìn)行DGL格式的數(shù)據(jù)包通信。因此,通信時(shí)序安排的好壞顯得很重要。在本協(xié)議中,主機(jī)只能有1個(gè),并完全控制總線,任何從機(jī)在沒(méi)有主機(jī)請(qǐng)求時(shí),必需保持接受狀態(tài)。在設(shè)計(jì)從機(jī)電路時(shí),應(yīng)保證從機(jī)在上電時(shí)不能出現(xiàn)對(duì)總線的占用(發(fā)送狀態(tài)),哪怕是很短的時(shí)間。以免增長(zhǎng)系統(tǒng)功耗,影響其“本質(zhì)安全”性能。雖然主機(jī)控制著總線,但在總線空閑狀態(tài),主機(jī)也應(yīng)處在接受狀態(tài)。只有在向指定的從機(jī)發(fā)送請(qǐng)求數(shù)據(jù)包時(shí),才進(jìn)入發(fā)送狀態(tài)。主機(jī)的發(fā)送接受狀態(tài)切換由其串口的DTR信號(hào)控制,可稱為MDTR。同樣,從機(jī)也有一個(gè)控制信號(hào),稱為SDTR。當(dāng)主機(jī)DTR無(wú)效(轉(zhuǎn)換成TTL電平,MDTR為高電平)時(shí),端口處在發(fā)送狀態(tài)。當(dāng)DTR有效(MDTR為低電平)時(shí),端口處在接受狀態(tài)。據(jù)此,可繪制出數(shù)據(jù)包傳輸?shù)臅r(shí)序圖如下:在T1時(shí)刻,主機(jī)將MDTR置為高電平(DTR無(wú)效),準(zhǔn)備發(fā)送數(shù)據(jù)。T2時(shí)刻,主機(jī)發(fā)送“請(qǐng)求數(shù)據(jù)包”。當(dāng)數(shù)據(jù)包發(fā)送完畢(T3時(shí)刻)后,隨即要將MDTR變?yōu)榈碗娖?T4時(shí)刻),釋放總線,等待接受“應(yīng)答數(shù)據(jù)包”。在相應(yīng)從機(jī)(液位計(jì))接受到對(duì)的的“請(qǐng)求數(shù)據(jù)包”后,就開(kāi)始準(zhǔn)備“應(yīng)答數(shù)據(jù)包”。經(jīng)延時(shí),在T5時(shí)刻,從機(jī)將SDTR置為高電平,控制總線。然后,在T6時(shí)刻發(fā)送數(shù)據(jù)包。發(fā)送完畢(T7時(shí)刻)后,隨即將SDTR置為低電平,釋放總線。這樣一次數(shù)據(jù)包通信就完畢了。對(duì)以上各時(shí)刻的時(shí)序規(guī)定可以描述為:T2-T1=1.9~3.5ms,T3-T2=10~60ms,T4-T3=1~3.5ms,T5-T3=8~18ms,T6-T5=1.9~3.5ms,T7-T6=10~60ms,T8-T7=1~3.5ms。一次通信的最長(zhǎng)時(shí)間將控制在160ms以內(nèi)。兩次數(shù)據(jù)包通信的間隔應(yīng)≥20ms。根據(jù)以上描述和規(guī)定,我們就可以精確地進(jìn)行主機(jī)和從機(jī)的通信控制。并根據(jù)也許出現(xiàn)的各種通信錯(cuò)誤和故障,進(jìn)行冗錯(cuò)設(shè)計(jì)。命令定義命令0x01通信協(xié)議辨認(rèn)碼請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):3byte字符串“DGL”44,47,4C命令0x02地址更改請(qǐng)求數(shù)據(jù):1byteNewAdr-0x80應(yīng)答數(shù)據(jù):1byteNewAdr-0x80注:應(yīng)答數(shù)據(jù)中仍保存為本來(lái)地址不變命令0x03,0x4保存命令0x05讀廠家名請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):10byte字符串“ALMRTLtd.”命令0x06讀產(chǎn)品類型請(qǐng)求數(shù)據(jù):0byte無(wú)應(yīng)答數(shù)據(jù):8byteDT0~7浮子數(shù)溫度測(cè)點(diǎn)外管類型測(cè)桿材料安裝形式防爆類型xx命令0x07讀產(chǎn)品桿長(zhǎng)請(qǐng)求數(shù)據(jù):0byte無(wú)應(yīng)答數(shù)據(jù):2byteDT0,DT1基數(shù):2mm,范圍:≤20m,GL=(DT1*128+DT0)*2mm命令0x08讀溫度測(cè)點(diǎn)位置請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):5byteDT0~4相應(yīng)于VT1~5位置相對(duì)桿長(zhǎng)的百分?jǐn)?shù)(0~99)。命令0x09讀產(chǎn)品序列號(hào)請(qǐng)求數(shù)據(jù):0byte無(wú)應(yīng)答數(shù)據(jù):4byte具體待定,存于MCUEEPROM中。命令0x0A讀電路和程序的版本號(hào)請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):2byteDT0電路版本,DT1程序版本命令0x0B讀零點(diǎn)校準(zhǔn)參數(shù)數(shù)據(jù)請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):8byteDT0~7Level1Zero=((DT2*128+DT1)*128+DT0)*0.01mmDT3<>0,數(shù)據(jù)求反Level2Zero=((DT6*128+DT5)*128+DT4)*0.01mmDT7<>0,數(shù)據(jù)求反命令0x0F設(shè)立產(chǎn)品工作狀態(tài)請(qǐng)求數(shù)據(jù):1byteDT0=0,產(chǎn)品工作;DT0<>0,產(chǎn)品待機(jī);應(yīng)答數(shù)據(jù):1byte和請(qǐng)求數(shù)據(jù)相同。命令0x10讀液位1(Level1,油面)數(shù)據(jù)請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):3byteDT0,DT1,DT2分辨率:0.01mm,范圍:30mm~20m(0x1E8480,DT2=7A,DT1=09,DT0=0)。當(dāng)DT2=DT1=DT=0時(shí),液位下溢出;當(dāng)DT2=DT1=DT=7F時(shí),液位上溢出;Level1=((DT2*128+DT1)*128+DT0)*0.01mm命令0x11讀液位2(Level2,界面)數(shù)據(jù)請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):3byteDT0,DT1,DT2Level2=((DT2*128+DT1)*128+DT0)*0.01mm命令0x12讀兩個(gè)液位數(shù)據(jù)請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):6byteDT0,DT1,DT2,DT3,DT4,DT5Level1=((DT2*128+DT1)*128+DT0)*0.01mmLevel2=((DT5*128+DT4)*128+DT3)*0.01mm建議:如需讀液面2的數(shù)據(jù)時(shí),應(yīng)采用該命令。這樣,可同時(shí)得到液位1的值,提高了通信速度。命令0x13~0x14保存命令0x15讀各測(cè)桿測(cè)點(diǎn)溫度(只有一個(gè)溫度測(cè)點(diǎn))請(qǐng)求數(shù)據(jù):0byte應(yīng)答數(shù)據(jù):10byteDT0~9分辨率(刻度):KD=0.015625℃(2^-6),范圍:-56~130℃VT1=(DT1*128+DT0)*KD-56,VT2=(DT3*128+DT2)*KD-56,……命令0x16保存從以上協(xié)議可知,每個(gè)通信數(shù)據(jù)都用1Byte的16進(jìn)制數(shù)表達(dá),數(shù)據(jù)包中的地址(ADDRESS)字段長(zhǎng)度為1Byte,當(dāng)HT-1000(主機(jī))向uPSD3200(從機(jī))發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)包中的地址(ADDRESS)字段中MSB應(yīng)為1,由于此時(shí)數(shù)據(jù)包要到達(dá)的地址是從機(jī),從機(jī)的地址范圍為:0x80~0xFD,即:MSB=1。主機(jī)(HT-1000)沒(méi)有地址(也許理論上應(yīng)當(dāng)有),主從機(jī)通信過(guò)程是這樣的:主機(jī)不斷發(fā)出4個(gè)字節(jié)的數(shù)據(jù)包(地址,命令,字節(jié)數(shù),校驗(yàn)和)去查詢從機(jī)的測(cè)量情況,其中字節(jié)數(shù)為0,則沒(méi)有數(shù)據(jù)字節(jié),只需4個(gè)字節(jié)就可構(gòu)成一個(gè)數(shù)據(jù)包。如下:811600178816001E84160012871600118F160019以上5個(gè)數(shù)據(jù)包就是主機(jī)發(fā)往從機(jī)的數(shù)據(jù)包,第一個(gè)字節(jié)是地址,共有5個(gè)地址,即發(fā)往5個(gè)從機(jī),每發(fā)一個(gè)數(shù)據(jù)包,主機(jī)會(huì)等待從機(jī)的回應(yīng),然后再發(fā)下一個(gè)數(shù)據(jù)包,假如等待超時(shí),則認(rèn)為通信錯(cuò)誤(HT-1000上會(huì)顯示XX號(hào)罐通信錯(cuò)誤)。若有回應(yīng),則主機(jī)進(jìn)行數(shù)據(jù)解決,在和諧的人機(jī)界面上顯示相關(guān)測(cè)量信息。第二個(gè)字節(jié)16是命令字,16的具體含義可查詢具體命令字信息。第三個(gè)00代表數(shù)據(jù)位是零個(gè),第四個(gè)字節(jié)是校驗(yàn)和。(這里設(shè)計(jì)協(xié)議的原則是盡也許是通信的字節(jié)數(shù)變少,減少信息在傳輸過(guò)程中的丟失,當(dāng)然也要考慮擴(kuò)展性)一個(gè)回應(yīng)的數(shù)據(jù)包如下:881608697F057A3A02232743共12個(gè)字節(jié),再根據(jù)字段分一下:881608697F057A3A02232743第一個(gè)字節(jié)88是從機(jī)的地址,由于主機(jī)采用“發(fā)送---等待回應(yīng)”方式來(lái)和從機(jī)通信,并且目前只有一個(gè)主機(jī),因此,從機(jī)發(fā)送的數(shù)據(jù)包中的地址不必是主機(jī)地址(除非有多個(gè)主機(jī),在理解協(xié)議數(shù)據(jù)包時(shí),數(shù)據(jù)包中的地址字段應(yīng)當(dāng)是發(fā)往目的地的地址,但事實(shí)上從機(jī)回應(yīng)數(shù)據(jù)包中的地址是自身的地址,不是目的地主機(jī)的地址),只需標(biāo)明自身的地址即可,相稱于“這里是XX號(hào)從機(jī)在回答---”。第二個(gè)字節(jié)16是命令字。第三個(gè)字節(jié)08表達(dá)數(shù)據(jù)段有8個(gè)字節(jié),接下來(lái)的8個(gè)字節(jié)是數(shù)據(jù)信息,前三個(gè)字節(jié)697F05是油位測(cè)量值(69是數(shù)據(jù)的最低數(shù)值,7F是次低的數(shù)值,05是數(shù)據(jù)的高位數(shù)值),接著三個(gè)字節(jié)7A3A02是水位測(cè)量值,數(shù)據(jù)信息最后兩個(gè)字節(jié)2327是溫度測(cè)量值,最后一個(gè)字節(jié)43是校驗(yàn)和。0x16是DGL協(xié)議里的一條命令,表達(dá)取得探棒的油位,水位和溫度。

在DGL協(xié)議里是這么定義的:<START><COMM><NUM><DATA><P>

其中:

START:起始字節(jié),長(zhǎng)度為1

COMM:命令字節(jié):長(zhǎng)度為1

NUM:數(shù)據(jù)字節(jié)數(shù)

DATA:數(shù)據(jù),具體含義在每個(gè)命令中都有具體定義

P:校驗(yàn)位命令0x17讀實(shí)時(shí)電路參數(shù)(保存)請(qǐng)求數(shù)據(jù):1byte;0電子倉(cāng)溫度,1VCC電壓,2工作狀態(tài)應(yīng)答數(shù)據(jù):2byte命令0x18~0x1F保存命令0x20~0x2F對(duì)外保存,用于參數(shù)設(shè)立、產(chǎn)品測(cè)試、程序更新等功能。補(bǔ)充說(shuō)明上述關(guān)于DGL協(xié)議的規(guī)定可保證它和MODBUS協(xié)議的兼容性。但不保證當(dāng)這兩種協(xié)議的設(shè)備掛接到同一總線上時(shí),采用MODBUS協(xié)議的設(shè)備之間

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論