<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 采用PROFIBUS-DP的FCS性能研究及診斷軟件開(kāi)發(fā)

          采用PROFIBUS-DP的FCS性能研究及診斷軟件開(kāi)發(fā)

          作者: 時(shí)間:2010-06-12 來(lái)源:網(wǎng)絡(luò) 收藏


          2.4 關(guān)鍵技術(shù)

          該軟件主要是實(shí)現(xiàn)對(duì)PROFIBUS報(bào)文進(jìn)行提取,實(shí)現(xiàn)在線采集報(bào)文數(shù)據(jù),從數(shù)據(jù)鏈路層角度對(duì)各種報(bào)文進(jìn)行分析,完成各種類(lèi)型報(bào)文的顯示,完成對(duì)報(bào)文種類(lèi)、服務(wù)類(lèi)型、地址、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)單元等信息的提取顯示,并對(duì)報(bào)文、參數(shù)化報(bào)文及組態(tài)報(bào)文等的數(shù)據(jù)單元進(jìn)行詳細(xì)的分析,得出總線的各種參數(shù)及故障原因,將分析過(guò)的數(shù)據(jù)存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù),存入臨時(shí)緩沖區(qū),根據(jù)需要將分析過(guò)的報(bào)文信息存入數(shù)據(jù)庫(kù),實(shí)現(xiàn)歷史查詢。

          如何實(shí)現(xiàn)報(bào)文幀的提取是本軟件設(shè)計(jì)的一個(gè)關(guān)鍵問(wèn)題。由于PROFIBUS報(bào)文格式有很多種,而且包括數(shù)據(jù)長(zhǎng)度不固定的可變報(bào)文。雖然各種報(bào)文都具有固定的報(bào)頭、報(bào)尾,但是存在的問(wèn)題是報(bào)頭報(bào)尾并不是特定的字符,有可能和報(bào)文中數(shù)據(jù)單元內(nèi)容一樣,所以這里利用報(bào)頭報(bào)尾進(jìn)行報(bào)文的提取是不可行的。作者在這里利用各種報(bào)文幀前的同步字符進(jìn)行報(bào)文提取,也就是說(shuō),在每個(gè)完整報(bào)文幀傳輸之前,其前面都有一個(gè)不小于33bit的同步時(shí)間,在報(bào)文幀中間是沒(méi)有任何間隔的,利用這一同步時(shí)間,在VC++中利用超時(shí)函數(shù),對(duì)報(bào)文幀進(jìn)行了完整地提取。

          另外,由于通信數(shù)據(jù)量很大,速度較快,這里了WINDOWS多線程技術(shù)。一個(gè)線程為監(jiān)視線程,監(jiān)視串口通訊,一個(gè)為數(shù)據(jù)處理主線程,另外一個(gè)為定時(shí)刷新數(shù)據(jù)庫(kù)線程。當(dāng)監(jiān)視線程監(jiān)視到串口中有數(shù)據(jù)到達(dá)時(shí),就觸發(fā)一個(gè)消息通知數(shù)據(jù)處理主線程,數(shù)據(jù)處理主線程就去串口緩沖區(qū)中取出數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理。定時(shí)器線程定時(shí)刷新數(shù)據(jù)庫(kù)顯示,以實(shí)現(xiàn)實(shí)時(shí)顯示功能。

          作者在程序編寫(xiě)的過(guò)程中,出現(xiàn)數(shù)據(jù)庫(kù)不能實(shí)時(shí)刷新的情況,后來(lái)發(fā)現(xiàn)問(wèn)題出在WINDOWS的WM_TIMER定時(shí)器上,由于該定時(shí)器消息優(yōu)先級(jí)較低,可能造成WM_TIMER消息的丟失,所以不能實(shí)現(xiàn)數(shù)據(jù)庫(kù)的實(shí)時(shí)刷新。解決的方法是WINDOWS的多媒體定時(shí)器。在使用多媒體定時(shí)器的過(guò)程中,定時(shí)間隔的選取又是一個(gè)關(guān)鍵的問(wèn)題,定時(shí)間隔選取太小,將會(huì)耗費(fèi)大量的CPU內(nèi)存,造成系統(tǒng)“死機(jī)”, 定時(shí)間隔選取太大,又不能完成“實(shí)時(shí)”顯示功能。這里又涉及到PROFIBUS總線信息循環(huán)時(shí)間的問(wèn)題,總線信息循環(huán)時(shí)間與總線傳輸?shù)牟ㄌ芈?、從站的?shù)量、I/O數(shù)據(jù)的數(shù)量、從站需要的延遲時(shí)間以及主站的空閑時(shí)間等有關(guān)。作者通過(guò)了大量的計(jì)算和多次實(shí)驗(yàn)調(diào)試,尋找到一個(gè)合適的定時(shí)器間隔。

          2.5 顯示界面

          報(bào)文分析軟件的程序界面包括主界面、串口配置界面、報(bào)文過(guò)濾界面、報(bào)文查詢界面、數(shù)據(jù)庫(kù)存儲(chǔ)界面以及歷史查詢界面等。

          分析軟件的運(yùn)行主界面如圖6,窗口左上部分“當(dāng)前profibus報(bào)文”組框內(nèi)存放最近采集到的PROFIBUS-DP報(bào)文信息,并可通過(guò)工具欄上的記錄移動(dòng)按鈕滾動(dòng)察看記錄;右上方“信息面板”是用來(lái)顯示所有查看報(bào)文的詳細(xì)信息。窗口下半部分以網(wǎng)格形式顯示PROFIBUS-DP歷史信息。

          若需要打開(kāi)串口,開(kāi)始接收PROFIBUS報(bào)文信息,則可選擇“命令”菜單下的“開(kāi)始接收”項(xiàng);若需停止接收PROFIBUS報(bào)文信息,則可選擇“命令”菜單下的“停止接收”項(xiàng);若需要配置串口參數(shù),則可選擇“命令”菜單下的“串口配置”項(xiàng),此時(shí)將彈出“串口配置對(duì)話框”,若需清除當(dāng)前所有記錄,可選擇“記錄”菜單下的“清除所有記錄項(xiàng)”命令,如果需要分類(lèi)查看各種報(bào)文,可以選擇“查看”命令菜單下的“報(bào)文查詢”,此時(shí)將彈出“報(bào)文查詢對(duì)話框”,可根據(jù)需要進(jìn)行報(bào)文分類(lèi)查看。



          圖6 軟件運(yùn)行主界面

          3 結(jié)束語(yǔ)

          該軟件經(jīng)過(guò)作者在PROFIBUS網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng)上的反復(fù)運(yùn)行調(diào)試,結(jié)果表明該軟件能夠?qū)崿F(xiàn)對(duì)幾種PROFIBUS報(bào)文進(jìn)行分析,能夠完成采集、顯示、分析、存儲(chǔ)和查詢等功能,為以后的開(kāi)發(fā)奠定了基礎(chǔ),同時(shí)具有一定的實(shí)用價(jià)值。

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();