翟源康 蔣 毅 安 偉 周 洪
(江南大學(xué),江蘇 無錫 214000)
隨著工業(yè)技術(shù)的快速發(fā)展,傳統(tǒng)的PLC已經(jīng)成為成熟的設(shè)備,被廣泛應(yīng)用在工業(yè)控制領(lǐng)域。然而在使用過程中,人們逐漸認(rèn)識到傳統(tǒng)PLC存在諸多缺陷,如性價比低、兼容性差、維護性差等。近年來,IEC 61131-3標(biāo)準(zhǔn)的普及和實施促進了軟PLC技術(shù)的產(chǎn)生與發(fā)展,軟PLC技術(shù)利用軟件中的程序邏輯代替?zhèn)鹘y(tǒng)PLC中的繼電器電路,可以完成同傳統(tǒng)PLC一樣的控制功能。相比于傳統(tǒng)PLC,軟PLC在靈活性、兼容性、數(shù)據(jù)處理能力、通信能力等方面都具有較大優(yōu)勢。
軟PLC技術(shù)起步于國外,目前出現(xiàn)了許多成熟的產(chǎn)品,如西門子公司的SIMATICWinAC控制軟件[1]、三菱公司的GX-Developer編程軟件[2]、Entertron公司的SK1600-RIC型嵌入式控制器[3]等。相比于國外,國內(nèi)對于軟PLC的研究與應(yīng)用相對落后,但是近年來許多高校和企業(yè)也開始關(guān)注軟PLC,如清華大學(xué)、南京理工大學(xué)、步科等。目前國內(nèi)的軟PLC產(chǎn)品主要應(yīng)用于一些安全性較低的場景,很少在工業(yè)控制領(lǐng)域見到軟PLC的身影。
本文以ARM開發(fā)平臺為運行載體,以CoDeSys為開發(fā)軟件,在ARM開發(fā)平臺上安裝系統(tǒng),對系統(tǒng)內(nèi)核進行改造,移植CoDeSys實時核系統(tǒng),搭建了基于ARM開發(fā)平臺的軟PLC系統(tǒng)。
為了更好地實現(xiàn)軟PLC控制系統(tǒng)的搭建,搭載系統(tǒng)的硬件平臺應(yīng)該具備成本低廉、性能可靠、開發(fā)簡便等特點,基于ARM處理器的開發(fā)板可以滿足這個需求[4]。針對開發(fā)板上的運行系統(tǒng),Ubuntu系統(tǒng)是一個很好的選擇,Ubuntu系統(tǒng)屬于Linux操作系統(tǒng)的分支,它的性能強大并且開源免費,有利于開發(fā)硬件資源和搭建軟PLC系統(tǒng)。
本文以北京訊為的iTOP-3399開發(fā)板為實驗平臺,該開發(fā)板以RK3399處理器為核心,RK3399處理器是一款A(yù)RM架構(gòu)的處理器,性能強大,功耗較低。如圖1所示,開發(fā)板上板載著豐富的資源,為搭建軟PLC系統(tǒng)提供了極大的便利性。
圖1 開發(fā)板資源
本文選取了德國3S公司的CoDeSys作為軟PLC的編程與開發(fā)工具,CoDeSys功能強大,性能可靠,被廣泛應(yīng)用于工業(yè)控制領(lǐng)域。該工具分為三層,如圖2所示,開發(fā)層是程序的集成開發(fā)環(huán)境,運行于PC平臺上;設(shè)備層是程序解析運行的硬件平臺,需要在硬件平臺安裝CoDeSys實時核系統(tǒng);通信層負(fù)責(zé)完成開發(fā)層與設(shè)備層之間的通信任務(wù)。
圖2 CoDeSys架構(gòu)
首先在ARM開發(fā)平臺上安裝Ubuntu系統(tǒng),由于軟PLC對實時性有較高的要求,而Ubuntu系統(tǒng)的內(nèi)核屬于非搶占式內(nèi)核[5],需要對其內(nèi)核進行改造。本文選取為內(nèi)核打入補丁的改造方案,改造線路如圖3所示。
圖3 內(nèi)核改造線路
由于原系統(tǒng)內(nèi)核沒有對應(yīng)版本的補丁,而如果將版本不匹配的補丁打入實時內(nèi)核會出現(xiàn)無法預(yù)測的問題,因此需要下載另一版本的內(nèi)核以及和內(nèi)核版本嚴(yán)格對應(yīng)的實時補丁。配置內(nèi)核是根據(jù)系統(tǒng)需求,對內(nèi)核進行參數(shù)設(shè)置和功能選擇,以滿足特定的需求,在配置完成后通過編譯生成可執(zhí)行的二進制代碼。各個芯片都有默認(rèn)的配置文件,需要在默認(rèn)文件的基礎(chǔ)上進一步修改,由于各個廠商生成的芯片不同,各個芯片的配置文件也存在很大差別。在內(nèi)核源碼中的arch/arm/configs文件夾下包含了不同芯片的defconfig文件,但是內(nèi)核源碼文件中提供的配置文件有限,不包含RK3399芯片的配置文件,公司的sdk包有rockchip_rk3399_defconfig文件,將該文件復(fù)制到內(nèi)核源碼的根目錄下,并重新命名為.config文件,執(zhí)行make menuconfig命令進一步配置內(nèi)核。
在編譯內(nèi)核之前,需要修改Makefile文件中的執(zhí)行命令,在內(nèi)核源碼文件夾下執(zhí)行sudo vim Makefile命令,進行配置平臺的修改,Makefile文件默認(rèn)的配置平臺為x86平臺,利用搜索功能找到修改位置,將其修改為arm64,如圖4所示。
圖4 修改配置平臺
然后修改編譯工具,本文通過虛擬機生成內(nèi)核的鏡像文件,但是基于x86平臺的虛擬機編譯生成的鏡像文件只適用于x86平臺,無法在ARM平臺上運行,為了在虛擬機中編譯生成適用于ARM開發(fā)平臺的鏡像,需要使用交叉編譯工具鏈,RK3399開發(fā)板的交叉編譯工具鏈在公司提供的sdk包中;下載sdk包后更改Makefile文件,添加交叉編譯工具的具體位置,如圖5所示。
圖5 修改編譯路徑
修改Makefile文件后,在命令行設(shè)置環(huán)境變量,執(zhí)行export PATH=/home/zyk/3399/rk3399_linux_sdk_v2.0/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH命令,修改完成后編譯安裝內(nèi)核。
系統(tǒng)改造完成后,為了將ARM開發(fā)平臺與上層軟件有機結(jié)合起來,利用CoDeSys實時核系統(tǒng)(簡稱Runtime)作為ARM開發(fā)平臺與上層開發(fā)軟件的橋梁。CoDeSys實時核是實時操作系統(tǒng)的核心,它提供了基于硬實時的任務(wù)調(diào)度和執(zhí)行,保證了對實時任務(wù)的高精度控制和響應(yīng)能力。在CoDeSys官網(wǎng)下載相應(yīng)版本的Runtime包,利用CoDeSys軟件進行Runtime包的移植,移植流程如圖6所示。打開軟件后將Runtime包安裝至軟件的包管理器中,安裝成功后進行更新,打開移植界面,輸入ARM開發(fā)平臺的IP地址、用戶名和密碼建立軟件與開發(fā)平臺之間的連接,連接成功后選擇Runtime包進行移植。
圖6 Runtime移植
為了驗證軟PLC系統(tǒng)的可行性,利用安川公司的驅(qū)動器和伺服電機進行測試。控制方案如圖7所示,個人PC與ARM開發(fā)平臺利用網(wǎng)線進行通信,ARM開發(fā)平臺通過EtherCAT總線控制驅(qū)動器,由驅(qū)動器控制電機運動。利用CoDeSys軟件編寫電機控制程序,以ST語言作為主要編程語言,添加可視化界面,完成了電機的伺服上電、伺服下電、回零、復(fù)位、停止、點動運動、絕對運動、相對運動、勻速運動、多軸協(xié)同運動等多種控制命令。
圖7 控制方案架構(gòu)
本文將軟PLC技術(shù)應(yīng)用于ARM開發(fā)平臺上,通過對系統(tǒng)內(nèi)核進行實時性改造,成功搭建了基于ARM開發(fā)平臺的嵌入式控制系統(tǒng)。經(jīng)過測試,現(xiàn)場總線通信任務(wù)抖動較小,任務(wù)最大抖動為162 μs,系統(tǒng)運行時穩(wěn)定可靠。相比于傳統(tǒng)的PLC控制系統(tǒng),該系統(tǒng)具有擴展性強、性價比高、開發(fā)周期短等優(yōu)勢,為工業(yè)控制提供了一種新的可能性。