(南京理工大學 機械工程學院,江蘇 南京 210094)
導彈水下發射異于水平陸基發射,具有儲彈量更大、反應時間更短、發射率更高、全方位發射率更廣、對目標飽和攻擊力更強的優點[1]?;赥winCAT ADS通信的原理,利用VC++進行上位機軟件設計開發,上位機能夠將指令傳遞給下位機,使下位機受指令控制運行。同時,上位機接收下位機傳輸來的反饋信號以便實時觀測運動狀態。這樣能夠更好、更簡潔地進行數據采集和數據交換。上位機和下位機之間采取ADS通信。ADS通信響應時間極短,能夠快速控制電機進行相應的軌跡運動,達到技術指標要求。
本文控制對象是一個能夠放置在水下15 m的水下發射裝置,其機械結構如圖1所示,主要包含發射管、搖架、旋轉軸、減速機、伺服電機和底座等組件。其中減速箱和伺服電機安裝在旁側的密封箱內,發射管通過伺服電機以及減速箱的驅動產生一定角度的擺動,實現用戶所要求的正弦運動、等速運動以及點動運動。當發射管運動到預期的點火角度,燃氣發生器會產生點火信號,并產生壓力燃氣,使其完成模擬彈發射。
為滿足控制要求,將水下發射測控系統的設計分為下位機硬件控制設計和上位機軟件管理設計兩方面。下位機控制設計基于TwinCAT,主要作用是實時控制電機,并將讀取的電機運動狀態傳遞給上位機;上位機控制軟件基于VC++,主要作用是將控制信號傳給下位機,同時接收下位機實時反饋的電機運動信息。

圖1 水下發射裝置機械結構圖
所研究的水下發射系統主要滿足以下技術指標:
① 運行環境在水下15 m。
② 可以滿足各種曲線運動模式。例如,等速運動時,運動精度控制在1%;正弦運動時,擺動頻率為0.5 Hz,精度優于0.5°。
③ 上位機能夠實時顯示發射前、發射過程中和發射結束后的狀態的一些聯動信號,整個實驗過程中的檢測數據能夠保存并回放。
工控機采用了Beckhoff公司的C6920柜式工業PC,采用EtherCAT總線與總線端子各模塊以及伺服驅動器進行通信。EtherCAT可以在30 μs之內處理1000個分布式的I/O口,具有拓撲性良好、性能優良以及組成簡單等優點。由于其龐大的網絡規模,適用于縱向集成[2]。
總線耦合器選用Beckhoff公司的EK1100,將以太網傳遞的信號轉化成為E-bus信號,再通過EtherCAT總線傳輸給各個端子模塊(包括EL系列的模擬輸入輸出模塊和數字輸入輸出模塊以及位置測量模塊等)。總線耦合器以及總線的各個端子模塊和若干個EtherCAT端子組成一個從站,如圖2所示。
驅動器選用Beckhoff公司的AM8000系列伺服電機,該系列伺服驅動器包括單通道和雙通道兩種不同的通道,支持多種不同總線接口模式,使用更加方便快捷。

圖2 水下發射系統總體設計圖
為滿足上位機設計流程中的功能,上位機管理軟件采用VC++中的MFC模塊進行編寫。MFC模塊(Microsoft Foundation Class)即微軟基礎類庫,為用戶提供了一個面向對象的編程接口,該層次內包括了Windows API用戶界面的部分,可以使用戶更加方便簡潔地以面向對象的方式來開發應用程序[3]。利用該模塊可以便捷地建立人機交互界面,包括實現數據采集的功能和對計算機端口實時監控的功能等。
上位機管理系統的流程圖如圖3所示。首先登錄系統,在系統主菜單中選擇需要執行的步驟。主菜單包括系統自檢、點動、聯動、數據查詢等選項,其中,點動需要設置俯仰機構的正反轉,而聯動需要首先設置采樣頻率和運行方式,之后再啟動電機進入發射狀態。下面詳細闡述上位機管理系統的設計。
TwinCAT的PLC是基于PC開發的,與傳統PLC相比,其數據處理能力以及通信能力都有很大的提升,且其遵循IEC61131-3標準,可以更加便捷地采取ST、FBD、IL、SFC、LD 5種不同的語言進行編程。本文數據采集利用軟PLC完成,首先將采集到的數據存儲在PLC的臨時存儲區域內,通過ADS上傳給上位機。數據采集的周期有兩種,分別是:8 ms,來源于CANopen數據接口傳感器的CANopen數據和CAN數據信號;100 ms,來源于電機變頻器以及總線耦合器的Profibus-DP數據信號。
上位機軟件采用C++進行開發,臨時存儲的數據以鏈表形式存儲,上位機存儲的數據和采集的數據分別獨立在不同的線程中,防止了彼此干擾,做到了數據的相對獨立。

