(南京理工大學 機械工程學院,江蘇 南京 210094)
導彈水下發(fā)射異于水平陸基發(fā)射,具有儲彈量更大、反應時間更短、發(fā)射率更高、全方位發(fā)射率更廣、對目標飽和攻擊力更強的優(yōu)點[1]。基于TwinCAT ADS通信的原理,利用VC++進行上位機軟件設計開發(fā),上位機能夠?qū)⒅噶顐鬟f給下位機,使下位機受指令控制運行。同時,上位機接收下位機傳輸來的反饋信號以便實時觀測運動狀態(tài)。這樣能夠更好、更簡潔地進行數(shù)據(jù)采集和數(shù)據(jù)交換。上位機和下位機之間采取ADS通信。ADS通信響應時間極短,能夠快速控制電機進行相應的軌跡運動,達到技術指標要求。
本文控制對象是一個能夠放置在水下15 m的水下發(fā)射裝置,其機械結(jié)構(gòu)如圖1所示,主要包含發(fā)射管、搖架、旋轉(zhuǎn)軸、減速機、伺服電機和底座等組件。其中減速箱和伺服電機安裝在旁側(cè)的密封箱內(nèi),發(fā)射管通過伺服電機以及減速箱的驅(qū)動產(chǎn)生一定角度的擺動,實現(xiàn)用戶所要求的正弦運動、等速運動以及點動運動。當發(fā)射管運動到預期的點火角度,燃氣發(fā)生器會產(chǎn)生點火信號,并產(chǎn)生壓力燃氣,使其完成模擬彈發(fā)射。
為滿足控制要求,將水下發(fā)射測控系統(tǒng)的設計分為下位機硬件控制設計和上位機軟件管理設計兩方面。下位機控制設計基于TwinCAT,主要作用是實時控制電機,并將讀取的電機運動狀態(tài)傳遞給上位機;上位機控制軟件基于VC++,主要作用是將控制信號傳給下位機,同時接收下位機實時反饋的電機運動信息。
圖1 水下發(fā)射裝置機械結(jié)構(gòu)圖
所研究的水下發(fā)射系統(tǒng)主要滿足以下技術指標:
① 運行環(huán)境在水下15 m。
② 可以滿足各種曲線運動模式。例如,等速運動時,運動精度控制在1%;正弦運動時,擺動頻率為0.5 Hz,精度優(yōu)于0.5°。
③ 上位機能夠?qū)崟r顯示發(fā)射前、發(fā)射過程中和發(fā)射結(jié)束后的狀態(tài)的一些聯(lián)動信號,整個實驗過程中的檢測數(shù)據(jù)能夠保存并回放。
工控機采用了Beckhoff公司的C6920柜式工業(yè)PC,采用EtherCAT總線與總線端子各模塊以及伺服驅(qū)動器進行通信。EtherCAT可以在30 μs之內(nèi)處理1000個分布式的I/O口,具有拓撲性良好、性能優(yōu)良以及組成簡單等優(yōu)點。由于其龐大的網(wǎng)絡規(guī)模,適用于縱向集成[2]。
總線耦合器選用Beckhoff公司的EK1100,將以太網(wǎng)傳遞的信號轉(zhuǎn)化成為E-bus信號,再通過EtherCAT總線傳輸給各個端子模塊(包括EL系列的模擬輸入輸出模塊和數(shù)字輸入輸出模塊以及位置測量模塊等)??偩€耦合器以及總線的各個端子模塊和若干個EtherCAT端子組成一個從站,如圖2所示。
驅(qū)動器選用Beckhoff公司的AM8000系列伺服電機,該系列伺服驅(qū)動器包括單通道和雙通道兩種不同的通道,支持多種不同總線接口模式,使用更加方便快捷。
圖2 水下發(fā)射系統(tǒng)總體設計圖
為滿足上位機設計流程中的功能,上位機管理軟件采用VC++中的MFC模塊進行編寫。MFC模塊(Microsoft Foundation Class)即微軟基礎類庫,為用戶提供了一個面向?qū)ο蟮木幊探涌?,該層次?nèi)包括了Windows API用戶界面的部分,可以使用戶更加方便簡潔地以面向?qū)ο蟮姆绞絹黹_發(fā)應用程序[3]。利用該模塊可以便捷地建立人機交互界面,包括實現(xiàn)數(shù)據(jù)采集的功能和對計算機端口實時監(jiān)控的功能等。
上位機管理系統(tǒng)的流程圖如圖3所示。首先登錄系統(tǒng),在系統(tǒng)主菜單中選擇需要執(zhí)行的步驟。主菜單包括系統(tǒng)自檢、點動、聯(lián)動、數(shù)據(jù)查詢等選項,其中,點動需要設置俯仰機構(gòu)的正反轉(zhuǎn),而聯(lián)動需要首先設置采樣頻率和運行方式,之后再啟動電機進入發(fā)射狀態(tài)。下面詳細闡述上位機管理系統(tǒng)的設計。
TwinCAT的PLC是基于PC開發(fā)的,與傳統(tǒng)PLC相比,其數(shù)據(jù)處理能力以及通信能力都有很大的提升,且其遵循IEC61131-3標準,可以更加便捷地采取ST、FBD、IL、SFC、LD 5種不同的語言進行編程。本文數(shù)據(jù)采集利用軟PLC完成,首先將采集到的數(shù)據(jù)存儲在PLC的臨時存儲區(qū)域內(nèi),通過ADS上傳給上位機。數(shù)據(jù)采集的周期有兩種,分別是:8 ms,來源于CANopen數(shù)據(jù)接口傳感器的CANopen數(shù)據(jù)和CAN數(shù)據(jù)信號;100 ms,來源于電機變頻器以及總線耦合器的Profibus-DP數(shù)據(jù)信號。
上位機軟件采用C++進行開發(fā),臨時存儲的數(shù)據(jù)以鏈表形式存儲,上位機存儲的數(shù)據(jù)和采集的數(shù)據(jù)分別獨立在不同的線程中,防止了彼此干擾,做到了數(shù)據(jù)的相對獨立。
圖3 上位機管理系統(tǒng)總體流程圖
Beckhoff公司為了使各種高級計算機語言適用于ADS通信方式,為TwinCAT提供了一組不同的接口組件。這些接口組件均擁有一組接口函數(shù),如為使TcAdsDll適用于VC++,只需要配置完成就可以方便地調(diào)用這些接口函數(shù)。TwinCAT ADS可以通過兩種方式來調(diào)用接口函數(shù):① 采用變量名的方式,ADS會給每一個變量分配一個與其相對應的句柄,當用戶需要訪問的時候,直接獲取該變量所對應的句柄即可對該變量進行訪問;② 采用地址直接訪問的方式,首先使用索引組獲得變量的基地址,再通過索引偏移來獲取該變量的偏移地址,從而獲取需要訪問的變量[4]。
TwinCAT的通信方式有很多,采用VC++來實現(xiàn)通信,需要引用的接口函數(shù)為TcAdsDll,其引用步驟主要包括:添加接口函數(shù)給VC++工程;添加頭文件與庫函數(shù)的路徑以及庫函數(shù)TcAdsDll.lib到VC++工程中。其中添加接口函數(shù)給VC++工程中需要將#include“C:TwinCATADS ApiTcAdsDllIncludeTcAdsDef.h”和#include”C:TwinCATADS ApiTeAdsDllIncludeTcAdsAPI.h”兩個頭文件均放到VC++工程頭文件中[5]。操作完成后,界面如圖4所示。
圖4 添加頭文件及庫文件到VC++中
通過上述操作即可以調(diào)用TcAdsDll中的接口函數(shù),然后需要進行上位機與TwinCAT PLC的數(shù)據(jù)讀寫,關鍵步驟如下。
① 對ADS端口進行初始化[6],主要使用的函數(shù)有AdsPortOpen()和AdsGetLocalAddress(pAddr)。
② 通過CreateHandles()函數(shù)創(chuàng)建并初始化句柄函數(shù)[7],因為TwinCAT與MFC是通過ADS進行通信的,此處通過nPort=AdsPortOpen()打開ADS,之后使用nErr=AdsGetLocalAddress得到ADS的適配器地址,從而完成通信。
③ 讀寫PLC中的數(shù)據(jù),主要使用到AdsSyncReadWriteReq()、AdsSyncWriteReq()、AdsSyncReadReq()三個函數(shù)[8]。AdsSyncReadWriteReq()包含了AdsSyncReadWriteReq(pAddr,0xF020,0x0,sizeof(Status Word),&Status Word)和AdsSyncReadWriteReq(pAddr,0xF020,0x2,22,&Input22bByte[0])。前者用于從ADS中讀取狀態(tài)信息,pAddr為ADS的地址位,0xF020為段地址,0xO為偏移地址,sizeof(StatusWord)用于定義StatusWord的數(shù)據(jù)長度,&StatusWord為接收數(shù)據(jù)的緩存地址。而后者用于從ADS讀取端口信息,前部變量相同,&Input22Byte[0]用于接收數(shù)據(jù)的緩存地址[5]。
④ 關閉ADS端口。
根據(jù)水下發(fā)射測控系統(tǒng)的總體設計方案,搭建水下發(fā)射實驗平臺,如圖5所示??紤]到水下15 m無波浪力影響的發(fā)射不會對發(fā)射過程造成過大影響,故本次實驗在陸基表面進行。
圖5 水下發(fā)射平臺實體圖
在TwinCAT的運動模式下,對發(fā)射筒轉(zhuǎn)動角度時間進行曲線擬合,并采用最小二乘法來計算不同控制情況的下的角速度。為確保精確度,進一步通過擬合誤差計算公式
(1)
來計算其實際角速度ω0與擬合角速度ω之間的誤差。
選擇等速運動選項,并設置需要的等速運動速度參數(shù),單擊“運行”按鈕即可開始等速運動實驗,選取角速度為30°/s,收集實驗數(shù)據(jù)得到理論角速度和實際角速度的對比圖(見圖6)和其中一個循環(huán)周內(nèi)的速度對比圖(見圖7)。
圖6 30°/s角速度下理論與實際角速度曲線
圖7 30°/s角速度下一個循環(huán)周期內(nèi)理論與實際角速度曲線
由圖7可見,加速段的角位移為10°,勻速段的角位移為40°,而減速段的角位移為10°,符合勻速段的角位移大于40°的要求。為進一步驗證其誤差是否在精度要求之內(nèi),從實驗數(shù)據(jù)中選取9組數(shù)據(jù),計算擬合誤差,其結(jié)果如表1所示。由表1可知,擬合誤差均低于0.01%,而角速度誤差均小于1%,可以忽略不計,等速運動滿足技術要求。
表1 9組30°/s角速度下誤差分析表
在TwinCAT的運動模式下,選擇正弦運動模式,收集數(shù)據(jù)擬合曲線,擬合曲線與理論曲線基本重疊,如圖8所示。運動角度范圍在設定的85°~95°之間,運動頻率為0.5 Hz,為保證結(jié)果準確性,再從實驗數(shù)據(jù)中選取9組數(shù)據(jù)進行誤差分析,結(jié)果如表2所示。平均角度誤差均控制在0.05°以內(nèi),最大角度誤差均控制在0.5°內(nèi),正弦運動滿足技術要求。
圖8 正弦運動實際角速度曲線
實驗序號平均角度誤差最大角度誤差實驗序號平均角度誤差最大角度誤差10.050.2460.050.1720.020.2970.050.2730.010.2480.040.2140.040.1990.050.2650.030.19
設計了基于VC++和TwinCAT的水下發(fā)射系統(tǒng),上位機與下位機之間使用ADS進行通信,根據(jù)設計方案搭建實驗平臺,使其運動軌跡能夠滿足技術指標要求。在上位機設計過程中,著重分析了TwinCAT PLC與上位機之間信息讀寫功能的實現(xiàn)以及TwinCAT與VC++接口的實現(xiàn)。實驗平臺在水下搭建完畢之后,進行了兩種運動的實驗檢測,結(jié)果證實基于TwinCAT的水下發(fā)射平臺能夠滿足技術指標要求,對水下平臺的控制研究具有很大的參考價值。