汽車各電氣系統(tǒng)之間的通信方式,現(xiàn)在多采用CAN總線通信。各種功能的實現(xiàn),不同系統(tǒng)之間如何交互并保持同步,可以有不同的定義方式。在設計一個系統(tǒng)功能的實現(xiàn)時,針對不同的總線信號發(fā)送類型,為實現(xiàn)同樣的功能需求,其軟件策略及同步問題如何規(guī)避等解決方案是不同的。
CAN信號有不同的發(fā)送類型,不同的發(fā)送類型有各自的特點。定義不同的發(fā)送類型后,軟件策略也會不同。本文重點討論由于CAN信號發(fā)送類型不同,帶來的不同控制策略設計的對比分析。CAN信號發(fā)送類型主要分為Cyclic周期型、OnChange事件型、OnWrite事件型、OnChangewithrepetition重復型以及CyclicandOnChange混合型等。其中應用最多的主要為前兩種方式。信號發(fā)送類型為Cyclic的信號,按照固定的周期循環(huán)往總線上發(fā)送數(shù)據。每兩個周期之間的數(shù)據更新,會在下一個周期發(fā)送時間點發(fā)送出去。如果一個周期之內數(shù)據更新了兩次或多次,只會發(fā)送最后更新的數(shù)據。這種發(fā)送類型適用于數(shù)據變化頻率較高,或需要實時同步的數(shù)據,發(fā)送方式如圖1所示,每一個參數(shù)輸入,均要等到固定的時間周期才能發(fā)送出去。
信號發(fā)送類型為OnChange的信號,是事件型發(fā)送的信號,只有信號數(shù)值發(fā)生變化時才會發(fā)送此信號。數(shù)值無變化時,總線上并沒有該信號。這種發(fā)送類型適用于信號變化頻率不高,并且不需要實時同步的數(shù)據。發(fā)送方式如圖2所示,只有輸入的參數(shù)值有變化時,才會發(fā)送報文,數(shù)據即使重復輸入,數(shù)值也沒有變化,不會發(fā)送報文。當然在報文最小間隔時間內如有多次數(shù)據變化,會被舍棄,直到可以發(fā)送報文后會發(fā)送最后一個數(shù)值。本文以汽車背光調節(jié)功能為例,來論述CAN信號發(fā)送類型與控制策略的關系。汽車的背光可分為幾部分:所有開關的背光燈,儀表板背光,儀表、多媒體系統(tǒng)及抬頭顯示系統(tǒng)的液晶屏亮度。調節(jié)汽車背光時,各個系統(tǒng)的亮度需同步變化。本文設定的人機交互方式為:用戶可以從儀表和多媒體系統(tǒng)兩處進行亮度設置,而兩者必須保持一致。在任一系統(tǒng)上進行設置的同時,其他所有相關系統(tǒng)均需同步調節(jié),并且儀表和多媒體系統(tǒng)上的亮度數(shù)值的顯示也需一致。背光調節(jié)功能涉及的主要模塊如圖3所示,包含儀表、多媒體系統(tǒng)、車身控制器及抬頭顯示屏,這4個零部件之間通過CAN信號交互實現(xiàn)背光控制功能。其中整車所有開關的背光由BCM進行統(tǒng)一控制調節(jié)。背光調節(jié)的主控制單元為儀表,所有其他節(jié)點根據儀表的信號作為指令執(zhí)行。用戶可以在儀表和多媒體系統(tǒng)上手動設置背光亮度,兩者設置的亮度信號都通過CAN信號發(fā)送給彼此進行同步。同步的過程根據亮度信號的發(fā)送類型的不同,控制策略也不相同。定義儀表和多媒體系統(tǒng)發(fā)送的亮度信號均為Cyclic的周期信號,則以用戶在多媒體系統(tǒng)上設置亮度后的同步為例,流程如圖4所示,過程描述如下:(1)上一次同步后的結果,儀表和多媒體系統(tǒng)均周期發(fā)送背光值1,所有節(jié)點執(zhí)行背光值1。(2)此時用戶在多媒體系統(tǒng)上手動設置亮度,新的設置為背光值2。(3)多媒體系統(tǒng)發(fā)送新的背光值2,周期發(fā)送給儀表。(4)儀表與多媒體發(fā)送的新背光值同步,周期發(fā)送背光值2給總線上所有節(jié)點。圖 4 均為 Cyclic 周期型信號,在多媒體端設置如果用戶在儀表上設置亮度,流程圖如圖5所示,其同步過程如下:(1)上一次同步后的結果,儀表和多媒體系統(tǒng)均周期發(fā)送背光值1,所有節(jié)點執(zhí)行背光值1。(2)此時用戶在儀表上手動設置亮度,新的設置為背光值3。(3)儀表周期發(fā)送背光值3給總線上所有節(jié)點。(4)多媒體系統(tǒng)與儀表發(fā)送的新背光值同步,周期發(fā)送背光值3。圖 5 均為 Cyclic 周期型信號,在儀表端設置儀表和多媒體系統(tǒng)均發(fā)送周期信號,其優(yōu)點是同步性好,兩者可以實時同步,當發(fā)現(xiàn)另一方的需求與自己不同時,與對方同步即可。但這種方式也有缺點,就是兩者均為周期信號,周期相同,假設兩者軟件處理時間相同,則會有陷入死循環(huán)的可能。比如,在多媒體系統(tǒng)上進行手動設置后,在多媒體系統(tǒng)發(fā)出新的數(shù)值給儀表后,儀表在尚未收到新數(shù)值時已經將舊數(shù)值發(fā)給多媒體系統(tǒng),則多媒體系統(tǒng)會誤以為這個舊數(shù)值是儀表的新需求,會導致兩者不停地向對方同步,無法達成穩(wěn)定狀態(tài)。為解決上述問題,在以下三種情況下需增加800ms延時屏蔽來自對方的信號,以確保本地需求不會被干擾:①有人在本地進行設置時,屏蔽對方舊信號800ms;②當白天模式與夜間模式互相轉化時,儀表需屏蔽多媒體系統(tǒng)的背光信號800ms;③初始化過程中,儀表需屏蔽多媒體系統(tǒng)的背光信號800ms,避免被初始值干擾。2.一個Cyclic周期型信號,一個OnChange事件型信號
將儀表的背光信號定義為Cyclic方式發(fā)送,將多媒體系統(tǒng)定義為OnChange方式發(fā)送。當用戶在多媒體系統(tǒng)上進行設置時,流程如圖6所示,同步過程描述如下:(1)上一次同步后的結果,儀表周期發(fā)送背光值1,所有節(jié)點執(zhí)行背光值1。(2)此時用戶在多媒體系統(tǒng)上手動設置亮度,新的設置為背光值4。(3)多媒體系統(tǒng)發(fā)送一次新的背光值4給儀表。此時屏蔽儀表的舊的背光信號800ms。(4)儀表與多媒體發(fā)送的新背光值同步,周期發(fā)送背光值4給總線上所有節(jié)點。如果用戶在儀表上設置亮度,流程如圖7所示,其同步過程如下:(1)上一次同步后的結果為儀表周期發(fā)送背光值1,所有節(jié)點執(zhí)行背光值1。(2)此時用戶在儀表上手動設置亮度,新的設置為背光值5。(3)儀表周期發(fā)送背光值5給總線上所有節(jié)點。因為儀表作為背光調節(jié)的主功能模塊,將儀表的背光信號定義為Cyclic方式發(fā)送,可以保證較好的同步實時性。將多媒體系統(tǒng)定義為OnChange方式發(fā)送,這樣可以規(guī)避兩者均為周期信號可能陷入死循環(huán)的問題。但是由于儀表是周期信號,為避免多媒體系統(tǒng)的設置被儀表的信號覆蓋丟失,因此在多媒體系統(tǒng)上進行本地設置時,仍需要屏蔽儀表的周期信號800ms,但屏蔽的情況相對要簡單。第三種方法:儀表和多媒體系統(tǒng)的背光信號均采用OnChange發(fā)送類型,即只有有背光值的設置變化時,才發(fā)送CAN總線信號。當用戶在多媒體系統(tǒng)上進行設置時,流程如圖8所示,同步過程描述如下:(2)此時用戶在多媒體系統(tǒng)上手動設置亮度,新的設置為背光值6。(3)多媒體系統(tǒng)發(fā)送一次新的背光值6給儀表。(4)儀表與多媒體發(fā)送的新背光值同步,再發(fā)送一次背光值6給總線上所有節(jié)點。(6)所有節(jié)點除多媒體系統(tǒng)均需反饋一次背光信號,儀表檢查同步結果是否正確。如果用戶在儀表上設置亮度,流程如圖9所示,其同步過程如下:(2)此時用戶在儀表上手動設置亮度,新的設置為背光值7。(3)儀表發(fā)送一次背光值7給總線上所有節(jié)點。(5)所有節(jié)點反饋一次背光信號,然后儀表檢查同步結果是否正確。這種方式的優(yōu)點是不會陷入死循環(huán),每個本地設置的變化只發(fā)送一次背光信號即可。但這種方式也有缺點,兩者均為OnChange信號,同步性沒有周期信號的好,每次同步后都需要各個節(jié)點反饋一次同步結果,避免有報文丟失等情況造成背光不一致。而且如果更換儀表或多媒體系統(tǒng),由于本地均無設置變化,因此沒有背光信號在總線上進行同步,很容易導致新裝到車上的儀表或多媒體系統(tǒng)與整車背光不一致。根據上述控制策略的分析,最終選擇了第二種方法進行設計,即儀表的背光信號定義Cyclic方式發(fā)送,多媒體系統(tǒng)的背光信號定義為OnChange方式發(fā)送。這種方式既能保證背光同步的實時性,更可靠,又能保證儀表和多媒體系統(tǒng)的背光信號不會陷入死循環(huán),實現(xiàn)起來也更簡單。此不同信號發(fā)送類型與不同控制策略的對應分析,也可以推廣到類型功能需求的設計中,更合理地定義信號發(fā)送類型,也可以優(yōu)化、簡化出更合理的控制策略。