關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于PROFIBUS-DPFCS診斷軟件

        基于PROFIBUS-DPFCS診斷軟件

        作者: 時間:2010-07-01 來源:網絡 收藏

          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報文”組框內存放最近采集到的PROFIBUS- DP報文信息,并可通過工具欄上的記錄移動按鈕滾動察看記錄;右上方“信息面板”是用來顯示所有查看報文的詳細信息。窗口下半部分以網格形式顯示 PROFIBUS-DP歷史信息。

          若需要打開串口,開始接收PROFIBUS報文信息,則可選擇“命令”菜單下的“開始接收”項;若需停止接收PROFIBUS報文信息,則可選擇“命令”菜單下的“停止接收”項;若需要配置串口參數,則可選擇“命令”菜單下的“串口配置”項,此時將彈出“串口配置對話框”,若需清除當前所有記錄,可選擇“記錄”菜單下的“清除所有記錄項”命令,如果需要分類查看各種報文,可以選擇“查看”命令菜單下的“報文查詢”,此時將彈出“報文查詢對話框”,可根據需要進行報文分類查看。

        軟件運行主界面

        圖6 軟件運行主界面

          該軟件經過作者在PROFIBUS網絡實驗系統上的反復運行調試,結果表明該軟件能夠實現對幾種PROFIBUS報文進行分析,能夠完成采集、顯示、分析、存儲和查詢等功能,為以后的研究開發奠定了基礎,同時具有一定的實用價值。


        上一頁 1 2 3 下一頁

        關鍵詞: PROFIBUS-DPFCS 軟件

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 会泽县| 陈巴尔虎旗| 建始县| 临沭县| 洛阳市| 临沧市| 汪清县| 雷山县| 明水县| 长垣县| 松桃| 景东| 大庆市| 依兰县| 三明市| 庆城县| 柏乡县| 阿勒泰市| 和平区| 夏河县| 平罗县| 黔西县| 南华县| 通渭县| 桃江县| 湖州市| 台南市| 延长县| 太湖县| 永年县| 常德市| 龙江县| 郧西县| 澎湖县| 交城县| 临澧县| 崇州市| 西畴县| 清苑县| 盖州市| 蒙城县|