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