欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種處理雙CAN總線時序不同步的方法及系統(tǒng)與流程

文檔序號:11524029閱讀:605來源:國知局
一種處理雙CAN總線時序不同步的方法及系統(tǒng)與流程

本發(fā)明涉及計算機控制技術(shù)領(lǐng)域,尤其涉及一種處理雙can(controllerareanetwork,控制器局域網(wǎng)絡(luò))總線時序不同步的方法及系統(tǒng)。



背景技術(shù):

為了提高設(shè)備間通訊的可靠性,目前主流的控制系統(tǒng)均采用雙總線通信,以實現(xiàn)互相備份,因此雙總線間的仲裁機制就是需要解決的問題。目前雙總線間的仲裁機制主要分為兩種,總線切換和雙收雙發(fā)。總線切換技術(shù)開發(fā)成本高,所以雙收雙發(fā)機制也被很多人使用。使用雙收雙發(fā)機制時,雙通道數(shù)據(jù)不同步的現(xiàn)象是客觀存在的但不明顯,如果總線負(fù)載過大時,雙通道數(shù)據(jù)不同步的現(xiàn)象會加劇,而雙總線數(shù)據(jù)不同步時,會導(dǎo)致某一通道的下一幀數(shù)據(jù)先于另一通道的上一幀數(shù)據(jù)到達(dá),處理不當(dāng)時,會造成上一幀指令被處理兩次,有可能造成命令誤判,引起通訊異常。



技術(shù)實現(xiàn)要素:

本發(fā)明旨在至少克服上述缺陷之一提供一種處理雙can總線時序不同步的方法及系統(tǒng),以解決雙通道數(shù)據(jù)不同步的問題。

為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實現(xiàn)的:

本發(fā)明的一個方面提供了一種處理雙can總線時序不同步的方法,包括:發(fā)送設(shè)備向通過雙can總線連接的接收設(shè)備發(fā)送指令幀時,依次在每個指令幀中設(shè)置幀序號,其中,幀序號按照預(yù)設(shè)順序進(jìn)行編號;接收設(shè)備每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,其中,數(shù)組包含前n次執(zhí)行的指令的指令幀的幀序號,n≥1且n為正整數(shù);接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令。

另外,n=5-int(t2/t1),其中,t2為最小指令幀的發(fā)送間隔時間,t1為最大指令執(zhí)行時間。

另外,接收設(shè)備每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令包括:接收設(shè)備接收第一can總線通道數(shù)據(jù);對第一can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第一can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;接收設(shè)備接收第二can總線通道數(shù)據(jù);對第二can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第二can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第一can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第一can總線通道數(shù)據(jù)的操作。

另外,幀序號從0開始計數(shù),計滿255后從0重新開始計數(shù),計數(shù)每次加1。

另外,雙can總線替換為雙串口。

本發(fā)明另一方面提供了一種處理雙can總線時序不同步的系統(tǒng),包括:發(fā)送設(shè)備,用于向通過雙can總線連接的接收設(shè)備發(fā)送指令幀時,依次在每個指令幀中設(shè)置幀序號,其中,幀序號按照預(yù)設(shè)順序進(jìn)行編號;接收設(shè)備,用于每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,其中,數(shù)組包含前n次執(zhí)行的指令的指令幀的幀序號,n≥1且n為正整數(shù);比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令。

另外,n=5-int(t2/t1),其中,t2為最小指令幀的發(fā)送間隔時間,t1為最大指令執(zhí)行時間。

另外,接收設(shè)備通過如下方式執(zhí)行每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令的操作:接收設(shè)備,用于接收第一can總線通道數(shù)據(jù);對第一can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第一can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;接收第二can總線通道數(shù)據(jù);對第二can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第二can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第一can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第一can總線通道數(shù)據(jù)的操作。

另外,幀序號從0開始計數(shù),計滿255后從0重新開始計數(shù),計數(shù)每次加1。

