文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.02.010
中文引用格式: 司蕭俊,王宜懷,白聰. 基于K60的GCPLC系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2017,43(2):47-50.
英文引用格式: Si Xiaojun,Wang Yihuai,Bai Cong. Design and implementation of GCPLC based on K60[J].Application of Electronic Technique,2017,43(2):47-50.
0 引言
傳統(tǒng)可編程邏輯控制器(Programmable Logic Controller,PLC)從提出至今已經(jīng)發(fā)展四十多年,形成了全世界每年300億美元以上的巨大市場,涉及自動控制、機(jī)械、裝備、醫(yī)療電子等諸多應(yīng)用領(lǐng)域,為一線基層技術(shù)人員利用嵌入式計算機(jī)生產(chǎn)實(shí)踐提供了基礎(chǔ)技術(shù)平臺。但也存在CPU選擇受限、硬件耦合性差、變量設(shè)置簡單、梯形圖編程功能深度不夠、二次編程困難、構(gòu)件組合靈活性差、開發(fā)環(huán)境受限、新構(gòu)件融入難度大等問題。雖然經(jīng)過多年改進(jìn)與發(fā)展,從不同角度改進(jìn)了技術(shù),但由于技術(shù)架構(gòu)未變,本質(zhì)問題無法根本解決。
本文基于多任務(wù)操作系統(tǒng)MQX、嵌入式ARM處理器、CAN總線等技術(shù),設(shè)計了一套包含圖形構(gòu)件化編程軟件及基于恩智浦K60微處理器的圖形構(gòu)件化可編程邏輯控制器(Graphic Component Programmable Logic Controller,GCPLC)硬件的完整系統(tǒng),并對整個系統(tǒng)進(jìn)行簡要介紹,重點(diǎn)闡述了圖形構(gòu)件化的軟件開發(fā)環(huán)境。
1 GCPLC的體系總體設(shè)計與工作原理
GCPLC的系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1中的上半部分是GCPLC的軟件開發(fā)環(huán)境部分,主要完成圖形化編程、C語言文件的生成、程序編譯等功能,并且負(fù)責(zé)向硬件部分燒寫程序以及實(shí)現(xiàn)實(shí)時監(jiān)控。下半部分的GCPLC硬件部分為整個系統(tǒng)的核心,負(fù)責(zé)執(zhí)行程序。硬件部分帶有多路普通/高速的GPIO接口、高速PWM以及差分輸入輸出接口、CAN總線接口、485信號接口和232接口,可以實(shí)現(xiàn)普通PLC具備的功能。
GCPLC系統(tǒng)將開發(fā)環(huán)節(jié)和運(yùn)行環(huán)節(jié)分開操作。在開發(fā)階段,使用圖形構(gòu)件化編程軟件編寫程序,并同時將嵌入式實(shí)時操作系統(tǒng)MQX融入其中;在執(zhí)行階段,硬件部分執(zhí)行程序,有序?qū)Ω鱾€任務(wù)進(jìn)行調(diào)度,并且通過串口與PC通信,從而將硬件部分的信息傳遞給軟件部分,以實(shí)現(xiàn)實(shí)時監(jiān)控。
2 GCPLC系統(tǒng)硬件設(shè)計
GCPLC硬件的主要應(yīng)用目標(biāo)是工業(yè)控制,而可靠性和抗干擾能力是衡量工業(yè)控制中電氣設(shè)備性能的關(guān)鍵指標(biāo),因此在設(shè)計內(nèi)部電路時,采用了抗干擾技術(shù),其中包括光耦隔離電路、場效應(yīng)管隔離電路等。選用的硬件是具有極高隔離性能的元件,其中包括高速光耦6N137、場效應(yīng)管LR120N等。下面著重介紹高速GPIO輸入電路和高速PWM差分輸出電路。
2.1 高速GPIO輸入電路
為了能夠滿足工業(yè)控制中對GPIO輸入的實(shí)時性和高效率需求,為GPPLC硬件設(shè)計了帶有電氣隔離特性的高速GPIO輸入電路,如圖2所示。
該電路使用6N137單通道高速光耦合器進(jìn)行輸入輸出,并在輸出端對輸出進(jìn)行濾波后輸出給K60核心板。該電路具有溫度、電流和電壓的補(bǔ)償功能,具有高輸入輸出隔離及抗干擾能力強(qiáng)的特性,電路典型的輸入速率為10 MB/s。
2.2 高速PWM差分輸出電路
電機(jī)驅(qū)動是一種很常見的工業(yè)控制方式,機(jī)械臂的運(yùn)作、機(jī)器人的行走都離不開電機(jī)驅(qū)動。為了提高PWM的輸出效率,設(shè)計了具有差分能力的高速PWM電路,如圖3所示。
圖3是PWM的輸出部分,在其他部分利用SGM4717雙擲模擬開關(guān)芯片,切換PWM的差分和普通輸出模式。在正常情況下,該P(yáng)WM的輸出速率可達(dá)到100 KB/s以上,可以在工業(yè)控制中對電機(jī)進(jìn)行穩(wěn)定的驅(qū)動和控制。
3 GCPLC圖形化開發(fā)環(huán)境設(shè)計
在GCPLC系統(tǒng)中,PC可以為用戶提供一個良好的軟件開發(fā)調(diào)試環(huán)境,因此運(yùn)行在計算機(jī)控制系統(tǒng)上的圖形化開發(fā)環(huán)境需要重點(diǎn)進(jìn)行開發(fā)。GCPLC軟件開發(fā)環(huán)境是為了給GCPLC系統(tǒng)提供一個直觀、方便、可拖動、高效的程序開發(fā)平臺。該平臺主要支持圖形化的拖動、C語言的生成、程序編譯、程序?qū)懭?、?shí)時監(jiān)控等功能。
該平臺采用PC作為基本編程工具,應(yīng)用Visual Studio 2012作為開發(fā)環(huán)境,編程語言舍棄了傳統(tǒng)PLC采用的梯形圖編程方式,選用了全新的圖標(biāo)拖動及連接的編程語言,使得程序的二次開發(fā)變得更加容易,程序結(jié)構(gòu)也變得更加清晰,并且添加了復(fù)制、剪切、刪除、粘貼、右鍵菜單等人性化的快捷操作。在燒寫程序之前,需要對程序進(jìn)行編譯,由編譯器負(fù)責(zé)檢查用戶編寫的程序,并且將錯誤反饋給用戶。若編譯程序無誤,則可以將用戶程序?qū)懭隚CPLC硬件板。該開發(fā)平臺主要由以下模塊組成:
(1)圖標(biāo)控件模塊。包含了編寫程序需要的所有控件,控件分為執(zhí)行控件、傳感器控件、通信控件、流程控件、任務(wù)控件5個大類。每個大類下又包含了若干個具體的子控件。
(2)控件連接及屬性設(shè)置模塊。該模塊是進(jìn)行控件拖拉和連線的模塊,也是整個開發(fā)環(huán)境的關(guān)鍵。在編寫程序時可以從上述的圖標(biāo)控件模塊中選擇自己需要的控件,選出控件后可以放置在此模塊上。每個控件的頂部和底部都有一塊三角形區(qū)域,當(dāng)選定了若干個控件后,將這些控件的三角形區(qū)域連線,則可以組成一段程序。
(3)代碼更新顯示模塊。當(dāng)連接好控件連接模塊中的控件后,該模塊便會自動生成相應(yīng)的代碼。使用者只需要簡單的C語言基礎(chǔ),便可以更好地理解這整段程序?qū)崿F(xiàn)的功能。
3.1 圖標(biāo)控件模塊
為了方便二次開發(fā),在設(shè)計開發(fā)平臺時決定放棄傳統(tǒng)PLC的使用的梯形圖編程方法,轉(zhuǎn)而設(shè)計了開發(fā)者門檻更低、更加容易理解的圖標(biāo)形式的控件,一段完整的程序要能夠穩(wěn)定、成功地運(yùn)行,則需要C語言執(zhí)行所需要的基本流程,基于程序執(zhí)行的基本流程,將圖標(biāo)控件模塊劃分為之前所闡述的5個大類。
執(zhí)行控件主要包括一些需要執(zhí)行的操作,例如開關(guān)中斷、設(shè)置延時、設(shè)置IO輸入/輸出等;傳感器控件包含GCPLC需要的傳感器,例如超聲波傳感器、AD傳感器等;通信控件包含與硬件核心板通信相關(guān)的控件,例如I2C、SPI、UART等;流程控件則是與程序執(zhí)行相關(guān),所以包含IF判斷、條件循環(huán)、計數(shù)循環(huán)之類的控件;任務(wù)控件則是為了程序的多任務(wù)協(xié)調(diào)執(zhí)行而設(shè)置的,所以每當(dāng)用戶添加一個任務(wù),任務(wù)控件中也會生成相應(yīng)的控件。
為了使開發(fā)平臺自身更具有拓展性,設(shè)計了一套從Access數(shù)據(jù)庫讀取控件名稱和控件圖片等相關(guān)屬性的算法,當(dāng)需要增加某種控件時,只需要設(shè)置好該控件的相應(yīng)屬性,存入數(shù)據(jù)庫即可。而對于每一個用戶程序,其中的任務(wù)控件也是各有不同的,因此實(shí)現(xiàn)任務(wù)控件的動態(tài)存取也十分重要。而在設(shè)計控件時,為了實(shí)現(xiàn)程序的通用性,設(shè)計了圖標(biāo)控件Icon類,其關(guān)鍵代碼如下:
public LinkIconType IconType;//控件的類型
public string ModuleName;//控件名字
public int IconArrNum;//控件在控件數(shù)組中的下標(biāo)
public int IconDbNum;//控件在數(shù)據(jù)庫中的序號
public PictureBox IconPicBox;//控件的圖片
public PictureBox MoveToIconPicBox;//鼠標(biāo)移動到控件上時顯示的圖片
public int IconLeftDotNum; //控件圖標(biāo)的左側(cè)的Dotsize個數(shù)
public int IconTopDotNum; //控件圖標(biāo)的上側(cè)的Dotsize個數(shù)
3.2 控件連接及屬性設(shè)置模塊
控件連接及屬性設(shè)置模塊是進(jìn)行控件拖拉、連線、程序順序設(shè)計的模塊,也是整個開發(fā)平臺的核心所在,若干個控件通過不同的順序連接,將會生成截然不同的程序。
在這個界面中,可以通過雙擊每個控件以編輯該控件的屬性。例如,當(dāng)點(diǎn)擊PWM初始化控件時,便會跳出“PWM初始化”屬性窗口,如圖4所示。
該窗口用于設(shè)置GCPLC硬件上的PWM波的輸出頻率,只需要在文本框中輸入想要的頻率,點(diǎn)擊確定后就可以成功配置PWM的輸出頻率。使用者在編程時可以很容易掌握。其他的控件也具各自的屬性窗口。
當(dāng)從圖標(biāo)控件模塊拖出控件時,每個控件之間都是各自獨(dú)立的,即使設(shè)置好控件的屬性,這些控件仍然不具備實(shí)際功能,只有通過每個控件頂部和底部的三角形區(qū)域?qū)⑿枰目丶B接起來時,這些控件才會真正起作用,在開發(fā)環(huán)境中新建一個項(xiàng)目文件后會自動生成一個Main圖標(biāo)控件,這個控件是不可編輯的,表示為每個程序的開始。
為了能適應(yīng)程序較小或者較大的情況,設(shè)計了可縮放的編程界面,當(dāng)需要編寫程序量較大的程序時,可以縮小界面以便于查看完整的程序結(jié)構(gòu)。另外,開發(fā)環(huán)境吸取了PLC編程中梯形圖多行編寫的優(yōu)點(diǎn),設(shè)計了多行顯示的程序結(jié)構(gòu)。同時,當(dāng)控件圖標(biāo)過多超過當(dāng)前顯示頁面時,設(shè)計一套實(shí)時刷新的算法,提升了軟件執(zhí)行效率。
當(dāng)GCPLC系統(tǒng)需要執(zhí)行多任務(wù)程序時,為了使得各個任務(wù)之間的劃分更加清晰,為主任務(wù)程序和每個子任務(wù)都開辟了單獨(dú)的窗口,用戶每添加一個任務(wù),都會在主任務(wù)窗體中生成一個子任務(wù)控件圖標(biāo),雙擊任務(wù)控件圖標(biāo)后可以編輯相應(yīng)的任務(wù)屬性,如任務(wù)名稱、任務(wù)棧大小、任務(wù)優(yōu)先級等。
3.3 代碼更新顯示模塊
在控件連接及屬性設(shè)置模塊將各個圖標(biāo)按照自己預(yù)想的順序連線完成后,如果沒有任何可以參照修改的功能,很有可能使得最后燒寫的程序無法正常運(yùn)行,而且僅僅是圖標(biāo)連接也會使得開發(fā)者感覺很疑惑。為了解決這些問題,設(shè)計了代碼顯示區(qū)域。該區(qū)域顯示的代碼與控件連接模塊的連線方式是一一對應(yīng)的,如圖5所示。
4 GCPLC整體運(yùn)行實(shí)驗(yàn)
在本次實(shí)驗(yàn)中,對GCPLC系統(tǒng)進(jìn)行了一次整體上電自檢實(shí)驗(yàn)測試。首先在GCPLC軟件開發(fā)環(huán)境中編寫好上電自檢的程序,這個上電自檢程序?qū)⒋蜷_GCPLC硬件系統(tǒng)中的所有GPIO、PWM、差分輸入/輸出、CAN總線、485、232和數(shù)碼管功能,并且將模塊初始化信息通過串口反饋出來。上電后的串口反饋信息如圖6所示。
5 結(jié)論
GCPLC系統(tǒng)將嵌入式系統(tǒng)、軟件開發(fā)系統(tǒng)融合在一起,形成一個開放式的體系結(jié)構(gòu),相比傳統(tǒng)的PLC具有更高的靈活性和可擴(kuò)展性,從而使得計算機(jī)控制系統(tǒng)不再受傳統(tǒng)PLC硬件的限制,提高了可靠性和可操作性。本系統(tǒng)具有良好的通信能力,能夠完成比較復(fù)雜的多任務(wù)控制功能,可以滿足和實(shí)現(xiàn)當(dāng)前和今后工業(yè)自動化領(lǐng)域控制系統(tǒng)開放性和柔性的要求,為工業(yè)自動化向更高層次的集成提供了可靠的計數(shù)保障,具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 嚴(yán)奎.嵌入式PLC編程軟件開發(fā)[J].工業(yè)控制計算機(jī),2012,25(10):67-68,70.
[2] 張嵩,術(shù)守喜,丁廣乾.基于ARM的嵌入式PLC的設(shè)計[J].自動化與儀器儀表,2008(3):9-10,23.
[3] 廖常初.PLC編程及應(yīng)用(第4版)[M].北京:機(jī)械工業(yè)出版社,2014.
[4] TROELSEN A.C#與.NET 4高級程序設(shè)計[M].北京:人民郵電出版社,2011.
[5] 王宜懷.嵌入式系統(tǒng)原理與實(shí)踐:ARM Cortex-M4 Kinetis微控制器[M].北京:電子工業(yè)出版社,2012.
[6] 吳玉香,周東霞,林錦赟.嵌入式軟PLC系統(tǒng)的研究和實(shí)現(xiàn)[J].計算機(jī)工程,2009(10).
[7] 謝春杰.嵌入式軟PLC的研究與設(shè)計[D].南京:南京理工大學(xué),2014.
[8] 郭建勛.嵌入式軟PLC開發(fā)系統(tǒng)的設(shè)計[D].廣州:華南理工大學(xué),2010.
[9] PRATUMSUWAN P,PONGAEN W.An embedded PLC development for teaching in mechatronics education[J].Industrial Electronics & Applications,IEEE,2011(6):1477-1481.
[10] 艾春麗,劉榮鵬,張鳳登.基于軟PLC的多任務(wù)并行控制系統(tǒng)的實(shí)時性研究[J].計算機(jī)應(yīng)用,2007,27(12):272-274.
作者信息:
司蕭俊,王宜懷,白 聰
(蘇州大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州215000)