孟 娟,林希佳
(中國(guó)航天科工集團(tuán)伺服技術(shù)研究所,南京 210006)
高動(dòng)態(tài)電動(dòng)伺服機(jī)構(gòu)1553B總線通信的設(shè)計(jì)與實(shí)現(xiàn)
孟 娟,林希佳
(中國(guó)航天科工集團(tuán)伺服技術(shù)研究所,南京 210006)
目前1553B總線通信在航空航天領(lǐng)域應(yīng)用廣泛,電動(dòng)伺服機(jī)構(gòu)作為導(dǎo)彈控制系統(tǒng)的重要組成部分,大量采用1553B進(jìn)行總線通信。高動(dòng)態(tài)要求下電動(dòng)伺服機(jī)構(gòu)控制優(yōu)先級(jí)一般高于1553B通信處理的優(yōu)先級(jí),主要介紹基于BU-61581S6總線接口協(xié)議芯片RT端軟件接收數(shù)據(jù)的時(shí)序處理方法,保證高動(dòng)態(tài)條件下提高1553B的通信速率和可靠性以及電動(dòng)伺服機(jī)構(gòu)的高動(dòng)態(tài)響應(yīng)。
1553B;高速率;高可靠性;接收數(shù)據(jù); 時(shí)序設(shè)置
電動(dòng)伺服機(jī)構(gòu)是導(dǎo)彈控制系統(tǒng)中必不可少的組成部分。近年來(lái),電動(dòng)伺服因在生產(chǎn)制造以及使用維護(hù)等方面的優(yōu)勢(shì)在航天產(chǎn)品上的應(yīng)用越來(lái)越普遍,且伴隨著技術(shù)進(jìn)步,電動(dòng)伺服向大功率、高動(dòng)態(tài)場(chǎng)合拓展[1]。控制軟件作為電動(dòng)伺服機(jī)構(gòu)的“大腦”,除了要完成快速、高精度的閉環(huán)控制,還要與硬件電路共同實(shí)現(xiàn)與飛控計(jì)算機(jī)間的雙向1553B數(shù)據(jù)通信[2]。
1553B總線方案具有可靠性高、實(shí)時(shí)性好、開(kāi)放性和容錯(cuò)性強(qiáng)等優(yōu)點(diǎn),選用1553B數(shù)據(jù)總線作電動(dòng)伺服機(jī)構(gòu)與彈上及地面綜合測(cè)試系統(tǒng)的聯(lián)網(wǎng)手段,能夠有效地簡(jiǎn)化系統(tǒng)結(jié)構(gòu),提高系統(tǒng)可靠性和工作效率,從而提升系統(tǒng)的整體性能。所有符合1553B協(xié)議的芯片都遵守指令/響應(yīng)型通信協(xié)議,有3種工作模式:總線控制器(BC)、總線監(jiān)視器(BM)和遠(yuǎn)程終端(RT)[3-5]。
本文以DSPTMS320F2812芯片[6]、BU-61581S6接口芯片[7]為例,介紹電動(dòng)伺服機(jī)構(gòu)1553B總線通信接收數(shù)據(jù)的時(shí)序設(shè)置方法。1553B中斷選用外部中斷XINT1,電動(dòng)伺服機(jī)構(gòu)閉環(huán)控制中斷選用CPU定時(shí)器TIMER0,對(duì)于2812芯片而言外部中斷XINT1優(yōu)先級(jí)高于定時(shí)器TIMER0。由于電動(dòng)伺服機(jī)構(gòu)本身要實(shí)現(xiàn)高動(dòng)態(tài),要求軟件控制周期在微秒級(jí),在控制過(guò)程中需要優(yōu)先考慮電動(dòng)伺服機(jī)構(gòu)的閉環(huán)控制功能。程序初始化完成后進(jìn)入循環(huán)等待中斷,為避免1553B通信長(zhǎng)時(shí)間占用XINT1中斷而影響電動(dòng)伺服機(jī)構(gòu)的閉環(huán)控制功能,在進(jìn)入1553B中斷進(jìn)行標(biāo)志位置位后立刻退出中斷,等待周期定時(shí)器處理完成后,在循環(huán)等待中查詢標(biāo)志位進(jìn)行通信協(xié)議的處理[8-9]。軟件中斷處理流程如圖1所示。
圖1 軟件中斷處理流程圖Fig.1 Interrupt processing flow chart
2.1 RT模式下BU-61581S6芯片處理消息方式
1553B協(xié)議芯片BU-61581S6需要寫(xiě)入數(shù)據(jù)時(shí)首先更新堆棧指針,然后進(jìn)行數(shù)據(jù)寫(xiě)入操作,數(shù)據(jù)寫(xiě)入完成后觸發(fā)1553B中斷。通信過(guò)程中對(duì)于每一個(gè)被處理的消息在堆棧中都有一個(gè)4字長(zhǎng)的塊描述符。塊描述符包括塊狀態(tài)字、時(shí)間標(biāo)記字、數(shù)據(jù)塊起始指針以及一個(gè)16位的接收命令字。RT命令堆棧指針在處理每一條消息開(kāi)始自動(dòng)加4。在接收到一個(gè)消息以后,主機(jī)CPU將讀取堆棧中消息塊描述符的塊狀態(tài)字、時(shí)間標(biāo)記、數(shù)據(jù)塊開(kāi)始地址和接收命令字,如果接收的消息合法,則可以從指定的數(shù)據(jù)塊中讀取接收數(shù)據(jù)[10]。本文將重點(diǎn)介紹兩種RT模式下處理消息的方法:
1)通過(guò)中斷;
2)通過(guò)查詢當(dāng)前活動(dòng)區(qū)域的堆棧指針的內(nèi)存位置。
2.2 1553B數(shù)據(jù)讀取時(shí)序設(shè)計(jì)
依據(jù)BU-61581S6芯片特點(diǎn)RT端1553B協(xié)議程序處理方法和讀取數(shù)據(jù)時(shí)機(jī)直接決定了1553B消息能否完整、可靠的讀取。為滿足電動(dòng)伺服的高動(dòng)態(tài)特性,會(huì)遇到兩條消息間間隔較小的工況。在兩條消息間間隔較小的情況下,DSP在查詢到前一條消息的1553B中斷標(biāo)志置1后轉(zhuǎn)去處理電動(dòng)伺服控制程序,當(dāng)控制程序結(jié)束后進(jìn)入1553B協(xié)議處理函數(shù)讀取堆棧A指針,通過(guò)堆棧指針判斷的結(jié)果為有兩條新的消息未處理,但此時(shí)第二條消息數(shù)據(jù)尚未保存完畢,并沒(méi)有觸發(fā)中斷。如圖2所示,紅色信號(hào)為DSP讀數(shù)據(jù)信號(hào),綠色信號(hào)為1553B中斷信號(hào),藍(lán)色信號(hào)為1553B數(shù)據(jù)波形,由于DSP讀數(shù)據(jù)信號(hào)出現(xiàn)在中斷信號(hào)之前,此時(shí)的消息數(shù)據(jù)字尚未保存完畢,DSP讀取數(shù)據(jù)就會(huì)出現(xiàn)數(shù)據(jù)出錯(cuò)現(xiàn)象?;谝陨咸厥馇闆r結(jié)合2.1節(jié),詳細(xì)介紹該兩種處理消息的方法。
圖2 1553B中斷信號(hào)及DSP讀數(shù)據(jù)信號(hào)時(shí)序Fig.2 1553B interrupt and DSP data-reading sequence chart
1)BU-61581S6芯片會(huì)在數(shù)據(jù)接收完成后觸發(fā)外部中斷XINT1,在1553B中斷服務(wù)程序中處理1553B協(xié)議,可以保證讀回的每一幀數(shù)據(jù)的完整性。但彈上控制軟件不建議將大量代碼置于中斷函數(shù)中,圖1中斷處理流程就是為避免長(zhǎng)期占用1553B中斷而影響電動(dòng)伺服機(jī)構(gòu)控制。但這種方法在消息間間隔較小。第二條消息進(jìn)行了堆棧指針更新,但沒(méi)有數(shù)據(jù)寫(xiě)入完全、沒(méi)有觸發(fā)中斷情況下,第二條消息被誤讀。為解決此問(wèn)題可以在1553B中斷服務(wù)程序中設(shè)置計(jì)數(shù)器,在處理1553B消息之前先判斷計(jì)數(shù)器是否更新,保證處理的每一條數(shù)據(jù)都是寫(xiě)入完成,并且已經(jīng)觸發(fā)中斷。代碼如下:
while(Interrupt _Cut!= Interrupt_Cur _Cut) /*判斷當(dāng)前1553B中斷計(jì)數(shù)器值位置與上一次的1553B中斷計(jì)數(shù)值是否一致,如果不一致則表明有新的消息未處理*/
{
bsw = pCurCmdDes->BLOCK_STATUS_WORD;
/*讀取堆棧中消息塊描述符中讀取塊狀態(tài)字*/
新政府致力于推動(dòng)國(guó)內(nèi)農(nóng)業(yè)生產(chǎn),為津巴布韋種植種子供應(yīng)商和農(nóng)業(yè)化學(xué)品制造商帶來(lái)了新商機(jī)。埃默森·姆南加古瓦總統(tǒng)還要求國(guó)家財(cái)政部與農(nóng)業(yè)部合作,改組和精簡(jiǎn)總統(tǒng)投入計(jì)劃。奇納馬薩說(shuō),津巴布韋新政府將“加強(qiáng)農(nóng)業(yè)投入控制和分配系統(tǒng)管理、供應(yīng)和分配鏈每個(gè)階段的規(guī)劃監(jiān)測(cè),以填補(bǔ)漏洞”。這個(gè)系統(tǒng)的改進(jìn)涉及到政府補(bǔ)貼計(jì)劃下的農(nóng)業(yè)投入,不僅用于玉米,還用于其他食品和經(jīng)濟(jì)作物。
if( (bsw & 0x177f )==0x0000 )
/*對(duì)消息合法進(jìn)行了判斷,包含判斷消息是否接收完成*/
{
……
}
}
此方法在中斷計(jì)數(shù)器進(jìn)行防溢出清零動(dòng)作時(shí),要注意避免中斷計(jì)數(shù)器翻轉(zhuǎn)時(shí)丟消息。
if(pCmdDes != NULL )
{
pCmdDes = (struct CMD_DESCRIPTOR *) (BASE_RAM+Bus1553Ram.STACK_A_PTR);
/* 讀取當(dāng)前活動(dòng)區(qū)域的堆棧指針的內(nèi)存位置*/
}
while(pCurCmdDes != pCmdDes)
/*判斷當(dāng)前活動(dòng)區(qū)域的堆棧指針的內(nèi)存位置與上一次的指針位置是否一致,如果不一致則表明有新的消息未處理*/
{
bsw = pCurCmdDes->BLOCK_STATUS_WORD;
/*讀取堆棧中消息塊描述符中讀取塊狀態(tài)字*/
if( (bsw & 0x977f )==0x8000)
/*對(duì)消息合法進(jìn)行了判斷,包含判斷消息是否接收完成*/
{
……
}
}
上述介紹的兩種方法均可保證消息接收完成后進(jìn)入數(shù)據(jù)讀取,1553B讀取數(shù)據(jù)時(shí)序如圖3所示。
圖3 1553B讀取數(shù)據(jù)時(shí)序圖Fig.3 1553B data-reading sequence chart
在高動(dòng)態(tài)電動(dòng)伺服機(jī)構(gòu)下應(yīng)用1553B總線,為避免前后兩條消息時(shí)間過(guò)短而導(dǎo)致數(shù)據(jù)接收錯(cuò)誤或丟失數(shù)據(jù),可以在通信中斷產(chǎn)生后,在1553B中斷服務(wù)程序中設(shè)置中斷計(jì)數(shù)器,分析此計(jì)數(shù)器是否有更新來(lái)判斷新消息是否接收完成,或是通過(guò)判斷堆棧指針A是否有更新的方式來(lái)判斷是否有新消息到來(lái)。同時(shí)對(duì)RT塊狀態(tài)字中消息接收完成(bit15)進(jìn)行判斷,當(dāng)確保數(shù)據(jù)寫(xiě)入完整后再進(jìn)行協(xié)議程序處理,有效地保證了1553B通信的快速性和可靠性。
[1] 馬長(zhǎng)軍.快速響應(yīng)電動(dòng)伺服系統(tǒng)[D].哈爾濱工業(yè)大學(xué),2007:1-6.
[2] 張琛.直流無(wú)刷電動(dòng)機(jī)原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,1996.
[3] 高志強(qiáng),苗克堅(jiān),張?chǎng)╄?彈載計(jì)算機(jī)1553B總線測(cè)試模塊設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2008,16(9):1280-1283.
[4] 陳永奇,馬迎建,石多.1553B總線應(yīng)用[J].電子測(cè)量技術(shù),2006,29(5):211-212.
[5] 陳丹,趙文靜.基于1553B總線控制器軟件的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2007,30(2):41-43.
[6] 陳是知,姜蕊輝.TMS320F2812原理與開(kāi)發(fā)實(shí)踐[M].北京:中國(guó)電力出版社,2010.
[7] BU-61581S6芯片使用手冊(cè).航天科技九院772所.
[8] 于雅麗,陳錦莉.1553B通信研究及其在導(dǎo)彈測(cè)試系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)測(cè)量與控制,2009,17(2):360-362.
[9] 謝拴勤,宋捷,宋懷達(dá).基于FPGA+DSP的1553B總線通用接口設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2009,17(1):183-186.
[10] MIL-STD-1553 Protocol Tutorial[S].Condor Enigeering Inc,2004:30-32.
[11] 胡月,林寶軍,張善從.1553B總線控制器軟件設(shè)計(jì)[J].電子測(cè)量技術(shù),2006,29(1):77-78.
Design and Implementation of 1553B Bus Communication for High Dynamic Electronic Servo Actuators
MENG Juan, LIN Xi-jia
(Servo Technology Institute of China Aerospace Science & Industry Corp,Nanjing 210006,China)
1553B bus communication technology is widely used in the field of aeronautics and astronautics.It is also widely used in the field of electronic servo actuator, which is an important part of missile control system. Usually, for high dynamic and high response electronic sorvo actuators, the control of electronic servo actuator is prior to 1553B bus communication. To ensure that 1553B bus has higher communication speed and reliability in the condition of high dynamic condition and high response of electronic servo actuators, based on the BU-61581S6 bus interface protocol chip for receiving data in RT (remote terminal) software,the working time sequencing and data processing method are mainly introducd.
1553B; High rate; High reliability; Receive data; Sequence settings
10.19306/j.cnki.2095-8110.2016.06.013
2016-02-26;
2016-03-29。
孟娟(1983 - ),女,碩士,工程師,主要從事嵌入式軟件方面的研究。E-mail: mengjuan.521@163.com
TP336
A
2095-8110(2016)06-0067-03