485通訊協(xié)議標準_第1頁
485通訊協(xié)議標準_第2頁
485通訊協(xié)議標準_第3頁
485通訊協(xié)議標準_第4頁
485通訊協(xié)議標準_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

485通訊協(xié)議標準485通訊協(xié)議標準485通訊協(xié)議標準資料僅供參考文件編號:2022年4月485通訊協(xié)議標準版本號:A修改號:1頁次:1.0審核:批準:發(fā)布日期:編號:密級:內(nèi)部頁數(shù):__________基于RS485接口的DGL通信協(xié)議(修改) 編寫:____________________ 校對:____________________ 審核:____________________ 批準:____________________北京華美特科貿(mào)有限公司二○○二年十二月六日

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

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

其中:

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

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

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論