郭財發(fā),周伯榮
(南京工程學(xué)院自動化學(xué)院, 江蘇 南京 211167)
輸入輸出系統(tǒng)(input output system, IO)控制在工業(yè)機器人與數(shù)控系統(tǒng)控制中起到至關(guān)重要的作用[1],實現(xiàn)控制系統(tǒng)與外部工作環(huán)境的交互.目前,可編程邏輯控制器(programmable logic controller,PLC)已經(jīng)得到廣泛應(yīng)用[2],但由于本身具有獨立的硬件平臺,無法實現(xiàn)PLC下位機軟件的移植, 所以內(nèi)嵌式PLC呈現(xiàn)出多元化的發(fā)展.在國外,德國赫優(yōu)訊將現(xiàn)場總線技術(shù)與PLC技術(shù)相結(jié)合推出了netPLC,日本的FANUC將PLC技術(shù)嵌入到數(shù)控機床中;在國內(nèi),華中科技大學(xué)將PLC技術(shù)與人機交互界面相互結(jié)合,得到國內(nèi)外很多專家的認(rèn)可[3].內(nèi)嵌式PLC的發(fā)展減少了硬件成本、提高了系統(tǒng)的靈活性.
本文設(shè)計的PLC系統(tǒng)打破了硬件平臺的限制,可在任何控制系統(tǒng)中嵌入PLC技術(shù),實現(xiàn)控制系統(tǒng)+PLC系統(tǒng)的合二為一.在控制系統(tǒng)內(nèi)部直接完成IO控制,提高了控制系統(tǒng)對IO控制的靈活性和開放性.[4]
PLC系統(tǒng)上位機程序基于Qt開發(fā)平臺來實現(xiàn)PLC梯形圖程序的編程、編譯、調(diào)試、語法檢查、程序下載、文件創(chuàng)建和文件保存[5];PLC系統(tǒng)的下位機采用STM32硬件平臺實現(xiàn)對PLC程序語句的執(zhí)行及IO的控制.PLC上位機軟件與PLC下位機軟件通過RS485通訊實現(xiàn)PLC梯形圖程序的調(diào)試、下載.PLC系統(tǒng)總體架構(gòu)如圖1所示.
圖1 PLC系統(tǒng)總體架構(gòu)
1.2.1 PLC系統(tǒng)上位機框架
本文的PLC系統(tǒng)上位機軟件是基于Qt開發(fā),主要包含文件模塊、編程模塊、編譯模塊和通訊模塊.文件模塊主要負(fù)責(zé)PLC文件的創(chuàng)建、保存;編程模塊主要負(fù)責(zé)PLC梯形圖的繪制、更改及刪除;編譯模塊主要負(fù)責(zé)對PLC梯形圖程序的語法檢查及編譯;通訊模塊主要負(fù)責(zé)PLC程序二進制文件的下載及調(diào)試.上位機軟件各個模塊之間分層明顯、分工明確,良好地體現(xiàn)了軟件分層思想.
參考文獻[6]采用AOV(activity on vertex)圖來存儲PLC梯形圖,該方法建立AOV圖的邏輯較為復(fù)雜.本文采用矩陣表達式存儲方法,把PLC編程區(qū)域?qū)?yīng)到一個矩陣中,每一個梯形圖編程塊對應(yīng)一個矩陣元素,每一個矩陣元素都保存每個編程塊的屬性,從而保存整個PLC梯形圖程序.X0.0常閉的信息存儲到元素a11,a12,…,a1n-1存儲橫線信息,則Y0.1信息存儲到元素a1n中.依次類推,如圖2所示.
圖2 PLC存儲對應(yīng)矩陣關(guān)系
1.2.2 PLC系統(tǒng)上位機編譯模塊
編譯模塊作為PLC系統(tǒng)上位機的核心模塊,實現(xiàn)對PLC梯形圖程序的語法檢查和程序編譯.[7]只有通過譯碼模塊的語法檢查,才能成功地生成下位機可識別的二進制文件.本文設(shè)計的PLC系統(tǒng)編譯規(guī)則為:每個PLC操作指令都被編譯成一個32 bit的數(shù)字,由操作碼、軟元件1、軟元件2和操作數(shù)組成.PLC指令數(shù)據(jù)組成如圖3所示.
圖3 PLC指令數(shù)據(jù)組成
根據(jù)本PLC系統(tǒng)的編譯規(guī)則,圖2的PLC梯形圖程序經(jīng)過編譯模塊得到的下位機可執(zhí)行的二進制文件,如圖4所示.
圖4 可執(zhí)行的二進制文件
1.3.1 PLC系統(tǒng)下位機框架
PLC下位機軟件主要有初始化模式、正常模式和調(diào)試模式三種系統(tǒng)模式.系統(tǒng)剛開始上電時,PLC下位機系統(tǒng)處于初始化模式,初始化成功進入正常模式,在接收到上位機下載或調(diào)試的信號時,下位機系統(tǒng)模式切換至調(diào)試模式,完成PLC的調(diào)試與程序下載.
下位機PLC系統(tǒng)執(zhí)行PLC程序時采用經(jīng)典的五級流水線:取指、譯碼、執(zhí)行、訪存和寫回[7],如圖5所示.
圖5 經(jīng)典五級流水線操作
下位機中的PLC系統(tǒng)介于硬件平臺與控制系統(tǒng)的中間,實現(xiàn)硬件IO平臺與控制系統(tǒng)IO之間的靈活映射及邏輯控制.由于控制系統(tǒng)對系統(tǒng)實時性要求較高,故對PLC下位機的程序進行優(yōu)化.經(jīng)過測試,基于STM32F103硬件平臺、系統(tǒng)主頻工作在72 MHz的情況下,執(zhí)行一條PLC指令耗時僅為1 μs.帶有PLC下位機的控制系統(tǒng)框圖如圖6所示.
圖6 帶有PLC下位機的控制系統(tǒng)框圖
1.3.2 PLC下位機工作原理
PLC下位機軟件執(zhí)行PLC二進制文件,采用順序循環(huán)掃描工作方式[8],即PLC從第一條指令開始,在無跳轉(zhuǎn)的情況下順序執(zhí)行到最后一條指令.為了保證控制系統(tǒng)處理器資源的有效分配,PLC下位機運行PLC程序時每個執(zhí)行周期最高執(zhí)行1 000條PLC指令,執(zhí)行過程如圖7所示.
以圖2第二行的PLC梯形圖程序為例,經(jīng)過上位機編譯模塊編譯,第二行PLC梯形圖程序?qū)?yīng)的執(zhí)行指令和執(zhí)行過程[9]如圖8所示.
圖7 PLC執(zhí)行過程
(a) 執(zhí)行指令
(b) 執(zhí)行過程
本文設(shè)計的PLC下位機系統(tǒng)運行于控制軟件與硬件平臺之間,提高了控制系統(tǒng)的靈活性.在控制系統(tǒng)內(nèi)部IO分為應(yīng)用IO與系統(tǒng)IO.系統(tǒng)IO用于控制系統(tǒng)的系統(tǒng)模式、伺服狀態(tài)、手動操作和運行狀態(tài)等.通過開放系統(tǒng)IO,大大提高了硬件平臺IO與系統(tǒng)IO之間的靈活映射;同時應(yīng)用IO也可靈活映射.目前,該PLC系統(tǒng)已經(jīng)運用于六軸工業(yè)機器人的控制系統(tǒng)與五軸數(shù)控系統(tǒng)的控制系統(tǒng).
在開發(fā)數(shù)控系統(tǒng)過程中,數(shù)控機床的系統(tǒng)模式、系統(tǒng)運行指令及系統(tǒng)的手動控制都是經(jīng)過數(shù)控機床的控制面板控制.由于控制面板操作邏輯的復(fù)雜性,用C語言開發(fā)其控制邏輯復(fù)雜度較高、可移植性低,故采用PLC梯形圖來實現(xiàn)數(shù)控機床的副面板操作邏輯,增加系統(tǒng)的靈活性.
本文基于嵌入式平臺的PLC系統(tǒng)采用上位機+下位機的控制方案,可以實現(xiàn)機器人系統(tǒng)與數(shù)控系統(tǒng)對開關(guān)量的靈活控制.由于獨立硬件的PLC系統(tǒng)的可移植性差,所以可移植性的PLC成為一個研究方向.雖然基于嵌入式平臺的PLC系統(tǒng)的研究是一項非常復(fù)雜的工作,但是采用嵌入式PLC系統(tǒng)能夠解決對控制系統(tǒng)的IO管理,提高控制系統(tǒng)的開放性和靈活性.