吳繼春, 許 可, 陳凌宇, 范大鵬
(1.湘潭大學(xué) 機(jī)械工程學(xué)院,湖南 湘潭 411105;2.國防科技大學(xué) 智能科學(xué)學(xué)院,湖南 長沙 410073)
運(yùn)動控制系統(tǒng)開發(fā)一直是機(jī)電控制領(lǐng)域的關(guān)鍵技術(shù),越來越多的用戶在尋求標(biāo)準(zhǔn)化程度高、可移植強(qiáng)、開放性好、能夠快速開發(fā)的工業(yè)控制系統(tǒng)[1-3]。
目前,可編程控制器(Programmable Logic Controller, PLC)已被廣泛應(yīng)用,且已成為智能制造系統(tǒng)的載體和核心。通過符合PLCopen規(guī)范的編程開發(fā)方式,對不同類型組件高效集成[4],將運(yùn)動規(guī)劃[5]算法、高精度控制[6]算法,以及機(jī)電系統(tǒng)的架構(gòu)[7]均以功能塊的形式表達(dá),因此如何開發(fā)功能塊是關(guān)鍵。Krzysztof等在基于PLCopen規(guī)范的基礎(chǔ)上,通過PLC coder快速生成,將運(yùn)動軌跡生成與算法實(shí)際結(jié)合起來,并證明了該方 法的 有效性[8]。Ruiz團(tuán) 隊(duì)開發(fā) 了基 于IEC61131-3標(biāo)準(zhǔn)的開發(fā)工具,用于評估PLC控制器在不同軌跡下的控制性能[9]。Doaa等針對運(yùn)動控制內(nèi)的安全問題進(jìn)行研究,設(shè)計(jì)并開發(fā)安全功能塊,用于保證運(yùn)動控制過程中的安全和穩(wěn)定[10]。國內(nèi)外自動化生產(chǎn)商廣泛采用PLC規(guī)范編程方式,提供了可以嵌入IEC 61131-3編程軟件的機(jī)械運(yùn)動、CNC、機(jī)器人等一系列標(biāo)準(zhǔn)運(yùn)動控制功能庫[11]。但是其開發(fā)的產(chǎn)品開放性差,在實(shí)際系統(tǒng)的應(yīng)用有待研究,浙江工業(yè)大學(xué)徐建明等基于Codesys開發(fā)環(huán)境和EtherCAT通訊協(xié)議設(shè)計(jì)了PLCopen規(guī)范的六軸機(jī)器人控制系統(tǒng)[12-13]。針對控制算法的研究,華中科技大學(xué)研究團(tuán)隊(duì)提出運(yùn)動控制系統(tǒng)分層模型和功能塊打斷機(jī)制,實(shí)現(xiàn)了基于PLCopen標(biāo)準(zhǔn)的基本運(yùn)動功能塊[14]。王夫康等針對單軸及主/從結(jié)構(gòu)多軸功能塊無法實(shí)現(xiàn)復(fù)雜多維運(yùn)動控制的問題,對軸組功能塊的執(zhí)行方式、參數(shù)保存及傳遞方法進(jìn)行研究,提出結(jié)構(gòu)體隊(duì)列法,設(shè)計(jì)軸組功能塊,完成了多軸協(xié)調(diào)運(yùn)動控制[15]。華南理工大學(xué)李迪團(tuán)隊(duì)研究了功能塊內(nèi)部的加減速控制算法以及多軸直線、圓弧插補(bǔ)算法,并在自主設(shè)計(jì)軟PLC平臺上進(jìn)行了實(shí)驗(yàn)驗(yàn)證[16]。
上述研究都是基于特定開發(fā)環(huán)境使用傳統(tǒng)編程開發(fā)方式開發(fā)的功能塊,增加了編程要求和難度。本文對運(yùn)動控制功能塊的設(shè)計(jì)和開發(fā)方式進(jìn)行研究,在PLCopen規(guī)范的基礎(chǔ)上,提出了一種運(yùn)動控制功能庫架構(gòu)及其快速生成方法。利用功能塊快速開發(fā)技術(shù)解決了眾多功能塊的開發(fā)問題,降低了編程難度,提高了開發(fā)效率;并以旋轉(zhuǎn)雙棱鏡和CNC運(yùn)動系統(tǒng)為對象進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)表明,所提出的方法能夠有效減少編程難度、縮短開發(fā)周期、增強(qiáng)程序的可復(fù)用性,同時(shí)也驗(yàn)證了自主開發(fā)的功能庫能夠滿足復(fù)雜的運(yùn)動控制需要。
PLCopen組織先后制定了符合IEC61131-3標(biāo)準(zhǔn)的運(yùn)動控制、邏輯控制、安全控制、OPCUA、XML代碼交換等規(guī)范。該規(guī)范在基于控制安全前提下使得PLC邏輯、機(jī)器人控制、CNC控制融合在一個(gè)編程平臺中。通過XML規(guī)范能夠?qū)崿F(xiàn)基于不同開發(fā)環(huán)境中開發(fā)的程序或代碼的跨平臺使用。通過OPC-UA規(guī)范實(shí)現(xiàn)上位機(jī)與控制器及HMI組態(tài)軟件之間的安全通信。
在PLCopen規(guī)范中,運(yùn)動控制規(guī)范為標(biāo)準(zhǔn)化的運(yùn)動控制模塊開發(fā)提供了框架。該規(guī)范基于IEC標(biāo)準(zhǔn)開發(fā)環(huán)境,在開發(fā)、安裝和維護(hù)的各個(gè)階段協(xié)調(diào)不同的開發(fā)平臺,使上述環(huán)節(jié)都能夠滿足運(yùn)動控制功能塊的標(biāo)準(zhǔn)化要求,從而實(shí)現(xiàn)“軟件定義機(jī)器”的目標(biāo)。該規(guī)范分為6部分,內(nèi)容和功能定義如表1所示。
表1 PLCopen運(yùn)動控制規(guī)范Tab.1 PLCopen motion control specification
表1中,Part1和Part2對單軸和多軸功能塊的基本功能塊、狀態(tài)機(jī)、使用規(guī)則等進(jìn)行了定義和擴(kuò)展。Part3為用戶提高使用引導(dǎo)和功能塊示例。Part4對Part1和Part2在三維空間多軸運(yùn)動控制功能進(jìn)行擴(kuò)展,Part5是針對運(yùn)動的坐標(biāo)系變換功能進(jìn)行擴(kuò)展。Part6提供液壓元件和液壓泵系統(tǒng)控制規(guī)范。上述規(guī)范為運(yùn)動控制功能塊的設(shè)計(jì)和開發(fā)及實(shí)現(xiàn)制造裝備的完全自主可控開發(fā)生態(tài)提供了標(biāo)準(zhǔn)。
運(yùn)動控制功能塊的實(shí)現(xiàn)依賴3個(gè)基本要素,即運(yùn)動控制功能塊邏輯控制與算法實(shí)現(xiàn)、軸狀態(tài)機(jī)以及軸信息集合體。其中,軸狀態(tài)機(jī)表示軸當(dāng)前狀態(tài)及可能存在的狀態(tài)轉(zhuǎn)換關(guān)系;軸信息集合體則是包含了當(dāng)前系統(tǒng)中被控軸的參數(shù)信息。當(dāng)單個(gè)功能塊執(zhí)行時(shí)通過讀取軸信息結(jié)構(gòu)體中關(guān)于軸的實(shí)時(shí)信息來改變運(yùn)行狀態(tài)。多個(gè)功能塊共同運(yùn)行時(shí),功能塊之間、功能塊與軸信息結(jié)構(gòu)體之間實(shí)時(shí)進(jìn)行參數(shù)傳遞。通過參數(shù)的實(shí)時(shí)讀取改變內(nèi)部函數(shù)的輸出,進(jìn)而得到功能塊的輸出,并將該輸出下發(fā)至伺服機(jī)構(gòu)執(zhí)行。通過實(shí)時(shí)采集執(zhí)行機(jī)構(gòu)的參數(shù)和理想輸入對比,對軸的狀態(tài)進(jìn)行實(shí)時(shí)調(diào)整。
功能塊實(shí)現(xiàn)流程如圖1所示,在PLC編程開發(fā)軟件上對功能塊或函數(shù)進(jìn)行開發(fā),通過調(diào)用功能塊搭建運(yùn)動控制模塊;在編譯完成后進(jìn)行仿真或直接下發(fā)指令至PLC實(shí)時(shí)內(nèi)核中,與軸信息結(jié)構(gòu)體進(jìn)行參數(shù)傳遞,進(jìn)而改變軸狀態(tài)機(jī)。在功能塊執(zhí)行的過程中,通過對比理想輸出和實(shí)際輸出對功能塊參數(shù)進(jìn)行實(shí)時(shí)修改,為避免由于功能塊內(nèi)部邏輯算法錯(cuò)誤導(dǎo)致系統(tǒng)運(yùn)行錯(cuò)誤,可預(yù)先通過外部指令對系統(tǒng)進(jìn)行調(diào)試。上述流程在PLCopen規(guī)范下,使得軟件開發(fā)不再受硬件約束,用戶可以使用同一程序控制不同的外設(shè)或機(jī)電設(shè)備,且只需要對功能塊的輸入?yún)?shù)進(jìn)行修改,有效地提升了程序的復(fù)用性和快速移植性。
圖1 PLCopen功能塊實(shí)現(xiàn)流程Fig.1 Implementation process of PLCopen function block
功能塊的執(zhí)行是建立在狀態(tài)機(jī)上的,且在工作時(shí)軸只能處于一種狀態(tài),通過功能塊的執(zhí)行情況實(shí)現(xiàn)軸狀態(tài)的轉(zhuǎn)換。根據(jù)PLCopen規(guī)范,將狀態(tài)機(jī)分為單軸和軸組兩類,存在8種狀態(tài),包括禁能、錯(cuò)誤停止、靜止?fàn)顟B(tài)機(jī)等3種非運(yùn)行狀態(tài)機(jī)和停止運(yùn)動、回零運(yùn)動、同步運(yùn)動、離散運(yùn)動和連續(xù)運(yùn)動狀態(tài)等5種運(yùn)行狀態(tài)機(jī)。軸的狀態(tài)改變分為兩種情況:一是功能塊正常執(zhí)行引起的改變;二是功能塊執(zhí)行錯(cuò)誤或者系統(tǒng)發(fā)生故障所引起的狀態(tài)改變。因此,在功能塊開發(fā)時(shí)狀態(tài)機(jī)的正常轉(zhuǎn)換是實(shí)現(xiàn)精確運(yùn)動控制的前提。
PLCopen規(guī)范只規(guī)定到外部定義,對功能塊內(nèi)部的邏輯框架沒有給出定義,因此需要用戶根據(jù)工程實(shí)際需要開發(fā)程序和邏輯代碼,形成標(biāo)準(zhǔn)化的算法結(jié)構(gòu)和控制流程。如圖2所示,一個(gè)標(biāo)準(zhǔn)的功能塊分為內(nèi)部邏輯和外部接口兩部分,其中外部接口包括輸入輸出變量(包括變量類型)、功能塊名稱和類型。內(nèi)部邏輯分為接口層、預(yù)處理層、軸狀態(tài)層和邏輯算法(運(yùn)動控制核心)。
圖2 功能塊分層結(jié)構(gòu)Fig.2 Functional block hierarchical structure
雖然PLCopen規(guī)范為實(shí)現(xiàn)運(yùn)動控制的基本功能塊制定了一套通用標(biāo)準(zhǔn),詳盡規(guī)定了每個(gè)功能塊實(shí)例所實(shí)現(xiàn)的具體功能、輸入輸出接口參數(shù)含義和數(shù)據(jù)類型、完成時(shí)序圖等,而對于功能塊的內(nèi)部執(zhí)行邏輯和核心控制算法則需要開發(fā)者具體實(shí)現(xiàn)。根據(jù)功能塊的通用模型,本文設(shè)計(jì)功能塊內(nèi)部代碼的分層結(jié)構(gòu),確保功能塊內(nèi)部邏輯實(shí)現(xiàn)與外部接口分開,又能通過外部接口實(shí)現(xiàn)與系統(tǒng)硬件驅(qū)動的連接,保證控制軟件不再依賴硬件。
功能塊是控制系統(tǒng)的關(guān)鍵,也是“軟件定義機(jī)器”的核心一環(huán),隨著一系列研究的進(jìn)行和標(biāo)準(zhǔn)的提出,其開發(fā)方式也逐漸豐富。目前,開發(fā)方式主要有兩種,一是傳統(tǒng)的在開發(fā)環(huán)境中采用IEC標(biāo)準(zhǔn)語言進(jìn)行程序編寫的方式。由于開發(fā)軟件計(jì)算能力等因素的限制,開發(fā)含大量專業(yè)數(shù)學(xué)運(yùn)算的功能塊會增加編程難度,如機(jī)器人的正逆運(yùn)動學(xué)求解功能塊的開發(fā)等。因此,該方法還存在一定的局限性。二是基于PLCopen XML規(guī)范,借助其他開發(fā)軟件或數(shù)學(xué)軟件采用PLC coder自動生成的方式生成代碼,將符合軟件兼容性的代碼導(dǎo)入目標(biāo)開發(fā)環(huán)境,解決大量復(fù)雜的數(shù)學(xué)運(yùn)算功能塊的開發(fā)問題。該方法能夠通過模型生成代碼,并且可在生成軟件上進(jìn)行仿真和代碼檢查,其開發(fā)效率對比傳統(tǒng)開發(fā)方式有著顯著提升,適合復(fù)雜功能塊的快速開發(fā)。
圖3為功能塊的快速開發(fā)流程。在預(yù)處理階段,對工程要求進(jìn)行分析,確定目標(biāo)被控對象及相關(guān)參數(shù)?;跀?shù)學(xué)軟件進(jìn)行特性分析并建立控制模型和子系統(tǒng)。在建立子系統(tǒng)后需要對它進(jìn)行兼容性檢測,如不符合標(biāo)準(zhǔn),則對模型和子系統(tǒng)進(jìn)行調(diào)整;反之,則對目標(biāo)模型進(jìn)行仿真以驗(yàn)證模型是否符合目標(biāo)工程要求。對模型進(jìn)行仿真能夠有效地減少開發(fā)錯(cuò)誤,及時(shí)對模型和參數(shù)進(jìn)行修改。模型仿真通過后根據(jù)目標(biāo)開發(fā)環(huán)境生成相應(yīng)PLC coder。
圖3 功能塊快速開發(fā)流程Fig.3 Rapid development process of function blocks
上述方法生成的PLC Coder包括注釋信息和主代碼,注釋信息包括生成軟件和目標(biāo)軟件的版本信息和代碼生成的時(shí)間。主代碼包括功能塊名稱、變量和主程序,各部分都是采用符合IEC標(biāo)準(zhǔn)的ST語言?;赬ML規(guī)范,用戶在工程中將ST代碼導(dǎo)入即可使用,極大地增加了功能塊的開發(fā)效率,減少了開發(fā)過程中的錯(cuò)誤。本文基于上述開發(fā)方法,開發(fā)了機(jī)器人的正逆運(yùn)動學(xué)功能塊以及插補(bǔ)功能塊等復(fù)雜的運(yùn)動控制功能塊。
雖然國外軟件上已形成了一套標(biāo)準(zhǔn)化的功能庫,但是由于功能庫被封裝,用戶不能更改內(nèi)部程序和算法,這不利于自主可控PAC系統(tǒng)的快速開發(fā)和重構(gòu)。而目前國產(chǎn)軟件的開發(fā)工具并沒有專業(yè)的運(yùn)動控制功能庫。因此,對于功能庫的開發(fā)是自主可控PAC系統(tǒng)開發(fā)及“軟件定義機(jī)器”的關(guān)鍵環(huán)節(jié)之一。
本文基于國產(chǎn)PAC軟件建立了標(biāo)準(zhǔn)化的運(yùn)動控制庫架構(gòu),其架構(gòu)如圖4所示,運(yùn)動控制功能庫由工程和庫信息模塊、變量和指令模塊和功能塊/函數(shù)模塊三部分構(gòu)成。其中,信息模塊用于庫名稱和庫信息的設(shè)置;變量和指令模塊對驅(qū)動接口和數(shù)據(jù)類型等進(jìn)行定義;此處為PLCopen規(guī)范下的自定義數(shù)據(jù)類型,如全局變量、結(jié)構(gòu)體、枚舉等。功能塊/函數(shù)模塊是功能庫的核心,不同的運(yùn)動控制庫對應(yīng)不同的功能塊集合。用戶針對目標(biāo)運(yùn)動將所需功能塊封裝至同一庫內(nèi),可以直接調(diào)用。
圖4 功能庫結(jié)構(gòu)樹Fig.4 Structure tree of function library
運(yùn)動控制功能庫是功能塊和函數(shù)的集合,可用于實(shí)現(xiàn)單軸運(yùn)動、多軸運(yùn)動和插補(bǔ)運(yùn)動等功能。如圖5所示,庫內(nèi)的功能塊根據(jù)軸數(shù)分為單軸、多軸/軸組功能塊,且每一類根據(jù)功能屬性又分為軸運(yùn)動控制類和軸管理類功能塊。其中,運(yùn)動控制類功能塊用于驅(qū)動單軸或多軸運(yùn)動,如MC_Interpolated(插補(bǔ))功能塊和Home(回零)功能塊等;管理類功能塊用于軸管理、參數(shù)配置和狀態(tài)監(jiān)控,如MC_Power(使能)功能塊和Read-Status(軸狀態(tài)讀?。┕δ軌K等。
圖5 功能塊類型Fig.5 Function block types
MC_Power功能塊用于控制運(yùn)動,控制從站伺服狀態(tài)機(jī)的切換,使驅(qū)動器上電使能,同時(shí)監(jiān)測系統(tǒng)的工作狀態(tài),其接口定義如表2所示。Axis為軸信息結(jié)構(gòu)體,用于讀取軸信息。Enable用于給輸出軸使能,Enable為True時(shí),驅(qū)動器就緒且狀態(tài)Status顯示為True。同時(shí)軸的狀態(tài)機(jī)由禁能狀態(tài)轉(zhuǎn)換為靜止?fàn)顟B(tài),等待控制指令輸入。如果從站出現(xiàn)故障狀態(tài)機(jī)或者驅(qū)動器返回伺服報(bào)警信號,則狀態(tài)Status仍為False,并通過Valid,ErrorID等輸出接口將錯(cuò)誤信息輸出給用戶,表明系統(tǒng)存在硬件問題。此時(shí),軸將轉(zhuǎn)換到錯(cuò)誤停止?fàn)顟B(tài),需要等待硬件問題修復(fù)后才可繼續(xù)使用系統(tǒng)。
表2 MC_Power功能塊接口定義Tab.2 Interface definition of MC_ Power function block
單軸運(yùn)動控制功能塊是運(yùn)動控制庫中的基本元素。常用的單軸運(yùn)動控制功能有MC_Home、速度控制、絕對運(yùn)動(MC_MoveAbsolute)、相對運(yùn)動(MC_MoveRelative)等,通過加減速控制實(shí)現(xiàn)上述功能。
MC_MoveAbsolute和 MC_MoveRelative運(yùn)動功能塊是常用的單軸運(yùn)動控制功能塊,絕對運(yùn)動功能塊用于以指定參數(shù)運(yùn)動到指定的絕對位置,而相對位置則是運(yùn)動一段相對距離。不同的參數(shù)會得到不同的運(yùn)動軌跡。因此,速度規(guī)劃是此類功能塊的核心,本文針對這類功能塊進(jìn)行設(shè)計(jì)和開發(fā)。功能塊實(shí)例如圖5所示,兩功能塊的輸出和輸入變量與MC_Home相似,其中Distance表示位置增量輸入,Position表示目標(biāo)位置輸入,Jerk為加加速度輸入。Buffer_Mode用于選擇軌跡類型,本文設(shè)計(jì)了3種速度類型。輸入為0時(shí)系統(tǒng)以輸入的速度勻速運(yùn)行,1和2分別對應(yīng)梯形和S型速度模式。
為驗(yàn)證兩功能塊是否能夠完成目標(biāo)運(yùn)動,對兩功能塊進(jìn)行仿真,在Beremize軟件中調(diào)用兩功能塊并將相對運(yùn)動功能塊與絕對運(yùn)動功能塊相連,運(yùn)動參數(shù)設(shè)置如表3所示。
表3 MC_MoveAbsolute和MC_MoveRelative的參數(shù)Tab.3 Parameter of MC_MoveAbsolute and MC_ Moverelative
仿真結(jié)果如圖6所示,兩功能塊都是使用S型加減速方式。在運(yùn)行至3 s左右時(shí),對相對功能塊的執(zhí)行狀態(tài)進(jìn)行打斷并使絕對功能塊運(yùn)行,可以看到兩功能塊能夠完成預(yù)期運(yùn)動,表明兩功能塊能夠?qū)崿F(xiàn)軸的相對運(yùn)動和絕對運(yùn)動。
圖6 功能塊執(zhí)行結(jié)果Fig.6 Result of function block execution
多軸運(yùn)動的實(shí)現(xiàn)形式包括多軸同步協(xié)同或者實(shí)現(xiàn)空間任意軌跡,本文針對多軸運(yùn)動開發(fā)了一系列運(yùn)動控制功能塊,如兩軸和三軸直線插補(bǔ)、圓弧插補(bǔ)等。圖5所示為MC_Interpolator插補(bǔ)功能塊,其輸入輸出與相對運(yùn)動功能塊相似,通過上升沿觸發(fā),可以實(shí)現(xiàn)圓弧和直線插補(bǔ),以用戶指定參數(shù)進(jìn)行插補(bǔ)運(yùn)動控制。其中,輸入變量Mode為插補(bǔ)模式,其值為0,1和2,分別代表勻速插補(bǔ)、梯形速度模式和S型速度模式。多軸圓弧插補(bǔ)算法采用在Matlab編程仿真,然后通過PLC Coder自動生成代碼的方式實(shí)現(xiàn),完成了從當(dāng)前位置點(diǎn)P1(15,0,5)經(jīng)過中間邊界點(diǎn)P2(14,14,10)到 達(dá) 終 點(diǎn)P3(3,1,-10)的 空間圓弧插補(bǔ),采用梯形加減速算法,插補(bǔ)速度為30 (°)/s,加速度為45 (°)/s2。插補(bǔ)結(jié)果如圖7所示。
圖7 插補(bǔ)功能塊測試曲線Fig.7 Test curves of interpolation function block
本文以旋轉(zhuǎn)雙棱鏡和CNC系統(tǒng)為控制對象,開發(fā)了運(yùn)動控制功能庫,并通過自主搭建的實(shí)驗(yàn)平臺對上述功能庫進(jìn)行驗(yàn)證。
如圖8所示,系統(tǒng)由主站、從站、實(shí)時(shí)以太網(wǎng)總線、上位機(jī)軟件和用戶監(jiān)控終端等構(gòu)成。實(shí)時(shí)以太網(wǎng)采用高性能NCUC 2.0總線協(xié)議,通信周期為1 ms,邏輯編程軟件和HMI監(jiān)控軟件運(yùn)行于PC上位端,與系統(tǒng)主站進(jìn)行Modbus或TCP/IP通信,完成控制程序代碼下載和數(shù)據(jù)實(shí)時(shí)交互。
圖8 國產(chǎn)PLC控制測試系統(tǒng)架構(gòu)Fig.8 Architecture of domestic PLC control test system
主站是整個(gè)PLC系統(tǒng)的核心與“大腦”,主要用于完成系統(tǒng)實(shí)時(shí)任務(wù)調(diào)度、編譯環(huán)境的邏輯信息運(yùn)算、對各節(jié)點(diǎn)從站的指令下達(dá)與通信控制、HMI數(shù)據(jù)交互等功能。本文使用的主站為基于國產(chǎn)處理器M7的嵌入式主站,嵌入式主站基于“FPGA+ARM架構(gòu)”,無操作系統(tǒng),程序執(zhí)行代碼直接運(yùn)行于嵌入式芯片上;從站節(jié)點(diǎn)模塊主要是根據(jù)主站的指令進(jìn)行外設(shè)操作,包含傳感器的采集和輸出,并通過以太網(wǎng)總線控制器與主站實(shí)現(xiàn)數(shù)據(jù)交換和通信。以太網(wǎng)總線通信控制器位于各從站模塊中,主要實(shí)現(xiàn)各節(jié)點(diǎn)之間的高帶寬、高效率、高速度的數(shù)據(jù)傳輸通信;伺服驅(qū)動裝置和外設(shè)是系統(tǒng)完成運(yùn)動控制的執(zhí)行機(jī)構(gòu);系統(tǒng)軟件主要包括IEC-61131-3標(biāo)準(zhǔn)軟件集成開發(fā)環(huán)境和界面監(jiān)控軟件兩部分,軟件集成開發(fā)環(huán)境主要用于實(shí)現(xiàn)系統(tǒng)硬件組態(tài)、可視化的系統(tǒng)功能設(shè)計(jì)和邏輯編程、邏輯代碼的編譯、程序可執(zhí)行文件的生成和下載等。本文采用的開發(fā)環(huán)境為國產(chǎn)Beremize軟件,監(jiān)控軟件為Qtouch軟件。界面監(jiān)控軟件主要用于人機(jī)交互界面的設(shè)計(jì)和開發(fā),完成與主站的通信,保證對主站數(shù)據(jù)的實(shí)時(shí)監(jiān)控。
典型旋轉(zhuǎn)雙棱鏡成像系統(tǒng)原理如圖9(a)所示,兩棱鏡Π1,Π2的橫截面為直角三角形,兩直角邊面相互平行且垂直于共同旋轉(zhuǎn)軸Z軸。為實(shí)現(xiàn)一定空間角度內(nèi)所有指向的全覆蓋,兩棱鏡必須達(dá)到完全匹配,故通常讓兩棱鏡具有相同的折射系數(shù)和頂角,即n1=n2=n,α1=α2=α。兩棱鏡旋轉(zhuǎn)角θ1,θ2以X軸為測量起始。視軸方向以極坐標(biāo)中的偏轉(zhuǎn)角Φ和方位角Θ描述。通過對點(diǎn)光源進(jìn)行折射,改變兩個(gè)楔鏡的相對旋轉(zhuǎn)角度,光的傳播路徑隨之改變,從而達(dá)到對光束方向的控制。因此,根據(jù)上述原理,本實(shí)驗(yàn)以兩棱鏡光源指向控制為目標(biāo),驗(yàn)證所開發(fā)的功能塊以及國產(chǎn)軟硬件對在旋轉(zhuǎn)雙棱鏡上的應(yīng)用效果,控制系統(tǒng)如圖9(b)所示。
圖10所示為旋轉(zhuǎn)雙棱鏡運(yùn)動控制系統(tǒng),系統(tǒng)主要由國產(chǎn)PAC系統(tǒng)、旋轉(zhuǎn)雙棱鏡、視覺采集系統(tǒng)組成以及平行光源組成。所使用光源波長為650 nm,視覺采集系統(tǒng)由??禂z像頭及視圖處理軟件組成。
圖9 旋轉(zhuǎn)雙棱鏡運(yùn)動模型與控制系統(tǒng)Fig.9 Motion model and control system of rotating double prism
圖9(b)中,軸管理和從站參數(shù)設(shè)置功能塊用于對電機(jī)使能以及從站內(nèi)部控制器的參數(shù)設(shè)置;雙棱鏡運(yùn)動學(xué)功能塊用于進(jìn)行光束正向問題和逆向問題的解算;運(yùn)動指令轉(zhuǎn)換功能塊用于對指令進(jìn)行轉(zhuǎn)換,以便從站執(zhí)行;傳感器反饋模塊用于接收電機(jī)編碼器反饋的實(shí)際運(yùn)動參數(shù);從站狀態(tài)反饋功能塊用于監(jiān)視和調(diào)整從站的狀態(tài)。
實(shí)驗(yàn)結(jié)果如圖11所示,通過視覺處理系統(tǒng)可以獲得光點(diǎn)的軌跡,由光點(diǎn)軌跡可以看出經(jīng)過雙棱鏡系統(tǒng)的點(diǎn)射光源在經(jīng)過反射后始終保持一個(gè)橢圓軌跡,表明所開發(fā)的功能塊能夠?qū)崿F(xiàn)雙棱鏡光束指向的正、逆向問題求解,且所開發(fā)的軟硬件系統(tǒng)能夠完成雙棱鏡的光束指向控制。因此,該系統(tǒng)可以應(yīng)用于自由空間光通信、紅外對抗、激光指示器、激光雷達(dá)和光纖光開關(guān)等精密光學(xué)系統(tǒng)中。
圖10 旋轉(zhuǎn)雙棱鏡實(shí)驗(yàn)平臺Fig.10 Rotating double prism experimental platform
圖11 光點(diǎn)軌跡Fig.11 Light path
本文搭建了CNC運(yùn)動控制實(shí)驗(yàn)平臺和控制模塊,如圖12所示。圖12(b)中,MC_power為軸使能功能塊,MC_Interpolator為插補(bǔ)運(yùn)動控制功能塊,MC_Home功能塊為復(fù)位功能塊,負(fù)責(zé)軸的急停和軸的回零運(yùn)動等。
本文以圖13鏇輪機(jī)璇修軌跡為插補(bǔ)對象進(jìn)行實(shí)驗(yàn),并以S型加減速模式運(yùn)動,通過各段的曲率閾值,可以得到各段參數(shù)配置如下:Jerk=1.6×103mm/s3,Acceleration=20 mm/s2,Velocity=10 mm/s,各段的起始速度為vs1=0 mm/s,vs2=2 mm/s,vs3=4 mm/s,vs4=3 mm/s,vs5=5 mm/s,vs6=4 mm/s,vs7=3 mm/s,vs8=2 mm/s,vs9=2 mm/s;運(yùn)動終點(diǎn)速度為ve9=0 mm/s,Mode=2。
圖12 CNC功能庫實(shí)驗(yàn)系統(tǒng)Fig.12 CNC functional library experimental system
圖13 目標(biāo)璇修軌跡Fig.13 Target repair trajectory
圖14 加速度與速度曲線Fig.14 Acceleration and velocity curves
實(shí)際的加速度和速度曲線如圖14所示。X和Y軸的實(shí)際位移曲線如圖15(a)所示,兩軸同步運(yùn)動,可以實(shí)現(xiàn)多段的S型加減速運(yùn)動。HMI反饋軌跡如圖15(b)所示,該功能塊可以正常完成圓弧插補(bǔ)和直線插補(bǔ)運(yùn)動,與實(shí)際軌跡相比,在無負(fù)載的情況下兩者之間的誤差在0.3 mm。上述結(jié)果表明,自主開發(fā)的CNC運(yùn)動控制功能庫能夠?qū)崿F(xiàn)多種運(yùn)動規(guī)劃,模擬簡單的CNC直線插補(bǔ)和圓弧插補(bǔ)運(yùn)動,實(shí)現(xiàn)多電機(jī)的同步運(yùn)動,初步驗(yàn)證了該運(yùn)動控制庫的有效性。
圖15 插補(bǔ)軌跡Fig.15 Interpolation trajectory
本文針對PLC上位機(jī)軟件中功能塊和庫不開放以及國產(chǎn)軟件內(nèi)部功能塊缺乏等問題,基于XML規(guī)范,采用PLC coder技術(shù)自動生成符合IEC標(biāo)準(zhǔn)的結(jié)構(gòu)化文本的方式快速開發(fā)功能塊,能夠解決上位機(jī)軟件中大量含復(fù)雜計(jì)算的功能塊的開發(fā)需要。基于功能塊的基本模型設(shè)計(jì)功能塊的分層結(jié)構(gòu),針對功能塊在國產(chǎn)開發(fā)環(huán)境中的關(guān)鍵技術(shù)進(jìn)行了研究,通過快速開發(fā)方法開發(fā)一系列運(yùn)動控制功能庫,如常用的機(jī)器人和CNC功能庫等。通過功能庫快速搭建了旋轉(zhuǎn)雙棱鏡和CNC運(yùn)動控制模塊,能夠有效節(jié)約開發(fā)時(shí)間。在PLC上位機(jī)軟件中,利用快速生成的旋轉(zhuǎn)雙棱鏡和CNC運(yùn)動控制庫搭建控制系統(tǒng),通過自主搭建的實(shí)驗(yàn)平臺,驗(yàn)證了該控制系統(tǒng)的有效性。實(shí)驗(yàn)結(jié)果表明,該方法能夠快速生成基于PLCopen的運(yùn)動控制功能庫,解決了傳統(tǒng)PLC軟件功能庫不完善的問題。該控制系統(tǒng)能夠?qū)崿F(xiàn)自主開發(fā)和控制,滿足工業(yè)控制的需求。