《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于CAN總線自動攤鋪機通信模塊的設(shè)計
基于CAN總線自動攤鋪機通信模塊的設(shè)計
摘要: 在本系統(tǒng)中,利用RS232C 實現(xiàn)了主交互機與移動電話之間的串行通信;采用帶CAN總線的單片機完成不同模塊各自的功能,又通過CAN總線傳送數(shù)據(jù)或命令,實現(xiàn)了功能分散又集中監(jiān)視,危險分散。
關(guān)鍵詞: 攤鋪機 C164 RS232 CAN
Abstract:
Key words :

  1.引言

  隨著高等級公路的不斷發(fā)展,對于高等級公路的路面基層、底基層施工質(zhì)量要求也日益嚴格,采用常規(guī)的施工方法已難以滿足其表面幾何尺寸和平整度的要求,因此采用攤鋪機攤鋪路面基層、底基層施工勢在必行。但公路工程任務(wù)中,質(zhì)量要求高,時間緊,操作條件惡劣,迫切要求改善操作環(huán)境,降低勞動強度,提高攤鋪機自動化程度。工程機械一體化和機器人化是工程機械未來的發(fā)展方向。融合電子技術(shù)、計算機技術(shù)、控制技術(shù)、通信技術(shù)等,實現(xiàn)機械產(chǎn)品的自動化和智能化,為機電一體化技術(shù)開辟了發(fā)展的廣闊天地。該瀝青混凝土自動攤鋪機的研制、開發(fā),將提高道路攤鋪工程的自動化程度和智能化水平,改善道路工程的操作環(huán)境和勞動條件,降低勞動強度,提高攤鋪機產(chǎn)品的檔次,成為國內(nèi)領(lǐng)先、國際先進的國產(chǎn)化產(chǎn)品,對促進我國公路交通事業(yè)的發(fā)展,具有重要意義。

  2.?dāng)備仚C工作原理

  瀝青混凝土道路的攤鋪過程是:在工作時,由裝載機從瀝青混凝土攪拌站將混合攪拌好的高溫鋪路材料料快速運輸?shù)綌備仚C前方,將原料倒入攤鋪機的料斗中。料斗的下方是左、右兩條輸料帶,輸料帶將原料一直帶到車體后方,原料從輸料帶上落下。分料架是兩個螺旋桿,它們通過旋轉(zhuǎn)將堆積在中間的原料向兩邊分開,基本均勻分布在路面上。車體的最后方是熨平板,熨平板用高強壓和振搗器的高頻率將原料壓實,待攤鋪機走過,原料冷卻后,路面形成。

  3.通信模塊的網(wǎng)絡(luò)拓撲結(jié)構(gòu)

通信模塊的網(wǎng)絡(luò)拓撲結(jié)構(gòu)

