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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于VxWorks的MB系列智能可編程控制器設(shè)計

          基于VxWorks的MB系列智能可編程控制器設(shè)計

          作者: 時間:2009-12-23 來源:網(wǎng)絡(luò) 收藏

          2.3 操作系統(tǒng)和開發(fā)環(huán)境
          為保證軟件的可靠性和發(fā)揮裝置的實時性能,項目采用了國際上最廣泛使用的32位實時操作系統(tǒng)。是專門為嵌入式微處理器而的模塊化、高性能、實時的操作系統(tǒng)。是目前世界上用戶數(shù)量最大的實時操作系統(tǒng),具有豐富的應(yīng)用軟件支持、良好的技術(shù)服務(wù)、可伸縮性、可裁減性和可靠的系統(tǒng)穩(wěn)定性。VxWorks的開放式結(jié)構(gòu)和對工業(yè)標準的支持使開發(fā)者只需做最少的工作即可有效的適合于不同用戶要求的實時操作系統(tǒng)。
          VxWorks的開發(fā)環(huán)境是WindRiver(風河)公司提供的Tornado。Tornado采用主機-目標機開發(fā)方式,主機系統(tǒng)采用運行Windows2000/NT的工作站或PC,VxWorks則運行在x86等目標處理器上。Tornado提供了友好的可視化開發(fā)界面、交叉編譯環(huán)境、源碼級調(diào)試工具、目標機命令解釋器和目標機狀態(tài)監(jiān)視器等多種應(yīng)用工具,為應(yīng)用軟件開發(fā)提供了一個高效而可靠的平臺。
          3 關(guān)鍵技術(shù)
          的軟件,關(guān)鍵是軟件實時性的保證,其中包括任務(wù)的劃分、任務(wù)間通信機制的選擇、中斷處理程序、網(wǎng)絡(luò)通信程序和串行口通信程序的編寫等關(guān)鍵技術(shù)。
          3.1 任務(wù)劃分
          嵌入式實時系統(tǒng)中,任務(wù)的合理劃分對系統(tǒng)的實時性至關(guān)重要。進行任務(wù)劃分時,首先要分析數(shù)據(jù)流程圖中數(shù)據(jù)的轉(zhuǎn)換,確定哪些數(shù)據(jù)轉(zhuǎn)換可以并行執(zhí)行,哪些必須順序執(zhí)行。決定應(yīng)用系統(tǒng)任務(wù)劃分的最主要的因素是系統(tǒng)所實現(xiàn)的功能之間的異步關(guān)系,具體可以從I/O功能和系統(tǒng)內(nèi)部功能兩個方面來考慮。
          VxWorks的實時內(nèi)核Wind默認采用了任務(wù)優(yōu)先級的搶占式調(diào)度算法,同時,也支持輪轉(zhuǎn)調(diào)度算法。Wind內(nèi)核有256個優(yōu)先級,編號0~255,優(yōu)先級0最高,255最低。任務(wù)的創(chuàng)建使用taskSpawn()函數(shù)來實現(xiàn)。
          PLC根據(jù)功能和優(yōu)先級劃分為以下若干任務(wù):
          (1) 主任務(wù):主任務(wù)負責硬件初始化、數(shù)據(jù)庫初始化、梯形初始化、流程初始化、網(wǎng)絡(luò)初始化等工作,并根據(jù)數(shù)據(jù)庫的定義創(chuàng)建相應(yīng)的任務(wù);
          (2) CAN1任務(wù):CAN1任務(wù)主要完成CAN1網(wǎng)驅(qū)動、與I/O模件交換信文等功能,它既可以向I/O模件下發(fā)加載、設(shè)值、設(shè)時、查詢等信文,又能接收I/O模件上送的測值、事件等信文,并對數(shù)據(jù)庫進行相應(yīng)的處理;
          (3) 以太網(wǎng)任務(wù):以太網(wǎng)任務(wù)主要完成以太網(wǎng)驅(qū)動、信文收發(fā)等功能,實現(xiàn)PLC與上位機的數(shù)據(jù)和控制命令的傳遞,支持標準MODBUS/TCP協(xié)議;
          (4) CAN2任務(wù):CAN2任務(wù)主要完成CAN2網(wǎng)驅(qū)動、與外部設(shè)備(如通訊裝置、保護裝置、勵磁裝置、調(diào)速器等等)的信息和控制命令的傳遞功能。只要外部設(shè)備支持CAN接口,就很容易接入PLC中;
          (5) 流程任務(wù):流程任務(wù)提供了獨特的順序控制流程執(zhí)行方法,將Pro編程軟件產(chǎn)生的匯編代碼進行執(zhí)行,通過訪問數(shù)據(jù)庫得到數(shù)據(jù),描述一定的判斷和閉鎖條件,產(chǎn)生相應(yīng)的動作,并將運算結(jié)果寫至數(shù)據(jù)庫中,同時還可將實時執(zhí)行的各種信息反饋到調(diào)試機,以便監(jiān)視流程的執(zhí)行情況。流程圖是順序執(zhí)行的,適于順控操作,如機組正常開停機控制、緊急停機控制等;
          (6) 梯形任務(wù):梯形任務(wù)提供了梯形圖執(zhí)行方法,將MBPro編程軟件產(chǎn)生的匯編代碼進行執(zhí)行,通過訪問數(shù)據(jù)庫得到數(shù)據(jù),實現(xiàn)一定的判斷和閉鎖條件,產(chǎn)生相應(yīng)的動作,并將運算結(jié)果寫至數(shù)據(jù)庫中,同時還可將實時執(zhí)行的各種信息反饋到調(diào)試機,以便監(jiān)視梯形的執(zhí)行情況。梯形圖是循環(huán)掃描的,適于邏輯控制及狀態(tài)控制,可用于主程序、通訊、數(shù)據(jù)處理、控制啟動,如機組狀態(tài)判斷等;
          (7) 調(diào)節(jié)任務(wù):調(diào)節(jié)任務(wù)負責對機組有功、無功進行PID閉環(huán)調(diào)節(jié),可進行負荷增減、調(diào)節(jié)投退、調(diào)節(jié)條件限制、調(diào)節(jié)增減限制、調(diào)節(jié)超時判斷、調(diào)節(jié)速度限制等;
          (8) 時鐘任務(wù):時鐘任務(wù)管理PLC時鐘,處理分同步信號,并定時進行一些硬件操作,如點運行燈;
          (9) 自檢任務(wù):自檢任務(wù)自動診斷各類任務(wù)、設(shè)備的運行情況并進行報警。當PLC因某種干擾或硬件故障等原因發(fā)生運行紊亂或死機時,Watchdog能產(chǎn)生自恢復(fù)信號,使PLC自動重新恢復(fù)運行;
          (10) 調(diào)試任務(wù):調(diào)試任務(wù)通過以太網(wǎng)與調(diào)試機通訊,負責與編程軟件MBPro交換信息,包括上送實時數(shù)據(jù)、SOE事件、流程報警信息等,并可修改數(shù)據(jù)庫、梯形圖及流程圖,進行對時、復(fù)位、主從切換等操作;
          (11) 雙機任務(wù):雙機任務(wù)實現(xiàn)主從機的自動、手動切換,并能通過內(nèi)部高速網(wǎng)備份對側(cè)重要數(shù)據(jù)。當主機的某些重要設(shè)備或任務(wù)出現(xiàn)故障時,從機能自動升為主機;
          (12) 顯示任務(wù):顯示任務(wù)通過串口與型液晶顯示觸摸屏通訊,完成當?shù)財?shù)據(jù)顯示和操作功能,包括顯示測點信息、事故一覽表、光字、模件狀態(tài)等,并能發(fā)出控制命令、設(shè)置定值、整定參數(shù)等;
          (13) 串口任務(wù):串口任務(wù)完成與外部設(shè)備通訊功能,實現(xiàn)與外部設(shè)備的數(shù)據(jù)和命令的交換,如GPS、溫度巡檢裝置、交流采集裝置等等。支持Modbus標準規(guī)約,必要時可根據(jù)需要編程實現(xiàn)特殊規(guī)約。
          3.2 任務(wù)間通信
          任務(wù)間通信機制是多任務(wù)間相互同步和通信,以協(xié)調(diào)各自活動的主要手段。VxWorks提供的任務(wù)間通信手段按其速度由快到慢依次是信號量、消息隊列、管道和套接字。常用的通信機制是信號量和消息隊列,套接字(Socket)用于網(wǎng)絡(luò)編程。


          評論


          相關(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); })();