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硬件平臺上,應(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è)高效而可靠的平臺。
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)化水平得到更大的提高。
責(zé)任編輯:gt
評論
查看更多