基于PROFIBUS-DP的FCS性能研究及診斷軟件的開(kāi)發(fā)
摘要:分析了PROFIBUS-DP傳輸協(xié)議與報文結構,設計了一種基于串口通信的PROFIBUS-DP總線(xiàn)性能分析與診斷軟件,給出了程序的實(shí)現方法和關(guān)鍵技術(shù),在PROFIBUS-DP實(shí)驗平臺上進(jìn)行了運行調試。結果表明,該軟件運行良好,可以基本完成對PROFIBUS-DP報文采集、分析和存儲等功能。
關(guān)鍵詞:現場(chǎng)總線(xiàn),PROFIBUS-DP,通信協(xié)議,報文,串口。ThedesignofsoftforanalyseandthestudyofFCS’sperformancebasedonPROFIBUS-DPCaoXuehua1(1ShanghaiArcelCo.,Ltd,JiadingShanghai201801CHINA)Abstract:IntroducedcommunicationprotocolandmessagestructureofPROFIBUS-DP,designedonesoftwarebasedonserialportcommunication,ThesoftwarecananalyzeanddiagnosetheperformanceofPROFIBUS-DP.Presentedthemethodandthekeyfunctionstechnique,ThesoftwareisrunonthecommunicationnetworkplatformThedebuggingresultsindicatethatthesoftwarecangather、analyseandmemorizesomekindofmessageofPROFIBUS-DP.Keywords:FieldBus,PROFIBUS,communicationprotocol,message,serialport0
引言
PROFIBUS是工業(yè)自動(dòng)化領(lǐng)域內市場(chǎng)占有率最高的一種現場(chǎng)總線(xiàn)技術(shù),它包括用于制造業(yè)自動(dòng)化的PROFIBUS-DP和用于流程工業(yè)領(lǐng)域的PROFIBUS-PA,它是目前我國惟一的現場(chǎng)總線(xiàn)國家標準。隨著(zhù)越來(lái)越多工業(yè)控制系統采用了PROFIBUS現場(chǎng)總線(xiàn)技術(shù),對這些控制系統進(jìn)行具體的、直觀(guān)的和實(shí)時(shí)的在線(xiàn)分析與診斷成為了最基本的要求,要想完成這樣的任務(wù),就需要有相應的工程分析診斷工具。國內外目前所研究的這些總線(xiàn)性能分析診斷工程工具存在著(zhù)功能不夠全面、界面不夠完善、價(jià)格昂貴、不適合中國國情等問(wèn)題。開(kāi)發(fā)一款能夠對總線(xiàn)系統進(jìn)行分析和診斷,方便的、性能價(jià)格比高的分析診斷工程工具必將成為急需的產(chǎn)品。由于在PRIFBUS傳輸報文可以反映出總線(xiàn)性能的很多參數,包括各種故障狀態(tài)。比如:從參數化報文可以看出主站和從站的關(guān)系,從站的操作方式,包括通道參數、功能設定、裝置參數和ID號等。從組態(tài)報文可以看出從站I/0類(lèi)型及性質(zhì),以及模塊的I/O性質(zhì)及數據類(lèi)型等。從診斷報文可以看出從站各種參數設置錯誤,各種組態(tài)錯誤,以及裝置模塊錯誤類(lèi)型。所以,本文作者就是在對PROFIBUS-DP報文進(jìn)行詳盡分析的基礎上,采用VC++6.0開(kāi)發(fā)了一款基于串口通訊的PROFIBUS性能分析診斷軟件。
1 PROFIBUS工作機理
1.1PROFIBUS-DP編碼技術(shù)PROFIBUS-DP交換數據使用異步傳輸技術(shù)和NRZ編碼。NRZ編碼的二進(jìn)制信號“0”或“1”的信號電平在信號持續期間維持不變。圖1所示為NRZ碼信號圖。起始位0101101奇偶校驗位停止位0圖1非歸零碼信號每個(gè)數據鏈路層協(xié)議數據單元應由一定數量的字符組成,每個(gè)字符都是一個(gè)用于異步傳輸的起--停字符。每個(gè)字符由11個(gè)比特組成,包括1個(gè)總是為二進(jìn)制“0”的起始比特(ST),8個(gè)可以是二進(jìn)制數“0”亦可以是二進(jìn)制數“1”的信息比特,1個(gè)可以是二進(jìn)制“1”也可以是二進(jìn)制數“0”的偶校驗比特(P),1個(gè)總是為二進(jìn)制數“1”的停止比特,如圖2所示。發(fā)送的比特序列有效信息比特0b1b2b3b4b5b6b7b8P11st234567891011th20LSB27MSB起始比特(ST)八位位組偶數奇偶校驗比特停止比特(SP)圖2單個(gè)字符格式接收器的比特同步總是從起始比特的下降沿開(kāi)始,也就是說(shuō),在從二進(jìn)制“1”轉換到二進(jìn)制數“0”時(shí)開(kāi)始。在比特時(shí)間的中間應掃描起始比特和所有后繼的比特。在比特時(shí)間的中間,起始比特應是二進(jìn)制數“0”,否則認為同步失敗并停止同步過(guò)程。以二進(jìn)制“1”的停止比特來(lái)結束字符的同步,如果此時(shí)出現二進(jìn)制數“0”來(lái)代替此停止比特,則應認為并報告一個(gè)同步差錯或字符差錯,并應等待下一個(gè)起始比特的前導沿。
1.2報文格式如圖3所示,PRFIBUS-DP有以下5種報文格式。其中,SYN為同步周期,它是一個(gè)最小的時(shí)間間隔,在此時(shí)間間隔內,每個(gè)站在它可以接收發(fā)送/請求報文幀或令牌起始部分之前,應從傳輸介質(zhì)接收空閑狀態(tài)(idlestate)(idle=二進(jìn)制“1”)。同步周期最小為33個(gè)線(xiàn)空閑比特;SD為起始定界符,DA是目的地址,SA是源地址,FC是控制幀;FCS是幀校驗和,ED為結束定界符,值為16h,L是信息字段長(cháng)度,其中SD1=10h,用于請求FDL狀態(tài),尋找一個(gè)新的活動(dòng)的站點(diǎn),報文長(cháng)度固定,沒(méi)有數據單元;SD2=68h,用于SRD服務(wù),報文的數據長(cháng)度可變;SD3=A2h,數據單元長(cháng)度固定(L總為8字節);SD4=DCh,表示該報文為令牌報文;SC=E5h,短確認報文。SD2LELErSDrDASAFCDSAPSSAPDUFCSEDSD1DASAFCFCSEDSD3DASAFCDUFCSEDSD4DASASCSYNSYNSYNSYN無(wú)數據字段固定長(cháng)度的報文格式LLL有數據字段固定長(cháng)度的報文格式有可變數據字段固定長(cháng)度的報文格式,主要用于SRD服務(wù)報文令牌報文格式短確認報文格式圖3PROFIBUS—DP鏈路層報文格式
2 報文診斷軟件的實(shí)現
2.1實(shí)驗平臺圖4為作者組建的PROFIBUS-DP網(wǎng)絡(luò )實(shí)驗系統結構圖。在網(wǎng)絡(luò )系統中,1類(lèi)主站為SIEMENS公司的CPU315-2DPPLC,PC工控機作為2類(lèi)主站,通過(guò)現場(chǎng)總線(xiàn)接口卡CP5611與DP總線(xiàn)相連,WAGO公司的750-333、BECKHOFF公司的BK3120、SIEMENS公司的ET200-L及和利時(shí)公司的LM3107PLC等PLC設備作為從站連接到DP網(wǎng)絡(luò )中。二類(lèi)主站IPCCP5611WAGO750-333BECKHOFFBK3120SIEMENSET200LPROFIBUS-DPPLCHOLLIASM3107一類(lèi)主站PLCS7-300圖4PROFIBUS-DP網(wǎng)絡(luò )實(shí)驗系統結構圖
2.2軟件開(kāi)發(fā)環(huán)境軟件開(kāi)發(fā)工具為VC++6.0,通過(guò)計算機標準串口通信,將PROFIBUS—DP報文采集到上位機進(jìn)行處理。PROFIBUS-DP系統作為實(shí)驗平臺,采用RS485/RS232通信電纜將其RS485的一端接入PROFIBUS-DP網(wǎng)絡(luò )連接器的背插接口,RS232一端直接接入到PC機的串口。
2.3軟件系統基本程序框圖軟件系統的程序基本架構流程圖如圖5所示。開(kāi)始初始化串口開(kāi)始接收根據協(xié)議格式進(jìn)行數據處理將處理好的數據添加到數據庫并在界面實(shí)時(shí)顯示出來(lái)按報文類(lèi)型進(jìn)行查詢(xún)結束打開(kāi)串口關(guān)閉串口?是否圖5基本程序框架流程圖整個(gè)系統軟件包括如下幾個(gè)模塊:1)程序主控模塊:負責實(shí)現程序邏輯與主界面,調用串口通信模塊和接收顯示模塊。2)串口通信模塊:負責實(shí)現串口通信任務(wù),PROFIBUS-DP報文數據采集及串口參數設置。3)數據處理模塊:根據PROFIBUS-DP協(xié)議報文格式,將采集上來(lái)的數據按報文格式進(jìn)行處理,并存入臨時(shí)緩沖區。4)接收顯示模塊:負責實(shí)現接收數據的處理與顯示。5)數據庫模塊及數據查詢(xún)模塊,用來(lái)實(shí)現對采集到報文的歷史數據的分析和查詢(xún)。
2.4關(guān)鍵技術(shù)該軟件主要是實(shí)現對PROFIBUS報文進(jìn)行提取,實(shí)現在線(xiàn)采集PROFIBUS-DP報文數據,從數據鏈路層角度對各種報文進(jìn)行分析,完成各種類(lèi)型報文的顯示,完成對報文種類(lèi)、服務(wù)類(lèi)型、地址、數據長(cháng)度及數據單元等信息的提取顯示,并對診斷報文、參數化報文及組態(tài)報文等的數據單元進(jìn)行詳細的分析,得出總線(xiàn)性能的各種參數及故障原因,將分析過(guò)的數據存儲進(jìn)數據庫,存入臨時(shí)緩沖區,根據需要將分析過(guò)的報文信息存入數據庫,實(shí)現歷史查詢(xún)。如何實(shí)現報文幀的提取是本軟件設計的一個(gè)關(guān)鍵問(wèn)題。由于PROFIBUS報文格式有很多種,而且包括數據長(cháng)度不固定的可變報文。雖然各種報文都具有固定的報頭、報尾,但是存在的問(wèn)題是報頭報尾并不是特定的字符,有可能和報文中數據單元內容一樣,所以這里利用報頭報尾進(jìn)行報文的提取是不可行的。作者在這里利用各種報文幀前的同步字符進(jìn)行報文提取,也就是說(shuō),在每個(gè)完整報文幀傳輸之前,其前面都有一個(gè)不小于33bit的同步時(shí)間,在報文幀中間是沒(méi)有任何間隔的,利用這一同步時(shí)間,在VC++中利用超時(shí)函數,對報文幀進(jìn)行了完整地提取。另外,由于通信數據量很大,速度較快,這里采用了WINDOWS多線(xiàn)程技術(shù)。一個(gè)線(xiàn)程為監視線(xiàn)程,監視串口通訊,一個(gè)為數據處理主線(xiàn)程,另外一個(gè)為定時(shí)刷新數據庫線(xiàn)程。當監視線(xiàn)程監視到串口中有數據到達時(shí),就觸發(fā)一個(gè)消息通知數據處理主線(xiàn)程,數據處理主線(xiàn)程就去串口緩沖區中取出數據,并進(jìn)行數據處理。定時(shí)器線(xiàn)程定時(shí)刷新數據庫顯示,以實(shí)現實(shí)時(shí)顯示功能。作者在程序編寫(xiě)的過(guò)程中,出現數據庫不能實(shí)時(shí)刷新的情況,后來(lái)發(fā)現問(wèn)題出在WINDOWS的WM_TIMER定時(shí)器上,由于該定時(shí)器消息優(yōu)先級較低,可能造成WM_TIMER消息的丟失,所以不能實(shí)現數據庫的實(shí)時(shí)刷新。解決的方法是采用WINDOWS的多媒體定時(shí)器。在使用多媒體定時(shí)器的過(guò)程中,定時(shí)間隔的選取又是一個(gè)關(guān)鍵的問(wèn)題,定時(shí)間隔選取太小,將會(huì )耗費大量的CPU內存,造成系統“死機”,定時(shí)間隔選取太大,又不能完成“實(shí)時(shí)”顯示功能。這里又涉及到PROFIBUS總線(xiàn)信息循環(huán)時(shí)間的問(wèn)題,總線(xiàn)信息循環(huán)時(shí)間與總線(xiàn)傳輸的波特率、從站的數量、I/O數據的數量、從站需要的延遲時(shí)間以及主站的空閑時(shí)間等有關(guān)。作者通過(guò)了大量的計算和多次實(shí)驗調試,尋找到一個(gè)合適的定時(shí)器間隔。
2.5顯示界面該PROFIBUS-DP報文分析軟件的程序界面包括主界面、串口配置界面、報文過(guò)濾界面、報文查詢(xún)界面、數據庫存儲界面以及歷史查詢(xún)界面等。PROFIBUS-DP分析診斷軟件的運行主界面如圖6,窗口左上部分“當前profibus報文”組框內存放最近采集到的PROFIBUS-DP報文信息,并可通過(guò)工具欄上的記錄移動(dòng)按鈕滾動(dòng)察看記錄;右上方“信息面板”是用來(lái)顯示所有查看報文的詳細信息。窗口下半部分以網(wǎng)格形式顯示PROFIBUS-DP歷史信息。若需要打開(kāi)串口,開(kāi)始接收PROFIBUS報文信息,則可選擇“命令”菜單下的“開(kāi)始接收”項;若需停止接收PROFIBUS報文信息,則可選擇“命令”菜單下的“停止接收”項;若需要配置串口參數,則可選擇“命令”菜單下的“串口配置”項,此時(shí)將彈出“串口配置對話(huà)框”,若需清除當前所有記錄,可選擇“記錄”菜單下的“清除所有記錄項”命令,如果需要分類(lèi)查看各種報文,可以選擇“查看”命令菜單下的“報文查詢(xún)”,此時(shí)將彈出“報文查詢(xún)對話(huà)框”,可根據需要進(jìn)行報文分類(lèi)查看。圖6軟件運行主界面
3 結束語(yǔ)該軟件經(jīng)過(guò)作者在PROFIBUS網(wǎng)絡(luò )實(shí)驗系統上的反復運行調試,結果表明該軟件能夠實(shí)現對幾種PROFIBUS報文進(jìn)行分析,能夠完成采集、顯示、分析、存儲和查詢(xún)等功能,為以后的研究開(kāi)發(fā)奠定了基礎,同時(shí)具有一定的實(shí)用價(jià)值。
參考文獻1.中華人民共和國機械行業(yè)標準.測量和控制數字數據通信工業(yè)控制系統用現場(chǎng)總線(xiàn)類(lèi)型3:PROFIBUS規范[M].北京,機械工業(yè)出版社,2006.2.王永華,AndyVerwer.現場(chǎng)總線(xiàn)技術(shù)及應有教程[M]--從PROFIBUS到AS-i.北京:機械工業(yè)出版社,2006.3.IEC.Digitaldatacommunicationsformeasurmentandcontrol-Fieldbusforuseinindustrialcontrolsystems-Part3:DataLinkLayerservicedefinition[M].Thirdedition.1999.104.IEC.Digitaldatacommunicationsformeasurmentandcontrol-Fieldbusforuseinindustrialcontrolsystems-Part4:DataLinkLayerprotocolspecification[M].Thirdedition.1999.105.陳幼平,周硯,陳冰等.基于CPLD的Profibus-DP報文接收器的設計[J].測控技術(shù),2005,24(6).6.吳方余,周勇.一種基于數據庫的串口數據采集保存方案[J].計算機與現代化,2005,10.7.龔建偉,雄光明.VisualC++/TurboC串口通信編程實(shí)踐[M].電子工業(yè)出版社,2004.
c++相關(guān)文章:c++教程
評論