国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種衛(wèi)星綜合電子應(yīng)用軟件遙控解耦設(shè)計方法

2022-08-02 14:08李光旭萬麗景鐘睿明周中澤陳志華
關(guān)鍵詞:遙控子系統(tǒng)指令

李光旭, 萬麗景, 鐘睿明, 王 裙, 周中澤, 陳志華

北京控制工程研究所, 北京 100094

0 引 言

隨著對衛(wèi)星集成度、成本、體積、功耗、研制周期的要求越來越高,衛(wèi)星計算機(jī)的集成度、計算能力都大幅提高,原來采用數(shù)管計算機(jī)完成星務(wù)管理功能,采用姿軌控計算機(jī)完成姿軌控功能的模式,逐步被一臺衛(wèi)星綜合電子計算機(jī)完成星務(wù)管理功能和姿軌控功能的模式所取代,從而滿足衛(wèi)星對成本、體積、功耗和研制成本的要求[1-4].

衛(wèi)星綜合電子計算機(jī)要實現(xiàn)總線管理、熱控、能源、遙控、遙測、FDIR、GNC、軌道等功能,衛(wèi)星綜合電子計算機(jī)應(yīng)用軟件的規(guī)模和復(fù)雜度較以往大大提高,軟件架構(gòu)設(shè)計的功能解耦、可擴(kuò)展性、可維護(hù)性變得尤為重要[5-7].

本文對衛(wèi)星綜合電子計算機(jī)應(yīng)用軟件必備的遙控功能,運(yùn)用HASH表和鏈表技術(shù)使軟件遙控機(jī)制與子系統(tǒng)之間解耦,同時提高了軟件遙控的時間性能和時間均勻性,提高了軟件的可擴(kuò)展性和可維護(hù)性[8-16].

1 遙控軟件的主要功能及遇到的問題

衛(wèi)星綜合電子應(yīng)用軟件的遙控功能,即接收遙控指令,修改或者注入星上的變量或者任務(wù)場景的值,完成預(yù)期任務(wù).遙控功能的主要過程:

1)接收測控系統(tǒng)的遙控指令;

2)按照遙控協(xié)議(如CCSDS)進(jìn)行協(xié)議解包(遙控機(jī)制功能);

3)根據(jù)協(xié)議的內(nèi)容修改相應(yīng)的變量或者任務(wù)場景的值(指令執(zhí)行功能).

由于航天嵌入式軟件的高可靠性要求,需要對每條指令的指令命令字、長度及指令的具體內(nèi)容進(jìn)行驗證.一般的設(shè)計方法,在遙控機(jī)制中定義一個含有全部指令命令字(KEY)、長度及掛接函數(shù)的遙控指令參數(shù)表,遙控參數(shù)表的命令字(KEY)按照從小到大的順序排列,在遙控機(jī)制部分通過對遙控指令參數(shù)表的命令字(KEY)進(jìn)行折半查找的方法,找到命令字(KEY)的位置,對遙控指令的命令字和長度進(jìn)行匹配驗證,通過掛接的指令執(zhí)行函數(shù)進(jìn)行指令內(nèi)容的驗證和執(zhí)行,對指令具體內(nèi)容進(jìn)行驗證和執(zhí)行的子函數(shù)放在子系統(tǒng)的軟件遙控功能中.

這種設(shè)計方法將具體指令的驗證和執(zhí)行函數(shù)放到各個子系統(tǒng)軟件功能中,減少了子系統(tǒng)遙控功能和遙控機(jī)制功能的變量耦合,但遙控機(jī)制功能中需要知道所有指令命令字、長度和執(zhí)行函數(shù)的地址(遙控指令裝訂參數(shù)表),通過裝訂參數(shù)表的方式造成了遙控機(jī)制功能和子系統(tǒng)的指令執(zhí)行功能沒有完全隔離.

遙控機(jī)制功能中查找命令字(KEY)的折半查找法,指令的最大查找速度依賴于所有命令字(KEY)的個數(shù),并且要求指令必須按照從小到大的順利排列.這種實現(xiàn)方法要求程序設(shè)計人員對程序的實現(xiàn)原理必須清楚,否則,如指令參數(shù)表初始化不完全,命令字插入的位置錯誤,都會造成遙控錯誤.在實際的過程中,多次出現(xiàn)過指令的命令字排序錯誤造成指令驗證不通過的情況.

