本發(fā)明屬于嵌入式軟件開發(fā)設計技術(shù),具體涉及一種基于多余度的多目標機并行通信方法。
背景技術(shù):
航空、高鐵等安全關(guān)鍵領域中常通過使用多余度技術(shù)提高系統(tǒng)安全性,傳統(tǒng)嵌入式系統(tǒng)開發(fā)過程,在系統(tǒng)集成后的軟件維護階段,基于多余度的嵌入式系統(tǒng)中每個目標機需要單獨進行開發(fā)維護,上位機與每個目標機都需要建立通信鏈路,系統(tǒng)維護復雜度高并且效率低。而通過一種中央維護方法,上位機與嵌入式系統(tǒng)中一個負責維護的目標機通信,負責維護的目標機通過系統(tǒng)內(nèi)總線與系統(tǒng)中的每個目標機通信,可實現(xiàn)對整個嵌入式系統(tǒng)每個目標機的軟件維護,降低維護復雜度,提高軟件維護效率。中央維護方法中,功能相同的各余度目標機通過內(nèi)總線廣播從維護目標機接收消息,通過各自獨立鏈路向維護目標機發(fā)送消息,中央維護方法不同于傳統(tǒng)嵌入式維護方法,中央維護方法需要上位機通過維護目標機與嵌入式系統(tǒng)的多余度多目標機并行通信,支撐對每個目標機的維護。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是:引入一種基于多余度的多目標機并行通信方法。
本發(fā)明采取的技術(shù)方案是:對嵌入式系統(tǒng)內(nèi)所有目標機以及上位機定義通信地址,對多余度目標機定義接收廣播地址;上位機發(fā)送的每個消息中包含源地址與目的地址,當消息的發(fā)送目的是功能相同的多余度多個目標機時,目的地址是多余度目標機的接收廣播地址;上位機將消息發(fā)送給負責維護的目標機,負責維護的目標機根據(jù)消息的目的地址將消息放到與目的地址對應的目標機所在的內(nèi)總線通信鏈路上,如果目的地址是廣播地址則將消息放到該廣播地址對應的多余度目標機內(nèi)總線廣播通信鏈路上;各目標機從內(nèi)總線通信鏈路上接收到消息,獲得消息中的源地址做為返回消息的目的地址,目標機處理消息并產(chǎn)生返回消息,將返回消息與代表自身通信地址信息的源地址以及上述目的地址一同發(fā)送放到負責維護的目標機的內(nèi)總線通信鏈路上;負責維護的目標機接收內(nèi)總線通信鏈路上消息,根據(jù)消息的目的地址將消息發(fā)送給對應的上位機,上位機確認之前發(fā)送的消息是否被正確處理。具體操作步驟如下:
步驟1對上位機、嵌入式系統(tǒng)中所有目標機定義獨立的通信地址,并對功能相同的多余度目標機定義接收廣播地址;
步驟2上位機在需要發(fā)送的消息中添加代表自身通信地址信息的源地址與包含目標機通信地址信息的目的地址,當消息的發(fā)送目的是功能相同的多余度多個目標機時,目的地址是多余度目標機的接收廣播地址;
步驟3上位機將消息發(fā)送給負責維護的目標機,負責維護的目標機根據(jù)消息的目的地址將消息放到與目的地址對應的目標機所在的內(nèi)總線通信鏈路上,如果目的地址是廣播地址則將消息放到該廣播地址對應的多余度目標機內(nèi)總線廣播通信鏈路上;
步驟4各目標機從內(nèi)總線通信鏈路上接收到消息,獲得消息中的源地址做為返回消息的目的地址,目標機處理消息并產(chǎn)生返回消息,將返回消息與代表自身通信地址信息的源地址以及所述目的地址一同發(fā)送放到負責維護的目標機的內(nèi)總線通信鏈路上;
步驟5負責維護的目標機接收內(nèi)總線通信鏈路上的返回消息,根據(jù)所述返回消息的目的地址將所述返回消息發(fā)送給對應的上位機;
步驟6上位機接收返回消息,將返回消息的源地址與上位機在步驟2中發(fā)送消息的目的地址比較,確認目標機是否正確處理消息;
步驟7上位機發(fā)送新的消息,重復步驟2到步驟6。
當上位機發(fā)送消息的目的地址是多余度目標機的廣播地址時,所述步驟6具體包括:
A,上位機確定所述多余度目標機的目標機數(shù)量,此數(shù)量是上位機需要接收到的返回消息數(shù)量;
B,上位機解析接收消息的源地址,源地址應是所述廣播地址對應的多余度目標機中某個目標機的源地址;
C,上位機接收到符合此類源地址的消息數(shù)量與上述上位機需要接收到的消息數(shù)量相同,且每個消息內(nèi)容都確認目標機處理完成時,則可確認廣播地址對應的所有多余度目標機都已正確處理消息;
上位機在一定時限內(nèi)接收到與所述上位機需要接收到的消息數(shù)量相同的所述符合源地址要求的消息數(shù)量,但接收消息中存在某條消息,其內(nèi)容說明目標機處理消息失敗,則上位機重新發(fā)送消息,重復步驟2到步驟6,在經(jīng)過有限次的重新發(fā)送后,如果都沒有確認目標機都已正確處理消息,則確認上位機與嵌入式系統(tǒng)通信失?。?/p>
上位機在一定時限內(nèi)未能接收到與所述上位機需要接收到的消息數(shù)量相同的所述符合源地址要求的消息數(shù)量,則上位機對自身需要針對上述多余度目標機接收到的消息數(shù)量做降級處理,將需要針對上述多余度目標機接收到的消息數(shù)量降級設置為此時接收到的所述符合源地址要求的消息數(shù)量,并在以后的通信中都以降級后的消息數(shù)量為準,上位機通過廣播地址以及接收到消息的源地址,確認上位機未能收到返回消息的目標機,并在以后的通信中將所述未能收到返回消息的目標機排除。
本發(fā)明具有的優(yōu)點和有益效果:本發(fā)明一種基于多余度的多目標機并行通信方法,實現(xiàn)了中央維護方法中上位機與多余度多目標機的并行通信,上位機通過維護目標機基于系統(tǒng)內(nèi)總線向多余度多目標機以廣播方式發(fā)送數(shù)據(jù),通過維護目標機基于系統(tǒng)內(nèi)總線接收每個多余度目標機的返回數(shù)據(jù),根據(jù)接收的數(shù)據(jù)數(shù)量以及數(shù)據(jù)內(nèi)容判斷消息傳輸正確性以及系統(tǒng)通信狀態(tài),實現(xiàn)上位機高效、正確的與嵌入式系統(tǒng)每個目標機進行通信,相比與傳統(tǒng)上位機與每個目標機分別通信方式極大的提高了上位機與嵌入式系統(tǒng)的通信效率,上位機不需要單獨建立通信鏈路,提升了嵌入式系統(tǒng)的可維護性,同時提高了嵌入式軟件和軟件開發(fā)工具的開發(fā)效率。
附圖說明
圖1是基于多余度的多目標機并行通信模塊圖。
具體實施方式
下面以上位機對嵌入式系統(tǒng)軟件維護時上位機與系統(tǒng)中目標機通信為例,對一種基于多余度的多目標機并行通信方法進行介紹,通信模塊圖見圖1,具體步驟如下:
步驟一 對上位機、嵌入式系統(tǒng)中所有目標機定義獨立的通信地址,并對功能相同的多余度目標機定義接收廣播地址,如圖1中可定義上位機1的通信地址是00000001;上位機2的通信地址是00000002;目標機1.1和目標機1.2是具有相同功能的多余度目標機,它們具有相同的接收廣播地址,目標機1.1與目標機1.2通信地址分別是10000001與10000002,它們的接收廣播地址是10000003;目標機2的通信地址時20000001;目標機3的通信地址時40000001;負責維護的目標機通信地址時80000001。功能相同的多余度目標機與負責維護的目標機之間通信存在如下特征,負責維護的目標機通過內(nèi)總線廣播給每個多余度目標機發(fā)送消息,即負責維護的目標機通過內(nèi)總線廣播發(fā)送一條消息,每個多余度目標機都會接收到,而每個多余度目標機在內(nèi)總線上都有獨立的向負責維護的目標機發(fā)送消息的通信鏈路,即每個多余度目標機可獨立向負責維護目標機發(fā)送消息。
步驟二 上位機在需要發(fā)送的消息中添加代表自身通信地址信息的源地址與包含目標機通信地址信息的目的地址,當消息的發(fā)送目的是功能相同的多余度多個目標機時,目的地址是多余度目標機的接收廣播地址。如當上位機1在給目標機3發(fā)送消息時,消息中會添加源地址為00000001,目的地址為40000001;當上位機1在給多余度目標機1.1與多余度目標機1.2發(fā)送消息時,消息中會添加源地址為00000001,目的地址為多余度目標機1.1和1.2的接收廣播地址10000003。
步驟三 上位機將消息發(fā)送給負責維護的目標機,負責維護的目標機根據(jù)消息的目的地址將消息放到與目的地址對應的目標機所在的內(nèi)總線通信鏈路上,如果目的地址是廣播地址則將消息放到該廣播地址對應的多余度目標機內(nèi)總線廣播通信鏈路上。如當負責維護的目標機的接收消息的目的地址是40000001時,則將消息放到與目標機3連接的系統(tǒng)內(nèi)總線通信鏈路上;當負責維護的目標機的接收消息的目的地址是10000003時,則將消息放到多余度目標機1.1與多余度目標機1.2的內(nèi)總線廣播通信鏈路上。
步驟四 各目標機從內(nèi)總線通信鏈路上接收到消息,獲得消息中的源地址做為返回消息的目的地址,目標機處理消息并產(chǎn)生返回消息,將返回消息與代表自身通信地址信息的源地址以及所述目的地址一同發(fā)送放到與負責維護的目標機通信的內(nèi)總線通信鏈路上。如當目標機3從系統(tǒng)內(nèi)總線通信鏈路接收到消息,發(fā)現(xiàn)消息的源地址是00000001,則將此地址做為返回消息的目的地址,目標機3處理消息并產(chǎn)生返回消息,將返回消息與做為源地址的自身通信地址40000001,以及上述目的地址00000001一同發(fā)送給負責維護的目標機;當目標機1.1與目標機1.2從內(nèi)總線廣播通信鏈路上接收到消息,都將消息源地址00000001做為返回消息的目的地址,目標機1.1和目標機1.2分別處理接收到的消息并各自產(chǎn)生返回消息,目標機1.1將其返回消息與做為源地址的自身通信地址10000001,以及上述目的地址00000001一同放到目標機1.1向負責維護的目標機發(fā)送消息的內(nèi)總線通信鏈路上,目標機1.2將其返回消息與做為源地址的自身通信地址10000002,以及上述目的地址00000001一同發(fā)送放到目標機1.2向負責維護的目標機發(fā)送消息的內(nèi)總線通信鏈路上。
步驟五 負責維護的目標機接收內(nèi)總線通信鏈路上的返回消息,根據(jù)所述返回消息的目的地址將所述返回消息發(fā)送給對應的上位機。如負責維護的目標機接收到系統(tǒng)內(nèi)總線消息,根據(jù)消息目的地址00000001或00000002分別將消息發(fā)送給上位機1或上位機2。
步驟六 上位機接收返回消息,將返回消息的源地址與上位機在步驟二中發(fā)送消息的目的地址比較,確認目標機是否正確處理消息。如步驟二中上位機1發(fā)送了目的地址是40000001的消息,然后接收到了源地址是40000001的消息,確認是此前發(fā)送消息的返回消息,上位機1處理消息,確認目標機是否正確處理此消息。
步驟七 上位機發(fā)送新的消息,重復步驟二到步驟六,完成與目標機的通信。
當上位機發(fā)送消息的目的地址是多余度目標機的廣播地址時,所述步驟六具體包括:
A,上位機確定所述多余度目標機的目標機數(shù)量,此數(shù)量是上位機需要接收到的返回消息數(shù)量。如步驟二中上位機1發(fā)送的目的地址是10000003,則需要接收兩個返回消息。
B,上位機解析接收消息的源地址,源地址應是所述廣播地址對應的多余度目標機中某個目標機的源地址。如通信地址10000001、10000002是與廣播地址10000003對應的地址,類似的通信地址10000004、10000008與廣播地址1000000C對應,但10000004、10000008與廣播地址10000003不對應。
C,上位機接收到符合此類源地址的消息數(shù)量與上述上位機需要接收到的消息數(shù)量相同,且每個消息內(nèi)容都確認目標機處理完成時,則可確認廣播地址對應的所有多余度目標機都已正確處理消息。如上位機發(fā)送的目的地址是10000003,則需要接收兩個返回消息,然后上位機接收到了兩條消息,消息的源地址分別是10000001與10000002,與10000003對應,數(shù)量與需要接收到的消息數(shù)量相同,且當每個消息內(nèi)容都確認目標機處理完成時,可確認廣播地址10000003對應的所有多余度目標機都已正確處理消息。
當上位機在一定時限內(nèi)接收到與所述上位機需要接收到的消息數(shù)量相同的所述符合源地址要求的消息數(shù)量,但接收消息中存在某條消息,如來自上位機1.1的消息,其內(nèi)容說明目標機1.1處理消息失敗,則上位機重新發(fā)送之前發(fā)送的消息,重復步驟2到步驟6,在經(jīng)過有限次的重新發(fā)送后,如果都沒有確認目標機都已正確處理消息,則確認上位機與嵌入式系統(tǒng)通信失??;
當上位機在一定時限內(nèi)未能接收到與所述上位機需要接收到的消息數(shù)量相同的所述符合源地址要求的消息數(shù)量,如上位機1在發(fā)送消息后的30秒內(nèi)只收到了來自目標機1.2的返回消息,則上位機對自身需要針對上述多余度目標機接收到的消息數(shù)量做降級處理,將需要針對上述多余度目標機接收到的消息數(shù)量降級設置為此時接收到的所述符合源地址要求的消息數(shù)量,此時由數(shù)量是2降級為數(shù)量是1,并在以后的通信中都以降級后的消息數(shù)量為準,上位機通過廣播地址10000003以及接收到消息的源地址10000002,確認上位機未能收到返回消息的目標機是目標機1.1,并在以后的通信中將所述未能收到返回消息的目標機1.1排除,即上位機1以后在向多余度目標機1.1與1.2發(fā)送消息時,只需要接收1條返回消息,放棄接收來自目標機1.1的返回消息,確認并上報與目標機1.1的通信已經(jīng)失效。