曹雪華1
(1上海安科瑞電氣有限公司,上海嘉定 201801)
摘 要:分析了PROFIBUS-DP傳輸協議與報文結構,設計了一種基于串口通信的PROFIBUS-DP總線性能分析與診斷軟件,給出了程序的實現方法和關鍵技術,在PROFIBUS-DP實驗平臺上進行了運行調試。結果表明,該軟件運行良好,可以基本完成對PROFIBUS-DP報文采集、分析和存儲等功能。
關鍵詞:現場總線, PROFIBUS-DP,通信協議,報文,串口。
The design of soft for analyse and the study of FCS’s performance based on PROFIBUS-DP
Cao Xue hua 1
(1 Shanghai Arcel Co., Ltd, Jiading Shanghai 201801 CHINA)
Abstract: Introduced communication protocol and message structure of PROFIBUS-DP, designed one software based on serial port communication, The software can analyze and diagnose the performance of PROFIBUS-DP. Presented the method and the key functions technique, The software is run on the communication network platform The debugging results indicate that the software can gather、analyse and memorize some kind of message of PROFIBUS-DP.
Keywords: FieldBus, PROFIBUS, communication protocol, message, serialport
0 引言
PROFIBUS是工業自動化領域內*zui高的一種現場總線技術,它包括用于制造業自動化的PROFIBUS-DP和用于流程工業領域的PROFIBUS-PA,它是目前我國惟一的現場總線國家標準。隨著越來越多工業控制系統采用了PROFIBUS現場總線技術,對這些控制系統進行具體的、直觀的和實時的在線分析與診斷成為了zui基本的要求,要想完成這樣的任務,就需要有相應的工程分析診斷工具。外目前所研究的這些總線性能分析診斷工程工具存在著功能不夠、界面不夠完善、價格昂貴、不適合中國國情等問題。開發一款能夠對總線系統進行分析和診斷,方便的、性能價格比高的分析診斷工程工具必將成為急需的產品。
由于在PRIFBUS傳輸報文可以反映出總線性能的很多參數,包括各種故障狀態。比如:從參數化報文可以看出主站和從站的關系,從站的操作方式,包括通道參數、功能設定、裝置參數和ID號等。從組態報文可以看出從站I/0類型及性質,以及模塊的I/O性質及數據類型等。從診斷報文可以看出從站各種參數設置錯誤,各種組態錯誤,以及裝置模塊錯誤類型。所以,本文作者就是在對PROFIBUS-DP報文進行詳盡分析的基礎上,采用VC++ 6.0開發了一款基于串口通訊的PROFIBUS性能分析診斷軟件。
1 PROFIBUS工作機理
1.1 PROFIBUS-DP編碼技術
PROFIBUS-DP交換數據使用異步傳輸技術和NRZ編碼。NRZ編碼的二進制信號“0”或“1”的信號電平在信號持續期間維持不變。圖1所示為NRZ碼信號圖。
圖1 非歸零碼信號
每個數據鏈路層協議數據單元應由一定數量的字符組成,每個字符都是一個用于異步傳輸的起——停字符。
每個字符由11個比特組成,包括1個總是為二進制“0”的起始比特(ST),8個可以是二進制數“0”亦可以是二進制數“1”的信息比特,1個可以是二進制“1”也可以是二進制數“0”的偶校驗比特(P),1個總是為二進制數“1”的停止比特,如圖2所示。
圖2 單個字符格式
接收器的比特同步總是從起始比特的下降沿開始,也就是說,在從二進制“1”轉換到二進制數“0”時開始。在比特時間的中間應掃描起始比特和所有后繼的比特。在比特時間的中間,起始比特應是二進制數“0”,否則認為同步失敗并停止同步過程。以二進制“1”的停止比特來結束字符的同步,如果此時出現二進制數“0”來代替此停止比特,則應認為并報告一個同步差錯或字符差錯,并應等待下一個起始比特的前導沿。
1.2 報文格式
如圖3所示,PRFIBUS-DP有以下5種報文格式。其中,SYN為同步周期,它是一個zui小的時間間隔,在此時間間隔內,每個站在它可以接收發送/請求報文幀或令牌起始部分之前,應從傳輸介質接收空閑狀態(idle state)(idle=二進制“1”)。同步周期zui小為33個線空閑比特;SD為起始定界符,DA是目的地址,SA是源地址,FC是控制幀;FCS是幀校驗和,ED為結束定界符,值為16h,L是信息字段長度,其中SD1= 10h,用于請求FDL狀態,尋找一個新的活動的站點,報文長度固定,沒有數據單元;SD2= 68h,用于SRD服務,報文的數據長度可變;SD3 = A2h,數據單元長度固定(L總為8字節);SD4 = DCh,表示該報文為令牌報文;SC =E5h, 短確認報文。
圖3 PROFIBUS—DP鏈路層報文格式
2 報文診斷軟件的實現
2.1 實驗平臺
圖4為作者組建的PROFIBUS-DP網絡實驗系統結構圖。在網絡系統中,1類主站為SIEMENS公司的CPU315-2DP PLC,PC工控機作為2 類主站,通過現場總線接口卡CP5611與DP 總線相連, WAGO公司的750-333、BECKHOFF公司的BK3120、SIEMENS公司的ET200-L及和利時公司的LM3107 PLC等PLC設備作為從站連接到DP網絡中。
圖4 PROFIBUS-DP網絡實驗系統結構圖
2.2 軟件開發環境
軟件開發工具為VC++6.0,通過計算機標準串口通信,將PROFIBUS—DP報文采集到上位機進行處理。PROFIBUS-DP系統作為實驗平臺,采用RS485/RS232通信電纜將其RS485的一端接入PROFIBUS-DP網絡連接器的背插接口,RS232一端直接接入到PC機的串口。
2.3 軟件系統基本程序框圖
軟件系統的程序基本架構流程圖如圖5所示。
圖5 基本程序框架流程圖
整個系統軟件包括如下幾個模塊:
1)程序主控模塊:負責實現程序邏輯與主界面,調用串口通信模塊和接收顯示模塊。
2)串口通信模塊:負責實現串口通信任務,PROFIBUS-DP報文數據采集及串口參數設置。
3)數據處理模塊:根據PROFIBUS-DP協議報文格式,將采集上來的數據按報文格式進行處理,并存入臨時緩沖區。
4)接收顯示模塊:負責實現接收數據的處理與顯示。
5)數據庫模塊及數據查詢模塊,用來實現對采集到報文的歷史數據的分析和查詢。
2.4 關鍵技術
該軟件主要是實現對PROFIBUS報文進行提取,實現在線采集PROFIBUS-DP報文數據,從數據鏈路層角度對各種報文進行分析,完成各種類型報文的顯示,完成對報文種類、服務類型、地址、數據長度及數據單元等信息的提取顯示,并對診斷報文、參數化報文及組態報文等的數據單元進行詳細的分析,得出總線性能的各種參數及故障原因,將分析過的數據存儲進數據庫,存入臨時緩沖區,根據需要將分析過的報文信息存入數據庫,實現歷史查詢。
如何實現報文幀的提取是本軟件設計的一個關鍵問題。由于PROFIBUS報文格式有很多種,而且包括數據長度不固定的可變報文。雖然各種報文都具有固定的報頭、報尾,但是存在的問題是報頭報尾并不是特定的字符,有可能和報文中數據單元內容一樣,所以這里利用報頭報尾進行報文的提取是不可行的。作者在這里利用各種報文幀前的同步字符進行報文提取,也就是說,在每個完整報文幀傳輸之前,其前面都有一個不小于33bit的同步時間,在報文幀中間是沒有任何間隔的,利用這一同步時間,在VC++中利用超時函數,對報文幀進行了完整地提取。
另外,由于通信數據量很大,速度較快,這里采用了WINDOWS多線程技術。一個線程為監視線程,監視串口通訊,一個為數據處理主線程,另外一個為定時刷新數據庫線程。當監視線程監視到串口中有數據到達時,就觸發一個消息通知數據處理主線程,數據處理主線程就去串口緩沖區中取出數據,并進行數據處理。定時器線程定時刷新數據庫顯示,以實現實時顯示功能。
作者在程序編寫的過程中,出現數據庫不能實時刷新的情況,后來發現問題出在WINDOWS的WM_TIMER定時器上,由于該定時器消息優先級較低,可能造成WM_TIMER消息的丟失,所以不能實現數據庫的實時刷新。解決的方法是采用WINDOWS的多媒體定時器。在使用多媒體定時器的過程中,定時間隔的選取又是一個關鍵的問題,定時間隔選取太小,將會耗費大量的CPU內存,造成系統“死機”, 定時間隔選取太大,又不能完成“實時”顯示功能。這里又涉及到PROFIBUS總線信息循環時間的問題,總線信息循環時間與總線傳輸的波特率、從站的數量、I/O數據的數量、從站需要的延遲時間以及主站的空閑時間等有關。作者通過了大量的計算和多次實驗調試,尋找到一個合適的定時器間隔。
2.5 顯示界面
該PROFIBUS-DP報文分析軟件的程序界面包括主界面、串口配置界面、報文過濾界面、報文查詢界面、數據庫存儲界面以及歷史查詢界面等。
PROFIBUS-DP分析診斷軟件的運行主界面如圖6,窗口左上部分“當前profibus報文”組框內存放zui近采集到的PROFIBUS-DP報文信息,并可通過工具欄上的記錄移動按鈕滾動察看記錄;右上方“信息面板”是用來顯示所有查看報文的詳細信息。窗口下半部分以網格形式顯示PROFIBUS-DP歷史信息。
若需要打開串口,開始接收PROFIBUS報文信息,則可選擇“命令”菜單下的“開始接收”項;若需停止接收PROFIBUS報文信息,則可選擇“命令”菜單下的“停止接收”項;若需要配置串口參數,則可選擇“命令”菜單下的“串口配置”項,此時將彈出“串口配置對話框”,若需清除當前所有記錄,可選擇“記錄”菜單下的“清除所有記錄項”命令,如果需要分類查看各種報文,可以選擇“查看”命令菜單下的“報文查詢”,此時將彈出“報文查詢對話框”,可根據需要進行報文分類查看。
圖6 軟件運行主界面
3 結束語
該軟件經過作者在PROFIBUS網絡實驗系統上的反復運行調試,結果表明該軟件能夠實現對幾種PROFIBUS報文進行分析,能夠完成采集、顯示、分析、存儲和查詢等功能,為以后的研究開發奠定了基礎,同時具有一定的實用價值。
文章來源于:《電氣時代》2009年11期。
參考文獻
1. 中華人民共和國機械行業標準.測量和控制數字數據通信工業控制系統用現場總線類型3:PROFIBUS規范[M].北京,機械工業出版社,2006.
2. 王永華,Andy Verwer. 現場總線技術及應有教程[M]——從PROFIBUS到AS-i.北京:機械工業出版社,2006.
3. IEC. Digital data communications for measurment and control-Fieldbus for use in industrial control systems-Part 3: Data Link Layer service definition[M]. Third edition. 1999.10
4. IEC. Digital data communications for measurment and control-Fieldbus for use in industrial control systems-Part 4: Data Link Layer protocol specification[M]. Third edition. 1999.10
5. 陳幼平,周硯,陳冰等.基于CPLD的Profibus-DP報文接收器的設計[J].測控技術,2005,24(6).
6. 吳方余,周勇.一種基于數據庫的串口數據采集保存方案[J].計算機與現代化,2005,10.
7. 龔建偉,雄光明.Visual C++/TurboC 串口通信編程實踐[M].電子工業出版社,2004.
如需了解,請!
上海安科瑞電氣股份有限公司
:徐霜 :
電子:acrelxs