綜上所述,現(xiàn)在的設(shè)計方法存在如下問題:

1)在遙控機(jī)制中定義的遙控指令參數(shù)表,破壞了遙控機(jī)制與子系統(tǒng)之間的獨立性,遙控機(jī)制觸及了子系統(tǒng)的具體內(nèi)容;

2)遙控指令參數(shù)表的折半查找方法查詢效率低,查找次數(shù)離散度大,且容易維護(hù)出錯;

3)擴(kuò)展性、維護(hù)性差,如果在軌注入一個新的功能有新的遙控需求,必須對原來的程序和指令參數(shù)表進(jìn)行修改,更改影響域難以分析.

2 解決方法

1)HASH表

HASH是基于快速存取的角度設(shè)計的,也是一種典型的“空間換時間”的做法.HASH根據(jù)關(guān)鍵碼值(key value)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu),它通過把關(guān)鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度.這個映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做HASH.散列函數(shù)能使對一個數(shù)據(jù)序列的訪問過程更加迅速有效,通過散列函數(shù),數(shù)據(jù)元素將被更快地定位.

2)雙向鏈表

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結(jié)點中都有兩個指針,分別指向直接后繼和直接前驅(qū).所以,從雙向鏈表中的任意一個結(jié)點開始,都可以很方便地訪問它的前驅(qū)結(jié)點和后繼結(jié)點.

衛(wèi)星綜合電子應(yīng)用軟件遙控指令的HASH函數(shù)構(gòu)造采用簡單實用的除留余數(shù)法,遙控指令的KEY值對數(shù)N求模,得到HASH表的下標(biāo)位置.這樣會出現(xiàn)一個問題,不同的遙控KEY值通過求模后可能對用同一個 HASH表的下標(biāo)位置,這就是HASH沖突,在本文中通過鏈地址法來解決HASH沖突的問題.HASH數(shù)組的每一個元素不僅是一個進(jìn)入對象,還是一個鏈表的頭節(jié)點,每一個Entry對象通過next指針指向他的下一個Entry節(jié)點,當(dāng)新來的Entry映射到與之沖突的數(shù)組位置時,只需要插入到對應(yīng)的鏈表中即可[1],HASH-鏈表的原理示意圖見圖1所示.

總結(jié)上面描述的HASH-鏈表形成過程如下:1)定義一個鏈表頭結(jié)點的HASH表;2)遙控指令的KEY通過求模函數(shù)對N求余,得到HASH表的下標(biāo)位置,并以鏈表節(jié)點的形式插入到對應(yīng)HASH表下標(biāo)位置的雙向鏈表中;3)如果有不同的遙控指令的KEY值HASH化后對應(yīng)相同的HASH表下標(biāo)位置,則依次插入到相應(yīng)的雙向鏈表中.這樣具有相同下標(biāo)位置的遙控指令就形成了一個雙向鏈表.

通過遙控指令的KEY值找到HASH表的下標(biāo)位置,通過對HASH表下標(biāo)位置對應(yīng)的雙向鏈表進(jìn)行查找,就能得到遙控指令驗證、執(zhí)行所有的信息.

3 具體實例

(1)公共接口定義

/* 宏定義 */

typedef struct list_head HashTable;

#define hash_init(node)

#define hash_insert(table, cell)

#define hash_find(pos, table, userkey, type_of)

/* 鏈表頭定義 */

struct list_head

{

struct list_head *next, *prev;

};

/* 遙控指令hash節(jié)點數(shù)據(jù)結(jié)構(gòu) */

typedef struct TAG_COMMMAND_LIST

{

unint32 key; /* 為指令id */

unint32 len; /* 指令長度 */

unint32 pfHandle; /* 指令處理函數(shù) */

/* 哈希鏈區(qū) */

struct list_head list; /* 鏈表數(shù)據(jù)結(jié)構(gòu) */

} SCommandList;

/* HASH表定義 */

HashTable cmdHashTable[203];

(2)子系統(tǒng)具體示例

