張 梁,王景存, 梅 鏢
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,武漢 430081)
?
基于CAN總線的中控主機(jī)的系統(tǒng)設(shè)計(jì)
張梁,王景存, 梅鏢
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,武漢430081)
摘要:智能中控主機(jī)作為多媒體會(huì)議室和多媒體展廳等現(xiàn)代化辦公場(chǎng)所運(yùn)轉(zhuǎn)的控制核心,其重要性不言而喻,目前市面上主要采用的是基于RS485總線的傳統(tǒng)組網(wǎng)模式,導(dǎo)致系統(tǒng)的實(shí)時(shí)性較差、容錯(cuò)率較低、功能欠完善,同時(shí)成本高昂;針對(duì)這種情況,在不允許改動(dòng)被控設(shè)備的工作方式的條件下,提出一種基于CAN總線網(wǎng)絡(luò),以嵌入式系統(tǒng)作為主控設(shè)備,以各功能驅(qū)動(dòng)模塊作為子設(shè)備的中控系統(tǒng);通過CAN總線控制器的優(yōu)先級(jí)仲裁機(jī)制,以及制定的帶錯(cuò)誤反饋的數(shù)據(jù)包通信協(xié)議,實(shí)現(xiàn)了對(duì)各種被控設(shè)備的實(shí)時(shí)精準(zhǔn)控制;該中控主機(jī)系統(tǒng)硬件電路簡(jiǎn)單、功能模塊方便擴(kuò)展、成本低廉并且高效穩(wěn)定;通過實(shí)驗(yàn)測(cè)試,所設(shè)計(jì)的智能中控主機(jī)性能良好,達(dá)到了規(guī)定的行業(yè)標(biāo)準(zhǔn),具有廣泛的應(yīng)用前景。
關(guān)鍵詞:智能中控;通信;數(shù)據(jù)結(jié)構(gòu);CAN總線
0引言
隨著互聯(lián)網(wǎng)技術(shù)和信息通信技術(shù)的迅猛發(fā)展,智能化、信息化滲透于人們生活的各個(gè)領(lǐng)域,極大地改善了人們的生活環(huán)境和生活質(zhì)量,特別是在一些會(huì)議控制、演播和媒體演示、視像會(huì)議系統(tǒng)等領(lǐng)域,高效率、低成本的中控系統(tǒng)顯得尤為重要。中控主機(jī)是一套具備可再編程的嵌入式主機(jī),它提供各種常用的通信接口,每個(gè)接口的作用都可以由用戶定義,接口之間的運(yùn)作方式也可以通過再編程實(shí)現(xiàn)。接口的主要類型有串口、紅外發(fā)射端口、數(shù)字IO、USB口、繼電器、以太網(wǎng)、WiFi等[1]。
當(dāng)前廣泛使用的中控系統(tǒng)都使用RS485總線,這使得各模塊在通信時(shí)數(shù)據(jù)傳輸率較低,容錯(cuò)率不高,一個(gè)節(jié)點(diǎn)的通信錯(cuò)誤可能會(huì)導(dǎo)致整個(gè)系統(tǒng)的癱瘓。鑒于此情況,設(shè)計(jì)了一套基于CAN總線的中控主機(jī)系統(tǒng)。CAN總線具有多主發(fā)送、采用確定性的優(yōu)先級(jí)仲裁機(jī)制等特點(diǎn),保證了CAN總線數(shù)據(jù)通信的可靠性、實(shí)時(shí)性和靈活性[2]。使得該系統(tǒng)有效地解決了上述問題,極大地提升了系統(tǒng)的實(shí)時(shí)性和容錯(cuò)性。
1系統(tǒng)組成
電氣系統(tǒng)組成如圖1所示。系統(tǒng)由3個(gè)模塊組成:外界交互模塊、內(nèi)部通信模塊和功能驅(qū)動(dòng)模塊。外界交互模塊用于接收用戶PC或IPAD的命令請(qǐng)求并將命令處理后通過CAN總線傳輸給功能驅(qū)動(dòng)模塊響應(yīng)。內(nèi)部通信模塊采用CAN總線作為連接各個(gè)功能驅(qū)動(dòng)模塊和核心板的紐帶。功能驅(qū)動(dòng)模塊用于驅(qū)動(dòng)各種電器設(shè)備。系統(tǒng)將各功能模塊嚴(yán)格區(qū)分,分工明確,避免了單個(gè)CPU負(fù)載量過大的情況。
圖1 系統(tǒng)總體框圖
核心板由主頻高達(dá)806 MHz的Colibri XScale PXA320組成,運(yùn)行在WinCE環(huán)境下,具備多種通信方式的通信接口,向用戶提供人機(jī)友好的交互界面。紅外子模塊和繼電器IO子模塊選用飛思卡爾公司的DZ32單片機(jī),帶有CAN模塊接口。串口子模塊需要4路獨(dú)立串口,選用飛思卡爾公司的K10,帶有6個(gè)獨(dú)立的UART模塊。
中控主機(jī)工作在兩種模式下:初始化模式和正常工作模式。在初始化模式下,核心板通過約定的數(shù)據(jù)幀結(jié)構(gòu)對(duì)各功能模塊進(jìn)行初始化配置,包括紅外數(shù)據(jù)的燒寫和串口波特率的配置等等。在正常工作模式下,核心板通過約定的命令幀結(jié)構(gòu)控制各功能模塊。
2硬件電路設(shè)計(jì)
2.1CAN總線接口電路
CAN總線接口電路由CAN總線控制電路和CAN總線收發(fā)電路兩部分組成,如圖2所示。飛思卡爾的K10和DZ32都自帶CAN總線控制電路,只需連接CAN總線收發(fā)電路即可接入總線。為了避免芯片內(nèi)的CAN控制模塊和CAN收發(fā)電路的電氣不一致造成電氣隔離給通信帶來麻煩,模塊在芯片和CAN收發(fā)電路之間添加ADuM1301隔離芯片。
圖2 CAN總線接口電路
ADuM1301隔離芯片采用了iCoupler技術(shù)取消了光電耦合器中的光電轉(zhuǎn)換,該隔離芯片所隔離的兩端有各自的電源和參考地,使用了該芯片中3個(gè)通道的一對(duì)輸入/輸出,適合CAN總線雙向收發(fā)的特性。
CAN總線收發(fā)器采用TJA1040收發(fā)器,該收發(fā)器將用于傳輸?shù)牟罘蛛妷恨D(zhuǎn)換為顯性/隱性狀態(tài)提供給單片機(jī)。引腳STB選擇工作模式,本設(shè)計(jì)將其接地即為高速模式。在CAN總線接入端CANH和CANL與地之間分別接一個(gè)雙向二極管,能有效防止ESD和浪涌電壓,起到一定的過壓保護(hù)作用。
2.2RS232和RS485復(fù)用電路
為了與具有串口的電氣設(shè)備通信,中控主機(jī)外置4個(gè)RS232串口,但考慮到部分受控設(shè)備分布距離較遠(yuǎn),故需要采用RS485來解決長(zhǎng)距離通信質(zhì)量。本系統(tǒng)中采用單片機(jī)串口復(fù)用的方式,根據(jù)需要實(shí)現(xiàn)單片機(jī)串口TTL電平與RS232電平的轉(zhuǎn)換。當(dāng)單片機(jī)串口TXD信號(hào)作為輸出時(shí),可以直接接在SP3232和SP3485的TTL輸入端,因?yàn)閮蓚€(gè)收發(fā)器芯片的對(duì)應(yīng)輸入腳的輸入電阻都很大,實(shí)際相當(dāng)于兩個(gè)并聯(lián)的大電阻,完全可以接收TXD的信號(hào),轉(zhuǎn)換后的電平輸出也是正常的。但是當(dāng)單片機(jī)串口RXD信號(hào)作為輸入時(shí),不能直接接在SP3232和SP3485的TTL輸出端,因?yàn)閮蓚€(gè)收發(fā)器的TTL輸出端是非開漏結(jié)構(gòu),不能實(shí)現(xiàn)線與功能,理論上,單片機(jī)的RXD接收到的只能是驅(qū)動(dòng)能力強(qiáng)的那個(gè)收發(fā)器信號(hào),如果兩個(gè)收發(fā)器驅(qū)動(dòng)能力差不多,則識(shí)別的電平時(shí)有時(shí)無。為了實(shí)現(xiàn)線與功能,將SP3232和SP3485的TTL輸出端連接到兩輸入與門NC7SZ08上,并且均上拉4.7 K電阻。
如圖3所示,單片機(jī)串口UART1_TX直接接在SP3232和SP3485的TTL輸入端,而SP3232的TTL輸出端232_1_RX和SP3485的TTL輸出端485_1_RX通過NC7SZ08線與后輸出給單片機(jī)的UART1_RX。UART1_RTS和UART1_CTS是請(qǐng)求發(fā)送和清除發(fā)送信號(hào),接到單片機(jī)上。TX1_OUT、RX1_IN、RTS1_OUT和CTS1_IN通過DB9連接外部電氣設(shè)備。485_1_R/T控制SP3485的數(shù)據(jù)收發(fā)狀態(tài),接到單片機(jī)上。
圖3 RS232/RS485復(fù)用電路
2.3紅外發(fā)射電路
DZ32單片機(jī)根據(jù)用戶的命令查找到對(duì)應(yīng)的紅外鍵值碼后,由單片機(jī)PWM模塊解碼為38K的紅外載波信號(hào)經(jīng)IO口輸出。IO口輸出的紅外載波信號(hào)經(jīng)74HC138譯碼器擴(kuò)展為8路反向波形,再通過74HC240反向驅(qū)動(dòng)后即可使用。用戶將該8路紅外通過紅外發(fā)射棒引出,用于遙控各個(gè)紅外接受設(shè)備。
2.4雙向IO和繼電器驅(qū)動(dòng)電路
雙向IO電路非常簡(jiǎn)單,從單片機(jī)引出的8個(gè)IO經(jīng)74ABT573八進(jìn)制D型鎖存器后三態(tài)輸出,外部輸入的8路IO經(jīng)74HC240反向輸入至單片機(jī)的8個(gè)IO上。
繼電器驅(qū)動(dòng)電路是將單片機(jī)的8路IO經(jīng)SN74LS373鎖存器后,再通過ULN2801A八個(gè)達(dá)林頓陣列獲取更高的電流驅(qū)動(dòng)能力驅(qū)動(dòng)八個(gè)DS2Y-S-DC5V雙刀雙擲繼電器。
3軟件設(shè)計(jì)
3.1數(shù)據(jù)結(jié)構(gòu)
本設(shè)計(jì)在CAN總線上以組合包(一個(gè)包頭+一個(gè)附加數(shù)據(jù)段)的格式通信,當(dāng)沒有附加數(shù)據(jù)段時(shí),組合包就是包頭。組合包分為上行組合包(由子模塊反饋給核心板)和下行組合包(核心板發(fā)送給子模塊的命令幀或擴(kuò)展幀)。為了更好的代碼維護(hù),上行組合包和下行組合包采用相同的格式[3]。其中包頭格式如下所示:
typedef struct uart_can_msg_head
{
unsigned char FrameHead; //幀頭,設(shè)定為0xAA
unsigned char bFrameType; //0表示命令幀;1表示擴(kuò)展幀
unsigned char DeviceId[2]; //發(fā)送ID
unsigned char DevicePort; //模塊端口號(hào)
unsigned char PortIndex; //對(duì)應(yīng)模塊的索引號(hào)
unsigned char DataType; //數(shù)據(jù)類型, 紅外(0x01)、串口(0x02)、繼電器(0x03)
unsigned char DataLength[2]; //附加數(shù)據(jù)長(zhǎng)度
unsigned char Reserve[5]; //保留字段
unsigned char CheckSum; // 校驗(yàn)和
unsigned char FrameTail; //幀尾,設(shè)定為0xAB
};
幀頭和幀尾規(guī)定了一個(gè)包頭的開始和結(jié)束。模式用來區(qū)分正常工作模式和初始化配置模式。發(fā)送ID用來區(qū)分各個(gè)功能模塊。端口號(hào)和索引號(hào)是指向確定模塊的具體端口。數(shù)據(jù)類型用于與前面指定的發(fā)送ID做雙重判斷。附加數(shù)據(jù)段長(zhǎng)度指明附加段的字節(jié)個(gè)數(shù),本設(shè)計(jì)將附加數(shù)據(jù)段放在16字節(jié)包頭的后面,以組合包格式傳輸。保留字段表示組合包的個(gè)數(shù)。校驗(yàn)和由所有數(shù)據(jù)求和取反后加1獲得,接收方只需將接受的數(shù)據(jù)(包括校驗(yàn)和)求和,結(jié)果為0則正確,如果有附加數(shù)據(jù)段,則包頭和附加數(shù)據(jù)段一起校驗(yàn),否則只校驗(yàn)包頭。
3.2CAN通信模塊的軟件設(shè)計(jì)
CAN通信模塊的軟件設(shè)計(jì)主要包括CAN的初始化程序和收發(fā)程序。CAN的初始化包括波特率和濾波器的設(shè)置,其中波特率的設(shè)置公式如下:
其中:CANbps是波特率,fCANCLK是振蕩器頻率,Pre_val是預(yù)分頻系數(shù)。TimeSeg1和TimeSeg2分別是時(shí)間段1和時(shí)間段2,1代表位同步時(shí)間,3個(gè)參數(shù)共同組成一個(gè)位時(shí)間,CAN控制器在時(shí)間段1和時(shí)間段2的交界點(diǎn)處進(jìn)行采樣[4]。
由于CAN協(xié)議本身只定義了物理層和數(shù)據(jù)鏈路層的規(guī)范,因此用戶在應(yīng)用CAN協(xié)議時(shí)必須根據(jù)實(shí)際需求自行定義CAN高層協(xié)議——CAN通信應(yīng)用層協(xié)議[5]。在中控系統(tǒng)中,CAN總線通信采用帶11位報(bào)文標(biāo)識(shí)符(ID標(biāo)識(shí)符)的標(biāo)準(zhǔn)幀和16位濾波器模式。為了在16位濾波器模式中接收標(biāo)準(zhǔn)標(biāo)識(shí)符,需要把掩碼寄存器CANIDMR0/1的低11位設(shè)置為1(忽略匹配)或0(嚴(yán)格匹配),考慮到中控主機(jī)功能模塊的可擴(kuò)展性,本設(shè)計(jì)匹配3位ID,即可以掛接8臺(tái)子模塊。
當(dāng)CAN的初始化完成之后,系統(tǒng)進(jìn)入數(shù)據(jù)收發(fā)程序。按照CAN協(xié)議制定的優(yōu)先級(jí),首先安排接收或發(fā)送優(yōu)先級(jí)高的數(shù)據(jù)。在CAN總線繁忙時(shí),優(yōu)先級(jí)低的接收或發(fā)送數(shù)據(jù)先存儲(chǔ)于接收或發(fā)送緩存器中,等待CAN總線空閑的時(shí)候再自動(dòng)重發(fā)。在設(shè)計(jì)中,采用最簡(jiǎn)單的基于標(biāo)識(shí)符的優(yōu)先級(jí),即發(fā)送ID數(shù)值最小的獲得最高的優(yōu)先級(jí)。由于中控系統(tǒng)需要實(shí)時(shí)采集用戶指令和處理數(shù)據(jù),因此要求CAN網(wǎng)絡(luò)通信具有實(shí)時(shí)性,這樣CAN總線通信必然采用中斷方式,在接受中斷函數(shù)中提取出數(shù)據(jù)幀中的8字節(jié)數(shù)據(jù)。各功能模塊采用相同的CAN接收中斷處理模塊,CAN接收中斷處理數(shù)據(jù)幀的細(xì)化流程如圖4所示,下面做詳細(xì)說明:進(jìn)中斷后手動(dòng)匹配ID,然后判斷是否可以接受包頭,如果可以,則對(duì)接受的包頭進(jìn)行幀標(biāo)志符檢查,然后判斷其幀類型:擴(kuò)展幀和命令幀。如果是命令幀,驗(yàn)證校驗(yàn)和接收即可;如果是擴(kuò)展幀,立即禁止接受包頭,防止下次進(jìn)入中斷時(shí)把附加段數(shù)據(jù)當(dāng)做包頭處理并在下次進(jìn)入中斷后接收附加段數(shù)據(jù)。
圖4 CAN接收中斷細(xì)化框圖
下位機(jī)在接受數(shù)據(jù)過程中將接收情況向上位機(jī)反饋,反饋的格式也是16字節(jié)的包頭,包括本機(jī)ID、端口號(hào)、索引號(hào)、數(shù)據(jù)類型等信息,具體格式不再贅述。
3.3下位機(jī)總體實(shí)現(xiàn)方案
下位機(jī)各功能模塊的軟件設(shè)計(jì)大致可以分為兩部分:一是初始化配置階段處理擴(kuò)展幀;二是正常工作階段處理命令幀。主程序流程如圖5所示,各模塊硬件初始化后,在主函數(shù)中等待包頭接收完畢,根據(jù)包頭來判斷本組合包是命令幀還是擴(kuò)展幀,然后調(diào)用相應(yīng)的模塊子程序處理。
圖5 主程序流程圖
4測(cè)試結(jié)果與分析
本中控主機(jī)系統(tǒng)的工作過程步驟簡(jiǎn)單,只需配置好各功能模塊的參數(shù)后即可正常工作。
參數(shù)的配置過程中會(huì)涉及到大量數(shù)據(jù)的CAN通信,在特定情況下對(duì)控制算法和通訊性能進(jìn)行了檢測(cè),結(jié)果如表1所示。
雖然在通訊過程中有丟包現(xiàn)象出現(xiàn)(干擾或其他原因),但由于增加了幀數(shù)據(jù)校驗(yàn)和錯(cuò)誤反饋機(jī)制,系統(tǒng)能正確識(shí)別丟包和錯(cuò)包的情況,確保核心板會(huì)重新發(fā)送。
表1 通訊性能測(cè)試(丟包測(cè)試)
系統(tǒng)工作時(shí),將影音設(shè)備連接到對(duì)應(yīng)的紅外端口,通過無線觸摸屏控制設(shè)備,控制準(zhǔn)確無誤;通過觸摸屏控制影幕升降和投影機(jī)開關(guān),控制結(jié)果正常;被控的VGA矩陣切換器的影音切換迅速準(zhǔn)確。
5結(jié)束語
上述設(shè)計(jì)中的紅外部分Flash燒寫的sir格式的紅外文件是由Smartisys協(xié)議對(duì)紅外信號(hào)采用波形描述加參量編碼的方法生成的,具體方法是把信號(hào)中每組前后相鄰的載波段和空閑段看作是一個(gè)子信號(hào),即看作一個(gè)碼元,把只出現(xiàn)過一次的碼組定義為頭碼,把循環(huán)出現(xiàn)的碼組定義為循環(huán)碼,從這些碼元中提取出載波周期信息、載波段和空閑段的時(shí)長(zhǎng)信息及信息個(gè)數(shù)、頭碼和循環(huán)碼的碼元個(gè)數(shù)、循環(huán)碼的循環(huán)次數(shù)等信息,再把這些信息整合起來就能實(shí)現(xiàn)對(duì)紅外信號(hào)的完整描述。
另外軟件上,由于各功能模塊的分工不同,除解包流程在總體上是一致外,解包后的處理不盡相同。在實(shí)際測(cè)試過程中,采用CAN總線的中控系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性取得了明顯的效果。該中控系統(tǒng)成本較低,穩(wěn)定可靠,目前已經(jīng)正式投入生產(chǎn)。
參考文獻(xiàn):
[1] 楊旭. 基于中控主機(jī)的智能家居控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2007.
[2] 劉向明,方建安.CAN總線網(wǎng)絡(luò)的實(shí)時(shí)性研究和改進(jìn)[J].現(xiàn)代電子技術(shù),2011,34(22):46-50.
[3] 曾維,羅粟,黃宏,等. 封裝串口數(shù)據(jù)通信協(xié)議的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(18):56-60.
[4] 牛躍聽.CAN總線嵌入式開發(fā):從入門到實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2012.
[5] 王桂榮,錢劍敏.CAN總線和基于CAN總線的高層協(xié)議[J]. 計(jì)算機(jī)測(cè)量與控制,2003,11(5):391-394.
A Center Control Computer System Based on CAN Bus
Zhang Liang, Wang Jingcun, Mei Biao
(College of Information Science and Engineering, Wuhan University of Science and Technology, Wuhan430081, China)
Abstract:As the control core of the modern office space, such as multimedia conference room and multimedia exhibition hall, the smart center control computer is very important, it is almost based on RS485 bus in current market. This will result in the worse real-time performance, the lower error-tolerant rate, the more deficient function and the higher price. In according with this situation, a smart center control computer system is introduced, which is based on CAN Bus network, with the embedded system as the master device, and the variant function modules as slave devices. Through the priority arbitration mechanism of CAN Bus controller, and the data packet communication protocol which contains error feedback, the real-time and accurate control to various controlled equipments is realized. So, the hardware circuit of the control system is simple, the function module is easy to expand and the cost is lower. According to the test, the design of the smart center control computer is good enough to meet the requirements of industry standards, and has a broad applications.
Keywords:smart center control computer; communication; data structure; CAN bus network
文章編號(hào):1671-4598(2016)02-0264-03
DOI:10.16526/j.cnki.11-4762/tp.2016.02.073
中圖分類號(hào):TM930.9
文獻(xiàn)標(biāo)識(shí)碼:A
作者簡(jiǎn)介:張梁(1991-),男,湖北仙桃人,碩士研究生,主要從事數(shù)字信號(hào)處理及系統(tǒng)設(shè)計(jì)的研究。王景存(1963-),男,山東菏澤人,教授,主要從事數(shù)字信號(hào)處理和計(jì)算機(jī)控制等方向的研究。
收稿日期:2015-08-31;修回日期:2015-09-25。