另外,雙can總線替換為雙串口。

由上述本發(fā)明提供的技術(shù)方案可以看出,通過本發(fā)明實施例提供的處理雙can總線時序不同步的方法及系統(tǒng),保證了雙總線雙收雙發(fā)時出現(xiàn)雙通道數(shù)據(jù)不同步造成通訊異常的現(xiàn)象。此方法不僅適用于can總線,雙串口冗余通訊也可以使用。

附圖說明

為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。

圖1為本發(fā)明實施例1提供的處理雙can總線時序不同步的方法的流程圖;

圖2為本發(fā)明實施例1提供的處理雙can總線時序不同步的系統(tǒng)的結(jié)構(gòu)示意圖。

具體實施方式

下面結(jié)合附圖對本發(fā)明的實施方式進(jìn)行詳細(xì)說明。

實施例1

本發(fā)明實施例1設(shè)計了一種處理雙can總線時序不同步的方法及系統(tǒng),適應(yīng)于雙總線雙收雙發(fā)時總線負(fù)載過大造成雙通道數(shù)據(jù)不同步的情況。

圖1示出了本發(fā)明實施例1提供的處理雙can總線時序不同步的方法的流程圖,參見圖1,本發(fā)明實施例1提供的處理雙can總線時序不同步的方法,包括:

s101,發(fā)送設(shè)備向通過雙can總線連接的接收設(shè)備發(fā)送指令幀時,依次在每個指令幀中設(shè)置幀序號,其中,幀序號按照預(yù)設(shè)順序進(jìn)行編號;

s102,接收設(shè)備每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,其中,數(shù)組包含前n次執(zhí)行的指令的指令幀的幀序號,n≥1且n為正整數(shù);

s103,接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令。

由此可見,在通訊協(xié)議中設(shè)計一組“幀序號”用于甄別雙冗余can總線上的指令幀計數(shù),采用數(shù)組存儲前n次執(zhí)行的“幀序號”,當(dāng)收到一條指令時比較當(dāng)前“幀序號”是否在數(shù)組中,如果在數(shù)組中代表該指令已經(jīng)被執(zhí)行則忽略該指令,這種算法避免了后發(fā)出的指令先于前面的指令得到執(zhí)行,保證了雙總線雙收雙發(fā)時出現(xiàn)雙通道數(shù)據(jù)不同步造成通訊異常的現(xiàn)象。

作為本發(fā)明實施例1的一個可選實施方式,幀序號從0開始計數(shù),計滿255后從0重新開始計數(shù),計數(shù)每次加1,由此,can總線設(shè)備向雙冗余can總線上的另外一個設(shè)備每發(fā)送一個指令幀,則序號計數(shù)加1,針對“幀序號”的遞增特性,可以有效地執(zhí)行計數(shù)的操作。當(dāng)然,本發(fā)明并不局限于此,采用從255開始計數(shù),計數(shù)每次減1,計到0后從255重新開始計數(shù)也屬于本發(fā)明的保護范圍,當(dāng)然,其他方式的預(yù)設(shè)計數(shù)規(guī)則均應(yīng)屬于本發(fā)明的保護范圍。

具體地,作為本發(fā)明實施例1的一個可選實施方式,n=5-int(t2/t1),其中,t2為最小指令幀的發(fā)送間隔時間,t1為最大指令執(zhí)行時間。其中,若n值計算結(jié)果小于等于1時,n應(yīng)取值為1。經(jīng)過測試,采用can總線雙收雙發(fā)機制時,總線負(fù)載過大引起同一幀數(shù)據(jù)在總線上出現(xiàn)的時間差約為0.5毫秒,采用記錄5組歷史數(shù)據(jù)的方式,未出現(xiàn)通訊異常。

作為本發(fā)明實施例1的一個可選實施方式,s102,接收設(shè)備每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,s103,接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令包括:

接收設(shè)備接收第一can總線通道數(shù)據(jù);

對第一can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;

