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

 

    1 引言

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

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

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

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

  MB系列智能可編程控制器采用LAN/FieldBus系統(tǒng)體系結(jié)構(gòu),,提供標準的以太網(wǎng)接口完成與上位機系統(tǒng)的通信。主控模件與智能I/O模件之間采用現(xiàn)場總線CAN作為內(nèi)部總線及擴展總線,,現(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硬件平臺上,,應(yīng)用WindRiver公司的Tornado集成開發(fā)環(huán)境,實現(xiàn)基于VxWorks的可編程控制器,。

  2.2 MB系列智能可編程控制器特點

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  VxWorks的開發(fā)環(huán)境是WindRiver(風(fēng)河)公司提供的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ù)

  MB系列智能可編程控制器的軟件設(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)。

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

  (1) 主任務(wù):主任務(wù)負責(zé)硬件初始化,、數(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í)行方法,,將MBPro編程軟件產(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ù)負責(zé)對機組有功,、無功進行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è)備的運行情況并進行報警。當(dāng)PLC因某種干擾或硬件故障等原因發(fā)生運行紊亂或死機時,,Watchdog能產(chǎn)生自恢復(fù)信號,,使PLC自動重新恢復(fù)運行;

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

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

  (12) 顯示任務(wù):顯示任務(wù)通過串口與智能型液晶顯示觸摸屏通訊,,完成當(dāng)?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ò)編程,。

  (1) 信號量

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

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

  (2) 消息隊列

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

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

  3.3 中斷處理程序

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

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

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

  sysIntEnablePIC(5);

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

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

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

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

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

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

  3.5 串行口通信

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

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

  4 結(jié)束語

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

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