下面以熱控為例說明在子系統(tǒng)的具體應(yīng)用方法,能源、總線、FDIR、GNC等分系統(tǒng)的使用方法與此相同.

1)熱控指令聲明

熱控指令的聲明如圖2所示.

圖2 熱控指令定義示例

2)熱控指令插入HASH表中

調(diào)用hash_insert將mCommandListHeat[10],依次插入到cmdHashTable中.

通過公共接口定義,各個子系進(jìn)行具體指令的定義,并插入到HASH表中,遙控指令的具體處理都封鎖在各個子系統(tǒng)內(nèi),上層通過統(tǒng)一的接口hash_find訪問子系統(tǒng)的具體內(nèi)容.

(3)效果分析

1)解耦性

通過上述的方法,遙控機(jī)制里提供了統(tǒng)一的遙控接口定義和插入方法,各個子系統(tǒng)各自定義自己的命令字和命令解析函數(shù),遙控機(jī)制通過統(tǒng)一的接口函數(shù)訪問各個子系統(tǒng)定義的命令字和命令解析函數(shù),遙控機(jī)制功能和子系統(tǒng)的遙控功能完全隔離.

如果衛(wèi)星在軌增加一個新的子系統(tǒng),可以按照(2)的過程進(jìn)行定義和注冊,能做到不改動原來程序的情況下,增加新的子系統(tǒng)遙控功能,軟件的影響域小,軟件的可擴(kuò)展性和可維護(hù)性大大提高.

2)查找性能結(jié)果比對

圖3對比了在指令關(guān)鍵字都是200個的情況下折半查找和HASH鏈表查找指令的次數(shù)比對,由圖3可以看出折半查找的均值在7次左右,分布于1-8之間,HASH鏈表查找的大部分1次就能找到具體指令,少數(shù)會出現(xiàn)2、3次找到指令的情況,HASH鏈表查找的性能比折半查找的效果要好,HASH鏈表查找的均勻性比折半查找的效果要好,指令的個數(shù)越多這種效果越明顯.

圖3 折半查找和HASH鏈表查找次數(shù)比對圖

4 結(jié) 論

衛(wèi)星綜合電子應(yīng)用軟件實現(xiàn)了星務(wù)和GNC控制的功能,從整體上縮短了研制周期和節(jié)約了開發(fā)費用,但也帶來了軟件規(guī)模和復(fù)雜度的提高,怎樣從架構(gòu)上減少軟件之間的耦合,并提高軟件的可擴(kuò)展和可維護(hù)性變得尤為重要.本文針對衛(wèi)星綜合電子應(yīng)用軟件的遙控功能,提出用HASH表和鏈表的方法解決了軟件功能耦合問題,提高了軟件的可擴(kuò)展和在軌維護(hù),此方法還可以應(yīng)用到其他類似的應(yīng)用場景如遙測等.

猜你喜歡
遙控子系統(tǒng)指令
“遙控”老師
《單一形狀固定循環(huán)指令G90車外圓仿真》教案設(shè)計
新機(jī)研制中總裝裝配指令策劃研究
他是如何遙控引爆的
關(guān)于ARM+FPGA組建PLC高速指令控制器的研究
網(wǎng)絡(luò)空間供應(yīng)鏈中入侵檢測及防御子系統(tǒng)的投資機(jī)制研究
網(wǎng)絡(luò)空間供應(yīng)鏈中入侵檢測及防御子系統(tǒng)的投資機(jī)制研究
團(tuán)隊與知識管理的關(guān)系研究
淺談中職學(xué)校新型模塊化機(jī)房建設(shè)
遙控賽車
阜南县| 治县。| 阿瓦提县| 精河县| 浦县| 克什克腾旗| 准格尔旗| 竹山县| 永登县| 上杭县| 临沧市| 呼玛县| 枣庄市| 梁山县| 汝城县| 海口市| 博爱县| 南充市| 中江县| 利川市| 新余市| 河北区| 遵义县| 东明县| 石林| 竹山县| 基隆市| 琼海市| 共和县| 全州县| 曲麻莱县| 德庆县| 古交市| 炎陵县| 杂多县| 泗洪县| 宁南县| 新兴县| 伊川县| 海城市| 南部县|