專利名稱::一種汽車can總線車身控制系統(tǒng)中從站檢測報文的生成方法
技術領域:
:本發(fā)明涉及一種汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,尤其涉及一種基于主從式網絡結構的汽車CAN總線車身控制系統(tǒng)中從站模塊生成4全測4艮文的方法。
背景技術:
:CAN(控制器局域網)總線是德國Bosch公司為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發(fā)的一種串行數據通信協(xié)議。CAN總線具有較強的糾錯能力,支持差分收發(fā),因而適合高干擾環(huán)境,并具有較遠的傳輸距離,目前已經成為世界汽車制造業(yè)的主體行業(yè)標準之一。由于CAN協(xié)議僅定義了OSI七層參考模型中的物理層及數據鏈路層規(guī)范,實際使用時還需要在CAN的基礎上選擇合適的應用層協(xié)議,如CAN叩en、SAEJ1939等。目前在大型汽車中應用最廣泛的應用層協(xié)議是美國汽車工程協(xié)會(SAE)所定義和推廣的J1939協(xié)議,它為中重型道路車輛上電子部件之間的通訊提供了標準的體系結構。近幾年,我國在CAN總線汽車電子領域發(fā)展較快,國內自主研發(fā)涉及的汽車CAN總線產品越來越多,如CAN總線控制模塊、CAN總線汽車儀表等??傮w來看,基于主從式網絡結構的、符合SAEJ1939規(guī)范的、模塊化的CAN總線系統(tǒng)逐步成為汽車CAN總線車身控制系統(tǒng)的主流。由于汽車CAN總線車身控制系統(tǒng)所控制的I/0數量眾多,邏輯關系復雜,且SAEJ1939協(xié)議本身也較為繁瑣,因此從站檢測報文的生成顯得尤為重要,是保證系統(tǒng)高效、可靠運行的必要條件。
發(fā)明內容本發(fā)明的主要目的在于提供一種汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其可以在所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,實時生成從站檢測報文并向主站模塊發(fā)送。為了達到上述目的,本發(fā)明提供了一種汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其特征在于,所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,通過查找已經預先建立的映射表獲得對應于所述從站模塊的輸入引腳的CAN報文,并將該CAN報文發(fā)送至所述主站模塊。優(yōu)選的,所述通過查找已經預先建立的映射表獲得對應于所述從站模塊的輸入引腳的CAN報文步驟包括通過查找已經預先建立的映射表得到所述從站模塊狀態(tài)發(fā)生變化的輸入51腳的工作方式及其對應的單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元號,并由此得到該輸入引腳的狀態(tài)值,接著找到該從站模塊輸入卩1腳對應于SAE939協(xié)議中的具體功能號,再根據所建立的SAEJ1939協(xié)議列表將功能號解析為具體的SAEJ1939協(xié)議通信報文值,最后將該通信報文值按照SAEJl939協(xié)議的成幀規(guī)則填充CAN報文,并發(fā)送到所述主站模塊。與現有技術相比,本發(fā)明所述的汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其可以在所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,實時生成從站檢測報文并向主站模塊發(fā)送。圖1是本發(fā)明所基于的汽車CAN總線車身控制系統(tǒng)的結構示意圖;圖2是本發(fā)明所述的方法包括的從站模塊初始化步驟的流程圖;圖3是本發(fā)明所述的方法包括的從站模塊初始化步驟完畢后檢測報文的產生步驟的流程圖。具體實施例方式本發(fā)明提供了一種應用在汽車CAN車身控制系統(tǒng)中的從站生成檢測報文的方法。首先對汽車CAN總線車身控制系統(tǒng)進行說明汽車CAN總線車身控制系統(tǒng)包括一個主站模塊和多個從站模塊,所述從站模塊的具體數量由車身上電氣信號量的數目決定。所述主站模塊具有邏輯控制、通信管理和配置從站等功能,不負責實際的輸入/輸出;所述從站模塊具有輸入信號采集、執(zhí)行輸出及輸入/輸出故障診斷等功能;所述主站模塊和所述從站模塊之間通過CAN總線進行通信,所述從站模塊通過輸入/輸出接口電路與各種車載電器設備(開關、傳感器、執(zhí)行器等)連接。為了保證通用性,所述汽車CAN車身控制系統(tǒng)的從站模塊的各個輸入引腳或輸出引腳均可以被配置成符合SAEJ939協(xié)議的任意功能。使用前,用戶應該首先配置所述汽車CAN車身控制系統(tǒng)的控制邏輯信息,并通過配置計算機將所述控制邏輯信息下載到所述主站模塊和所述從站模塊里。對于輸入引腳來說,所述控制邏輯信息包括該引腳的功能和工作方式。為了將抽象的SAEJ1939協(xié)議明晰地表示出來,進行如下定義(1)功能名稱SAEJ1939協(xié)議中規(guī)定的某一被控汽車電器設備的(動作方式)具體名稱或其輸入控制設備/器件的名稱;由SAEJ1939協(xié)議的某一組確定的PGN(參數組號)和功能區(qū)值可對應唯一的功能名稱;(2)功能號所述汽車CAN車身控制系統(tǒng)為每一個功能名稱設定的編號,所述主站模塊和所述從站模塊均使用該編號。進行上述定義后,以二維表格的形式建立一個SAEJ1939協(xié)議列表,將所有使用到的SAEJ939協(xié)議中規(guī)定的功能名稱與功能號對應起來。所述功能名稱所包括的PGN值與功能區(qū)值按照二進制位連接后得到SAEJ1939協(xié)議通信報文值,這樣就將抽象的功能號與實際的通信報文值關聯(lián)起來。為了判斷所述從站模塊的輸入引腳上的外部電氣量是否變化,應首先根據配置計算機下載到所述從站模塊中的配置信息來判斷各個輸入引腳的工作方式,進而通過輸入引腳的工作方式結合其相關的單片機輸入引腳的狀態(tài)值來逐個得出從站模塊輸入引腳的狀態(tài)值,并與上次的狀態(tài)值比較,如有變化,則產生相應的檢測報文發(fā)送給所述主站模塊。所述從站模塊的輸入引腳的外部電氣量可以為開關量、模擬量或脈沖量;所述外部電氣量的不同形式對應不同的輸入接口電路,需要用到不同數目的單片才幾引腳。因此還需要建立若千個存儲引腳的控制邏輯信息和各種對應信息的映射表,如從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與從站模塊輸入51腳映射表、從站模塊輸入引腳與從站模塊單片機輸入?I腳映射表、從站模塊單片機輸入引腳與單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表、從站模塊輸入引腳與工作方式映射表、從站模塊輸入引腳與功能號映射表、從站模塊輸入引腳工作方式與從站模塊單片機輸入?1腳映射表、從站模塊輸入引腳工作方式與從站模塊單片機輸入?1腳狀態(tài)值緩沖區(qū)存儲單元映射表、從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與功能號映射表。上述這些映射表都在所述從站模塊初始化時建立,均存放在所述從站模塊的FlashROM區(qū)域中,可供所述從站模塊隨時訪問。所述汽車CAN總線車身控制系統(tǒng)實際工作時,所述從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,通過查找已經建立的上述映射表可以獲得所述從站模塊狀態(tài)發(fā)生變化的輸入引腳的工作方式及其對應的單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元號,由此可以得到該輸入引腳的狀態(tài)值,接著找到該從站模塊輸入《1腳對應于SAEJ1939協(xié)議中的具體功能號,再根據所建立的SAEJ1939協(xié)議列表將功能號解析為具體的SAEJ1939協(xié)議通信報文值,最后將通信報文值按照SAEJ1939協(xié)議的成幀規(guī)則填充CAN報文,并發(fā)送到所述主站模塊,從而達到了向主站模塊及時反饋車載電器設備運行狀態(tài)的目的。如圖1所示,本發(fā)明所述的方法基于的汽車CAN總線車身控制系統(tǒng)的結構示意圖。本發(fā)明所涉及的從站模塊中建立的9個映射表,分別為(1)SAEJ1939協(xié)議列表每個從站模塊中都要存儲一個SAEJ1939協(xié)議列表,該列表中包含兩部分SAEJ1939協(xié)議定義的全部功能以及汽車CAN總線系統(tǒng)為每個功能名稱所分配的功能號。該列表反映了該兩部分之間的對應關系,如表1所示。表1中的PGN值與功能區(qū)值按二進制位連接后得到SAEJ1939協(xié)議通信報文值,簡稱通信報文值;由于通信報文值表示一個具體的功能,因此將一個通信報文值與一個功能號相對應;表1SAEJ1939協(xié)議定義的功能PGN值功能區(qū)值功能號PGN11功能號OPGN1i功能號i6<table>tableseeoriginaldocumentpage7</column></row><table>(2)從站模塊輸入?1腳狀態(tài)值緩沖區(qū)存儲單元與從站模塊輸入?1腳映射表從站模塊輸入引腳狀態(tài)值緩沖區(qū)是從站模塊中的一個Flash區(qū),該區(qū)域中包含的存儲單元的數量與從站模塊的輸入引腳數量相等。當所述從站模塊硬件設計完成后,可以根據從站模塊的輸入引腳數量確定該存儲區(qū)域的大小。每個從站模塊都建立并存儲一個從站模塊的輸入引腳狀態(tài)值緩沖區(qū)存儲單元與從站模塊輸入引腳映射表。通過該映射表,從站模塊輸入引腳狀態(tài)值緩沖區(qū)的每個存儲單元都與唯——個從站模塊輸入引腳相對應,并且每個存儲單元的值代表著相應從站模塊輸入引腳的狀態(tài)值。當從站模塊檢測到某一輸入引腳外部電氣量的變化時,會更新映射表中該輸入引腳所對應的存儲單元的值。如果從站模塊的Flash區(qū)以8位(1字節(jié))為1個存儲單元,輸入引腳數量為32個,輸入引腳編號為從PINO至PIN31,則從站模塊輸入?I腳狀態(tài)值緩沖區(qū)存儲單元與從站^t塊輸入引腳的映射關系如表2所示;表2<table>tableseeoriginaldocumentpage7</column></row><table>(3)從站模塊輸入可1腳與從站模塊單片機輸入《1腳映射表由于從站模塊的輸入量包括開關量、模擬量和脈沖量,不同輸入量的硬件電路在結構上會有所不同,從而導致了從站模塊各個輸入《I腳對應的單片機輸入?1腳在功能和數量上都有所不同。這就需要在單片機內部建立一個從站模塊輸入引腳與從站模塊單片機輸入引腳對應關系的映射表,如表3所示。表3從站模塊輸入引腳號從站模塊單片機輸入引腳號PIN1PORTX1PORTXiPIN2PORTY1PORTYjPIN32P0RTZ1PORTZk(4)從站模塊單片機輸入引腳與單片機輸入?1腳狀態(tài)值緩沖區(qū)存儲單元映射表從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)是從站模塊中的一個Flash區(qū),該區(qū)域中包含的存儲單元數量與從站模塊單片機的輸入引腳數量相等。當從站模塊硬件設計完成后,可以根據單片機輸入引腳數量確定該存儲區(qū)域的大小。每個從站模塊都建立并存儲一個從站模塊單片機輸入引腳與單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表。通過該映射表,緩沖區(qū)的每一個存儲單元都與唯——個單片機輸入引腳號相對應,并且每一個存儲單元的值代表著相應單片機輸入引腳的狀態(tài)值。如果從站模塊的Flash區(qū)以8位(1字節(jié))為1個存儲單元,單片機輸入引腳數量為40個,單片機輸入引腳編號從PORTO至PORT39,則從站模塊單片機輸入引腳與單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元的映射關系如表4所示。8表4從站模塊單片機輸入引腳號單片機輸入引腳狀態(tài)(值)緩沖區(qū)存儲單元號PORTO存儲單元0PORT1存儲單元1PORT39存4諸單元39(5)從站模塊輸入引腳與工作方式映射表考慮到從站模塊的可擴展性和使用的靈活性,在從站模塊輸入引腳的硬件電路設計上盡可能的使一個引腳能夠在多種方式下工作,具體表現為開關量輸入引腳可以實現正控、負控和懸空三種工作方式;電壓模擬量輸入引腳可以配置為正控方式下的開關量輸入引腳;電阻模擬量輸入引腳可以配置為負控和懸空方式下的開關量輸入引腳;脈沖量輸入引腳可以配置為正控方式下的開關量輸入引腳。實際應用中,一個具體的從站模塊輸入引腳工作在何種方式下是由配置計算機下載到從站模塊上的配置信息決定的。因此,在從站模塊中需要建立一個從站模塊輸入引腳與工作方式映射表,如表5所示。表5從站模塊輸入引腳號輸入引腳工作方式PINO工作方式0PIN1工作方式1PIN31工作方式31(6)從站模塊輸入引腳與功能號映射表配置計算機通過主站下載給從站的配置信息同時包括從站各個引腳的功能9號。從站模塊輸入引腳與功能號映射關系如表6所示。表6<table>tableseeoriginaldocumentpage10</column></row><table>(7)從站模塊輸入引腳工作方式與從站模塊單片機輸入卩1腳映射表從站模塊通過配置計算機下載到模塊中的配置信息來判斷從站模塊各輸入引腳的工作方式,進而通過從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元中的值和相應從站模塊輸入引腳的工作方式來決定從站模塊輸入引腳的狀態(tài)。因此,需要在從站模塊中建立從站模塊輸入引腳工作方式與從站模塊單片機輸入弓1腳映射表。該表可以通過表3和表5得到,如表7所示。表7從站模塊輸入引腳工作方式從站模塊單片機輸入引腳號工作方式0P0RTX1PORTXi工作方式1P0RTY1PORTYj工作方式31PORTZ1PORTZk(8)從站模塊輸入引腳工作方式與從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表通過表4和表7,可以得到從站模塊輸入引腳工作方式與從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表,如表8所示。表8從站模塊輸入引腳工作方式單片機輸入引腳狀態(tài)(值)緩沖區(qū)存儲單元號工作方式0P0RTX1對應的存儲單元PORTXi對應的存儲單元工作方式1P0RTY1對應的存儲單元PORTYj對應的存儲單元工作方式31PORTZ1對應的存儲單元PORTZk對應的存儲單元(9)從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與功能號映射表從站模塊輸入引腳狀態(tài)值緩沖區(qū)各存儲單元的值是通過從站模塊輸入引腳工作方式和單片機輸入引腳狀態(tài)值緩沖區(qū)中存儲單元的值共同決定的。根據最終得到的從站模塊輸入引腳狀態(tài)值緩沖區(qū)各存儲單元的值可以找到從站模塊某一輸入引腳狀態(tài)對應于SAEJ1939協(xié)議中的具體功能號,因此,需要在從站模塊中建立一個從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與功能號映射表,該表可通過表2和表6建立,如表9所示。根據表9和表1中的信息,從站模塊可生成相應的CAN報文,并發(fā)送給主站模塊,從而實現了向主站模塊反饋車載電器設備運行狀態(tài)的目的。11表9<table>tableseeoriginaldocumentpage12</column></row><table>請參閱圖2所示,其為本發(fā)明所述的方法包括的從站模塊初始化步驟的流程圖,包括的步驟為步驟al:從站模塊上電初始化;步驟a2:建立SAEJ1939協(xié)議列表(表1);步驟a3:判斷本模塊是否被配置過,如果是則執(zhí)行下述步驟a4,否則執(zhí)行下述步驟a6;步驟a4:調用已經建立的從站模塊輸入引腳工作方式與從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表(表8);步驟a5:調用已經建立的從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與功能號映射表(表9);步驟a6:建立從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與從站模塊輸入引腳映射表(表2);步驟a7:建立從站模塊輸入引腳與從站模塊單片機輸入51腳映射表(表3);步驟a8:建立從站模塊單片機輸入引腳與單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表(表4);步驟a9:接收主站發(fā)送的用戶配置信息;步驟alO:根據用戶配置信息建立從站模塊輸入引腳與工作方式映射表(表5)和從站模塊輸入引腳與功能號映射表(表6);步驟all:根據已經建立的表3和表5,建立輸入引腳工作方式與從站模塊單片機輸入引腳映射表(表7);步驟al2:根據已經建立的表4和表7,建立從站模塊輸入引腳工作方式與從站模塊單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元映射表(表8);步驟al3:根據已經建立的表2和表6,建立從站模塊輸入引腳狀態(tài)值緩沖區(qū)存儲單元與功能號映射表(表9);步驟al4:從站模塊初始化結束。請參閱圖3所示,其為本發(fā)明所述的方法包括的從站模塊初始化步驟完畢后檢測報文的產生步驟的流程圖,包括的步驟為步驟b1:從站模塊初始化結束;步驟b2:判斷是否有輸入引腳外部電氣量的變化,如果是則執(zhí)行下述步驟b3,否則返回本步驟;步驟b3:根據表8獲得從站模塊狀態(tài)發(fā)生變化的輸入引腳的工作方式及其對應的單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元號,由此可以得到該輸入引腳的狀態(tài)值;步驟b4:根據表9找到該從站模塊輸入S1腳對應于SAEJ1939協(xié)議中的具體功能號;步驟b5:根據表1將功能號解析為具體的SAEJ1939協(xié)議通信報文值;步驟b6:將通信報文值按照SAEJ1939協(xié)議的成幀規(guī)則填充CAN報文,并發(fā)送到主站模塊,最后返回步驟b2。以上說明對本發(fā)明而言只是說明性的,而非限制性的,本領域普通技術人員理解,在不脫離以下所附權利要求所限定的精神和范圍的情況下,可做出許多修改,變化,或等效,但都將落入本發(fā)明的保護范圍內。1權利要求1、一種汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其特征在于,所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,通過查找已經預先建立的映射表獲得對應于所述從站模塊的輸入引腳的CAN報文,并將該CAN報文發(fā)送至所述主站模塊。2、根據權利要求1所述的汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其特征在于,所述通過查找已經預先建立的映射表獲得對應于所述從站模塊的輸入引腳的CAN報文步驟包括通過查找已經預先建立的映射表得所述從站模塊狀態(tài)發(fā)生變化的輸入引腳的工作方式及其對應的單片機輸入引腳狀態(tài)值緩沖區(qū)存儲單元號,并由此得到該輸入引腳的狀態(tài)值,接著找到該從站模塊輸入引腳對應于SAEJ1939協(xié)議中的具體功能號,再根據所建立的SAEJ1939協(xié)議列表將功能號解析為具體的SAEJ1939協(xié)議通信報文值,最后將該通信報文值按照SAEJ1939協(xié)議的成幀規(guī)則填充CAN報文,并發(fā)送到所述主站模塊。全文摘要本發(fā)明公開了一種汽車CAN總線車身控制系統(tǒng)中從站檢測報文的生成方法,其特征在于,所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,通過查找已經預先建立的映射表獲得對應于所述從站模塊的輸入引腳的CAN報文,并將該CAN報文發(fā)送至所述主站模塊。本發(fā)明可以在所述汽車CAN總線車身控制系統(tǒng)工作時,從站模塊檢測到有輸入引腳外部電氣量發(fā)生變化后,實時生成從站檢測報文并向主站模塊發(fā)送。文檔編號H04L12/40GK101557328SQ20091013867公開日2009年10月14日申請日期2009年5月12日優(yōu)先權日2009年5月12日發(fā)明者佟為明,雷盧,吳鵬程,林景波,白哲松,金顯吉,陳振華申請人:陳振華;哈爾濱工業(yè)大學