• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于模塊化設(shè)計(jì)的嵌入式伺服控制軟件的研究

      2018-02-25 11:54:22欒婷
      電子技術(shù)與軟件工程 2018年11期
      關(guān)鍵詞:模塊化嵌入式

      欒婷

      摘要 本文研究一種模塊化的嵌入式軟件閉環(huán)算法的設(shè)計(jì)方法,分析了傳統(tǒng)閉環(huán)算法設(shè)計(jì)的不足之處,給出了模塊化閉環(huán)算法的設(shè)計(jì)理念和設(shè)計(jì)方法,并詳細(xì)給出了幾種閉環(huán)運(yùn)算中常用的運(yùn)算類型的模塊化封裝方法。在完全采用模塊化設(shè)計(jì)方法后,縮短了伺服系統(tǒng)嵌入式控制軟件的編寫和調(diào)試時(shí)間,在提高效率節(jié)省資源的同時(shí),也提高了伺服控制軟件的可靠性。

      [關(guān)鍵詞]模塊化 嵌入式 伺服控制

      1 概述

      伺服控制器是伺服系統(tǒng)的數(shù)字電子控制補(bǔ)償裝置,伺服控制器接收控制系統(tǒng)發(fā)出的數(shù)字指令信號(hào),在伺服系統(tǒng)地面測(cè)試、發(fā)射準(zhǔn)備、飛行等階段,通過控制器內(nèi)部的嵌入式軟件運(yùn)算,實(shí)現(xiàn)伺服系統(tǒng)內(nèi)部信號(hào)采集、數(shù)字閉環(huán)控制、數(shù)字零位補(bǔ)償及校正和與控制系統(tǒng)的通訊等功能。伺服系統(tǒng)總體要求伺服控制器嵌入式軟件的閉環(huán)算法調(diào)整編寫速度要快,出錯(cuò)次數(shù)要少,整體可靠性要高。為此伺服系統(tǒng)控制器的嵌入式軟件進(jìn)行了以提高可靠性為主要目的的軟件模塊化設(shè)計(jì)。

      2 伺服系統(tǒng)嵌入式軟件組成

      本課題中伺服系統(tǒng)數(shù)字控制器以DSP(TMS320F2812)為計(jì)算平臺(tái),采用15 53B總線進(jìn)行通信,采用TI公司為此配套的編譯軟件CCS來編寫、調(diào)試和燒錄程序。

      伺服控制器軟件的任務(wù)就是實(shí)現(xiàn)伺服系統(tǒng)與總線系統(tǒng)之間的通信,接收并執(zhí)行BC的控制指令,并向BC發(fā)送伺服系統(tǒng)狀態(tài)信息;定時(shí)采集伺服系統(tǒng)數(shù)據(jù)并按指定格式傳送給總線系統(tǒng);定時(shí)對(duì)采集的信號(hào)進(jìn)行多項(xiàng)式擬合;定時(shí)對(duì)擬合后的冗余信號(hào)進(jìn)行冗余表決,表決的結(jié)果作為數(shù)字閉環(huán)控制算法的反饋信號(hào);定時(shí)接收BC發(fā)送的控制指令數(shù)據(jù),進(jìn)行伺服系統(tǒng)的數(shù)字閉環(huán)控制及補(bǔ)償;同時(shí)軟件具備初步的故障診斷及余度管理功能。

      伺服系統(tǒng)嵌入式控制軟件的主要組成如圖l所示。

      各模塊分別執(zhí)行自己的功能,進(jìn)行模塊間數(shù)據(jù)交互,執(zhí)行閉環(huán)控制算法,完成對(duì)伺服閥的控制。

      閉環(huán)控制算法通常需要進(jìn)行三冗余反饋數(shù)據(jù)表決、擬合、故障診斷和余度管理等運(yùn)算,閉環(huán)控制的步驟很多,如果還把閉環(huán)控制算法當(dāng)成一個(gè)基本模塊來編寫,必然會(huì)使軟件的執(zhí)行步驟和復(fù)雜度大大增加。這不僅增加了嵌入式軟件編寫人員的工作量,在伺服系統(tǒng)調(diào)試過程中,也會(huì)不可避免的增加因軟件編寫錯(cuò)誤而導(dǎo)致的無效啟機(jī)試驗(yàn),因此而造成大量有效時(shí)間浪費(fèi)和不必要的經(jīng)濟(jì)損失。

      為此,針對(duì)伺服系統(tǒng)閉環(huán)控制框圖的特點(diǎn),專門對(duì)伺服控制器嵌入式軟件的閉環(huán)控制部分進(jìn)行了模塊化細(xì)化設(shè)計(jì)。

      3 傳統(tǒng)設(shè)計(jì)方法及技術(shù)改進(jìn)點(diǎn)

      3.1 傳統(tǒng)閉環(huán)運(yùn)算程序設(shè)計(jì)方法

      傳統(tǒng)的閉環(huán)計(jì)算方法把閉環(huán)控制框圖當(dāng)成一個(gè)基本軟件模塊來設(shè)計(jì),主要采用的是面向過程的編寫方法。因?yàn)橐郧暗乃欧到y(tǒng)閉環(huán)控制框圖相對(duì)比較簡單,采用面向過程的設(shè)計(jì)方法可清晰的表達(dá)控制框圖中的對(duì)應(yīng)關(guān)系。

      下面示出了傳統(tǒng)閉環(huán)控制運(yùn)算中,陷波環(huán)節(jié)(二階環(huán)節(jié))的嵌入式C程序編寫內(nèi)容。

      //陷波環(huán)節(jié)參數(shù)定義部分

      //#define CurDifData_ CalCoeff 2.2019/*當(dāng)前誤差信號(hào)數(shù)據(jù)系數(shù)+/

      //#define PrevDifData_ CalCoeff4.2328/*前一次誤差信號(hào)數(shù)據(jù)系數(shù)+/

      //#define PrevPrevDifData CalCoeff2.1164/*前兩次誤差信號(hào)數(shù)據(jù)系數(shù)*/

      //#define PrevHYPData CalCoeff l.8575/*前一次閉環(huán)算法結(jié)果數(shù)據(jù)系數(shù)e/

      //#define PrevPrevHYPData C alCoe ff0.9430/*前兩次閉環(huán)算法結(jié)果數(shù)據(jù)系數(shù)*/

      //陷波環(huán)節(jié)計(jì)算過程

      g_stHistoryDifference [i].m_fCurData;

      對(duì)于只有一個(gè)二階計(jì)算節(jié)點(diǎn)的伺服系統(tǒng)閉環(huán)控制框圖來說,該編寫方法是比較合適的,如果在閉環(huán)控制框圖中,二階節(jié)點(diǎn)不只一個(gè),并且在計(jì)算過程中還間插有一階節(jié)點(diǎn)、多項(xiàng)式擬合等運(yùn)算,這種面向過程的編寫就顯的有些亂,一旦總體要修改控制框圖結(jié)構(gòu),程序調(diào)整起來工作量就比較大,并且很容易出現(xiàn)潛在錯(cuò)誤。

      3.2 改進(jìn)的閉環(huán)運(yùn)算程序設(shè)計(jì)方法

      在閉環(huán)控制框圖中,大致有“N階節(jié)點(diǎn)”、“多項(xiàng)式擬合”和“3冗余表決”這三大類運(yùn)算,如果把這三類運(yùn)算分別進(jìn)行模塊化封裝,使其自成一體、功能獨(dú)立,則會(huì)大大簡化閉環(huán)控制框圖的嵌入式程序編寫,軟件的維護(hù)性也會(huì)有很大提高,便是總體臨時(shí)決定改動(dòng)閉環(huán)控制框圖結(jié)構(gòu),程序的改動(dòng)和傳統(tǒng)方法相比,也會(huì)少很多,并且程序結(jié)構(gòu)更加清晰,很難出現(xiàn)低級(jí)別的程序錯(cuò)誤。下面分別介紹上述三大類運(yùn)算改進(jìn)的編寫過程。

      3.2.1 N階節(jié)點(diǎn)

      N階節(jié)點(diǎn)的計(jì)算過程中,用到了前N次的輸入/輸出狀態(tài),為此,需要定義一些類似傳統(tǒng)設(shè)計(jì)方法中的全局變量來保存這些狀態(tài),并且在每次運(yùn)算時(shí)需逐次更新。為了簡化閉環(huán)運(yùn)算流程,采用了可面向結(jié)構(gòu)的設(shè)計(jì)方法,把這些變量封裝在結(jié)構(gòu)里面,并由結(jié)構(gòu)體對(duì)應(yīng)的操作函數(shù)來執(zhí)行運(yùn)算。因每個(gè)節(jié)點(diǎn)的階次和參數(shù)都不同,因此,便把它們作為了該操作函數(shù)的輸入?yún)?shù)。這樣,便可實(shí)現(xiàn)N節(jié)點(diǎn)的封裝和獨(dú)立運(yùn)算。

      下面示出了改進(jìn)的閉環(huán)控制運(yùn)算中,二階陷波器的嵌入式C程序編寫內(nèi)容。

      //N階節(jié)點(diǎn)結(jié)構(gòu)體封裝(此處N<2),位于頭文件中。

      //……控制框圖中基本運(yùn)算節(jié)點(diǎn)結(jié)構(gòu)體定義……

      //控制框圖中基本運(yùn)算節(jié)點(diǎn)結(jié)構(gòu)體定義

      //控制算法框圖中的每一個(gè)方框都看作一個(gè)控制節(jié)點(diǎn),應(yīng)該為每個(gè)方框都

      //定義一個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)中保存著該方框的輸入和輸出狀態(tài),默認(rèn)為2階系統(tǒng)。

      //每個(gè)節(jié)點(diǎn)都帶有積分輸出保持開關(guān)標(biāo)志和輸出限位開關(guān)標(biāo)志。

      //該節(jié)點(diǎn)需要和對(duì)應(yīng)函數(shù)ControlNode_Process()配合使用。

      struct ControlNode

      {

      //控制節(jié)點(diǎn)輸入狀態(tài),降階排列:O:當(dāng)前狀態(tài)X(K)1:前1狀態(tài)X(k-l)2:前2狀態(tài)X(k-2)…

      float flnput[3];

      //控制節(jié)點(diǎn)輸出狀態(tài),降階排列:O:當(dāng)前狀態(tài)Y(K)1:前1狀態(tài)Y(k-l)2:前2狀態(tài)Y(k-2)…

      fioat fOutput[3];

      //控制節(jié)點(diǎn)計(jì)算用分子參數(shù)降階排列,和matlab離散化后數(shù)值與排列方式都相同

      float fNum[3];

      //控制節(jié)點(diǎn)計(jì)算用分母參數(shù)降階排列,和matlab離散化后數(shù)值與排列方式都相同

      fioat fDen[3];

      //表示當(dāng)前控制節(jié)點(diǎn)的階數(shù)

      int NodeOrder;

      //輸出保持開關(guān)1:使能輸出保持,當(dāng)前輸出值保持為前一個(gè)狀態(tài)值O:禁用輸出保持

      int Switch_OutputHold;

      ∥輸出限位開關(guān)1:使能輸出限位,當(dāng)前輸出值為最大限位值 O:禁用輸出限位

      int Switch_OutputLimit;

      //節(jié)點(diǎn)輸出最大值

      fioat flvlaxOutput;

      //節(jié)點(diǎn)輸出最小值

      fioat fMinOutput;

      );

      extem

      struct ControlNodestNode_Trap[2];

      //陷波節(jié)點(diǎn)系數(shù)初始化,參數(shù)和matlab離散化計(jì)算值順序相同,復(fù)制過來加逗號(hào)即可

      float fXianbo_Coef_Num[3] ={0.5753,-1.0745, 0.5168);

      float fXianbo_Coef_Den[3]={1.0000,-1.7819, 0.7994};

      //陷波節(jié)點(diǎn)初始化,陷波節(jié)點(diǎn)為2階節(jié)點(diǎn)

      InitiationNode(&stNode_Trap [i],fXianboCoef_Num,fXianbo_Coef_Den,2);

      //閉環(huán)控制框圖中的計(jì)算部分

      //陷波節(jié)點(diǎn)計(jì)算mA

      ControlNode_Process(&stNodeTrap[i],fErrorResult_3);

      從改進(jìn)后的程序中看出,在封裝的結(jié)構(gòu)體內(nèi)還具有輸出保持開關(guān)和限幅開關(guān),如果當(dāng)一個(gè)N階環(huán)節(jié)為積分節(jié)點(diǎn)時(shí),這兩個(gè)開關(guān)就會(huì)有特殊的作用,通過控制這兩個(gè)變量,便可自動(dòng)實(shí)現(xiàn)積分開關(guān)和限幅的功能,而并不需要重新定義結(jié)構(gòu)體。

      N階節(jié)點(diǎn)的分子和分母的離散化系數(shù)和matlab計(jì)算值排列順序相同,只要復(fù)制過來,按C語言的語法添加逗號(hào)隔開即可。

      3.2.2 多項(xiàng)式擬合

      一個(gè)閉環(huán)控制框圖中,會(huì)出現(xiàn)不同階次的多項(xiàng)式擬合,改進(jìn)的模塊化設(shè)計(jì)中,提取多項(xiàng)式擬合的共同特征,把多項(xiàng)式系數(shù)和階次作為多項(xiàng)式擬合函數(shù)的輸入?yún)?shù),從而實(shí)現(xiàn)了多項(xiàng)式擬合運(yùn)算的封裝。嵌入式程序的實(shí)現(xiàn)步驟如下所示。

      //角位移反饋輸入采樣后擬合系數(shù)

      //4階擬合,系數(shù)排列順序和matlab計(jì)算值相同

      float fPolyCoefs_JiaoWeiYi[5]={0.00000146029, 0.0190893, 0.0000507086,\

      0.0000029009, 0.00000009069347);

      ,/角位移傳感器4階擬合V.> Rad輸入為電壓,擬合后為弧度

      fFeedbackjiaoWeiYiRad= Polyval(fPolyCoefsJiaoWeiYi,fFeedbackjiaoWeiYi_V,4);

      3.2.3 三冗余表決

      三冗余表決的執(zhí)行步驟比起N階環(huán)節(jié)和多項(xiàng)式擬合要簡單的多,改進(jìn)后的模塊化設(shè)計(jì)中,把三冗余表決運(yùn)算封裝成了函數(shù)。嵌入式程序的實(shí)現(xiàn)步驟如下。

      //三冗余多數(shù)表決

      fFeedbackjiaoWeiYi_Binary=

      TripleRedundancyVote(giAcquisitionjiaoWeiYiData[i] [O],

      g_iAcquisitionjiaoWeiYiData[i] [1],

      g_iAcquisitionjiaoWeiYiData[i][2]);

      4 結(jié)論

      在完全采用模塊化設(shè)計(jì)方法后,伺服系統(tǒng)嵌入式控制軟件的編寫和調(diào)試時(shí)間縮短不少,因軟件編寫失誤而導(dǎo)致的伺服系統(tǒng)開環(huán)事件大大減少,在提高效率節(jié)省資源的同時(shí),也提高了伺服控制軟件的可靠性。

      伺服系統(tǒng)當(dāng)前正向數(shù)字化轉(zhuǎn)型,采用數(shù)字伺服控制器的型號(hào)越來越多,控制算法也越來越復(fù)雜,這種面向結(jié)構(gòu)的模塊化設(shè)計(jì)方法將越來越多地應(yīng)用于各型號(hào)中。

      參考文獻(xiàn)

      [1]蘇奎峰,呂強(qiáng),耿慶鋒,陳圣儉編著.TMS320F2812原理與開發(fā)[M].電子工業(yè)出版社,2005.

      [2]周航慈著,嵌入式系統(tǒng)軟件設(shè)計(jì)中的常用算法[M].北京航空航天大學(xué)出版社.2010.

      猜你喜歡
      模塊化嵌入式
      模塊化自主水下機(jī)器人開發(fā)與應(yīng)用
      基于模塊化控制系統(tǒng)在一體化教學(xué)中的應(yīng)用
      模塊化住宅
      TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
      電子制作(2019年7期)2019-04-25 13:17:14
      嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:16
      搭建基于Qt的嵌入式開發(fā)平臺(tái)
      ACP100模塊化小型堆研發(fā)進(jìn)展
      中國核電(2017年2期)2017-08-11 08:00:56
      從模塊化中得到的二氧化碳
      模塊化VS大型工廠
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      常宁市| 北安市| 延庆县| 宜良县| 犍为县| 汨罗市| 铁力市| 曲麻莱县| 平武县| 山丹县| 凉城县| 定结县| 丰镇市| 平湖市| 隆回县| 苗栗市| 青州市| 时尚| 宜春市| 镇巴县| 宁德市| 新田县| 水城县| 卢湾区| 洪湖市| 左云县| 濉溪县| 淅川县| 县级市| 重庆市| 商城县| 岳普湖县| 鞍山市| 天台县| 溆浦县| 沅陵县| 英超| 宜黄县| 凯里市| 图木舒克市| 东辽县|