吳焱明 李曉龍 馮超健 朱家誠
合肥工業(yè)大學 機械工程學院 合肥 230009
隨著汽車產(chǎn)業(yè)的發(fā)展與居民生活水平的提高,我國的汽車數(shù)量越來越多,截至2020年,我國民用汽車擁有量已達到27 340萬輛。在此背景下,我國洗車機行業(yè)的發(fā)展突飛猛進。洗車機毛刷設計、基于機器視覺控制洗車、洗車機故障診斷、物聯(lián)網(wǎng)自助洗車、洗車機吹風系統(tǒng)改進等方面都有許多研究。
針對洗車機可編程序控制器程序開發(fā),傳統(tǒng)的洗車機可編程序控制器程序一般是固定的幾套,按照洗車的邏輯順序編寫,更新周期慢,不利于應對洗車客戶多樣化的需求,也給開發(fā)人員新增程序帶來大而煩瑣的工作量。
對此,筆者設計了一種模塊化、易組合的龍門式自動洗車機可編程序控制器程序,將各種洗車中需要的功能寫入三菱可編程序控制器的FB功能塊,經(jīng)過封裝后可以調(diào)用,便于洗車機可編程序控制器程序的開發(fā)與維護。開發(fā)人員只需要關注這一套程序的作用,可以以幾分鐘一套的速度較快完成數(shù)十套程序的編寫,從而對客戶洗車的需求進行精準細分。
龍門式自動洗車機機械結構主要包括龍門架、行走總成、橫刷、立刷、風刀、側(cè)吹風、電路控制柜、水路與氣路控制柜,如圖1所示。
▲圖1 自動洗車機機械結構
龍門架是各個部件安裝的基礎。行走總成由電機驅(qū)動,帶動整個洗車機前后移動。橫刷與立刷負責仿形刷車,將車身的頂部與側(cè)面刷干凈。風刀與側(cè)吹風負責將車身上面和側(cè)面的水烘干,并且風刀會仿形保持與車身的距離。洗車機的兩側(cè)是控制柜,一側(cè)是電路控制柜,負責控制整個洗車機運行,另一側(cè)是水路與氣路控制柜,負責控制氣缸與水閥的通斷。
自動洗車機總體控制原理如圖2所示。
▲圖2 自動洗車機的總體控制原理
自動洗車機的運行由可編程序控制器控制,用戶可以通過人機界面與可編程序控制器交互,進而對洗車機進行操作。
可編程序控制器的輸入信號主要來源于實體按鈕和各種傳感器。輸出信號經(jīng)過控制元件來控制電機的旋轉(zhuǎn)或者氣缸等執(zhí)行機構的動作。
在控制原理中,可編程序控制器、變頻器、電機形成了一個反饋控制的回路。變頻器既可以控制刷子的移動與旋轉(zhuǎn),又可以檢測刷子轉(zhuǎn)動刷車時的功率,并反饋給可編程序控制器,進而影響輸出,是實現(xiàn)仿形刷車的關鍵。
可編程序控制器輸入輸出信號分配如圖3所示。
▲圖3 控制回路輸入輸出信號分配
選擇三菱FX5U-80MR/ES可編程序控制器,輔以FX5-16EYR/ES輸出擴展模塊和FX5-4AD模擬量輸入模塊。
筆者設計的自動洗車機可編程序控制器程序整體架構分為三部分,如圖4所示。
▲圖4 自動洗車機可編程序控制器程序整體架構
(1) 自動部分。調(diào)用功能庫中的功能,拼接成多套洗車程序,對用戶的洗車需求進行精準細分,滿足不同時長、不同價位的洗車需求。
(2) 手動部分。用于調(diào)試與維護人員對自動洗車機進行調(diào)整測試,如位置調(diào)整、疲勞測試。
(3) 輔助功能。提供手動部分、自動部分都需要的輔助功能,如故障保護、參數(shù)設置等。
自動部分的架構是自動洗車機可編程序控制器程序的核心。將面向用戶的自動洗車程序拆解為面向開發(fā)人員的洗車功能,使拼接程序簡單便捷。自動部分架構如圖5所示。
▲圖5 自動部分架構
自動部分主要分為三部分。
(1) 多套自動程序。調(diào)用上層功能庫的刷車功能與銜接功能,拼接為多套自動洗車程序,提供給客戶自主選擇。
(2) 上層功能庫。用于直接拼接洗車程序,主要包括6個刷車功能和5個銜接功能。刷車功能根據(jù)流程將洗車過程分為三類:噴清洗液、刷車、吹風烘干,為了降低編寫程序的耦合,又分為往后和往前,因此共有6個刷車功能。銜接功能按照運動方向不同,主要分為到位和復位,穿插在刷車功能的前后,使6個刷車功能可以靈活組合。
(3) 下層功能庫。將上層功能進一步拆解為更小的下層功能,同一個下層功能可能會被幾個上層功能多次調(diào)用。
設計單個功能的架構,使各個功能易于被調(diào)用組合。上、下層功能庫中每個功能三層架構如圖6所示。
▲圖6 每個功能三層架構
(1) 封裝層。對實現(xiàn)層的功能塊進行封裝,提供封裝后功能的調(diào)用入口,便于開發(fā)者調(diào)用。封裝層參考設計模式中的代理模式,對實現(xiàn)層進行代理。
(2) 實現(xiàn)層。按洗車順序調(diào)用其它功能,將零散的洗車動作串接起來,是整個功能的核心。對于下層功能,只調(diào)用獨立的基礎層,而上層功能除了調(diào)用基礎層,還可以額外調(diào)用下層功能。
(3) 基礎層。使用簡單的自鎖程序、點動程序等,提供本功能所用到的接觸器、變頻器、電磁閥等部件做基本運動的調(diào)用入口,用于被實現(xiàn)層調(diào)用。每個功能都配有單獨調(diào)用的基礎層,目的是降低與其它功能的耦合,避免多線圈問題,實現(xiàn)模塊化。
基礎層中的都是本功能所需的簡單運動,如橫刷上升、龍門前進,而下層功能庫中的是封裝好的復雜功能,如橫刷仿形升降、立刷仿形橫移。
單個功能的三層架構與每層的作用已進行設計,以下以上層功能庫中的往前刷車功能為例,詳細介紹如何編寫功能程序。
4.4.1 編寫基礎層功能塊
在編寫程序前,首先要明確往前刷車的步驟。往前刷車步驟為往前刷車尾,立刷換向,仿形刷車后部,刷后輪,仿形刷車中部,橫刷換向,刷前輪,仿形刷車前部,這一系列過程將會在實現(xiàn)層中編寫。其中,往前刷車尾和仿形刷車功能在下層功能庫中封裝完成,可直接調(diào)用。由此,可以明確在往前刷車功能的基礎層中,需要配備目前缺少的運動功能,如龍門前進、橫刷換向、立刷換向、輪刷伸縮、輪刷旋轉(zhuǎn)等。
在三菱GX WORKS3編程軟件中,新建一個FB功能塊,作為往前刷車功能的封裝層,在里面使用自鎖程序,完成所缺基礎功能的編寫,如圖7所示。
▲圖7 往前刷車功能基礎層程序
4.4.2 編寫實現(xiàn)層功能塊
新建一個FB功能塊,作為往前刷車功能的實現(xiàn)層,在里面調(diào)用其它功能,將往前刷車的過程連貫起來,如圖8所示。
▲圖8 往前刷車功能實現(xiàn)層程序
4.4.3 編寫封裝層功能塊
設計封裝層程序分為三個步驟,重點是做好實現(xiàn)層的代理,為其配備所需的基礎層,并管理好整個功能的啟用與關閉。
(1) 新建一個封裝層的功能塊,使用自鎖程序作為這個功能塊以后被調(diào)用的入口。將往前刷車功能的實現(xiàn)層功能塊、基礎層功能塊拖出來,使用自鎖程序的觸點作為這些功能塊的啟動條件。
(2) 將多次調(diào)用實現(xiàn)層功能塊的啟動信號、停止信號并聯(lián)起來,再接通自鎖程序中的啟動和停止線圈。要調(diào)用這個功能時,只要將新增的啟動信號、停止信號并聯(lián)在下方,即可方便地調(diào)用往前刷車功能。
(3) 做好準備與善后工作。用自鎖程序線圈的上升沿與下降沿去批量復位整個功能中用到的定時器、部分數(shù)據(jù)寄存器、中間繼電器,為功能的執(zhí)行做好準備,為功能的關閉做好復位。
往前刷車功能封裝層程序如圖9所示。
▲圖9 往前刷車功能封裝層程序
經(jīng)過以上設計,上層功能庫中的刷車功能、銜接功能,以及對上層功能進一步拆解得到的下層功能,都可通過三層架構進行實現(xiàn)與封裝,最終完成上層功能庫中的所有功能,供開發(fā)人員拼接洗車程序。
以下介紹如何使用這些功能快速拼接出一套洗車程序。以往后刷車、往前刷車、往后吹風、往前吹風為例,調(diào)用這四個刷車功能,然后在刷車功能的前后加上合適的銜接功能,即可完成拼接。程序拼接思路如圖10所示。
▲圖10 程序拼接思路
具體的功能拼接可編程序控制器程序如圖11所示,其中每個功能經(jīng)過封裝,可以方便調(diào)用。
▲圖11 功能拼接可編程序控制器程序
筆者設計了一種模塊化、易組合的自動洗車機可編程序控制器程序,便于增加新的洗車程序和維護現(xiàn)有的洗車程序。模塊化主要體現(xiàn)在洗車過程被拆解為一個個功能塊,且每個功能在自身的三層架構中配備了自己獨立調(diào)用的基礎層,降低耦合。易組合體現(xiàn)在每個功能經(jīng)過三層架構的封裝,可以當作線圈去調(diào)用,方便使用或關閉這一功能。
設計的程序架構不僅可用于洗車機,也為其它輸入輸出點數(shù)多,過程步驟多,需要按照功能分模塊且頻繁調(diào)用,面向客戶多樣化需求,頻繁迭代更新的可編程序控制器程序提供了參考。應用此程序架構的一般步驟如下:先將復雜的流程向下拆解為一個個較為獨立的功能;然后將其中可能會被多個功能調(diào)用的公共部分向下進一步拆解為更小的功能,直到?jīng)]必要繼續(xù)再拆解為止;之后使用單個功能的三層架構,從下往上完成每個功能的實現(xiàn)與封裝;最終編寫好整個功能庫,可以拼接任意程序。