判斷第一can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;

如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;

如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;

接收設(shè)備接收第二can總線通道數(shù)據(jù);

對第二can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;

判斷第二can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;

如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第一can總線通道數(shù)據(jù)的操作;

如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第一can總線通道數(shù)據(jù)的操作。

由此保證雙can總線中每一個通道均可以采用本發(fā)明所記載的方法防治時許不同步產(chǎn)生的數(shù)據(jù)不同步的情況。

具體地,幀序號的數(shù)組設(shè)置為先進(jìn)先出的隊列,存儲空間為n個char型數(shù)據(jù),初始化值設(shè)置為255;

初始化結(jié)束后,啟動處理循環(huán),首先進(jìn)入a通道處理流程;

接收到a通道數(shù)據(jù)后,對數(shù)據(jù)的有效性進(jìn)行判斷,有效性包括幀頭、幀尾、校驗等;

判斷a通道數(shù)據(jù)為有效后,將當(dāng)前幀序號與幀序號數(shù)組的n個歷史幀序號進(jìn)行比對;

當(dāng)幀序號數(shù)組中已經(jīng)存在當(dāng)前幀序號時,當(dāng)前命令不需要響應(yīng),退出當(dāng)前a通道處理流程,進(jìn)入b通道處理流程;

當(dāng)幀序號數(shù)組中不存在當(dāng)前幀序號時,將當(dāng)前幀序號存入幀序號數(shù)組中,最早存入的幀序號出隊,進(jìn)入下一步的命令動作執(zhí)行;

a通道數(shù)據(jù)處理結(jié)束后,進(jìn)行b通道數(shù)據(jù)處理流程;

接收到b通道數(shù)據(jù)后,對數(shù)據(jù)的有效性進(jìn)行判斷,有效性包括幀頭、幀尾、校驗等;

判斷b通道數(shù)據(jù)為有效后,將當(dāng)前幀序號與幀序號數(shù)組的n個歷史幀序號進(jìn)行比對;

當(dāng)幀序號數(shù)組中已經(jīng)存在當(dāng)前幀序號時,當(dāng)前命令不需要響應(yīng),退出當(dāng)前b通道處理流程,進(jìn)入a通道處理流程;

當(dāng)幀序號數(shù)組中不存在當(dāng)前幀序號時,將當(dāng)前幀序號存入幀序號數(shù)組中,最早存入的幀序號出隊,進(jìn)入下一步的命令動作執(zhí)行;

b通道數(shù)據(jù)處理結(jié)束后,一個處理循環(huán)結(jié)束。

圖2示出了本發(fā)明實施例1提供的處理雙can總線時序不同步的系統(tǒng)的結(jié)構(gòu)示意圖,其應(yīng)用于上述方法,在此僅對其結(jié)構(gòu)進(jìn)行簡要說明,其他未盡事宜,可參見上述方法的相關(guān)說明,參見圖2,本發(fā)明實施例1提供的處理雙can總線時序不同步的系統(tǒng),包括:

發(fā)送設(shè)備101,用于向通過雙can總線連接的接收設(shè)備發(fā)送指令幀時,依次在每個指令幀中設(shè)置幀序號,其中,幀序號按照預(yù)設(shè)順序進(jìn)行編號;

接收設(shè)備102,用于每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,其中,數(shù)組包含前n次執(zhí)行的指令的指令幀的幀序號,n≥1且n為正整數(shù);比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令。

作為本發(fā)明實施例1的一個可選實施方式,n=5-int(t2/t1),其中,t2為最小指令幀的發(fā)送間隔時間,t1為最大指令執(zhí)行時間。其中,若n值計算結(jié)果小于等于1時,n應(yīng)取值為1。經(jīng)過測試,采用can總線雙收雙發(fā)機制時,總線負(fù)載過大引起同一幀數(shù)據(jù)在總線上出現(xiàn)的時間差約為0.5毫秒,采用記錄5組歷史數(shù)據(jù)的方式,未出現(xiàn)通訊異常。

