翟源康 蔣 毅 安 偉 周 洪
(江南大學,江蘇 無錫 214000)
隨著工業技術的快速發展,傳統的PLC已經成為成熟的設備,被廣泛應用在工業控制領域。然而在使用過程中,人們逐漸認識到傳統PLC存在諸多缺陷,如性價比低、兼容性差、維護性差等。近年來,IEC 61131-3標準的普及和實施促進了軟PLC技術的產生與發展,軟PLC技術利用軟件中的程序邏輯代替傳統PLC中的繼電器電路,可以完成同傳統PLC一樣的控制功能。相比于傳統PLC,軟PLC在靈活性、兼容性、數據處理能力、通信能力等方面都具有較大優勢。
軟PLC技術起步于國外,目前出現了許多成熟的產品,如西門子公司的SIMATICWinAC控制軟件[1]、三菱公司的GX-Developer編程軟件[2]、Entertron公司的SK1600-RIC型嵌入式控制器[3]等。相比于國外,國內對于軟PLC的研究與應用相對落后,但是近年來許多高校和企業也開始關注軟PLC,如清華大學、南京理工大學、步科等。目前國內的軟PLC產品主要應用于一些安全性較低的場景,很少在工業控制領域見到軟PLC的身影。
本文以ARM開發平臺為運行載體,以CoDeSys為開發軟件,在ARM開發平臺上安裝系統,對系統內核進行改造,移植CoDeSys實時核系統,搭建了基于ARM開發平臺的軟PLC系統。
為了更好地實現軟PLC控制系統的搭建,搭載系統的硬件平臺應該具備成本低廉、性能可靠、開發簡便等特點,基于ARM處理器的開發板可以滿足這個需求[4]。針對開發板上的運行系統,Ubuntu系統是一個很好的選擇,Ubuntu系統屬于Linux操作系統的分支,它的性能強大并且開源免費,有利于開發硬件資源和搭建軟PLC系統。
本文以北京訊為的iTOP-3399開發板為實驗平臺,該開發板以RK3399處理器為核心,RK3399處理器是一款ARM架構的處理器,性能強大,功耗較低。如圖1所示,開發板上板載著豐富的資源,為搭建軟PLC系統提供了極大的便利性。

圖1 開發板資源
本文選取了德國3S公司的CoDeSys作為軟PLC的編程與開發工具,CoDeSys功能強大,性能可靠,被廣泛應用于工業控制領域。該工具分為三層,如圖2所示,開發層是程序的集成開發環境,運行于PC平臺上;設備層是程序解析運行的硬件平臺,需要在硬件平臺安裝CoDeSys實時核系統;通信層負責完成開發層與設備層之間的通信任務。

圖2 CoDeSys架構
首先在ARM開發平臺上安裝Ubuntu系統,由于軟PLC對實時性有較高的要求,而Ubuntu系統的內核屬于非搶占式內核[5],需要對其內核進行改造。本文選取為內核打入補丁的改造方案,改造線路如圖3所示。

圖3 內核改造線路
由于原系統內核沒有對應版本的補丁,而如果將版本不匹配的補丁打入實時內核會出現無法預測的問題,因此需要下載另一版本的內核以及和內核版本嚴格對應的實時補丁。配置內核是根據系統需求,對內核進行參數設置和功能選擇,以滿足特定的需求,在配置完成后通過編譯生成可執行的二進制代碼。各個芯片都有默認的配置文件,需要在默認文件的基礎上進一步修改,由于各個廠商生成的芯片不同,各個芯片的配置文件也存在很大差別。在內核源碼中的arch/arm/configs文件夾下包含了不同芯片的defconfig文件,但是內核源碼文件中提供的配置文件有限,不包含RK3399芯片的配置文件,公司的sdk包有rockchip_rk3399_defconfig文件,將該文件復制到內核源碼的根目錄下,并重新命名為.config文件,執行make menuconfig命令進一步配置內核。
在編譯內核之前,需要修改Makefile文件中的執行命令,在內核源碼文件夾下執行sudo vim Makefile命令,進行配置平臺的修改,Makefile文件默認的配置平臺為x86平臺,利用搜索功能找到修改位置,將其修改為arm64,如圖4所示。

圖4 修改配置平臺
然后修改編譯工具,本文通過虛擬機生成內核的鏡像文件,但是基于x86平臺的虛擬機編譯生成的鏡像文件只適用于x86平臺,無法在ARM平臺上運行,為了在虛擬機中編譯生成適用于ARM開發平臺的鏡像,需要使用交叉編譯工具鏈,RK3399開發板的交叉編譯工具鏈在公司提供的sdk包中;下載sdk包后更改Makefile文件,添加交叉編譯工具的具體位置,如圖5所示。

圖5 修改編譯路徑
修改Makefile文件后,在命令行設置環境變量,執行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命令,修改完成后編譯安裝內核。
系統改造完成后,為了將ARM開發平臺與上層軟件有機結合起來,利用CoDeSys實時核系統(簡稱Runtime)作為ARM開發平臺與上層開發軟件的橋梁。CoDeSys實時核是實時操作系統的核心,它提供了基于硬實時的任務調度和執行,保證了對實時任務的高精度控制和響應能力。在CoDeSys官網下載相應版本的Runtime包,利用CoDeSys軟件進行Runtime包的移植,移植流程如圖6所示。打開軟件后將Runtime包安裝至軟件的包管理器中,安裝成功后進行更新,打開移植界面,輸入ARM開發平臺的IP地址、用戶名和密碼建立軟件與開發平臺之間的連接,連接成功后選擇Runtime包進行移植。

圖6 Runtime移植
為了驗證軟PLC系統的可行性,利用安川公司的驅動器和伺服電機進行測試。控制方案如圖7所示,個人PC與ARM開發平臺利用網線進行通信,ARM開發平臺通過EtherCAT總線控制驅動器,由驅動器控制電機運動。利用CoDeSys軟件編寫電機控制程序,以ST語言作為主要編程語言,添加可視化界面,完成了電機的伺服上電、伺服下電、回零、復位、停止、點動運動、絕對運動、相對運動、勻速運動、多軸協同運動等多種控制命令。

圖7 控制方案架構
本文將軟PLC技術應用于ARM開發平臺上,通過對系統內核進行實時性改造,成功搭建了基于ARM開發平臺的嵌入式控制系統。經過測試,現場總線通信任務抖動較小,任務最大抖動為162 μs,系統運行時穩定可靠。相比于傳統的PLC控制系統,該系統具有擴展性強、性價比高、開發周期短等優勢,為工業控制提供了一種新的可能性。