圖1 通信模塊的網(wǎng)絡(luò)拓撲結(jié)構(gòu)

  自動攤鋪機系統(tǒng)既龐大、又復(fù)雜。包括車體的方向、速度控制,輸分料控制,大臂、熨平板、找平控制,發(fā)動機的起、停控制以及各種狀態(tài)參數(shù)的測量、顯示和故障報警。為了提高系統(tǒng)的可靠性,采用了集散型計算機體系結(jié)構(gòu),實現(xiàn)了集中管理以及功能和危險的分散。所有這些子控制系統(tǒng)都在不同的單片機上完成,而這些子系統(tǒng)之間的參數(shù)傳輸則由主交互機進行協(xié)調(diào)。顯而易見,攤鋪機能否在工作環(huán)境相當(dāng)惡劣的條件下正常、可靠、穩(wěn)定地工作,很大程度上取決于各個單片機于系統(tǒng)能否進行可靠、穩(wěn)定的通信。根據(jù)項目的要求,對人機交互系統(tǒng)和測控機系統(tǒng)的各種輸入/輸出量的關(guān)系進行了深入細致的研究和測量,制定了如圖l所示的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。

  在圖1中,主交互機與左交互機、右交互機、車體行駛測控機、找平輸分料測控機利用CAN總線進行通信;而主交互機與移動電話則利用RS232C進行串行通信。

  4.通信模板的硬件設(shè)計

  本系統(tǒng)中采用億恒公司的16位CMOS單片機系列的C164作為主控制器。億恒C164是單片機是一款非常優(yōu)秀的單片機,特別是它的16位單片機,高性能CPU 結(jié)合功能豐富的外設(shè),每秒可執(zhí)行1250萬條指令,在CPU時鐘頻率20MHz時具有下面的性能特點:

  (1)帶有4級流水線高性能16位CPU

  80ns最小指令循環(huán)時間,大多數(shù)指令僅需1個循環(huán),即兩個CPU循環(huán);16*16位乘法需400ns(20個CPU循環(huán)),32位除16位需800ns(40個CPU循環(huán))。處理能力達到10MIPS。

  (2)集成在片存儲器

  64KB在片可編程FLASH;2KB內(nèi)部RAM,用于變量存儲器池、系統(tǒng)堆棧和代碼;2KB在片高速RAM,用于變量、用戶堆棧和代碼;4KB在片數(shù)據(jù)EEPROM,用于non-volatile變量。

  (3)外部總線接口

  獨立或復(fù)用總線配置;段分配和片選信號產(chǎn)生;8位或16位數(shù)據(jù)總線。

  (4)16個優(yōu)先級中斷系統(tǒng)

  可達33個中斷節(jié)點帶有獨立的中斷矢量;在內(nèi)部程序執(zhí)行時,240ns/400ns中斷等待時間;快速外部中斷。

  (5)智能在片外設(shè)子系統(tǒng)

  8通道10位A/D轉(zhuǎn)換器,帶有可編程轉(zhuǎn)換時間(最小為7.76us;5個定時/計數(shù)器;同步/異步串行通道;帶有15個信息體的CAN摸量;可編程時間間隔的看門狗定時器;實時時鐘;用于系統(tǒng)初始化的程序引導(dǎo)裝載器。

  (6)59個I/O引腳

  輸入模式具有三態(tài);具有位尋址功能。

  通信模塊的硬件電路如圖2所示。

通信模塊的硬件電路圖

圖2 通信模塊的硬件電路圖

  通信模塊帶有CANBUS、RS232C各一路,可獨立進行CAN總線通信和RS232C串行通信。RS232C通信硬件電路由C164片內(nèi)異步串行口、光耦、MAX232A和傳輸線構(gòu)成。CAN通信由C164片內(nèi)CAN控制器、光耦、CAN收發(fā)器PAC82C250和傳輸線構(gòu)成。

  CAN收發(fā)器PAC82C250與C164CI的接口均帶有光電隔離,隔離前后采用兩套電源:

  (1)系統(tǒng)電源:+Vs(+5V), Gs ;

  (2)機器電源:+Vm(+5V), Gm。

   5.RS232C通信軟件設(shè)計

  5.1 C164CI的異步串口

  C164CI的異步串行口ASC0提供了與其它系統(tǒng)串行通信端口,它的特點是:自帶波特率發(fā)生器的異步串口;異步模式,最大625Kbaud傳送速率;全雙工位;可編程特點(1或2停止位,7、8或9數(shù)據(jù)位);在數(shù)據(jù)發(fā)送時產(chǎn)生校驗或喚醒位;奇或偶校驗位;錯誤檢測等。

   5.2 串行口通信編程

  串行口主要用于移動電話和主交互機之間進行通信。串行通信的實現(xiàn)主要是通過對串口控制寄存器進行配置實現(xiàn)初始化。下面是這一過程的實現(xiàn)步驟:

  1. 串口控制寄存器初始化;

  2. 定義波特率;

  3. 定義中斷;

  4. 定義引腳的特殊功能;

  5. 系統(tǒng)啟動。

  下面為實現(xiàn)串口的通信程序:

  #include

  unsigned int a;

  interrupt(0x2B) void S0RINT(void) //接收中斷服務(wù)子程序

  {

  a=S0RBUF; //將接收數(shù)據(jù)保存

  }

  void putchar(unsigned char tdata) //串行發(fā)送程序

  {

  while(!S0TBIR){;} //等待發(fā)送緩沖區(qū)清空

  S0TBIR=0; //復(fù)位發(fā)送緩沖區(qū)中斷請求標(biāo)志

  S0TBUF=tdata; //裝載發(fā)送緩沖寄存器

  }

  void ASC_vInit(void) //串行通信初始化

  {

  S0CON=0x8011; //定義控制寄存器:SOR=1;SOREM=1;串行方式1

  S0BG=0x0040; //定義波特率9 600Bd

  S0RIC=0x0062; //定義接收中斷控制寄存器

  S0TBIC=0x0080; //定義發(fā)送緩沖控制寄存器

  P3 |=0x0400; //定義P3.10引腳為輸出鎖存(TXD0)

  DP3 |=0x0400; //定義P3.10方向控制(TXD0為輸出)

  Dp3 &=0xF7FF; //定義P3.11方向控制(RXD0為輸入)

  IEN=1; //開中斷

  }

  void main(void)

  {

  ………………;

  ASC_vInit(); //串口初始化

  putchar(‘…..’); //串行發(fā)送

  ………………;

  }

  6.CAN總線通信軟件設(shè)計

  6.1 C164CI的CAN模塊概述

  C164CI的CAN模塊特點如下:

  (1)遵循CAN V2.0B規(guī)定(符號標(biāo)準和擴展功能)。

  (2)最大CAN通信速率為1MB/S。

  (3)完全的CAN裝置:

  l 15個信息體,帶有自己的識別器和狀態(tài)控制位;

  l 每個信息體可以定義為發(fā)送或接收。

  (4)通過在片內(nèi)部XBUS(16位獨立方式)與主CPU相連(C166-內(nèi)核)。

  (5)接收濾波器用可編程屏蔽寄存器:

  l 全域屏蔽輸入信息體(全CAN功能);

  l 信息體15有附加屏蔽(基本CAN功能);

  l 靈活的中斷事件控制;

  l 帶有兩個接收緩沖器;

  l 用自己的全域屏蔽寄存器進行接接收濾波。

  6.2 CAN總線通信軟件設(shè)計

  自動攤鋪機系統(tǒng)CAN總線通信軟件設(shè)計的任務(wù)是:在選定通信規(guī)程CAN2.0B以后,規(guī)定各計算機傳送數(shù)據(jù)的格式和約定;協(xié)調(diào)各計算機之間的通信;統(tǒng)一考慮通信中的可靠性措施。

  6.2.1 數(shù)據(jù)發(fā)送模式

  由于要傳送數(shù)據(jù)的重要程度、傳送周期不同,在本系統(tǒng)的通信中采用兩種不同的數(shù)據(jù)發(fā)送模式:

  (1)發(fā)送模式0:即發(fā)送一次,不檢測接收是否正確,發(fā)送結(jié)束返回。接收方接收到此類數(shù)據(jù)包后,不必發(fā)送應(yīng)答信息包。該數(shù)據(jù)包的特點是:按照一定周期定時發(fā)送,用于主操作面板上的狀態(tài)顯示,所以偶爾的傳送失敗不會影響系統(tǒng)的正常運行與操作。

  (2) 發(fā)送模式1:即一定要將數(shù)據(jù)包正確發(fā)送給接收方。采用重發(fā)機制,等待接收方應(yīng)答,若沒有接收到應(yīng)答則重發(fā)。5次發(fā)送均失敗,則返回FALSE,由發(fā)送方做出相應(yīng)的處理動作,如報警、停機等;成功則返回TRUE。該數(shù)據(jù)包的特點是:由相應(yīng)事件觸發(fā)發(fā)送,如果傳送失敗,將影響系統(tǒng)的正常運行。

  6.2.2 數(shù)據(jù)發(fā)送模式

  對于自動攤鋪機系統(tǒng)來說,其CAN 網(wǎng)絡(luò)中節(jié)點數(shù)量較少,而每種數(shù)據(jù)包只需要一部分節(jié)點來接收,因此在通信設(shè)計中利用數(shù)據(jù)幀標(biāo)識符來實現(xiàn)定址組播。為避免接收不必要的數(shù)據(jù)包,對接收節(jié)點按位編址,每個節(jié)點對應(yīng)驗收濾波中的一位。若一個報文標(biāo)識符高8位中對應(yīng)位為1,則接收;否則忽略。因此只要在發(fā)送節(jié)點根據(jù)數(shù)據(jù)包內(nèi)容設(shè)置合適的報文標(biāo)識符,數(shù)據(jù)包即可被相關(guān)節(jié)點正確接收,而被無關(guān)節(jié)點忽略。

   6.2.3 校驗

  在CAN 結(jié)構(gòu)的MAC層中已經(jīng)實現(xiàn)了循環(huán)冗余碼〔CRC〕校驗。但自動攤鋪機工作環(huán)境惡劣,工作條件復(fù)雜,為了系統(tǒng)通信的可靠性,在控制程序級的通信中也進行校驗。為減輕系統(tǒng)負擔(dān)及降低程序復(fù)雜性,控制程序級的校驗采用了比較簡單的求和取模校驗方式,每個數(shù)據(jù)幀的最后一個數(shù)據(jù)字節(jié)作為校驗和,其值是之前所有數(shù)據(jù)字節(jié)求和后對256取模的值。各節(jié)點的接收接口中以相同方法計算校驗和,若校驗正確則將數(shù)據(jù)包壓入接收隊列,否則拋棄該包。

   6.2.4 數(shù)據(jù)包格式及內(nèi)容

數(shù)據(jù)包格式及內(nèi)容

  其中:L取值為2—8:采用CAN2.0B標(biāo)準,使用29位標(biāo)識符。

  ID28—ID21:確定此幀的接收節(jié)點,每位代表1個節(jié)點,可以廣播。

  ID20—IDl7:此幀的順序號,每發(fā)一個幀增1,用于區(qū)分不同數(shù)據(jù)幀與重發(fā)數(shù)據(jù)幀。

  IDl6:應(yīng)答標(biāo)志位:為1表示此幀需要應(yīng)答,為0表示此幀不需應(yīng)答。

  IDl5—IDl3:指定此幀的發(fā)送節(jié)點,0—3分別代表左交互機、右交互機、車體行駛測控機和找平輸分料測控機。

  ID12—ID0:無意義。

  6.3 CAN總線通信編程

  CAN總線通信編程是一個比較煩瑣的事情,主要是涉及諸多的CAN寄存器,但只要掌握其規(guī)律和技術(shù)關(guān)鍵,就會變得容易起來。下面是CAN總線通信編程的實現(xiàn)步驟:

  (1)CAN模量初始化;

  (2)定義每一個信息體;

  (3)裝載信息體數(shù)據(jù)(僅針對發(fā)送信息體);

  (4)接收信息體接收數(shù)據(jù);

  (5)發(fā)送一個信息體;

  (6)檢查一個信息體;

  (7)檢查是否關(guān)閉CAN總線。

  為便于進行模塊化編程,將CAN通信功能封裝成一個個子程序,并且生成一個專用的程序庫,供不同的程序員調(diào)用,這樣就提高了編程效率,并易于功能擴展。下面給出其中的兩個子程序。

  下面為發(fā)送一個信息體的CAN通信程序:

  #include //C164寄存器定義

  #include //CAN控制寄存器定義

  void send_mo_16x(unsigned char a) //發(fā)送信息體“a”(1..14)

  {

  if((a<15)&&(a))*msgctrl_ptr_16x[a]=0xefff; //置位TXRQ

  }

  下面為檢查是否關(guān)閉CAN總線的CAN通信程序:

  #include //CAN控制寄存器定義

  unsigned char check_busoff_16x(void) //檢查總線是否關(guān)閉,并在必要時恢復(fù)

  {

  unsigned char busoff_var=0;

  if(SR&0x80) //如果BOFF=1

  {

  busoff_var=1;

  CR=CR&0xfe; //恢復(fù)關(guān)閉的總線(清零INIT)

  }

  }

  7.結(jié)論

  由于攤鋪機的功能繁多,運作復(fù)雜,工作環(huán)境十分惡劣,因此控制系統(tǒng)的工作可靠性問題就是自動攤鋪機設(shè)計的關(guān)鍵。在本系統(tǒng)中,利用RS232C 實現(xiàn)了主交互機與移動電話之間的串行通信;采用帶CAN總線的單片機完成不同模塊各自的功能,又通過CAN總線傳送數(shù)據(jù)或命令,實現(xiàn)了功能分散又集中監(jiān)視,危險分散。因此,很適合于自動攤鋪機中分布式控制系統(tǒng)的實現(xiàn)?,F(xiàn)場實驗結(jié)果表明:該通信模塊具有良好的可靠性、穩(wěn)定性和安全性。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。