《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于VxWorks的MB系列智能可編程控制器設(shè)計(jì)
基于VxWorks的MB系列智能可編程控制器設(shè)計(jì)
摘要: 可編程控制器在PLC長期的使用過程中也逐漸暴露出了諸如開出回路簡單;通信擴(kuò)展能力差;梯形圖語言編程煩瑣;調(diào)試不夠方便等技術(shù)局限,。伴隨著計(jì)算機(jī)技術(shù),、信息技術(shù)及工業(yè)控制技術(shù)的飛速發(fā)展,,對PLC的發(fā)展提出了更高要求,,主要體現(xiàn)在:需要更高功能,、更快速度,、更大容量的PLC產(chǎn)品,,以完成大型的控制項(xiàng)目和實(shí)現(xiàn)網(wǎng)絡(luò)化及更強(qiáng)的通訊能力;要求控制更加可靠,,性能更加穩(wěn)定;要求提供多樣化的更方便的編程語言等,。
關(guān)鍵詞: SoPC PLC Vxworks
Abstract:
Key words :

 

    1 引言

  可編程控制器在PLC長期的使用過程中也逐漸暴露出了諸如開出回路簡單;通信擴(kuò)展能力差;梯形圖語言編程煩瑣;調(diào)試不夠方便等技術(shù)局限。伴隨著計(jì)算機(jī)技術(shù),、信息技術(shù)及工業(yè)控制技術(shù)的飛速發(fā)展,,對PLC的發(fā)展提出了更高要求,主要體現(xiàn)在:需要更高功能,、更快速度,、更大容量的PLC產(chǎn)品,以完成大型的控制項(xiàng)目和實(shí)現(xiàn)網(wǎng)絡(luò)化及更強(qiáng)的通訊能力;要求控制更加可靠,性能更加穩(wěn)定;要求提供多樣化的更方便的編程語言等,。

  為此,,南京南瑞自動(dòng)控制有限公司研制出新一代MB系列智能可編程控制器,它繼承了傳統(tǒng)PLC的優(yōu)點(diǎn),,又彌補(bǔ)了傳統(tǒng)PLC的技術(shù)薄弱環(huán)節(jié),,是對傳統(tǒng)PLC功能的極大提升。該產(chǎn)品集智能,、可靠,、開放、靈活于一身,,適合多種復(fù)雜控制領(lǐng)域的應(yīng)用,。

  2 MB系列智能可編程控制器設(shè)計(jì)

  2.1 MB系列智能可編程控制器結(jié)構(gòu)

  MB系列智能可編程控制器采用LAN/FieldBus系統(tǒng)體系結(jié)構(gòu),提供標(biāo)準(zhǔn)的以太網(wǎng)接口完成與上位機(jī)系統(tǒng)的通信,。主控模件與智能I/O模件之間采用現(xiàn)場總線CAN作為內(nèi)部總線及擴(kuò)展總線,,現(xiàn)場總線特有的高可靠性和對現(xiàn)場環(huán)境的適應(yīng)能力,使得MB系列智能可編程控制器系統(tǒng)配置的靈活性和可靠性大大提高,。圖1為雙主控?zé)醾淙哂嗄J较碌捏w系結(jié)構(gòu),。

