劉青林 王庭有
(昆明理工大學(xué)機電工程學(xué)院)
PLC在運動控制系統(tǒng)中, 脈沖信號的輸出方法主要有以下兩種[1]:
a.脈沖輸出功能集成在PLC中,這是目前大部分PLC采用的方式,例如三菱FX3U系列PLC、西門子S7-1200系列PLC等。此類PLC自帶高速脈沖輸出功能,但與單獨的運動控制模塊相比速度較慢。
b.添加脈沖輸出模塊。 這種模塊能夠?qū)崿F(xiàn)較簡單的運動控制,但脈沖輸出的速度很高,適合在對速度和精度有較高要求的場合使用。
在定位控制中,一路脈沖信號只能控制一臺步進電機的運動,一個單軸的運動軌跡只能是直線運動或者圓周運動。 但有時在工業(yè)控制中,又必須實現(xiàn)多個軸的相互聯(lián)動運動。 例如在數(shù)控機床的加工過程中,在理論上刀具必須非常精確地沿著被加工工件的輪廓運動,同時滿足對加工對象的精度要求[2]。 但是真正加工的工件輪廓可能是各種形狀,有一些是簡單的曲線,如直線段和圓弧,還有一些是復(fù)雜曲線。 直接生成復(fù)雜曲線的運動軌跡會耗費大量的計算資源,因此在實際應(yīng)用中通常使用簡單的線型去擬合復(fù)雜曲線,同時采用一系列微小的直線段去逼近直線或圓弧,以滿足對控制精度的要求。 直線插補算法可根據(jù)加工速度的要求, 在給定的數(shù)據(jù)點坐標(biāo)之間,連續(xù)計算出若干中間點的坐標(biāo)值,從而擬合出預(yù)設(shè)的曲線。
筆者主要利用逐點比較法實現(xiàn)插補算法控制。 逐點比較法的基本原理為:在被控對象(被控工件)運動過程中,不斷地使被控對象與插補直線進行相對位置比較,并依據(jù)結(jié)果使被控對象沿著運動誤差逐漸縮小的方向, 做平行于x軸或y軸方向的階梯式直線運動,直到到達直線運動的終點為止[3~5]。逐點比較法的直線插補過程示意圖如圖1所示。
圖1 逐點比較法的直線插補過程示意圖
以直線插補算法的第一象限(圖2)為例。
圖2 第一象限直線插補偏差位置判斷
設(shè)第一象限的運動軌跡為直線oN,終點坐標(biāo)N(XN,YN),動點的位置有3種情況:位于點A、B或C。 設(shè)動點P從o點開始通過直線插補的方式最后到達N點,完成oN的位移。首先需要判斷動點的位置,假設(shè)動點坐標(biāo)為B(X,Y),位于oN下方,此時oB的斜率tan θB小于oN的斜率tan θN,整理得:
同樣,也可以得到動點位于A點、C點時的公式:
a.動點位于A點時,YXN-YNX=0;
b.動點位于C點時,YXN-YNX>0。
設(shè)判斷公式F=YXN-YNX,則有:
a. 當(dāng)F=0時,工件可以向x軸或y軸移動,但通常規(guī)定向x軸方向移動;
b.當(dāng)F<0時,工件向y軸方向移動;
c.當(dāng)F>0時,工件向x軸方向移動。
工件每移動一步后都需要進行判定,確定下一步的運行方向,如此反復(fù),直到到達終點N。
(3)效益估算。①節(jié)水效益本項目總干渠節(jié)水量Q計算見(3-1),控制灌溉面積57.92萬畝,得出共節(jié)水1185.51萬m3,按照當(dāng)?shù)爻杀舅畠r0.10元/m3計算,年節(jié)水金額為118.55萬元。
由于計算過程中需要用到乘法,會直接影響嵌入式PLC的運算速度, 因此為了簡化算法進行以下變換:
a. 當(dāng)F≥0時, 動點向x軸方向運動一步到達點(X+1,Y),令新的偏差值為F′,代入判斷公式并整理得F′=F-YN;
b. 當(dāng)F<0時,動點向y軸方向運動一步到達點(X,Y+1),代入判斷公式并整理得F′=F+XN。
工件到達曲線終點時必須自動停止運行,需要一個計數(shù)器統(tǒng)計運行的步數(shù),并且在每一步后進行終點判斷,當(dāng)計數(shù)值為0時,表示工件已經(jīng)到達終點,停止運動。
嵌入式PLC的脈沖輸出硬件電路如圖3所示。該電路通過高速光電耦合器6N137將PLC內(nèi)外進行電氣隔離,該光耦的最大傳輸速度可以達到10 Mbit/s, 并采用PNP三極管2SA954對外部設(shè)備進行驅(qū)動。OUT0和OUT1連接STM32單片機的PE9和PE10 引 腳, 與 單 片 機 內(nèi) 部 的TIM8_CH1 和TIM8_CH2相匹配,Q0和Q1接外部負(fù)載,COM_Q0和COM_Q1為Q0、Q1的公共端。
圖3 嵌入式PLC的脈沖輸出硬件電路
嵌入式PLC的硬件平臺采用STM32單片機作為中央處理器, 該單片機輸出脈沖的方法有很多,包括PWM輸出、強制輸出、電平翻轉(zhuǎn)輸出及單脈沖輸出等[6]。
本系統(tǒng)中嵌入式PLC選擇定時器的PWM輸出作為運動控制指令脈沖信號的輸出方法。 運動控制指令需要輸出指定數(shù)量的脈沖,其控制方法是使用STM32單片機中的定時器主從模式, 其結(jié)構(gòu)示意圖如圖4所示。
圖4 定時器主從模式結(jié)構(gòu)示意圖
直線插補指令的作用是讓兩個軸的聯(lián)動沿著一條直線軌跡運動。 在直線插補指令中,一般起點為兩軸當(dāng)前所在位置,而終點需要在指令中進行設(shè)置,分別是x軸和y軸的增量值。 直線插補運動指令梯形圖如圖5所示。 其中,IN1為脈沖頻率,IN2為直線插補的步長,IN3為x軸終點坐標(biāo),IN4為y軸終點坐標(biāo),OUT1為x軸輸出端口,OUT2為y軸輸出端口。
圖5 直線插補運動指令梯形圖
直線插補程序流程如圖6所示。
圖6 直線插補程序流程
直線插補指令執(zhí)行步驟如下:
a. 開始直線插補指令后,首先對運動進行規(guī)劃,將需要的參數(shù)進行初始化,計算出插補的總步數(shù),確定直線插補的象限,并將直線插補指令的標(biāo)志位置1;
b. 判斷軸所在的象限,并根據(jù)其位置進行插補;
c. 根據(jù)步驟b計算出的輸出軸、脈沖數(shù)量、運動方向調(diào)用脈沖輸出程序,進行脈沖輸出;
d. 判斷是否已經(jīng)抵達曲線的終點,若還沒抵達曲線的終點則重復(fù)執(zhí)行步驟b,若已完成,則跳出程序。
筆者分析了直線插補算法的原理,依托于嵌入式PLC硬件平臺,設(shè)計并實現(xiàn)了直線插補指令,使PLC可以進行雙軸運動控制。 筆者設(shè)計的基于ARM的嵌入式PLC直線插補運動控制方法, 通過擬合預(yù)設(shè)曲線,在滿足加工速度要求的同時可以滿足對控制精度的要求。