Hart通信在DPV1中的實現(xiàn)
Hart通信在DPV1中的實現(xiàn)
PROFIBUS是一種用于工廠自動化車間級監(jiān)控和現(xiàn)場設備層數(shù)據(jù)通訊與控制的現(xiàn)場總線技術(shù)??蓪崿F(xiàn)現(xiàn)場設備層到車間級監(jiān)控的分散式數(shù)字控制和現(xiàn)場通信,從而為實現(xiàn)工廠綜合自動化和現(xiàn)場設備智能化提供了可行的解決方案。PROFIBUS-DP作為PROFIBUS的規(guī)范子集,主要面向工廠現(xiàn)場層應用,可完成包括可編程控制器、自動控制設備、傳感器、執(zhí)行器間的快速可靠的循環(huán)通信任務。
HART是由Rosemount公司開發(fā)的一個傳輸標準,是一種用于現(xiàn)場智能儀表和控制室設備之間的通信協(xié)議。其特點是在現(xiàn)有的模擬信號傳輸線上實現(xiàn)數(shù)字信號通信。它屬于模擬系統(tǒng)向數(shù)字系統(tǒng)轉(zhuǎn)變過程中的過渡性產(chǎn)品。
通過與HART基金會的合作,PI專門定義了一個HART規(guī)范,以用于將HART集成人PROFIBUS系統(tǒng)中,也可為控制器通過PROFIBUS-DP總線控制現(xiàn)場HART設備提供依據(jù)。本文描述了以此規(guī)范為依據(jù)并通過DPVl實現(xiàn)控制器對現(xiàn)場HART設備進行控制的方法。
1 系統(tǒng)的設計和實現(xiàn)
圖1所示是本系統(tǒng)的總體實現(xiàn)方案。系統(tǒng)中的通信是由HART管理軟件(Hart Client)首先發(fā)起,并通過通信請求給DP主站(DP Master),DP主站在收到此請求后,再將Hart Client發(fā)送的請求數(shù)據(jù)轉(zhuǎn)換為DPVl報文格式,并通過DP總線將報文發(fā)送到DP從站(DP Slave),在此,DP從站同時又充當Hart主站(Hart Master Device HMD),其主要功能就是將DP Master發(fā)送的DP格式報文轉(zhuǎn)換為Hart格式的報文并發(fā)送到Hart設備(Hart Device)。對于某些來自Hart Client的請求,HMD則不需要將請求發(fā)送給Hart設備,而是直接回復,如讀取HMD有關(guān)參數(shù)數(shù)據(jù),該類請求的實現(xiàn)過程如圖2所示。
2 DPVl實現(xiàn)
DPVl在DPV0的基礎上增加了新服務,對于1類主站,DPVl新增的服務主要有:
◇非周期讀服務:MSACl_Read;
◇非周期寫服務:MSACl_Write;
◇非周期報警:MSACl_Alarm、MSACl_Alarm_Ack、MSACl_Status。
而對于2類主站,其新增的服務主要有:
◇非周期讀服務:MSAC2_Read;
◇非周期寫服務:MSAC2_Write;
◇與從站建立通訊服務:MSAC2_IniTIate;
◇中指與從站的通訊:MSAC2_Abort;
◇數(shù)據(jù)傳輸:MSAC2_Data_Transport。
根據(jù)規(guī)范,在為Hart提供通訊中只用到了非周期讀寫兩個服務,和利時公司已用軟件實現(xiàn)了各個版本的DP主站功能,本文主要介紹在DPV0版本的DP主站程序中添加非周期讀寫服務來實現(xiàn)部分DPVl功能。圖3所示是非周期狀態(tài)轉(zhuǎn)換在主站狀態(tài)轉(zhuǎn)換圖中所處的位置。
2.1 從站參數(shù)集的擴展
根據(jù)DP協(xié)議,Sl_Flag被擴展后,便可提供更多的控制信息給DPVl主站。此字節(jié)與非周期讀寫有關(guān)的是第四位(DPVl_Supported)。如果此位設置為1,則從站支持DPVl功能,否則工作在DPV0功能下。其它位的詳解請參考相關(guān)文獻。在從站參數(shù)集中擴展的其它字節(jié)(如Max_Alarm_Len、Alarm_Mode等)都是與報警有關(guān)的,在此不予關(guān)注,可參考文獻部分。
2.2 非周期讀服務的實現(xiàn)
DPVl設備是由槽和索引尋址的。所謂槽,不一定就是一個實際的物理對象,槽可以是物理的或邏輯的數(shù)據(jù)塊。槽的內(nèi)部通常由索引來尋址,索引可以標識變量或代表完備數(shù)據(jù)塊。與DPV0的報文格式不同,非周期讀使用的服務節(jié)點號為51,在數(shù)據(jù)域DU中,除了有交換的數(shù)據(jù)外,前四個字節(jié)分別定義了功能號(FuncTIon_Num)、槽號(Slot)、索引號(Index)和用戶數(shù)據(jù)長度(Data_Length)。其報文格式如圖4所示。
非周期讀服務的功能號通常為0x5E,當讀取的數(shù)據(jù)正確返回時,Read.res的功能號的Bit7為0;而當讀操作沒有結(jié)果時,功能號的Bit7為1(FuncTIon_Num=0xDE),此時,其后的3個字節(jié)為出錯的具體編碼。如:
Error_Decode:
具體的錯誤編碼請參考相關(guān)文獻。
非周期讀服務和周期性循環(huán)數(shù)據(jù)交換的讀數(shù)據(jù)服務不同,非周期讀服務一般要等待多個系統(tǒng)循環(huán)周期后,才能得到響應的數(shù)據(jù)。
2.3 非周期寫服務的實現(xiàn)
非周期寫服務的實現(xiàn)和非周期讀類似,只是功能號不同,非周期寫服務的功能號為:
FuncTIon Num=0x5F。
3 Hart通信的實現(xiàn)
通過DPVl實現(xiàn)Hart的通信時,首先要解決協(xié)議的轉(zhuǎn)換問題,即如何將Hart協(xié)議報文通過DP主站傳輸?shù)紻P從站(即HMD)中,再將報文轉(zhuǎn)換為Hart報文傳送到現(xiàn)場Hart設備中。在應答中,也存在同樣的問題。規(guī)范中定義了透明和壓縮兩種傳輸格式。
顧名思義,透明格式就是將Hart報文簡單的嵌入到PROFIBUS報文中,當然,這種結(jié)構(gòu)會有冗余的信息,本文就是采用這種格式實現(xiàn)傳輸。其格式如圖5所示。
壓縮格式一般會盡可能的精簡嵌入到PROFIBUS報文的Hart報文,以便能夠傳輸更大的數(shù)據(jù)長度,那些被省去的報文信息可由HMD經(jīng)過分析填充到Hart報文中,比如Hart報文中的ADDRS就可以由PROFIBUS報文中的Slot_Num和Index組合得到。
另一個需要解決的問題是第一次和HMD如何實現(xiàn)。由于結(jié)構(gòu)的不同,HMD又可分為簡單HMD和模塊化HMD。簡單HMD中僅有一個HartMaster,在這個Hart Master中會有很多用索引標識的數(shù)據(jù)對象,其中有一個總目錄(Direetory)的數(shù)據(jù)對象,其它數(shù)據(jù)對象的索引在這個數(shù)據(jù)對象中可查,而Directory的索引會在GSD文件中解析得到。其關(guān)鍵字格式如:Subsysy_Dir_Index(1)=Index_Number;因此,在交換Hart數(shù)據(jù)之前,Hart Client應先讀取并解析Directory的信息。其流程圖如圖6所示。
4 結(jié)束語
PROFIBUS—DP在工業(yè)自動化中占有相當?shù)姆蓊~,因此,選擇DP作為Hart Client和Hart設備的通信方式非常有必要。為此,在國際市場中,DCS和PLC的制造商大部分都提供了DP接口。而本文的實現(xiàn)方法有助于DCS和PLC在Hart智能設備、Hart儀表現(xiàn)場的推廣。