楊凈宇,林志宸,趙 德,潘孝斌
(南京理工大學 機械工程學院, 南京 210094)
制退機是火炮反后坐裝置的主要部件,對反后坐裝置及火炮整體的性能有非常重要的影響。現有的節制桿式制退機通過機械調節改變節制環上流液孔面積的大小從而調節液壓阻力[1],仍然存在不能在相同射角和不同裝藥量的情況下調節后坐長度等缺陷。文中的研究對象是一種新型閥控式制退機,其優勢在于可根據不同發射工況實現流液孔隙的改變,對液壓阻力變化規律進行預先調節。為了獲得理想的液壓阻力曲線,在制退機上應用電機控制技術以使反后坐裝置能夠按照預設的目的對火炮的后坐阻力進行控制[2]。
火炮后坐過程十分短暫,為保證液壓阻力的變化平穩,流液孔面積的變化必須擁有極高的控制精度、響應性和實時性。直流伺服電機利用脈沖精確定位,響應時間短,速度、位置控制具有很高的精確度。CAN現場總線技術相較傳統的伺服控制技術而言實時性和可靠性更強,CANopen協議是基于CAN總線的應用層協議,因此本文提出了一種基于CANopen協議的伺服電機控制方案。
電機控制活塞調節液壓阻力的原理如圖1所示,將電機安裝在制退桿的內腔,減速器固定在桿內并與機械傳動軸相連,傳動軸外側連接動活塞,動活塞與定活塞上按相同格局布有大小相等的漏口,即流液孔。定活塞上有機械限位保證兩者錯開角度在一定范圍內。電機另一側經套筒向外引線與驅動器、電源和嵌入式微控制器相連接,嵌入式微控制器與上位機通過串口連接用于接收實時數據。
工作時制退桿固定不動,外側制退筒受力運動擠壓工作腔的液體,同時微控制器接收到觸發信號,驅動電機帶動傳動軸控制動活塞上流液孔按照預設規律運動與定活塞小孔錯開一定角度,工作腔中的制退液經兩孔錯開的縫隙進入非工作腔,非工作腔因制退桿抽出而產生真空,形成液壓阻力。

1.動活塞;2.定活塞;3.減速器;4.伺服電機;5.活塞筒套;6.活塞定位端蓋;7.傳動軸;8.機械限位;9.流液孔
圖1 制退機結構示意圖
CAN現場總線是用于解決工業現場智能儀器、控制器和執行機構之間數字通信和與控制系統之間傳遞信息問題的一種工業數據總線。在基于CAN總線的工業自動化應用中,CANopen協議為CAN網絡提供了標準、統一的通訊模式,在應用層面為驅動設備、控制器、可編程控制器或編碼器等標準設備定義了相應的功能[3]。DS301是CANopen協議的基礎協議,其中描述的設備模型為CANopen程序設計提供了整體框架,其模型如圖2所示。
通信對象指具體服務中可能要用到的參數,包括了傳送數據用的不同類型的CAN報文[4]。CANopen中定義了4種通信對象:網絡管理對象(NMT)負責主從站間的狀態管理、服務數據對象(SDO)負責配置節點參數、過程數據對象(PDO)負責實時傳輸數據、特殊功能對象(同步對象SYNC、應急對象EMCY等)用于同步通信對象和處理錯誤報警等。
通信對象的集合就是對象字典。對象字典是CANopen協議的核心概念,它預定義了一個設備所有的功能參數和通信參數,就像一個設備接口,可以讓別的設備從中讀懂該設備的內容[5]。對象字典中的每個對象都有一個16進制的地址(索引)可供尋址,其中索引0x1000到0x1FFFF的通信協議對象在DS301協議中有詳細描述,索引0x6000到0x9FFFF對應的標準設備協議區在伺服驅動子協議DSP402中有詳細描述。

圖2 CANopen設備模型示意圖
運動控制方案的設計基于對火炮后坐運動規律的分析。制退機內部的流體運動十分復雜,為了獲得理想后坐長度,液壓阻力在后坐過程中需不斷變化。相較于機械調節的穩定快速,電控方案對響應和執行速度提出精確要求,即要在后坐過程的200 ms左右時間內完成對流液孔面積的非線性變化控制。
傳統的電機轉速控制技術在連續調速時存在過渡時間,無法滿足制退機的極短工作時間要求。從制退機工作原理的角度出發分析,流液孔面積的改變對應兩個活塞的錯開角度,編碼器輸出端脈沖數可經減速器轉化為轉動軸轉角,因此若要在規定時間內讓活塞轉到指定角度,就要讓電機轉到指定位置,即編碼器在對應時刻輸出對應的脈沖。
DSP402是用于描述伺服驅動與運動控制的CANopen子協議。對基于DSP402協議的電機控制模式進行比較分析,其中的位置插值模式(Interpolated Position Mode)是一種基于標準位置模式的算法,其原理如圖3所示:主機在同步周期內向驅動器軸發送插值運動數據,驅動器軸根據接收數據計算從一個位置點到下一個位置點所需的速度、加速度,有足夠多的插值點電機就能按規定軌跡運行。
位置插值從理論上符合本文所研究的基于預設目標驅動電機按步運動的控制方案。通過前期流場仿真得到一定 后坐速度和流液孔面積下工作腔的壓力值解出液壓阻力系數K,再由式(1)和式(2)采用迭代方法計算出后坐速度和后坐阻力隨時間的變化關系,從而得到流液孔面積關于動活塞轉速的變化規律[6]。
(1)
FR=FΦh+Ff+FT+F
(2)
(3)

