專利名稱:一種適于多主通信的星載can總線通信方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種星載CAN總線通信方法,特別是一種適于多主通信的星載CAN總 線通信方法,屬于星載CAN總線技術(shù)領(lǐng)域。
背景技術(shù):
CAN (Controller Area Network)總線是一種串行通信的現(xiàn)場總線,具有可靠性 高、實時性好、抗干擾能力強、通信方式靈活、組網(wǎng)簡單等優(yōu)點,因此國內(nèi)外均已將其引入衛(wèi) 星上電子系統(tǒng),甚至作為星上骨干網(wǎng)絡(luò)來完成星上設(shè)備間的信息傳遞。在CAN總線協(xié)議方面,德國B0SCH公司的“CAN Specification Version2. 0,1991” 對CAN總線通信協(xié)議進行了詳細說明,即我們現(xiàn)在使用的CAN2. 0A標(biāo)準規(guī)范。該協(xié)議后經(jīng) 國際標(biāo)準化組織(ISO)采用開放系統(tǒng)互聯(lián)(0SI)模型標(biāo)準化后得到IS011898和IS011519 兩個標(biāo)準,分別對高、低速CAN總線的物理層和數(shù)據(jù)鏈路層作出了規(guī)定。由于CAN的0SI模 型標(biāo)準沒有對數(shù)據(jù)鏈路層以上的協(xié)議進行規(guī)定,因此增強了 CAN總線應(yīng)用的靈活性。多個 行業(yè)根據(jù)應(yīng)用特點在CAN底層協(xié)議的基礎(chǔ)上形成了高層應(yīng)用標(biāo)準,如Rockwell公司針對工 業(yè)自動化建立基于CAN總線的開放式現(xiàn)場總線標(biāo)準DeviceNet ;CiA組織針對工業(yè)應(yīng)用建立 的CANopen規(guī)范;德國Stock Flight System公司針對航空飛行器應(yīng)用建立的新型航空機 載設(shè)備通信總線協(xié)議CANaerospace ;美國航空無線電公司ARI NC針對航空飛行器應(yīng)用建 立了 ARI NC-825 標(biāo)準。在衛(wèi)星應(yīng)用領(lǐng)域,目前還沒有代表性的針對CAN總線的應(yīng)用協(xié)議規(guī)范?,F(xiàn)有星上 使用的CAN總線應(yīng)用協(xié)議普遍是基于CAN2. 0A標(biāo)準規(guī)范建立的僅適于主從通信或準多主通 信的方法,不能適用星上多個通信節(jié)點間自主數(shù)據(jù)交換的多主通信需求。滿足星載CAN總 線多個通信節(jié)點間自主數(shù)據(jù)交換的多主通信方法還未見有專利及文獻報道
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供了一種適于多主通信的星 載CAN總線通信方法,解決星載CAN總線網(wǎng)絡(luò)上多個通信節(jié)點間自主數(shù)據(jù)交換的問題。本發(fā)明的技術(shù)解決方案是一種適于多主通信的星載CAN總線通信方法,基于衛(wèi)星CAN總線通信協(xié)議的 CAN2. 0A標(biāo)準規(guī)范,按照如下方法進行節(jié)點間通信將CAN2. 0A協(xié)議中的libit標(biāo)識符區(qū)域劃分為三個部分,依次是源地址、目的地址 和幀類型,其中源地址表示發(fā)起數(shù)據(jù)傳輸?shù)墓?jié)點自身地址,分配4bit ;目的地址表示發(fā)送 目標(biāo)節(jié)點的地址,分配4bit;幀類型分配3bit,包括單幀數(shù)據(jù)、多幀數(shù)據(jù)起始幀、多幀數(shù)據(jù) 中繼幀和多幀數(shù)據(jù)結(jié)束幀;所述節(jié)點為衛(wèi)星上使用CAN總線連接起來的各個分系統(tǒng)中具有 CAN通信接口的設(shè)備或傳感器;單幀數(shù)據(jù)的數(shù)據(jù)場長度為8字節(jié),第一個字節(jié)表示數(shù)據(jù)類型,后面七個字節(jié)全部 為應(yīng)用數(shù)據(jù);多幀數(shù)據(jù)起始幀數(shù)據(jù)場長度為4個字節(jié),第一個字節(jié)為數(shù)據(jù)幀數(shù),表示實際傳送的數(shù)據(jù)幀的數(shù)目,第二個字節(jié)為數(shù)據(jù)長度,第三個字節(jié)為數(shù)據(jù)類型,第四個字節(jié)為保留字 節(jié);多幀數(shù)據(jù)的中繼幀數(shù)據(jù)場長度為8字節(jié),全部為應(yīng)用數(shù)據(jù),不足8字節(jié)的中繼幀補足8 字節(jié);多幀數(shù)據(jù)結(jié)束幀數(shù)據(jù)場長度為1字節(jié),該字節(jié)為應(yīng)用數(shù)據(jù)的校驗和;節(jié)點地址設(shè)計為兩類,第一類節(jié)點僅接收發(fā)給自己的數(shù)據(jù),即數(shù)據(jù)幀中的目的地 址與接收節(jié)點的本地地址一致,第二類節(jié)點可以接收發(fā)給自己的數(shù)據(jù),即數(shù)據(jù)幀中的目的 地址與接收節(jié)點的本地地址一致,同時還可以接收網(wǎng)絡(luò)廣播數(shù)據(jù),即數(shù)據(jù)幀的目的地址為 設(shè)定的廣播地址;網(wǎng)絡(luò)中廣播地址設(shè)置為“1111”,其余地址的分配依據(jù)網(wǎng)絡(luò)中第二類地址數(shù)目需求 來定,分為三種情況1)當(dāng)?shù)诙惞?jié)點數(shù)目需求為0時,廣播地址以外的其余地址可全部分配為第一類 地址,共計15個;2)當(dāng)?shù)诙惞?jié)點數(shù)目需求為1 4時,4bit節(jié)點地址中“1”的數(shù)目為3的組合分 配作為第二類地址,即“1110”、“1101”、“1011”和“0111”,共計4個;4bit節(jié)點地址中“1” 的數(shù)目為0、1和2的組合均可以分配作為第一類地址,共計11個;3)當(dāng)?shù)诙惞?jié)點數(shù)目需求為5 6時,4bit節(jié)點地址中“1”的數(shù)目為2的組合分 配作為第二類地址,即“1100”、“1001”、“0011”、“1010”、“0110”和“0101”,共計 6 個;4bit 節(jié)點地址中“1”的數(shù)目為0和1的組合均可以分配作為第一類地址,共計5個,4bit節(jié)點地 址中“ 1 ”的數(shù)目為3的節(jié)點地址禁用;對第一類節(jié)點的4bit目的地址全部進行接收濾波設(shè)置,僅當(dāng)接收數(shù)據(jù)幀中的目 的地址與本節(jié)點本地地址完全一致時接收,即本地節(jié)點僅僅接收發(fā)給自己的數(shù)據(jù),所述進 行接收濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收代碼寄存器和接收屏蔽 寄存器的數(shù)值;對第二類節(jié)點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為“1”的位 進行濾波,對接收到的數(shù)據(jù)幀,只要目的地址的相應(yīng)位為“1”,即與本地4bit地址中為“1” 對應(yīng)的位為“1”,則進行接收,否則不接收;對于第一類和第二類節(jié)點的4bit源地址進行濾波設(shè)置,以屏蔽掉非約定節(jié)點發(fā) 來的非法數(shù)據(jù);所述濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收代碼寄存器 和接收屏蔽寄存器的數(shù)值,使得本地節(jié)點拒絕接收非約定節(jié)點發(fā)過來的錯誤數(shù)據(jù);根據(jù)上述方法設(shè)置完所有節(jié)點所對應(yīng)的CAN總線控制器中的接收濾波寄存器并 且根據(jù)上述方法編寫發(fā)送模塊和接收模塊,最后衛(wèi)星上各個通信節(jié)點之間通過發(fā)送模塊和 接收模塊進行通信本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是(1)本發(fā)明通信方法中的每幀數(shù)據(jù)中都包含了數(shù)據(jù)的源地址和目的地址,因此,連 接在星載CAN總線上的多個通信節(jié)點都可以作為主節(jié)點的方式自主在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù),接 收節(jié)點可以根據(jù)接收到數(shù)據(jù)幀中的目的節(jié)點地址來判斷該數(shù)據(jù)幀是否是發(fā)送給自己的,同 時可以通過接收到數(shù)據(jù)幀中的源地址判斷該幀數(shù)據(jù)是從總線上哪個節(jié)點發(fā)送的,從而確保 了總線上多個通信節(jié)點多主通信的實現(xiàn),增強了節(jié)點間通信的靈活性。(2)現(xiàn)有星載CAN總線所采用的主從式通信模式是主節(jié)點通過輪詢的方式(逐個 向從節(jié)點發(fā)送數(shù)據(jù)請求)要求從節(jié)點返回所需的數(shù)據(jù),主節(jié)點需要等待前一個從節(jié)點返回所需的數(shù)據(jù)后才能向下一個節(jié)點發(fā)送數(shù)據(jù)請求,而每個接收到數(shù)據(jù)請求的從節(jié)點從收到數(shù) 據(jù)請求到將數(shù)據(jù)通過CAN總線發(fā)送給主節(jié)點都有一個不確定的時間延遲(該延遲主要由從 節(jié)點處理器的性能、總線接收數(shù)據(jù)中斷優(yōu)先級、數(shù)據(jù)準備時間等因素決定),因此導(dǎo)致主節(jié) 點在輪詢到每個從節(jié)點時都存在一個不確定的時間等待,進而使得主節(jié)點不能在確定時間 內(nèi)完成與當(dāng)前從節(jié)點及后續(xù)從節(jié)點的通信,基于本發(fā)明通信方法的星載CAN總線上的多個 節(jié)點由于都可以以主節(jié)點的方式根據(jù)自己的時序自主安排向其他通信節(jié)點發(fā)送數(shù)據(jù)或廣 播數(shù)據(jù),各個節(jié)點的通信彼此獨立,多個節(jié)點可以實現(xiàn)同時對CAN總線的訪問(向總線上發(fā) 送數(shù)據(jù)),利用CAN總線自身的總線仲裁機制可以確保多個節(jié)點在同一時刻發(fā)送的數(shù)據(jù)依 據(jù)優(yōu)先級依次在總線上傳輸,因此可以大幅提高總線傳輸?shù)睦寐剩鲝耐ㄐ欧绞街?的通信時間延遲及時間不確定性,提升數(shù)據(jù)傳輸?shù)膶崟r性;(3)采用基于本發(fā)明通信方法的節(jié)點地址分配及屏蔽策略,可實現(xiàn)多個通信節(jié)點 間在不影響數(shù)據(jù)幀接收的同時根據(jù)需要屏蔽掉無關(guān)節(jié)點發(fā)送的全部數(shù)據(jù),通過目的節(jié)點地 址屏蔽設(shè)置可以確??偩€上某通信節(jié)點只接收事先約定的總線上其它通信節(jié)點發(fā)送來的 數(shù)據(jù)幀(即以數(shù)據(jù)接收通信節(jié)點為目的地址的數(shù)據(jù)幀),通過源節(jié)點地址屏蔽設(shè)置可以避 免總線上非約定通信節(jié)點在故障情況下以錯誤的以某節(jié)點的地址為目的地址而向該節(jié)點 發(fā)送數(shù)據(jù)幀。
圖1為本發(fā)明的適于多主通信的星載CAN總線通信方法的協(xié)議格式;圖2為本發(fā)明的適于多主通信的星載CAN總線通信方法的流程。
具體實施例方式采用CAN總線實現(xiàn)星上多個通信節(jié)點間的數(shù)據(jù)交換是目前小衛(wèi)星上常用的節(jié)點 間通信方式,星載CAN總線通信節(jié)點通常為星上某分系統(tǒng)中具有CAN通信接口的設(shè)備或傳 感器,通信節(jié)點的基本構(gòu)成是CAN總線收發(fā)器,CAN總線控制器、微處理器等,連接關(guān)系是通 信節(jié)點的處理器和CAN總線控制器連接,CAN總線控制器和CAN收發(fā)器連接,CAN收發(fā)器連 接CAN總線通信線纜。CAN總線連接的多個通信節(jié)點的通信方式有兩種基本形式,即主從式通信和多主 通信。CAN總線的主從式通信方式指CAN總線上只能有一個主節(jié)點,該節(jié)點可以主動向總線 上發(fā)送數(shù)據(jù),其它節(jié)點(從節(jié)點)不能主動向總線上發(fā)送數(shù)據(jù),只能在接收到主節(jié)點的數(shù)據(jù) 請求后向主節(jié)點發(fā)送數(shù)據(jù)。CAN總線的多主通信是指CAN總線上可以有多個可以自主向總 線上發(fā)送數(shù)據(jù)的通信節(jié)點,多個主節(jié)點間可以自主的發(fā)起數(shù)據(jù)通信?,F(xiàn)在普遍使用的CAN2. OA協(xié)議定義的數(shù)據(jù)幀結(jié)構(gòu)可以參考德國B0SCH公司的“CAN Specification Version2. 0,1991 ”,數(shù)據(jù)幀由7個位域構(gòu)成,包括幀起始、仲裁域(12bit, 含libit的標(biāo)識符和lbit的遠程發(fā)送請求位)、控制域、數(shù)據(jù)場(0 8字節(jié))、CRC校驗域、 應(yīng)答域和幀結(jié)尾。下面結(jié)合附圖對本發(fā)明的具體實施方式
進行進一步的詳細描述。本發(fā)明基于CAN總線通信協(xié)議的CAN2. OA標(biāo)準規(guī)范,結(jié)合圖1和圖2,按照如下方 式實現(xiàn)星上通信節(jié)點之間的多主通信
1)將現(xiàn)有的CAN2.0A協(xié)議中的libit標(biāo)識符區(qū)域劃分為三個部分,依次是源地址 (4bit)、目的地址(4bit)和幀類型(3bit),幀類型“000”表示單幀數(shù)據(jù)、“001”表示多幀起 始幀、“010”表示多幀中間幀、“011”表示多幀結(jié)束幀,其余保留;2)將CAN2. OA協(xié)議中的數(shù)據(jù)段針對單幀和多幀數(shù)據(jù)傳送進行區(qū)別設(shè)計。單幀數(shù)據(jù) 的數(shù)據(jù)場長度設(shè)計為8字節(jié),第一個字節(jié)表示數(shù)類型,后面七個字節(jié)全部為應(yīng)用數(shù)據(jù)。多幀 數(shù)據(jù)起始幀數(shù)據(jù)場長度設(shè)計為4個字節(jié),第一個字節(jié)為數(shù)據(jù)幀數(shù),表示實際傳送的數(shù)據(jù)幀 的數(shù)目,第二個字節(jié)為數(shù)據(jù)長度,第三個字節(jié)為數(shù)據(jù)類型,第四個字節(jié)為保留字節(jié)。多幀數(shù) 據(jù)的中間幀數(shù)據(jù)場長度為8字節(jié),全部為應(yīng)用數(shù)據(jù),不足8字節(jié)的中間幀補足8字節(jié)。多幀 數(shù)據(jù)結(jié)束幀數(shù)據(jù)場長度設(shè)計為1字節(jié),該字節(jié)為應(yīng)用數(shù)據(jù)的校驗和。進行通信節(jié)點間地址編排及設(shè)置接收濾波具體如下節(jié)點地址設(shè)計為兩類,第一類節(jié)點僅接收發(fā)給自己的數(shù)據(jù),即數(shù)據(jù)幀中的目的地 址與接收節(jié)點的本地地址一致,稱為A類節(jié)點地址;第二類節(jié)點可以接收發(fā)給自己的數(shù)據(jù), 即數(shù)據(jù)幀中的目的地址與接收節(jié)點的本地地址一致,同時還可以接收網(wǎng)絡(luò)廣播數(shù)據(jù),即數(shù) 據(jù)幀的目的地址為設(shè)定的廣播地址,稱為B類節(jié)點地址;網(wǎng)絡(luò)中廣播地址設(shè)置為“1111”,其余地址的分配依據(jù)網(wǎng)絡(luò)中B類節(jié)點數(shù)目需求來 定,分為三種情況1)當(dāng)B類節(jié)點數(shù)目需求為0時,廣播地址以外的其余地址可全部分配為第一類地 址,共計15個;2)當(dāng)B類節(jié)點數(shù)目需求為1 4時,4bit節(jié)點地址中“1”的數(shù)目為3的組合分配 作為B類地址,即“ 1110”、“ 1101”、“ 1011”和“0111 ”,共計4個;4bit節(jié)點地址中“ 1 ”的數(shù) 目為0、1和2的組合均可以分配作為A類地址,共計11個;3)當(dāng)B類節(jié)點數(shù)目需求為5 6時,4bit節(jié)點地址中“ 1 ”的數(shù)目為2的組合分配 作為 B 類地址,S卩“ 1100”、“1001”、“0011”、“1010”、“0110”和“0101”,共計 6 個;4bit 節(jié)點 地址中“1”的數(shù)目為0和1的組合均可以分配作為A類地址,共計5個,4bit節(jié)點地址中 “1”的數(shù)目為3的節(jié)點地址禁用;對A類節(jié)點的4bit目的地址全部進行接收濾波設(shè)置,僅當(dāng)接收數(shù)據(jù)幀中的目的地 址與本節(jié)點本地地址完全一致時接收,即本地節(jié)點僅僅接收發(fā)給自己的數(shù)據(jù),所述進行接 收濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收濾波寄存器的數(shù)值;對B類節(jié)點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為“ 1 ”的位進 行濾波,對接收到的數(shù)據(jù)幀,只要其目的地址的相應(yīng)位為“1”,即與本地4bit地址中為“1” 對應(yīng)的位為“ 1 ”,則進行接收,否則不接收。對于A類和B類節(jié)點的4bit源地址進行濾波設(shè)置,以屏蔽掉非約定節(jié)點發(fā)來的 非法數(shù)據(jù);所述濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收濾波寄存器的數(shù) 值,使得本地節(jié)點拒絕接收非約定節(jié)點發(fā)過來的錯誤數(shù)據(jù)。根據(jù)上述方法設(shè)置完所有節(jié)點所對應(yīng)的CAN總線控制器中的接收濾波寄存器并 且根據(jù)上述方法編寫發(fā)送模塊和接收模塊,最后衛(wèi)星上各個通信節(jié)點之間通過發(fā)送模塊和 接收模塊進行通信。實施例1 1)如表1所示,B類節(jié)點地址需求為6個,設(shè)定廣播地址為“1111”,B類節(jié)點的地
6址設(shè)置為 “0011”、“0101”、“0110”、“1001”、“1010”、“1100”,A 類節(jié)點地址設(shè)置為 “0000”、 “ 0001 ”、“ 0010”、“0100 ”、“ 1000 ”,其余地址禁用;表 1
站地址 編排屏蔽碼設(shè)置地址類型節(jié)點類型目的地址屏蔽 ID6-ID3源地址屏蔽 ID10-ID7000000000XXXX節(jié)點地址A
100010000XXXX節(jié)點地址A200100000XXXX節(jié)點地址A300111100XXXX節(jié)點地址B401000000XXXX節(jié)點地址A501011010XXXX節(jié)點地址B601101001XXXX節(jié)點地址B70111——枯田—810000000XXXX節(jié)點地址A910010110XXXX節(jié)點地址B1010100101XXXX節(jié)點地址B111011—— 田一1211000011XXXX節(jié)點地址B131101——赫ffl—141110——禁用—151111——廣播地址注XXXX為可根據(jù)應(yīng)用需要定義的屏蔽碼2)對A類節(jié)點的4bit目的地址全部進行接收濾波設(shè)置,即僅當(dāng)接收數(shù)據(jù)幀中的 目的地址數(shù)據(jù)與本節(jié)點地址完全一致時接收;該過程可以通過設(shè)置CAN控制器的接收代碼 寄存器和接收屏蔽寄存器的相應(yīng)位來實現(xiàn)。比如采用CAN總線控制器SJA1000,設(shè)置方式 為配置寄存器ACR的(bit3 BitO)為本節(jié)點地址的4bit數(shù)值,其余為任意;配置寄存器 AMR 的(bit7 BitO)為 “11110000”。3)對B類節(jié)點的4bit目的地址進行選擇性濾波,即對本地地址(4bit)中為“ 1 ” 的位進行濾波設(shè)置,對接收到數(shù)據(jù)幀,只要其目的地址的相應(yīng)位(與本地地址(4bit)中為 “1”對應(yīng)的位)為“1”,則進行接收,否則不接收。對于CAN總線控制器SJA1000,設(shè)置方式 為配置寄存器ACR的(bit3 BitO)為本節(jié)點地址的4bit數(shù)值,其余為任意;配置寄存器 AM R的(bit7 Bit4)為“1111”,配置寄存器AM R的(bit3 BitO)為本節(jié)點地址的按 位取反,如本節(jié)點地址為“1100”,則AM R的(bit3 BitO)配置為“0011”。4)對A類和B類節(jié)點的4bit源地址,根據(jù)應(yīng)用需要進行濾波設(shè)置,以屏蔽掉非約 定節(jié)點發(fā)來的非法數(shù)據(jù);該過程可以通過設(shè)置CAN控制器的接收代碼寄存器和接收屏蔽寄 存器的相應(yīng)位來實現(xiàn),方法同上。
7
5)單幀數(shù)據(jù)的數(shù)據(jù)場長度設(shè)計為8字節(jié),第一個字節(jié)表示數(shù)類型,后面七個字節(jié) 全部為應(yīng)用數(shù)據(jù);6)多幀數(shù)據(jù)起始幀數(shù)據(jù)場長度設(shè)計為4個字節(jié),第一個字節(jié)為數(shù)據(jù)幀數(shù),表示實 際傳送的數(shù)據(jù)幀的數(shù)目;7)多幀數(shù)據(jù)的中間幀數(shù)據(jù)場長度為8字節(jié),全部為應(yīng)用數(shù)據(jù),不足8字節(jié)的中間幀 補足8字節(jié);8)多幀數(shù)據(jù)結(jié)束幀數(shù)據(jù)場長度設(shè)計為1字節(jié),該字節(jié)為應(yīng)用數(shù)據(jù)的校驗和。3.依據(jù)節(jié)點地址編排及接收濾波策略進行各個通信節(jié)點相應(yīng)參數(shù)的設(shè)置,可采用 配置CAN總線控制器寄存器的方式實現(xiàn)。4.依據(jù)本發(fā)明的CAN總線通信方法完成通信節(jié)點發(fā)送和接收函數(shù)模塊的代碼實 現(xiàn),其中發(fā)送模塊的代碼實現(xiàn)包括以下步驟1)將要發(fā)送數(shù)據(jù)的指針、數(shù)據(jù)長度、本節(jié)點地址、目的節(jié)點地址、幀類型作為函數(shù) 模塊的輸入?yún)?shù);2)通過讀取CAN控制器的狀態(tài)寄存器的狀態(tài)位來判斷是否為可發(fā)送狀態(tài),如果是 可發(fā)送狀態(tài)則繼續(xù),否則等待;3)設(shè)置CAN控制器中表示libit標(biāo)識符的寄存器的值,分別是將前4bit設(shè)置為源 地址,即函數(shù)模塊輸入?yún)?shù)的本節(jié)點地址,緊接著的4bit為目的地址,即函數(shù)模塊輸入?yún)?數(shù)的目的節(jié)點地址,最后3bit為幀類型;4)向CAN控制器的發(fā)送緩沖區(qū)中寫入要發(fā)送的數(shù)據(jù),0 8個字節(jié);5)通過向CAN控制器的發(fā)送使能寄存器寫入使能數(shù)據(jù)啟動發(fā)送;6)函數(shù)返回;其中接收模塊的代碼實現(xiàn)包括以下步驟1)接收函數(shù)模塊無輸入?yún)?shù);2)讀取CAN控制器狀態(tài)寄存器的相應(yīng)狀態(tài)位來判斷是否有接收到的數(shù)據(jù)幀,有則 依次從CAN控制器接收緩沖區(qū)讀出數(shù)據(jù),無則繼續(xù);3)通過向CAN控制器的命令寄存器寫入釋放緩沖區(qū)指令來清除接收緩沖區(qū);4)函數(shù)返回;5.通信節(jié)點間通過發(fā)送和接收函數(shù)模塊進行發(fā)送和接收通信。接收函數(shù)模塊和發(fā)送函數(shù)模塊均是現(xiàn)有技術(shù)中比較成熟的應(yīng)用模式。實施例2本發(fā)明的實現(xiàn)步驟如下1.基于CAN總線通信協(xié)議的CAN2. OA標(biāo)準規(guī)范,進行節(jié)點間通信應(yīng)用協(xié)議約定,具 體如下1)將CAN2. OA協(xié)議中的1 lbit標(biāo)識符區(qū)域劃分為三個部分,依次是源地址 (4bit)、目的地址(4bit)和幀類型(3bit),幀類型“000”表示單幀數(shù)據(jù)、“001”表示多幀起 始幀、“010”表示多幀中間幀、“011”表示多幀結(jié)束幀,其余保留;2)將CAN2. OA協(xié)議中的數(shù)據(jù)段針對單幀和多針數(shù)據(jù)傳送進行區(qū)別設(shè)計。單幀數(shù)據(jù) 的數(shù)據(jù)場長度設(shè)計為8字節(jié),第一個字節(jié)表示數(shù)類型,后面七個字節(jié)全部為應(yīng)用數(shù)據(jù)。多幀 數(shù)據(jù)起始幀數(shù)據(jù)場長度設(shè)計為4個字節(jié),第一個字節(jié)為數(shù)據(jù)幀數(shù),表示實際傳送的數(shù)據(jù)幀的數(shù)目。多幀數(shù)據(jù)的中間幀數(shù)據(jù)場長度為8字節(jié),全部為應(yīng)用數(shù)據(jù),不足8字節(jié)的中間幀補 足8字節(jié)。多幀數(shù)據(jù)結(jié)束幀數(shù)據(jù)場長度設(shè)計為1字節(jié),該字節(jié)為應(yīng)用數(shù)據(jù)的校驗和。2.進行通信點間地址編排及設(shè)置接收濾波策略,具體如下1)如表2所示,B類節(jié)點地址需求為4個,設(shè)定廣播地址為“1111”,B類節(jié)點的地 址設(shè)置為“0111”、“ 1011 ”、“ 1101”、“ 1110,,,其余為A類節(jié)點地址;表權(quán)利要求
一種適于多主通信的星載CAN總線通信方法,基于衛(wèi)星CAN總線通信協(xié)議的CAN2.0A標(biāo)準規(guī)范,其特征在于按照如下方法進行節(jié)點間通信將CAN2.0A協(xié)議中的11bit標(biāo)識符區(qū)域劃分為三個部分,依次是源地址、目的地址和幀類型,其中源地址表示發(fā)起數(shù)據(jù)傳輸?shù)墓?jié)點自身地址,分配4bit;目的地址表示發(fā)送目標(biāo)節(jié)點的地址,分配4bit;幀類型分配3bit,包括單幀數(shù)據(jù)、多幀數(shù)據(jù)起始幀、多幀數(shù)據(jù)中繼幀和多幀數(shù)據(jù)結(jié)束幀;所述節(jié)點為衛(wèi)星上使用CAN總線連接起來的各個分系統(tǒng)中具有CAN通信接口的設(shè)備或傳感器;單幀數(shù)據(jù)的數(shù)據(jù)場長度為8字節(jié),第一個字節(jié)表示數(shù)據(jù)類型,后面七個字節(jié)全部為應(yīng)用數(shù)據(jù);多幀數(shù)據(jù)起始幀數(shù)據(jù)場長度為4個字節(jié),第一個字節(jié)為數(shù)據(jù)幀數(shù),表示實際傳送的數(shù)據(jù)幀的數(shù)目,第二個字節(jié)為數(shù)據(jù)長度,第三個字節(jié)為數(shù)據(jù)類型,第四個字節(jié)為保留字節(jié);多幀數(shù)據(jù)的中繼幀數(shù)據(jù)場長度為8字節(jié),全部為應(yīng)用數(shù)據(jù),不足8字節(jié)的中繼幀補足8字節(jié);多幀數(shù)據(jù)結(jié)束幀數(shù)據(jù)場長度為1字節(jié),該字節(jié)為應(yīng)用數(shù)據(jù)的校驗和;節(jié)點地址設(shè)計為兩類,第一類節(jié)點僅接收發(fā)給自己的數(shù)據(jù),即數(shù)據(jù)幀中的目的地址與接收節(jié)點的本地地址一致,第二類節(jié)點可以接收發(fā)給自己的數(shù)據(jù),即數(shù)據(jù)幀中的目的地址與接收節(jié)點的本地地址一致,同時還可以接收網(wǎng)絡(luò)廣播數(shù)據(jù),即數(shù)據(jù)幀的目的地址為設(shè)定的廣播地址;網(wǎng)絡(luò)中廣播地址設(shè)置為“1111”,其余地址的分配依據(jù)網(wǎng)絡(luò)中第二類地址數(shù)目需求來定,分為三種情況1)當(dāng)?shù)诙惞?jié)點數(shù)目需求為0時,廣播地址以外的其余地址可全部分配為第一類地址,共計15個;2)當(dāng)?shù)诙惞?jié)點數(shù)目需求為1~4時,4bit節(jié)點地址中“1”的數(shù)目為3的組合分配作為第二類地址,即“1110”、“1101”、“1011”和“0111”,共計4個;4bit節(jié)點地址中“1”的數(shù)目為0、1和2的組合均可以分配作為第一類地址,共計11個;3)當(dāng)?shù)诙惞?jié)點數(shù)目需求為5~6時,4bit節(jié)點地址中“1”的數(shù)目為2的組合分配作為第二類地址,即“1100”、“1001”、“0011”、“1010”、“0110”和“0101”,共計6個;4bit節(jié)點地址中“1”的數(shù)目為0和1的組合均可以分配作為第一類地址,共計5個,4bit節(jié)點地址中“1”的數(shù)目為3的節(jié)點地址禁用;對第一類節(jié)點的4bit目的地址全部進行接收濾波設(shè)置,僅當(dāng)接收數(shù)據(jù)幀中的目的地址與本節(jié)點本地地址完全一致時接收,即本地節(jié)點僅僅接收發(fā)給自己的數(shù)據(jù),所述進行接收濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收代碼寄存器和接收屏蔽寄存器的數(shù)值;對第二類節(jié)點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為“1”的位進行濾波,對接收到的數(shù)據(jù)幀,只要目的地址的相應(yīng)位為“1”,即與本地4bit地址中為“1”對應(yīng)的位為“1”,則進行接收,否則不接收;對于第一類和第二類節(jié)點的4bit源地址進行濾波設(shè)置,以屏蔽掉非約定節(jié)點發(fā)來的非法數(shù)據(jù);所述濾波設(shè)置是指在節(jié)點所對應(yīng)的CAN總線控制器中設(shè)置接收代碼寄存器和接收屏蔽寄存器的數(shù)值,使得本地節(jié)點拒絕接收非約定節(jié)點發(fā)過來的錯誤數(shù)據(jù);根據(jù)上述方法設(shè)置完所有節(jié)點所對應(yīng)的CAN總線控制器中的接收濾波寄存器并且根據(jù)上述方法編寫發(fā)送模塊和接收模塊,最后衛(wèi)星上各個通信節(jié)點之間通過發(fā)送模塊和接收模塊進行通信。
全文摘要
本發(fā)明涉及一種適于多主通信的星載CAN總線通信方法,該方法通過合理利用現(xiàn)有CAN2.0A協(xié)議中規(guī)定的數(shù)據(jù)幀中的11bit標(biāo)識符,將11bit標(biāo)識符劃分為三個部分,依次是源地址(4bit)、目的地址(4bit)和幀類型(3bit),同時通過采用合理的節(jié)點地址分配及屏蔽策略,使得基于本發(fā)明通信方法的CAN總線上的多個通信節(jié)點間可以進行自主的點對點或廣播發(fā)送數(shù)據(jù),實現(xiàn)多主通信,且在不影響數(shù)據(jù)幀接收的同時可以根據(jù)需要屏蔽掉無關(guān)節(jié)點發(fā)送的全部數(shù)據(jù),本發(fā)明一方面增強了星上通信節(jié)點間通信的靈活性,另一方面可以大幅提高星上CAN總線傳輸?shù)睦寐?,并且提升?shù)據(jù)傳輸?shù)膶崟r性。
文檔編號H04L12/40GK101977094SQ201010517678
公開日2011年2月16日 申請日期2010年10月18日 優(yōu)先權(quán)日2010年10月18日
發(fā)明者劉思遠, 李國軍, 楊芳, 蒙薇, 謝松 申請人:航天東方紅衛(wèi)星有限公司