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