圖3 位置插值算法原理示意圖
活塞轉角與編碼器輸出脈沖的關系如下

(4)
式中;P為編碼器脈沖數;θ為活塞轉角;i為減速器減速比;N為編碼器分辨率,電機采用的行星齒輪減速器減速比為81,增量式編碼器的分辨率為2000PPR。計算得到一次后坐運動中要求的電機運動參數如表1所示。

表1 后坐運動時間與電機運動參數
為了準確監測試驗結果,需要以插值數據點為基礎計算出電機的運動軌跡,即編碼器的輸出脈沖數曲線。3次樣條插值是一種通過已知點來模擬未知函數的算法,在Matlab軟件中利用spline插值函數可以將表1中的數據點擬合成完整的編碼器輸出曲線,如圖4所示。

圖4 編碼器輸出曲線
控制系統的核心是基于Cortex-M4內核的STM32F407ZGT6嵌入式微控制器,運行速度最高達到168 MHz,擁有1 MB程序存儲器和192 KB的RAM,該控制板具有強大的外設功能,通過板載的CAN接口就可以實現與驅動器的CAN通信,無需額外的硬件電路設計。ST公司開發了專用于STM32F4系列控制器的固件庫代碼并將其集成到了Keil MDK編程開發環境中[7]。STM32配置包括時鐘使能、GPIO引腳分配、中斷優先級管理等,下載固件庫源碼到MDK工程中編譯即完成了系統的硬件配置。
板級支持包BSP(Board Support Package)介于主板硬件和軟件驅動程序之間,用于實現對操作系統的支持,為控制板的硬件功能提供統一的接口。BSP的設計以不同的嵌入式操作系統為基礎,遵循簡潔原則,保證系統的正常啟動[8]。BSP程序的主要設計流程如圖5所示。

圖5 BSP設計流程框圖
完成STM32硬件配置和中間層設計的基礎上進行CANopen協議軟件設計。軟件層設計主要包括操作系統和CANopen通信協議兩部分。
RTOS(Real Time Operating System)實時多任務操作系統是嵌入式應用軟件的基礎開發平臺。RTOS是嵌入在代碼中的一段程序,為在單片機上運行的嵌入式控制系統調度任務,優化CPU分配,加快系統響應時間。常用的嵌入式操作系統包括Linux、uC/OS-Ⅱ、FreeRTOS等,其中FreeRTOS實時操作系統具有源碼公開、多平臺支持、調度策略靈活等特點,非常適合在單片機上運行[9]。FreeRTOS提供了五種內存分配方案用于不同的應用場合,其中內存管理策略heap_4采用最佳匹配算法靈活申請調用和釋放內存,同時用合并算法將剩余內存合并成新的大塊,適用于在應用代碼中直接使用移植層內存分配方案的應用程序且可以重復分配和刪除具有相同堆棧空間的任務,便于后期實驗調整電機運動參數,因此選擇此內存分配策略。
CANopen協議棧設計以官方提供的CanFestival開源協議棧源碼為基礎移植到所使用的STM32F4開發板中。協議棧中定義了3.1節中描述的通信對象的功能。主控程序設計首先進行PDO和SDO的配置。PDO配置包括RPDO和TPDO,根據DS301協議中的索引1 400~1 403 h、1 600~1 601 h、1 800~1 803 h和1A00進行設置。所有控制報文均由SDO寫入,包括電機的操作模式、目標位移、運行速度、加速度等參數。配置完成后處理設備狀態機,狀態機用于描述設備狀態和驅動器控制順序,只有當驅動器使能時控制程序才能啟動,用控制字6 040 h可以更改狀態并用6 041 h讀取設備狀態。最后進入工作狀態,通過索引6 060 h將工作模式轉換到插值模式[10],將表1中的參數按順序寫入插值程序中,完成程序設置。控制程序設計流程如圖6所示。

圖6 插值位置程序設計流程框圖
將所有配置完成的硬件進行連接即可進行運行測試,如圖7所示。

圖7 電機運行測試
結果監測根據位置插值模式所用的索引6 064 h從編碼器中讀取電機的實際位置(Position_Actual_Value),將傳輸數據對象TPDO的位置數據采樣周期設置為10 ms。根據上位機實際獲取的編碼器端輸出脈沖數據計算出程序控制下的實際運動曲線如圖8所示,與2.2節理論計算結果對比,電機運行過程中活塞轉角誤差在±0.009°以內保持平穩,在啟動時由于響應原因產生滯后誤差,最大為+0.046°,根據式(3)可知啟動時流液孔面積為最大,其變化率對結果值影響可以忽略。制動時產生超調誤差,最大為-0.049°,在后續研究中可以考慮采用機械限位等方法予以彌補。

圖8 上位機監測結果
針對傳統控制方法的不足之處提出了基于CANopen和STM32微控制器的電機控制制退機液壓阻力方案,根據仿真計算的某工況下活塞流液孔面積變化規律推得活塞轉角即編碼器輸出脈沖數隨時間的變化關系,通過基于位置插值算法的控制模式完成了所要求的電機控制程序,并通過上位機的反饋數據將實際運行結果與理論值進行了比較。
運行測試結果表明程序具有一定控制精度,采用位置插值模式的控制系統方案能夠驅動電機按照預設目標運行到設定好的目標點。在此基礎上可以進行后續的墜落模擬試驗探究液壓阻力控制效果,并且考證電機體積、震動在實際工況下的可行性問題。