作為本發(fā)明實施例1的一個可選實施方式,接收設(shè)備102通過如下方式執(zhí)行每接收一個指令幀,比較當(dāng)前指令幀的幀序號是否在數(shù)組中,接收設(shè)備比較當(dāng)前指令幀的幀序號在數(shù)組中,則忽略該指令的操作:接收設(shè)備102,用于接收第一can總線通道數(shù)據(jù);對第一can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第一can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第二can總線通道數(shù)據(jù)的操作;接收第二can總線通道數(shù)據(jù);對第二can總線通道數(shù)據(jù)的有效性進(jìn)行判斷;判斷第二can總線通道數(shù)據(jù)有效后,將當(dāng)前指令幀的幀序號與數(shù)組中的n個歷史幀序號進(jìn)行比對;如果數(shù)組中不存在當(dāng)前指令幀的幀序號,將當(dāng)前指令幀的幀序號存入數(shù)組中,刪除最早存入的幀序號,并執(zhí)行當(dāng)前指令幀的指令,執(zhí)行完畢后執(zhí)行接收第一can總線通道數(shù)據(jù)的操作;如果數(shù)組中已經(jīng)存在當(dāng)前指令幀的幀序號,不響應(yīng)當(dāng)前指令幀,并執(zhí)行接收第一can總線通道數(shù)據(jù)的操作。由此保證雙can總線中每一個通道均可以采用本發(fā)明所記載的方法防治時許不同步產(chǎn)生的數(shù)據(jù)不同步的情況。

作為本發(fā)明實施例1的一個可選實施方式,幀序號從0開始計數(shù),計滿255后從0重新開始計數(shù),計數(shù)每次加1。由此,can總線設(shè)備向雙冗余can總線上的另外一個設(shè)備每發(fā)送一個指令幀,則序號計數(shù)加1,針對“幀序號”的遞增特性,可以有效地執(zhí)行計數(shù)的操作。

由此可見,在通訊協(xié)議中設(shè)計一組“幀序號”用于甄別雙冗余can總線上的指令幀計數(shù),采用數(shù)組存儲前n次執(zhí)行的“幀序號”,當(dāng)收到一條指令時比較當(dāng)前“幀序號”是否在數(shù)組中,如果在數(shù)組中代表該指令已經(jīng)被執(zhí)行則忽略該指令,這種算法避免了后發(fā)出的指令先于前面的指令得到執(zhí)行,保證了雙總線雙收雙發(fā)時出現(xiàn)雙通道數(shù)據(jù)不同步造成通訊異常的現(xiàn)象。

實施例2

本實施例2與實施例1的區(qū)別僅在于雙can總線替換為雙串口,相關(guān)說明參照實施例1的相關(guān)說明,在此不再詳述。

流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。

本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。

在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。

以上的實施例僅是對本發(fā)明的優(yōu)選實施方式進(jìn)行描述,并非對本發(fā)明的范圍進(jìn)行限定,在不脫離本發(fā)明設(shè)計精神的前提下,本領(lǐng)域普通工程技術(shù)人員對本發(fā)明的技術(shù)方案做出的各種變形和改進(jìn),均應(yīng)落入本發(fā)明的權(quán)利要求書確定的保護范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
陵川县| 虹口区| 靖宇县| 聊城市| 商洛市| 封丘县| 南宁市| 乐山市| 定西市| 山西省| 滕州市| 韶山市| 新化县| 醴陵市| 新沂市| 金平| 灵寿县| 临汾市| 临湘市| 新营市| 博罗县| 莱芜市| 美姑县| 西和县| 榆中县| 枝江市| 盐亭县| 永平县| 华宁县| 宁陕县| 山阴县| 天镇县| 邹平县| 策勒县| 九台市| 高邮市| 阜新市| 韩城市| 襄樊市| 张掖市| 尖扎县|