圖3 上位機管理系統總體流程圖
Beckhoff公司為了使各種高級計算機語言適用于ADS通信方式,為TwinCAT提供了一組不同的接口組件。這些接口組件均擁有一組接口函數,如為使TcAdsDll適用于VC++,只需要配置完成就可以方便地調用這些接口函數。TwinCAT ADS可以通過兩種方式來調用接口函數:① 采用變量名的方式,ADS會給每一個變量分配一個與其相對應的句柄,當用戶需要訪問的時候,直接獲取該變量所對應的句柄即可對該變量進行訪問;② 采用地址直接訪問的方式,首先使用索引組獲得變量的基地址,再通過索引偏移來獲取該變量的偏移地址,從而獲取需要訪問的變量[4]。
TwinCAT的通信方式有很多,采用VC++來實現通信,需要引用的接口函數為TcAdsDll,其引用步驟主要包括:添加接口函數給VC++工程;添加頭文件與庫函數的路徑以及庫函數TcAdsDll.lib到VC++工程中。其中添加接口函數給VC++工程中需要將#include“C:TwinCATADS ApiTcAdsDllIncludeTcAdsDef.h”和#include”C:TwinCATADS ApiTeAdsDllIncludeTcAdsAPI.h”兩個頭文件均放到VC++工程頭文件中[5]。操作完成后,界面如圖4所示。

圖4 添加頭文件及庫文件到VC++中
通過上述操作即可以調用TcAdsDll中的接口函數,然后需要進行上位機與TwinCAT PLC的數據讀寫,關鍵步驟如下。
① 對ADS端口進行初始化[6],主要使用的函數有AdsPortOpen()和AdsGetLocalAddress(pAddr)。
② 通過CreateHandles()函數創建并初始化句柄函數[7],因為TwinCAT與MFC是通過ADS進行通信的,此處通過nPort=AdsPortOpen()打開ADS,之后使用nErr=AdsGetLocalAddress得到ADS的適配器地址,從而完成通信。
③ 讀寫PLC中的數據,主要使用到AdsSyncReadWriteReq()、AdsSyncWriteReq()、AdsSyncReadReq()三個函數[8]。AdsSyncReadWriteReq()包含了AdsSyncReadWriteReq(pAddr,0xF020,0x0,sizeof(Status Word),&Status Word)和AdsSyncReadWriteReq(pAddr,0xF020,0x2,22,&Input22bByte[0])。前者用于從ADS中讀取狀態信息,pAddr為ADS的地址位,0xF020為段地址,0xO為偏移地址,sizeof(StatusWord)用于定義StatusWord的數據長度,&StatusWord為接收數據的緩存地址。而后者用于從ADS讀取端口信息,前部變量相同,&Input22Byte[0]用于接收數據的緩存地址[5]。
④ 關閉ADS端口。
根據水下發射測控系統的總體設計方案,搭建水下發射實驗平臺,如圖5所示。考慮到水下15 m無波浪力影響的發射不會對發射過程造成過大影響,故本次實驗在陸基表面進行。

圖5 水下發射平臺實體圖
在TwinCAT的運動模式下,對發射筒轉動角度時間進行曲線擬合,并采用最小二乘法來計算不同控制情況的下的角速度。為確保精確度,進一步通過擬合誤差計算公式
(1)
來計算其實際角速度ω0與擬合角速度ω之間的誤差。
選擇等速運動選項,并設置需要的等速運動速度參數,單擊“運行”按鈕即可開始等速運動實驗,選取角速度為30°/s,收集實驗數據得到理論角速度和實際角速度的對比圖(見圖6)和其中一個循環周內的速度對比圖(見圖7)。

圖6 30°/s角速度下理論與實際角速度曲線

圖7 30°/s角速度下一個循環周期內理論與實際角速度曲線
由圖7可見,加速段的角位移為10°,勻速段的角位移為40°,而減速段的角位移為10°,符合勻速段的角位移大于40°的要求。為進一步驗證其誤差是否在精度要求之內,從實驗數據中選取9組數據,計算擬合誤差,其結果如表1所示。由表1可知,擬合誤差均低于0.01%,而角速度誤差均小于1%,可以忽略不計,等速運動滿足技術要求。

表1 9組30°/s角速度下誤差分析表
在TwinCAT的運動模式下,選擇正弦運動模式,收集數據擬合曲線,擬合曲線與理論曲線基本重疊,如圖8所示。運動角度范圍在設定的85°~95°之間,運動頻率為0.5 Hz,為保證結果準確性,再從實驗數據中選取9組數據進行誤差分析,結果如表2所示。平均角度誤差均控制在0.05°以內,最大角度誤差均控制在0.5°內,正弦運動滿足技術要求。

圖8 正弦運動實際角速度曲線

實驗序號平均角度誤差最大角度誤差實驗序號平均角度誤差最大角度誤差10.050.2460.050.1720.020.2970.050.2730.010.2480.040.2140.040.1990.050.2650.030.19
設計了基于VC++和TwinCAT的水下發射系統,上位機與下位機之間使用ADS進行通信,根據設計方案搭建實驗平臺,使其運動軌跡能夠滿足技術指標要求。在上位機設計過程中,著重分析了TwinCAT PLC與上位機之間信息讀寫功能的實現以及TwinCAT與VC++接口的實現。實驗平臺在水下搭建完畢之后,進行了兩種運動的實驗檢測,結果證實基于TwinCAT的水下發射平臺能夠滿足技術指標要求,對水下平臺的控制研究具有很大的參考價值。