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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于WinCE的液位遙測系統(tǒng)軟件設(shè)計(jì)

          基于WinCE的液位遙測系統(tǒng)軟件設(shè)計(jì)

          作者:趙衛(wèi)麗 王志剛 時(shí)間:2008-05-20 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 收藏

            引言

          本文引用地址:http://www.ex-cimer.com/article/82821.htm

            是油輪和化學(xué)品船的核心部分[1],直接關(guān)系到船舶在海上航行的安全性和可靠性。目前國內(nèi)該行業(yè)還處于低技術(shù)的惡性競爭,要改變這種狀況,只有通過提升技術(shù)水平才能實(shí)現(xiàn)。本系統(tǒng)就是在此背景下進(jìn)行研究設(shè)計(jì)的。

            該系統(tǒng)是以為內(nèi)核,在操作系統(tǒng)平臺(tái)下,以通信為基礎(chǔ),open協(xié)議為規(guī)范,綜合應(yīng)用EVC編程、通信、數(shù)據(jù)庫、多線程等技術(shù)設(shè)計(jì)的一個(gè)智能

            的工作頻率最高為200 MHz,微處理器內(nèi)置彩色圖像處理電路,因此可以直接外接TFTLCD/VGA顯示屏。

            CAN(Controller Area Network)總線是一種多主從結(jié)構(gòu),具有報(bào)文仲裁,錯(cuò)誤自檢測、處理機(jī)制,較強(qiáng)的通信能力,較強(qiáng)的短路保護(hù)能力,通信方式靈活多樣等優(yōu)點(diǎn)。船舶是一個(gè)局域網(wǎng)控制系統(tǒng),選用CAN總線更能滿足其傳輸?shù)母呖煽啃訹2]。

            1 協(xié)議

            最初由從事工業(yè)控制的CiA會(huì)員開發(fā),由于是一種公共、開放、通用的協(xié)議,而且精練透明、容易開發(fā),如今已經(jīng)被接受為CAN高層協(xié)議的標(biāo)準(zhǔn)之一。[3]

                                                    

                                              圖1 CANopen設(shè)備模塊

            一個(gè)CANopen設(shè)備模塊可分為3部分,如圖1所示。通信接口和協(xié)議軟件用于提供在總線上收發(fā)通信對(duì)象的服務(wù);不同CANopen設(shè)備間的通信都是通過交換通信對(duì)象來完成的, 這一部分直接面向CAN控制器進(jìn)行操作。對(duì)象字典描述了設(shè)備使用的所有數(shù)據(jù)類型、通信對(duì)象和應(yīng)用對(duì)象;對(duì)象字典位于通信程序和應(yīng)用程序之間,用于向應(yīng)用程序提供接口。應(yīng)用程序?qū)?duì)象字典進(jìn)行操作,即可實(shí)現(xiàn)CANopen通信。它包括功能部分和通信部分,通信部分通過對(duì)對(duì)象字典進(jìn)行操作實(shí)現(xiàn)CANopen通信;而功能部分則根據(jù)應(yīng)用要求來實(shí)現(xiàn)。

            在CANopen網(wǎng)絡(luò)系統(tǒng)中每個(gè)節(jié)點(diǎn)都有唯一的一個(gè)對(duì)象字典,而且每個(gè)節(jié)點(diǎn)的對(duì)象字典都具有相同的結(jié)構(gòu);但具體的內(nèi)容要根據(jù)不同的設(shè)備而定,包含了描述該設(shè)備及其網(wǎng)絡(luò)行為的所有參數(shù)。CANopen協(xié)議還定義了4種報(bào)文(通信對(duì)象),用于對(duì)不同作用的信息進(jìn)行處理,分別為管理報(bào)文(NMT)、服務(wù)數(shù)據(jù)對(duì)象(SDO)、過程數(shù)據(jù)對(duì)象(PDO)和預(yù)定義報(bào)文或特殊功能對(duì)象。

            2 液位遙測系統(tǒng)總體結(jié)構(gòu)

            液位遙測系統(tǒng)主要實(shí)現(xiàn)2項(xiàng)功能:

            ① 對(duì)各艙的液位、溫度、壓力等進(jìn)行實(shí)時(shí)監(jiān)測;

            ② 當(dāng)監(jiān)測高于報(bào)警值時(shí)發(fā)出報(bào)警信號(hào)。

            針對(duì)這2項(xiàng)功能,采用了CAN總線的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),系統(tǒng)總體結(jié)構(gòu)框圖如圖2所示。

                 

                                     圖2 液位遙測系統(tǒng)總體結(jié)構(gòu)

            由圖2可知,整個(gè)系統(tǒng)以CAN總線進(jìn)行通信,然而CAN芯片只提供了開放系統(tǒng)互連參考模型(OSI)中的物理層和鏈路層功能,一般用戶必須直接用驅(qū)動(dòng)程序操作鏈路層。不能直接滿足控制網(wǎng)絡(luò)的組態(tài)和產(chǎn)品互連要求。為了以CAN芯片為基礎(chǔ)構(gòu)成完整的工業(yè)控制現(xiàn)場總線系統(tǒng),必須制定相應(yīng)的應(yīng)用層協(xié)議,實(shí)現(xiàn)系統(tǒng)的組態(tài)、設(shè)備互連和兼容功能。下面分別介紹各部分的功能。

            2.1 分布式處理單元

            是采用模塊化設(shè)計(jì)、具有通信功能的智能化遠(yuǎn)程I/O單元。單元分布在船艙各處,作為傳感器和執(zhí)行器的接口,直接與傳感器和執(zhí)行器相連。各個(gè)DPU單元可以用兩根普通的雙芯屏蔽電纜( 或雙絞線等)連接到CAN總線上,將定時(shí)采集的各船艙液位高度、溫度等各種實(shí)時(shí)數(shù)據(jù)發(fā)送到總線上。

            目前,基于CANopen的DPU的各種模塊(模擬量輸入/輸出、數(shù)字量輸入/輸出等)可以根據(jù)具體的監(jiān)測點(diǎn)連接到網(wǎng)絡(luò)中,完成液位、溫度、壓力等的監(jiān)測。

            2.2 上位監(jiān)測點(diǎn)

            在本系統(tǒng)中,上位監(jiān)測點(diǎn)主要實(shí)現(xiàn)通信和應(yīng)用兩個(gè)方面功能,具體結(jié)構(gòu)如圖3所示。

                                                        

                                                     圖3 上位監(jiān)測點(diǎn)結(jié)構(gòu)圖

            的開發(fā)平臺(tái)已將CAN驅(qū)動(dòng)嵌入,根據(jù)CAN2.0協(xié)議,可以直接完成物理層和數(shù)據(jù)鏈路層的通信,因此,在操作系統(tǒng)下,實(shí)現(xiàn)CANopen通信,解析通信對(duì)象,調(diào)用應(yīng)用程序,完成整個(gè)上位系統(tǒng)的CANopen通信。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(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); })();