圖1 MB系列智能可編程控制器體系結(jié)構(gòu)

  在Intel x86硬件平臺(tái)上,應(yīng)用WindRiver公司的Tornado集成開發(fā)環(huán)境,,實(shí)現(xiàn)基于VxWorks的可編程控制器,。

  2.2 MB系列智能可編程控制器特點(diǎn)

  (1) 高性能的主控模件:高檔的軟硬件配置使得主控模件具有強(qiáng)大的數(shù)據(jù)處理能力、運(yùn)算能力以及通訊處理能力;

  (2) 開放的標(biāo)準(zhǔn)的以太網(wǎng)通信接口:對外提供10/100M以太網(wǎng)接口,,支持Modbus/TCP協(xié)議,,可與上位機(jī)及各種監(jiān)控軟件互連;

  (3) 先進(jìn)的現(xiàn)場總線網(wǎng)絡(luò):采用現(xiàn)場總線CAN網(wǎng),具有通訊速率快,、抗干擾能力強(qiáng),、成本低、結(jié)構(gòu)簡單,、擴(kuò)展靈活,、實(shí)時(shí)性好等特點(diǎn),為系統(tǒng)擴(kuò)展及遠(yuǎn)程控制提供了方便;

  (4) 強(qiáng)大的串口通訊功能:提供了串口通訊模件,,可自由配置,,可方便地與其他智能設(shè)備通訊;

  (5) 高可靠的熱備冗余方案:支持雙CPU、雙以太網(wǎng),、雙電源的熱備冗余方案,,自動(dòng)實(shí)時(shí)備份數(shù)據(jù);

  (6) MB系列不同型號PLC之間方便靈活的互連:可實(shí)現(xiàn)不同PLC之間的無縫連接,無需任何擴(kuò)展模件,,節(jié)省系統(tǒng)成本;

  (7) 全智能I/O設(shè)計(jì)和一系列安全性,、可靠性設(shè)計(jì)為系統(tǒng)的安全可靠運(yùn)行提供了保障:開關(guān)量輸入模件的光電隔離和軟件濾波功能;開關(guān)量輸出模件的反讀,、校核及執(zhí)行繼電器的聯(lián)合控制確保在任何情況下不會(huì)發(fā)生誤動(dòng);溫度量輸入模件先進(jìn)的每路獨(dú)立橫流源設(shè)計(jì)大大提高了采集速度和抗干擾性;模擬量輸入模件飛度電容的設(shè)計(jì)方法保證了內(nèi)部電路和外界干擾的絕對隔離,大大提高了采集精度,,最大限度地降低了模擬量漂移;

  (8) 界面友好,、使用簡單的編程軟件

  靈活的梯形圖編程語言及更多更豐富的梯形功能模塊;全漢化的梯形圖設(shè)計(jì)大大提高了梯形圖程序的可讀性;直觀的可視化流程圖編程語言,使復(fù)雜控制流程的實(shí)現(xiàn)變得非常簡單;模塊化程序結(jié)構(gòu),,程序之間可相互調(diào)用;支持遠(yuǎn)程編程和調(diào)試;

  (9) 直接的GPS同步時(shí)鐘接口

  直接提供GPS同步時(shí)鐘接口,,無需編程及設(shè)置,硬件對時(shí)可達(dá)模件級,,SOE事件信息更加精確,、可靠;

  (10) 方便實(shí)用的現(xiàn)地人機(jī)接口

  提供了與觸摸屏的串行通訊接口,支持Modbus通訊協(xié)議,,可與多種觸摸屏直接連接,,無需增加輔助設(shè)備,也無需編寫通訊驅(qū)動(dòng)程序,。

  2.3 操作系統(tǒng)和開發(fā)環(huán)境

  為保證軟件的可靠性和發(fā)揮裝置的實(shí)時(shí)性能,,項(xiàng)目采用了國際上最廣泛使用的32位實(shí)時(shí)操作系統(tǒng)VxWorks。VxWorks是專門為嵌入式微處理器而設(shè)計(jì)的模塊化,、高性能,、實(shí)時(shí)的操作系統(tǒng),。VxWorks是目前世界上用戶數(shù)量最大的實(shí)時(shí)操作系統(tǒng),,具有豐富的應(yīng)用軟件支持、良好的技術(shù)服務(wù),、可伸縮性,、可裁減性和可靠的系統(tǒng)穩(wěn)定性。VxWorks的開放式結(jié)構(gòu)和對工業(yè)標(biāo)準(zhǔn)的支持使開發(fā)者只需做最少的工作即可設(shè)計(jì)有效的適合于不同用戶要求的實(shí)時(shí)操作系統(tǒng),。

  VxWorks的開發(fā)環(huán)境是WindRiver(風(fēng)河)公司提供的Tornado,。Tornado采用主機(jī)-目標(biāo)機(jī)開發(fā)方式,主機(jī)系統(tǒng)采用運(yùn)行Windows2000/NT的工作站或PC,,VxWorks則運(yùn)行在x86等目標(biāo)處理器上,。Tornado提供了友好的可視化開發(fā)界面、交叉編譯環(huán)境,、源碼級調(diào)試工具,、目標(biāo)機(jī)命令解釋器和目標(biāo)機(jī)狀態(tài)監(jiān)視器等多種應(yīng)用工具,為應(yīng)用軟件開發(fā)提供了一個(gè)高效而可靠的平臺(tái),。

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

  MB系列智能可編程控制器的軟件設(shè)計(jì),,關(guān)鍵是軟件實(shí)時(shí)性的保證,其中包括任務(wù)的劃分,、任務(wù)間通信機(jī)制的選擇,、中斷處理程序,、網(wǎng)絡(luò)通信程序和串行口通信程序的編寫等關(guān)鍵技術(shù)。

  3.1 任務(wù)劃分

  嵌入式實(shí)時(shí)系統(tǒng)中,,任務(wù)的合理劃分對系統(tǒng)的實(shí)時(shí)性至關(guān)重要,。進(jìn)行任務(wù)劃分時(shí),首先要分析數(shù)據(jù)流程圖中數(shù)據(jù)的轉(zhuǎn)換,,確定哪些數(shù)據(jù)轉(zhuǎn)換可以并行執(zhí)行,,哪些必須順序執(zhí)行。決定應(yīng)用系統(tǒng)任務(wù)劃分的最主要的因素是系統(tǒng)所實(shí)現(xiàn)的功能之間的異步關(guān)系,,具體可以從I/O功能和系統(tǒng)內(nèi)部功能兩個(gè)方面來考慮,。

  VxWorks的實(shí)時(shí)內(nèi)核Wind默認(rèn)采用了基于任務(wù)優(yōu)先級的搶占式調(diào)度算法,同時(shí),,也支持輪轉(zhuǎn)調(diào)度算法,。Wind內(nèi)核有256個(gè)優(yōu)先級,編號0~255,,優(yōu)先級0最高,,255最低。任務(wù)的創(chuàng)建使用taskSpawn()函數(shù)來實(shí)現(xiàn),。

  MBPLC根據(jù)功能和優(yōu)先級劃分為以下若干任務(wù):

  (1) 主任務(wù):主任務(wù)負(fù)責(zé)硬件初始化,、數(shù)據(jù)庫初始化、梯形初始化,、流程初始化,、網(wǎng)絡(luò)初始化等工作,并根據(jù)數(shù)據(jù)庫的定義創(chuàng)建相應(yīng)的任務(wù);

  (2) CAN1任務(wù):CAN1任務(wù)主要完成CAN1網(wǎng)驅(qū)動(dòng),、與I/O模件交換信文等功能,,它既可以向I/O模件下發(fā)加載、設(shè)值,、設(shè)時(shí),、查詢等信文,又能接收I/O模件上送的測值,、事件等信文,,并對數(shù)據(jù)庫進(jìn)行相應(yīng)的處理;

  (3) 以太網(wǎng)任務(wù):以太網(wǎng)任務(wù)主要完成以太網(wǎng)驅(qū)動(dòng)、信文收發(fā)等功能,,實(shí)現(xiàn)PLC與上位機(jī)的數(shù)據(jù)和控制命令的傳遞,,支持標(biāo)準(zhǔn)MODBUS/TCP協(xié)議;

  (4) CAN2任務(wù):CAN2任務(wù)主要完成CAN2網(wǎng)驅(qū)動(dòng)、與外部設(shè)備(如通訊裝置,、保護(hù)裝置,、勵(lì)磁裝置、調(diào)速器等等)的信息和控制命令的傳遞功能,。只要外部設(shè)備支持CAN接口,,就很容易接入PLC中;

  (5) 流程任務(wù):流程任務(wù)提供了獨(dú)特的順序控制流程執(zhí)行方法,,將MBPro編程軟件產(chǎn)生的匯編代碼進(jìn)行執(zhí)行,通過訪問數(shù)據(jù)庫得到數(shù)據(jù),,描述一定的判斷和閉鎖條件,,產(chǎn)生相應(yīng)的動(dòng)作,并將運(yùn)算結(jié)果寫至數(shù)據(jù)庫中,,同時(shí)還可將實(shí)時(shí)執(zhí)行的各種信息反饋到調(diào)試機(jī),,以便監(jiān)視流程的執(zhí)行情況。流程圖是順序執(zhí)行的,,適于順控操作,,如機(jī)組正常開停機(jī)控制、緊急停機(jī)控制等;

  (6) 梯形任務(wù):梯形任務(wù)提供了梯形圖執(zhí)行方法,,將MBPro編程軟件產(chǎn)生的匯編代碼進(jìn)行執(zhí)行,,通過訪問數(shù)據(jù)庫得到數(shù)據(jù),實(shí)現(xiàn)一定的判斷和閉鎖條件,,產(chǎn)生相應(yīng)的動(dòng)作,,并將運(yùn)算結(jié)果寫至數(shù)據(jù)庫中,同時(shí)還可將實(shí)時(shí)執(zhí)行的各種信息反饋到調(diào)試機(jī),,以便監(jiān)視梯形的執(zhí)行情況,。梯形圖是循環(huán)掃描的,適于邏輯控制及狀態(tài)控制,,可用于主程序,、通訊、數(shù)據(jù)處理,、控制啟動(dòng),,如機(jī)組狀態(tài)判斷等;

  (7) 調(diào)節(jié)任務(wù):調(diào)節(jié)任務(wù)負(fù)責(zé)對機(jī)組有功、無功進(jìn)行PID閉環(huán)調(diào)節(jié),,可進(jìn)行負(fù)荷增減、調(diào)節(jié)投退,、調(diào)節(jié)條件限制,、調(diào)節(jié)增減限制、調(diào)節(jié)超時(shí)判斷,、調(diào)節(jié)速度限制等;

  (8) 時(shí)鐘任務(wù):時(shí)鐘任務(wù)管理PLC時(shí)鐘,,處理分同步信號,并定時(shí)進(jìn)行一些硬件操作,,如點(diǎn)運(yùn)行燈;

  (9) 自檢任務(wù):自檢任務(wù)自動(dòng)診斷各類任務(wù),、設(shè)備的運(yùn)行情況并進(jìn)行報(bào)警。當(dāng)PLC因某種干擾或硬件故障等原因發(fā)生運(yùn)行紊亂或死機(jī)時(shí),,Watchdog能產(chǎn)生自恢復(fù)信號,,使PLC自動(dòng)重新恢復(fù)運(yùn)行;

  (10) 調(diào)試任務(wù):調(diào)試任務(wù)通過以太網(wǎng)與調(diào)試機(jī)通訊,,負(fù)責(zé)與編程軟件MBPro交換信息,包括上送實(shí)時(shí)數(shù)據(jù),、SOE事件,、流程報(bào)警信息等,并可修改數(shù)據(jù)庫,、梯形圖及流程圖,,進(jìn)行對時(shí)、復(fù)位,、主從切換等操作;

  (11) 雙機(jī)任務(wù):雙機(jī)任務(wù)實(shí)現(xiàn)主從機(jī)的自動(dòng),、手動(dòng)切換,并能通過內(nèi)部高速網(wǎng)備份對側(cè)重要數(shù)據(jù),。當(dāng)主機(jī)的某些重要設(shè)備或任務(wù)出現(xiàn)故障時(shí),,從機(jī)能自動(dòng)升為主機(jī);

  (12) 顯示任務(wù):顯示任務(wù)通過串口與智能型液晶顯示觸摸屏通訊,完成當(dāng)?shù)財(cái)?shù)據(jù)顯示和操作功能,,包括顯示測點(diǎn)信息,、事故一覽表、光字,、模件狀態(tài)等,,并能發(fā)出控制命令、設(shè)置定值,、整定參數(shù)等;

  (13) 串口任務(wù):串口任務(wù)完成與外部設(shè)備通訊功能,,實(shí)現(xiàn)與外部設(shè)備的數(shù)據(jù)和命令的交換,如GPS,、溫度巡檢裝置,、交流采集裝置等等。支持Modbus標(biāo)準(zhǔn)規(guī)約,,必要時(shí)可根據(jù)需要編程實(shí)現(xiàn)特殊規(guī)約,。

  3.2 任務(wù)間通信

  任務(wù)間通信機(jī)制是多任務(wù)間相互同步和通信,以協(xié)調(diào)各自活動(dòng)的主要手段,。VxWorks提供的任務(wù)間通信手段按其速度由快到慢依次是信號量,、消息隊(duì)列、管道和套接字,。常用的通信機(jī)制是信號量和消息隊(duì)列,,套接字(Socket)用于網(wǎng)絡(luò)編程。

  (1) 信號量

  信號量是實(shí)現(xiàn)任務(wù)互斥,、同步操作的主要機(jī)制,,VxWorks提供的信號量經(jīng)過了高度優(yōu)化,在所有任務(wù)間通信機(jī)制中,,速度最快,。對于互斥,,信號量可以上鎖對共享資源的訪問,并且比禁止中斷或禁止搶占提供更精確的互斥粒度,。對于同步,,信號量可以協(xié)調(diào)外部事件與任務(wù)的執(zhí)行。

  MBPLC使用二進(jìn)制信號量來解決多個(gè)任務(wù)讀寫數(shù)據(jù)的互斥問題,,使用計(jì)數(shù)器信號量來解決定時(shí)器計(jì)數(shù)問題;

  (2) 消息隊(duì)列

  消息隊(duì)列是VxWorks提供的單CPU中任務(wù)間通信的主要機(jī)制,。消息隊(duì)列允許以FIFO或基于優(yōu)先級方式排隊(duì)消息,消息的數(shù)目可變,,消息的長度可變,。任何任務(wù)都可以向消息隊(duì)列發(fā)送消息,也可以從消息隊(duì)列接收消息,。多個(gè)任務(wù)允許從一個(gè)消息隊(duì)列收發(fā)消息,。但是,兩個(gè)任務(wù)間的雙向通信通常需要兩個(gè)消息隊(duì)列,,各自用于一個(gè)方向,。 

  MBPLC使用消息隊(duì)列來實(shí)現(xiàn)任務(wù)間的數(shù)據(jù)交換。首先調(diào)用msgQCreate()函數(shù)創(chuàng)建消息隊(duì)列,,再用msgQSend()和msgQReceive()函數(shù)發(fā)送和接受消息,,最后調(diào)用msgQDelete()函數(shù)中止消息隊(duì)列。

  3.3 中斷處理程序

  中斷處理程序是實(shí)時(shí)系統(tǒng)的重要組成部分,。系統(tǒng)通過中斷機(jī)制了解外部世界,,并對外部事件作出響應(yīng)。實(shí)時(shí)系統(tǒng)的反應(yīng)取決于系統(tǒng)對于中斷的響應(yīng)速度和中斷處理程序的處理速度,。由于在很短的時(shí)間內(nèi),,可能產(chǎn)生很多中斷,高優(yōu)先級的中斷將阻塞低優(yōu)先級的中斷,,因此,,必須使中斷處理程序的處理時(shí)間最短。

  MBPLC的中斷包括秒中斷,、分同步中斷,、CAN網(wǎng)中斷以及BSP級的以太網(wǎng)中斷、硬盤中斷等等,。下面以秒中斷(中斷級別為5)為例說明中斷的使用方法:

  ntConnect(INUM_TO_IVEC(INT_VEC_GET(5)), SECISR, 0); 

  sysIntEnablePIC(5);

  這兩個(gè)函數(shù)用于將中斷處理程序SECISR()與秒中斷相關(guān)聯(lián),存放于中斷向量表的對應(yīng)表項(xiàng)中,,當(dāng)秒中斷事件出現(xiàn)時(shí),,VxWorks內(nèi)核將調(diào)用中斷處理程序。這時(shí)可利用中斷處理程序釋放一個(gè)信號量(通過semGive()函數(shù)),,通過該信號量驅(qū)動(dòng)相應(yīng)的數(shù)據(jù)處理模塊(通過sem- Take()函數(shù)),,從而實(shí)現(xiàn)實(shí)時(shí)操作,。

  此外,我們還使用intLock()函數(shù)和intUnlock()函數(shù)來設(shè)置中斷屏蔽,,用以保證受保護(hù)的代碼在執(zhí)行過程中不受中斷的干擾,。

  3.4 網(wǎng)絡(luò)通信

  網(wǎng)絡(luò)通信一般可通過套接口(socket)實(shí)現(xiàn)。Vx- Works提供了標(biāo)準(zhǔn)的BSD socket調(diào)用,,具有兩種類型:Stream socket(全雙工流類型),、Datagram socket(數(shù)據(jù)報(bào)類型)。前者支持TCP協(xié)議,,后者支持UDP協(xié)議,。任何一個(gè)任務(wù)都可以打開一或多個(gè)socket,其它任務(wù)的socket可與之連接,。

  客戶端程序首先調(diào)用socket()函數(shù)產(chǎn)生用于與各分系統(tǒng)連接的套接字,,然后初始化一個(gè)套接口結(jié)構(gòu)體,為其賦上服務(wù)端的IP地址和端口號,,并將其作為函數(shù)connect()的參數(shù),,調(diào)用connect()函數(shù)主動(dòng)去連接服務(wù)器端。連接成功后,,用send()和recv()函數(shù)讀寫數(shù)據(jù),,直到全部數(shù)據(jù)都交換完,再用close()函數(shù)關(guān)閉套接口,。

  服務(wù)器端也先用socket()函數(shù)建立套接口,,再調(diào)用bind()函數(shù)將自身IP和端口號綁定,以保證客戶端正確識別,,然后用listen()函數(shù)指明已準(zhǔn)備好接受來自客戶端的連接,,又用accpet()函數(shù)接受一個(gè)連接請求,接受后用send()和recv()函數(shù)來傳輸數(shù)據(jù),,直到全部數(shù)據(jù)都交換完,,再用close()函數(shù)關(guān)閉套接口。為了確保服務(wù)器能夠?qū)崟r(shí)接收客戶端的數(shù)據(jù),,當(dāng)服務(wù)端與客戶端建立連接之后,,必須嵌入循環(huán),利用recv()函數(shù)不斷等待客戶數(shù)據(jù),。同時(shí)客戶端每次發(fā)送數(shù)據(jù)之后也應(yīng)等待服務(wù)端回復(fù),,建立握手機(jī)制。

  3.5 串行口通信

  在VxWorks中,,將I/O系統(tǒng)設(shè)計(jì)成為任何類型的設(shè)備,,提供一個(gè)簡單、統(tǒng)一、獨(dú)立于設(shè)備的接口,,任何對于串行口的操作仍然可以視為對一個(gè)文件的操作,,而不必了解關(guān)于設(shè)備或程序驅(qū)動(dòng)實(shí)現(xiàn)的細(xì)節(jié)。在使用串口之前利用open()打開相應(yīng)串口,,再用ioctl()設(shè)置波特率,、數(shù)據(jù)位、停止位,、奇偶校驗(yàn)等屬性,,然后依據(jù)串口打開時(shí)的讀寫標(biāo)志,調(diào)用函數(shù)write(),、read()對串口進(jìn)行只讀操作,、只寫操作或同時(shí)進(jìn)行讀寫操作,最后用close()關(guān)閉串口,。

  對于串口通信,,仍然要關(guān)心數(shù)據(jù)接收的實(shí)時(shí)性??刹捎弥袛喾绞?,利用VxWorks提供的select()函數(shù)的事件觸發(fā)機(jī)制,將讀串口的任務(wù)阻塞使其一直等待數(shù)據(jù),,當(dāng)有數(shù)據(jù)來到的時(shí)候該任務(wù)會(huì)立刻自動(dòng)響應(yīng),,提高系統(tǒng)的實(shí)時(shí)性。

  4 結(jié)束語

  嵌入式實(shí)時(shí)操作系統(tǒng)VxWorks及其開發(fā)環(huán)境的引入,,大大簡化了可編程控制器軟件設(shè)計(jì)的復(fù)雜性,,縮短了開發(fā)周期,提高了產(chǎn)品的實(shí)時(shí)性和可靠性,。因此,,VxWorks RTOS在MB系列智能可編程控制器中的應(yīng)用是成功的。MB系列智能可編程控制器作為新一代的PLC產(chǎn)品,,相信能在電力,、化工、工業(yè)過程控制,、城市及樓宇自動(dòng)化等各種復(fù)雜控制領(lǐng)域發(fā)揮更大的優(yōu)勢,,使這些行業(yè)的自動(dòng)化水平得到更大的提高。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。