王志學(xué)+李茂月+劉獻(xiàn)禮+周肖陽+李玉強(qiáng)
摘 要:在開放式數(shù)控系統(tǒng)體系中,為了使軟PLC結(jié)構(gòu)開放,將軟PLC系統(tǒng)分為了開發(fā)系統(tǒng)和運(yùn)行系統(tǒng)兩個(gè)模塊。針對(duì)翻譯型編譯原理的軟PLC不利于數(shù)控系統(tǒng)的開放性與靈活性這一問題,提出了依據(jù)解釋型編譯原理,利用逐行掃描,關(guān)鍵字匹配的方法來開發(fā)軟PLC系統(tǒng)。研究了對(duì)指令表程序的逐行拾取和循環(huán)執(zhí)行的解釋型運(yùn)行系統(tǒng),并給出了具體的實(shí)施方案。為了解決Windows系統(tǒng)的非實(shí)時(shí)性問題,設(shè)計(jì)了基于Windows+RTX(RealTime eXtension)的軟件開發(fā)平臺(tái),來滿足運(yùn)行系統(tǒng)的實(shí)時(shí)性。最后通過實(shí)例,驗(yàn)證了解釋型軟PLC系統(tǒng)功能的可靠性,實(shí)現(xiàn)了控制開放式數(shù)控系統(tǒng)邏輯指令功能的目的。
關(guān)鍵詞:
開放式數(shù)控;軟PLC;運(yùn)行系統(tǒng);解釋型編譯;RTX
DOI:10.15938/j.jhust.2017.06.001
中圖分類號(hào): TG506
文獻(xiàn)標(biāo)志碼: A
文章編號(hào): 1007-2683(2017)06-0001-08
Abstract:In order to develop the soft PLC with open structure, the whole system based on the open CNC system is divided into two modules: the development system and the operating system With the disadvantages of soft PLC of translation compile principle that reduce the openness and flexibility of CNC system, the proposed method broke the tradition, which uses the interpretative type compile theory, adapting progressive scan and keyword matching to develop soft PLC system This study forces on the interpreted the operating system with the function of loop execution and progressive pickup, thereby, the corresponding solution is presented Taking the nonreal time of windows system into consideration, a platform of software based on Windows + RTX(RealTime eXtension)is designed to meet the realtime of the operating system Finally, the result of the experiment shows that the proposed interpreted soft PLC system is reliable and effective Furthermore, it can achieve the function to control logic instruction function of open architecture CNC system
Keywords:open CNC; soft PLC; operating system; interpretative type compile; RTX
0 引 言
《中國制造2025》提出,要加快發(fā)展智能制造裝備和產(chǎn)品,數(shù)控技術(shù)作為智能制造技術(shù)的關(guān)鍵技術(shù)之一必將得到快速的發(fā)展。隨著加工制造技術(shù)要求的不斷提高,人們逐漸的認(rèn)識(shí)到了傳統(tǒng)數(shù)控系統(tǒng)的封閉性,很難根據(jù)實(shí)際的加工需要對(duì)現(xiàn)有的數(shù)控系統(tǒng)進(jìn)行拓展和移植[1],在生產(chǎn)過程中難以實(shí)現(xiàn)與數(shù)據(jù)采集環(huán)節(jié)的反饋控制,因此智能化程度較低。為了解決傳統(tǒng)數(shù)控系統(tǒng)封閉性的弊端,同時(shí)滿足加快發(fā)展智能制造裝備的需求,研發(fā)開放式數(shù)控系統(tǒng)具有重大的意義。
開放式數(shù)控系統(tǒng)即模塊化、可重構(gòu)和可擴(kuò)充的軟硬件數(shù)控系統(tǒng)[2]。開放式數(shù)控系統(tǒng)可以解決傳統(tǒng)數(shù)控系統(tǒng)結(jié)構(gòu)封閉的缺陷,使數(shù)控系統(tǒng)具有結(jié)構(gòu)緊湊、價(jià)廉、智能化高并具有很強(qiáng)的適應(yīng)性和二次開發(fā)性[3]。在開放式數(shù)控系統(tǒng)中,用戶可以方便的添加各種傳感器和遠(yuǎn)程監(jiān)控設(shè)備組成智能制造系統(tǒng)。
傳統(tǒng)數(shù)控系統(tǒng)中的主軸起停,冷卻液開關(guān),換刀等邏輯控制功能,基本都是通過傳統(tǒng)的可編程邏輯控制器PLC來實(shí)現(xiàn)的[4]。傳統(tǒng)PLC由于其較高的穩(wěn)定性和靈敏度,在工業(yè)控制領(lǐng)域得到了越來越廣泛的應(yīng)用[5]。但是傳統(tǒng)PLC結(jié)構(gòu)封閉,不滿足開放式數(shù)控系統(tǒng)結(jié)構(gòu)開放的特點(diǎn),因此開放式數(shù)控系統(tǒng)中的邏輯控制功能都是通過軟PLC實(shí)現(xiàn)的。
與傳統(tǒng)的PLC相比,軟PLC具有如下的優(yōu)點(diǎn):體系開放,結(jié)構(gòu)緊湊、配置靈活[6];數(shù)據(jù)處理能力強(qiáng),軟PLC以PC機(jī)的CPU來進(jìn)行數(shù)據(jù)的處理,大大的提高了數(shù)據(jù)的處理速度;性價(jià)比高,軟PLC打破了傳統(tǒng)PLC廠家的技術(shù)壟斷,用戶可以自由的選擇軟PLC硬件設(shè)備;具有超強(qiáng)的移植性,程序設(shè)計(jì)可以方便的在PC機(jī)上完成,并可方便的移植到工控機(jī)上[7],同時(shí)軟PLC也具有良好的人機(jī)界面。
目前,在許多歐美國家,已研究出了工業(yè)級(jí)的軟PLC產(chǎn)品,并投入到了工業(yè)生產(chǎn)當(dāng)中。其典型產(chǎn)品包括:法國CJ International公司的ISaGRAF, SOFTPLC公司的SoftPLC以及SIEMENS公司的SIMATIC WinAC等[8-9]。我國對(duì)軟PLC技術(shù)研究的比較晚,至今雖然還沒有生產(chǎn)出一套結(jié)構(gòu)完善、功能強(qiáng)大的產(chǎn)品,但是已經(jīng)取得了一些成果。例如:北京亞控自動(dòng)化軟件科技有限公司正在研發(fā)自主產(chǎn)權(quán)的中文軟PLC產(chǎn)品,具有監(jiān)控和在線仿真調(diào)試的功能[10]。沈陽自動(dòng)化所自組研制的NCSSoftPLC可以完成硬件PLC中CPU的所有功能[11]。同時(shí),我國的一些高等院校,也進(jìn)行了軟PLC的研究。北京工業(yè)大學(xué)王新華等[12]在自行研發(fā)的編輯開發(fā)系統(tǒng)之上,設(shè)計(jì)了軟PLC的編譯系統(tǒng),并對(duì)軟PLC的程序指令做出了正確翻譯,使PC機(jī)完成了指定的控制功能。華南理工大學(xué)[13]完成了開放式數(shù)控系統(tǒng)中軟PLC系統(tǒng)的開發(fā),并且在機(jī)床上得到了驗(yàn)證。喻賽花等[14]針對(duì)軟PLC的開發(fā)系統(tǒng)設(shè)計(jì),基于Lex&Yacc完成了結(jié)構(gòu)化文本編輯器的設(shè)計(jì)。合肥工業(yè)大學(xué)[15]在分析了傳統(tǒng)PLC存在不足的基礎(chǔ)上,以ARM硬件平臺(tái),以Windows CE為軟件平臺(tái),開發(fā)了一種嵌入式軟PLC系統(tǒng)。張紅香等[16]研究了嵌入式軟PLC的開發(fā)系統(tǒng),實(shí)現(xiàn)了梯形圖程序的編輯和編譯功能,具有一定的實(shí)用價(jià)值。除此之外,哈爾濱工業(yè)大學(xué)、西北工業(yè)大學(xué)等高校的學(xué)者,在軟PLC技術(shù)方面,也進(jìn)行了大量的研究。endprint
雖然我國在軟PLC 的研究方面取得了一些成果,但是與西方發(fā)達(dá)國家的軟PLC技術(shù)相比,我國的技術(shù)還是比較落后。同時(shí),國內(nèi)所研究的軟PLC系統(tǒng)大多數(shù)都是利用翻譯型編譯原理,將PLC程序編譯成目標(biāo)機(jī)器可識(shí)別的代碼,然后由相應(yīng)的硬件執(zhí)行。該方法占用資源少,執(zhí)行效率高,但是PLC程序修改后,需要再次進(jìn)行編譯,重新生成目標(biāo)代碼;另外,針對(duì)不同的硬件,需要開發(fā)不同的編譯器,這不利于數(shù)控系統(tǒng)的開放性與靈活性。為了解決這個(gè)問題,本文提出了利用解釋型編譯原理,運(yùn)行系統(tǒng)直接解釋指令表語言的方法,來分析PLC程序的邏輯關(guān)系。該方法的優(yōu)點(diǎn)在于不同的硬件設(shè)備,可使用同一套軟PLC系統(tǒng),同時(shí)不需要提前生成機(jī)器可識(shí)別的目標(biāo)代碼,從而使PLC程序修改方便。這種方法占用硬件資源較高,但是隨著CPU的迅猛發(fā)展,以及程序的精心設(shè)計(jì),硬件資源的占用已不成問題。
1 開放式數(shù)控系統(tǒng)中軟PLC的功能
軟件PLC(soft PLC)是以PC機(jī)為依托,通過編程,利用軟件的方式實(shí)現(xiàn)傳統(tǒng)PLC的基本功能。這樣就可以將PLC的控制功能封裝到軟件內(nèi),運(yùn)行于PC機(jī)[17]。從而充分的利用了PC機(jī)的優(yōu)勢(shì),擺脫了傳統(tǒng)PLC的各種弊端,使PLC的結(jié)構(gòu)更加靈活,滿足了開放式數(shù)控系統(tǒng)的要求。軟PLC功能實(shí)現(xiàn)結(jié)構(gòu)如圖1所示。
對(duì)于全軟件型模塊化的開放式數(shù)控系統(tǒng),其結(jié)構(gòu)如圖2所示。從圖2中可以看出軟PLC模塊與其他各模塊之間的關(guān)系。帶有加工信息的NC代碼經(jīng)過人機(jī)界面模塊傳給軟CNC模塊,經(jīng)過軟CNC模塊的譯碼模塊,將M、S、T等邏輯開關(guān)量信息交給軟PLC處理,軟PLC運(yùn)行系統(tǒng)按照軟PLC開發(fā)系統(tǒng)編制的PLC程序,解釋各種邏輯關(guān)系,通過主軸伺服單元和電器回路控制機(jī)床的輔助功能。同時(shí)通過反饋模塊將反饋的信息交給軟PLC模塊和軟CNC模塊處理。
2 軟PLC控制系統(tǒng)結(jié)構(gòu)的劃分
因?yàn)閿?shù)控系統(tǒng)是實(shí)時(shí)多任務(wù)計(jì)算機(jī)控制系統(tǒng)[18],要求具有較高的實(shí)時(shí)性。軟PLC作為數(shù)控系統(tǒng)的一個(gè)控制模塊,當(dāng)然也需要具有實(shí)時(shí)性的特點(diǎn)。但目前的Windows系統(tǒng)是典型的非“硬實(shí)時(shí)性”系統(tǒng),主要表現(xiàn)在高優(yōu)先級(jí)的任務(wù)可以被低優(yōu)先級(jí)的任務(wù)搶占。為了解決Windows系統(tǒng)的實(shí)時(shí)性,采取了在Windows系統(tǒng)中加入RTX實(shí)時(shí)內(nèi)核的方法。RTX可以認(rèn)為是Windows系統(tǒng)的一個(gè)子系統(tǒng)[19],它由硬件抽象層HAL(hard ware abstract layer)擴(kuò)展、實(shí)時(shí)子系統(tǒng)RTSS (realtime sub system)及實(shí)時(shí)開發(fā)工具庫組成。采用Windows+RTX平臺(tái),既繼承了Windows系統(tǒng)原有的優(yōu)點(diǎn),又滿足了軟PLC實(shí)時(shí)性的要求。Windows+RTX平臺(tái)示意圖如圖3所示。
軟PLC的實(shí)時(shí)性主要體現(xiàn)在對(duì)輸入、輸出數(shù)據(jù)的采集以及對(duì)邏輯關(guān)系處理的響應(yīng)時(shí)間上,而編程界面并不需要較高的實(shí)時(shí)性,因此將軟PLC的開發(fā)系統(tǒng)和運(yùn)行系統(tǒng)單獨(dú)進(jìn)行開發(fā)。合理的設(shè)計(jì)軟PLC的結(jié)構(gòu)有利于提升PLC控制系統(tǒng)的穩(wěn)定性[20],根據(jù)軟件模塊的思想,將軟PLC劃分成了如下結(jié)構(gòu),如圖4所示。開發(fā)系統(tǒng)由編輯器和編譯器兩個(gè)模塊組成,同時(shí)具有一個(gè)良好的人機(jī)界面。編輯器主要負(fù)責(zé)梯形圖和指令表等語言的編程。編譯器主要是對(duì)編程語言進(jìn)行詞法分析、語法分析和語義分析并最終將各種PLC程序轉(zhuǎn)換成指令表程序。
運(yùn)行系統(tǒng)是軟PLC的核心,它運(yùn)行于RTSS環(huán)境中,隨數(shù)控系統(tǒng)同時(shí)啟動(dòng),二者相互協(xié)作,共同完成對(duì)機(jī)床的控制功能。運(yùn)行系統(tǒng)主要是解釋執(zhí)行PLC程序的邏輯關(guān)系,對(duì)輸入輸出的數(shù)據(jù)進(jìn)行存儲(chǔ)和將開關(guān)量輸出給機(jī)床等。軟PLC運(yùn)行系統(tǒng)的好壞,直接關(guān)系著開放式數(shù)控系統(tǒng)的性能,因此下文將詳細(xì)的闡述軟PLC運(yùn)行系統(tǒng)的關(guān)鍵技術(shù)。
3 軟PLC運(yùn)行系統(tǒng)關(guān)鍵技術(shù)研究
3.1 軟PLC運(yùn)行系統(tǒng)工作原理
因?yàn)檐汸LC運(yùn)行系統(tǒng)需要根據(jù)數(shù)控系統(tǒng)的各種邏輯指令快速做出響應(yīng),為了能夠?qū)崟r(shí)檢測(cè)到數(shù)控系統(tǒng)或外設(shè)傳遞的信號(hào),軟PLC運(yùn)行系統(tǒng)的工作方式必須是基于掃描周期的,其工作原理如圖5所示。在每一個(gè)掃描周期內(nèi),軟PLC運(yùn)行系統(tǒng)首先采集外設(shè)的輸入狀態(tài),同時(shí)將其存入到輸入映像區(qū)并刷新輸入映像區(qū)的數(shù)據(jù);然后,讀取輸入映像區(qū)的數(shù)據(jù),解釋執(zhí)行中間代碼,同時(shí)把運(yùn)算結(jié)果寫入到輸出映像區(qū),并刷新輸出映像區(qū)。最后,進(jìn)入輸出信息處理階段,將輸出映像區(qū)的數(shù)據(jù)輸出到I/O板卡的各個(gè)輸出端口,進(jìn)而控制機(jī)床的各種邏輯指令。
3.2 軟PLC運(yùn)行系統(tǒng)邏輯功能軟件的實(shí)現(xiàn)
3.2.1 存儲(chǔ)模塊的實(shí)現(xiàn)
存儲(chǔ)模塊主要是存儲(chǔ)開發(fā)系統(tǒng)生成的指令表程序和運(yùn)行系統(tǒng)中的解釋模塊以及I/O模塊產(chǎn)生的數(shù)據(jù),因此將存儲(chǔ)模塊分為程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)兩個(gè)部分。而數(shù)據(jù)存儲(chǔ)區(qū)作為各種實(shí)時(shí)數(shù)據(jù)的載體,直接關(guān)系到運(yùn)行系統(tǒng)的性能,是其他各個(gè)模塊的基礎(chǔ)。
1)程序存儲(chǔ)區(qū)用來存放編譯后生成的中間代碼,程序存儲(chǔ)區(qū)會(huì)隨運(yùn)行系統(tǒng)的開、關(guān)情況調(diào)用相應(yīng)的函數(shù)來申請(qǐng)和釋放內(nèi)存。
2)數(shù)據(jù)存儲(chǔ)區(qū)主要包括輸入/輸出數(shù)據(jù)的存儲(chǔ)、輔助繼電器數(shù)據(jù)的存儲(chǔ)和指令、功能塊邏輯運(yùn)算結(jié)果的存儲(chǔ)。
為了使軟PLC運(yùn)行系統(tǒng)能夠正確的翻譯中間代碼的邏輯關(guān)系,在一個(gè)掃描周期內(nèi),輸入的數(shù)據(jù)必須保持不變,因此必須將輸入采樣階段采集的輸入狀態(tài)數(shù)據(jù)保存在一塊內(nèi)存中,并將其整體放在程序的數(shù)據(jù)采集模塊的位置,供程序解釋執(zhí)行階段調(diào)用,在其他任何階段,無論輸入狀態(tài)是否改變都不允許改動(dòng)內(nèi)存中的值,除非下一采樣階段的到來。對(duì)于輸出繼電器和輔助繼電器的狀態(tài)會(huì)隨程序執(zhí)行過程而改變,也需要內(nèi)存來存儲(chǔ)繼電器的狀態(tài)。因此建立各類映像區(qū)是十分必要的,建立映像區(qū)可以采用數(shù)組、鏈表或申請(qǐng)內(nèi)存等多種方法,但是考慮到映像區(qū)應(yīng)該地址緊湊,查找、存儲(chǔ)方便,因此采用了最簡單的數(shù)組的形式建立了輸入、輸出映像區(qū),達(dá)到了使程序結(jié)構(gòu)簡單,便于維護(hù)的目的。
PLC程序中經(jīng)常會(huì)出現(xiàn)指令的串、并聯(lián)等多分支電路的情況,在分析這些程序的邏輯關(guān)系時(shí),會(huì)產(chǎn)生很多中間數(shù)據(jù)。如果只有運(yùn)算結(jié)果存儲(chǔ)器,當(dāng)對(duì)下一指令塊或下一分支的運(yùn)算結(jié)果進(jìn)行存儲(chǔ)時(shí),會(huì)擦除運(yùn)算結(jié)果寄存器中存儲(chǔ)的上一結(jié)果,從而造成了邏輯關(guān)系的斷裂。為了解決這一問題,建立了邏輯堆棧,其堆棧結(jié)構(gòu)如圖6所示。endprint
PLC程序中可能會(huì)有多個(gè)分支,此處以兩個(gè)邏輯塊并聯(lián)作為輸入加以說明,程序會(huì)先計(jì)算第1個(gè)分支的結(jié)果,并將運(yùn)算結(jié)果從運(yùn)算結(jié)果寄存器壓入堆棧棧頂,棧中原有的數(shù)據(jù)依次向下移動(dòng)一層。然后計(jì)算第2個(gè)分支的結(jié)果,此時(shí)第2個(gè)分支的結(jié)果存儲(chǔ)在運(yùn)算結(jié)果寄存器中。為了完成兩個(gè)分支的邏輯運(yùn)算,需要將棧頂?shù)臄?shù)據(jù)出棧與運(yùn)算結(jié)果寄存器中的數(shù)據(jù)進(jìn)行運(yùn)算,判斷邏輯通斷與否。棧頂?shù)臄?shù)據(jù)出棧后,邏輯堆棧中的數(shù)據(jù)依次上移一格,這樣經(jīng)過一進(jìn)一出,棧中原有的數(shù)據(jù)得以恢復(fù)。 堆棧實(shí)現(xiàn)的部分代碼如下,通過堆棧中的Point來控制堆棧中的數(shù)據(jù)移動(dòng)。
3.2.2 程序解釋模塊的實(shí)現(xiàn)
程序解釋模塊是軟PLC運(yùn)行系統(tǒng)的核心,此模塊負(fù)責(zé)對(duì)指令表的解釋。指令表主要由操作碼和操作數(shù)構(gòu)成,通?;局噶钣幸粋€(gè)操作數(shù),功能指令有兩個(gè)或多個(gè)操作數(shù),因此設(shè)計(jì)的指令表結(jié)構(gòu)如下:
為了滿足軟PLC系統(tǒng)的實(shí)時(shí)性的要求,利用RTX提供的定時(shí)器功能,在RTSS環(huán)境中創(chuàng)建定時(shí)器線程,定時(shí)周期可以根據(jù)需要自由設(shè)置。為了降低CPU的負(fù)擔(dān),提高軟PLC運(yùn)行的效率,必須合理的設(shè)計(jì)程序解釋模塊的執(zhí)行過程。在每一個(gè)掃描周期內(nèi),對(duì)指令表從上到下,逐行掃描,根據(jù)掃描到的關(guān)鍵字執(zhí)行相應(yīng)的程序,可以很好并且高速的完成對(duì)指令表的翻譯。在一個(gè)掃描周期內(nèi)程序解釋模塊運(yùn)行的流程如圖7所示。
在一個(gè)掃描周期開始時(shí),程序會(huì)到輸入映像區(qū)讀取輸入的數(shù)據(jù),帶著輸入的數(shù)據(jù),程序會(huì)對(duì)指令表進(jìn)行掃描。根據(jù)指令表中的操作碼(Order)和操作數(shù)(Name,CodeF)進(jìn)行關(guān)鍵字匹配,利用這些關(guān)鍵字,定位到相應(yīng)的解釋程序,并把計(jì)算結(jié)果寫入到輸出映像區(qū)中。當(dāng)掃描到結(jié)束指令END時(shí),會(huì)跳出此次掃描循環(huán),并將輸出映像區(qū)中的數(shù)據(jù)進(jìn)行輸出,完成一次掃描周期的任務(wù),隨后進(jìn)行下一掃描周期的循環(huán)。
在對(duì)指令表進(jìn)行解釋時(shí),指令表的每一條語句,都有唯一的一段C++程序與之相對(duì)應(yīng)。對(duì)應(yīng)的這段程序除了對(duì)數(shù)據(jù)的存儲(chǔ)外,最主要的功能就是指令表邏輯關(guān)系的處理。是否能夠快速而又準(zhǔn)確的進(jìn)行邏輯處理,是衡量軟PLC系統(tǒng)的重要指標(biāo)。對(duì)指令表邏輯關(guān)系處理的方式有很多種,例如可以利用類似內(nèi)存尋址加堆棧的方式進(jìn)行邏輯處理,但是這種方法比較復(fù)雜,需要逐級(jí)找到對(duì)應(yīng)的地址,效率比較低。而采用冪位運(yùn)算加堆棧的方式,可以快速而又方便的實(shí)現(xiàn)指令表邏輯關(guān)系的處理。所說的冪位運(yùn)算是指根據(jù)操作數(shù)中的CodeF與2進(jìn)行冪運(yùn)算再與輸入、輸出映像區(qū)中的數(shù)據(jù)進(jìn)行位運(yùn)算,根據(jù)位運(yùn)算的結(jié)果來判斷邏輯的通與斷(0或1),最后將邏輯結(jié)果放入到堆棧中。
3.2.3 I/O模塊的實(shí)現(xiàn)
開放式數(shù)控系統(tǒng)中的軟PLC,在具體邏輯控制過程中,控制的主要是外部I/O設(shè)備,I/O模塊是機(jī)床硬件與軟PLC運(yùn)行系統(tǒng)之間的橋梁。I/O模塊一方面負(fù)責(zé)采集硬件輸入的狀態(tài)并將其存入輸入映像區(qū)中,另一方面負(fù)責(zé)根據(jù)輸出映像區(qū)中的數(shù)據(jù),控制I/O板卡輸出端口位的狀態(tài)。為了實(shí)現(xiàn)控制機(jī)床邏輯功能的目的,將輸入/輸出映像區(qū)中數(shù)據(jù)的各個(gè)位與I/O板卡輸入/輸出位進(jìn)行了一一映射,這樣就提高了軟PLC運(yùn)行系統(tǒng)的效率和適應(yīng)性。將輸入/出映像區(qū)以字(Word)為單位劃分成若干段,因?yàn)橥ǔ/O板卡的每個(gè)端口對(duì)應(yīng)8個(gè)位,所以I/O板卡的兩個(gè)端口對(duì)應(yīng)輸入/出映像區(qū)中的一個(gè)字,輸出映像區(qū)第一段與I/O板卡輸出端口位的映射關(guān)系如圖8所示,輸入映像區(qū)與輸入端口位映射關(guān)系與此相同。
大部分I/O板卡以動(dòng)態(tài)鏈接庫的形式向用戶提供了各種函數(shù),利用這些函數(shù),通過映射關(guān)系,運(yùn)行系統(tǒng)就可以快速的讀寫I/O板卡端口位的狀態(tài),從而控制機(jī)床的各種邏輯指令,其工作流程如圖9所示。
3.2.4 通信模塊的實(shí)現(xiàn)
通信模塊主要用來實(shí)現(xiàn)軟PLC模塊、人機(jī)界面模塊(human machine interaction,簡稱HMI)和軟CNC模塊之間的通信。因?yàn)殚_放式數(shù)控系統(tǒng)是基于模塊化的,因此各個(gè)模塊是不同的進(jìn)程,為了實(shí)現(xiàn)各個(gè)進(jìn)程之間的數(shù)據(jù)交換,必須建立良好的通信機(jī)制。在同一臺(tái)工控機(jī)上,實(shí)現(xiàn)不同進(jìn)程之間的通信有很多種方法,主要包括郵槽、剪貼板、命名管道和共享內(nèi)存等。但是,郵槽以廣播的形式進(jìn)行通訊,最大的消息長度不能超過424字節(jié);剪貼板通信需要拷貝數(shù)據(jù),造成內(nèi)存浪費(fèi);命名管道通訊方式簡單,但是不能同時(shí)在多個(gè)進(jìn)程之間通信;共享內(nèi)存采用文件映射的方式進(jìn)行多進(jìn)程之間的通信,進(jìn)程可以直接讀寫內(nèi)存,不需要拷貝數(shù)據(jù),但是只能用于同一臺(tái)工控機(jī)上的不同進(jìn)程之間的通信。綜合以上的利弊關(guān)系,選用共享內(nèi)存的方式,進(jìn)行軟PLC模塊、軟CNC模塊和人機(jī)界面模塊之間的通信,利用此方式在同一臺(tái)工控機(jī)不同進(jìn)程間通信效率高,實(shí)時(shí)性強(qiáng),滿足了數(shù)控系統(tǒng)的需求。軟PLC模塊、軟CNC模塊和人機(jī)界面模塊之間通過共享內(nèi)存進(jìn)行通信關(guān)系如圖10所示。
4 軟PLC系統(tǒng)功能測(cè)試
該軟PLC測(cè)試平臺(tái)的硬件包括研華工控機(jī)+研華PCI1758UDIO板卡+研華39100接線端子+洛克電子控制面板+拓璞五軸數(shù)控銑床床體。軟件平臺(tái)為Windows +RTX8.1。利用VC6.0設(shè)計(jì)的開發(fā)系統(tǒng)界面如圖11所示,當(dāng)點(diǎn)擊梯形圖或指令表按鈕時(shí),會(huì)出現(xiàn)梯形圖或指令表編程界面,在編好的梯形圖或指令表程序上進(jìn)行雙擊,會(huì)彈出程序編輯界面,如圖11 a)、b)所示。當(dāng)點(diǎn)擊模擬仿真按鈕時(shí),會(huì)彈出仿真界面,可以對(duì)編好的程序進(jìn)行仿真,如圖11 c)所示。當(dāng)點(diǎn)擊寫入數(shù)據(jù)按鈕時(shí),會(huì)將指令表程序下載到運(yùn)行系統(tǒng)。在四個(gè)按鈕之間相互切換,除了完成指定的功能切換外,還會(huì)進(jìn)行編譯,對(duì)編好的PLC程序中存在的錯(cuò)誤進(jìn)行提示,如圖11 d)所示。
設(shè)計(jì)的機(jī)床控制軟面板如圖12所示,當(dāng)按下軟面板中的邏輯按鈕時(shí),按鈕上面的指示燈會(huì)根據(jù)實(shí)際的工作狀態(tài)進(jìn)行顯示,同時(shí)更新硬面板上面指示燈的狀態(tài)。同樣當(dāng)按下硬面板上的某個(gè)邏輯按鈕時(shí),軟面板上的指示燈也會(huì)根據(jù)實(shí)際的工作狀態(tài)進(jìn)行更新,達(dá)到了軟硬面板同時(shí)控制和顯示工作狀態(tài)的要求。endprint
利用圖13所示的控制機(jī)床冷卻液的程序,可以控制機(jī)床冷卻液的開、關(guān)。當(dāng)按下冷卻液按鈕時(shí),冷卻液打開,冷卻液指示燈亮;當(dāng)再次按下冷卻液按鈕時(shí),冷卻液關(guān),同時(shí)冷卻液指示燈滅。對(duì)機(jī)床的控制效果如圖14所示。
5 結(jié) 論
本文利用VC6.0對(duì)解釋型軟PLC進(jìn)行了開發(fā)及設(shè)計(jì)。在分析了軟PLC的系統(tǒng)構(gòu)成和工作原理的基礎(chǔ)上,對(duì)軟PLC系統(tǒng)進(jìn)行了合理的劃分,并設(shè)計(jì)了開發(fā)系統(tǒng)的主體框架。同時(shí),精心的設(shè)計(jì)了解釋型軟PLC運(yùn)行系統(tǒng)的工作方式和數(shù)據(jù)存儲(chǔ)方式,采用了利用解釋原理,通過逐級(jí)掃描和關(guān)鍵字匹配的方法來開發(fā)運(yùn)行系統(tǒng)。實(shí)現(xiàn)了對(duì)源語言程序的直接解釋,省去了提前編譯成目標(biāo)代碼的繁瑣過程。最后經(jīng)過實(shí)驗(yàn)驗(yàn)證,得到了與傳統(tǒng)PLC相同的控制結(jié)果,證明了這種方法的可行性。同時(shí),開發(fā)的軟件系統(tǒng)結(jié)構(gòu)開放,使用方便,為今后的進(jìn)一步完善軟PLC功能和實(shí)現(xiàn)良好的控制特性奠定了基礎(chǔ)。
參 考 文 獻(xiàn):
[1] SUKHWAN Suh, Seong Kyoon Kang. Theory and Design of CNC Systems [M].London: Springer Series in Advanced Manufacturing, 2008:353-393.
[2] 周祖德,魏仁選,陳幼平.開放式控制系統(tǒng)的現(xiàn)狀、趨勢(shì)與對(duì)策[J].武漢:中國機(jī)械工程,1999,1(10 ) : 1090-1093.
[3] 李茂月.開放式智能數(shù)控系統(tǒng)及其在線控制相關(guān)技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012:1-4.
[4] 陽俊將.面向數(shù)控系統(tǒng)的軟PLC的研究與設(shè)計(jì)[D].廣東:華南理工大學(xué),2012: 6-8.
[5] 李東濱,陳欣.精密扁鋼精整設(shè)備的 PLC 控制[J].哈爾濱理工大學(xué)學(xué)報(bào),2009,14(4):25-27.
[6] ZHOU Qingguo, YANG Xuhui. An Embedded Control System Designed Based on Soft PLC[J]. Lecture Notes in Electrical Engineering,2014:115-120.
[7] 于恩超, 杜瑩. 對(duì)軟PLC技術(shù)的發(fā)展趨勢(shì)及前景展望[J]. 石家莊:科技風(fēng), 2014: 253.
[8] 李萬軍. 軟PLC體系結(jié)構(gòu)分析及工程應(yīng)用[D]. 西安: 西安電子科技大學(xué), 2007:6-8.
[9] PRAHOFER H, SCHATZ R, WIRTH C, et al. A Comprehensive Solution for Deterministic Replay Debugging of SoftPLC Applications[J]. IEEE Transactions on Industrial Informatics, 2011, 7(4): 641-651.
[10]孫欣. 數(shù)控系統(tǒng)軟PLC的研究與開發(fā)[D]. 大連: 大連理工大學(xué), 2007: 3-5.
[11]畢輝, 程良鴻. 關(guān)于軟PLC技術(shù)的研究及發(fā)展[J]. 機(jī)電產(chǎn)品開發(fā)與創(chuàng)新, 2006, 19 (6): 118-119.
[12]王新華, 周峰等.軟編譯系統(tǒng)的開發(fā)與實(shí)現(xiàn)[J]. 北京工業(yè)大學(xué)學(xué)報(bào), 2008, 34(11): 54-56.
[13]王飛, 裴海龍. 開放式數(shù)控系統(tǒng)中軟PLC系統(tǒng)的開發(fā)及應(yīng)用[J]. 設(shè)計(jì)與研究, 2010( 8) : 73-76.
[14]喻賽花. 基于Windows的軟PLC系統(tǒng)開發(fā)[D]. 南京: 南京航空航天大學(xué), 2011: 40-46.
[15]馮霄. 基于Windows CE的嵌入式軟PLC研究與開發(fā)[D]. 合肥: 合肥工業(yè)大學(xué), 2012: 5-48.
[16]張紅香. 面向數(shù)控機(jī)床的嵌入式軟PLC開發(fā)系統(tǒng)的研究[D]. 蘭州: 蘭州理工大學(xué), 2014: 22-49.
[17]高進(jìn). 軟PLC運(yùn)行系統(tǒng)的研究[D]. 成都: 西華大學(xué), 2010: 1-3.
[18]馬雄波.基于PC機(jī)的開放式多軸軟數(shù)控系統(tǒng)關(guān)鍵技術(shù)研究及實(shí)現(xiàn)[D] .哈爾濱:哈爾濱工業(yè)大學(xué),2007:14-20.
[19]張蕾.基于RTX的全軟件數(shù)控系統(tǒng)研究[D].秦皇島:燕山大學(xué),2006:810.
[20]謝勁松,梁宏斌.五軸數(shù)控銑床軟PLC控制系統(tǒng)的研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014(3):82-85.
(編輯:溫澤宇)endprint