基于C164單片機的自動攤鋪機通信模塊的設計
1.引言
隨著高等級公路的不斷發展,對于高等級公路的路面基層、底基層施工質量要求也日益嚴格,采用常規的施工方法已難以滿足其表面幾何尺寸和平整度的要求,因此采用攤鋪機攤鋪路面基層、底基層施工勢在必行。但公路工程任務中,質量要求高,時間緊,操作條件惡劣,迫切要求改善操作環境,降低勞動強度,提高攤鋪機自動化程度。工程機械一體化和機器人化是工程機械未來的發展方向。融合電子技術、計算機技術、控制技術、通信技術等,實現機械產品的自動化和智能化,為機電一體化技術開辟了發展的廣闊天地。該瀝青混凝土自動攤鋪機的研制、開發,將提高道路攤鋪工程的自動化程度和智能化水平,改善道路工程的操作環境和勞動條件,降低勞動強度,提高攤鋪機產品的檔次,成為國內領先、國際先進的國產化產品,對促進我國公路交通事業的發展,具有重要意義。
2.攤鋪機工作原理
瀝青混凝土道路的攤鋪過程是:在工作時,由裝載機從瀝青混凝土攪拌站將混合攪拌好的高溫鋪路材料料快速運輸到攤鋪機前方,將原料倒入攤鋪機的料斗中。料斗的下方是左、右兩條輸料帶,輸料帶將原料一直帶到車體后方,原料從輸料帶上落下。分料架是兩個螺旋桿,它們通過旋轉將堆積在中間的原料向兩邊分開,基本均勻分布在路面上。車體的最后方是熨平板,熨平板用高強壓和振搗器的高頻率將原料壓實,待攤鋪機走過,原料冷卻后,路面形成。
3.通信模塊的網絡拓撲結構
圖1 通信模塊的網絡拓撲結構
自動攤鋪機系統既龐大、又復雜。包括車體的方向、速度控制,輸分料控制,大臂、熨平板、找平控制,發動機的起、停控制以及各種狀態參數的測量、顯示和故障報警。為了提高系統的可靠性,采用了集散型計算機體系結構,實現了集中管理以及功能和危險的分散。所有這些子控制系統都在不同的單片機上完成,而這些子系統之間的參數傳輸則由主交互機進行協調。顯而易見,攤鋪機能否在工作環境相當惡劣的條件下正常、可靠、穩定地工作,很大程度上取決于各個單片機于系統能否進行可靠、穩定的通信。根據項目的要求,對人機交互系統和測控機系統的各種輸入/輸出量的關系進行了深入細致的研究和測量,制定了如圖l所示的網絡拓撲結構。
在圖1中,主交互機與左交互機、右交互機、車體行駛測控機、找平輸分料測控機利用CAN總線進行通信;而主交互機與移動電話則利用RS232C進行串行通信。
4.通信模板的硬件設計
本系統中采用億恒公司的16位CMOS單片機系列的C164作為主控制器。億恒C164是單片機是一款非常優秀的單片機,特別是它的16位單片機,高性能CPU 結合功能豐富的外設,每秒可執行1250萬條指令,在CPU時鐘頻率20MHz時具有下面的性能特點:
(1)帶有4級流水線高性能16位CPU
80ns最小指令循環時間,大多數指令僅需1個循環,即兩個CPU循環;16*16位乘法需400ns(20個CPU循環),32位除16位需800ns(40個CPU循環)。處理能力達到10MIPS。
(2)集成在片存儲器
64KB在片可編程FLASH;2KB內部RAM,用于變量存儲器池、系統堆棧和代碼;2KB在片高速RAM,用于變量、用戶堆棧和代碼;4KB在片數據EEPROM,用于non-volatile變量。
(3)外部總線接口
獨立或復用總線配置;段分配和片選信號產生;8位或16位數據總線。
(4)16個優先級中斷系統
可達33個中斷節點帶有獨立的中斷矢量;在內部程序執行時,240ns/400ns中斷等待時間;快速外部中斷。
(5)智能在片外設子系統
8通道10位A/D
(6)59個I/O引腳
輸入模式具有三態;具有位尋址功能。
通信模塊的硬件電路如圖2所示。
圖2 通信模塊的硬件電路圖
通信模塊帶有CANBUS、RS232C各一路,可獨立進行CAN總線通信和RS232C串行通信。RS232C通信硬件電路由C164片內異步串行口、光耦、MAX232A和傳輸線構成。CAN通信由C164片內CAN控制器、光耦、CAN收發器PAC82C250和傳輸線構成。
CAN收發器PAC82C250與C164CI的接口均帶有光電隔離,隔離前后采用兩套電源:
(1)系統電源:+Vs(+5V), Gs ;
(2)機器電源:+Vm(+5V), Gm。
5.RS232C通信軟件設計
5.1 C164CI的異步串口
C164CI的異步串行口ASC0提供了與其它系統串行通信端口,它的特點是:自帶波特率發生器的異步串口;異步模式,最大625Kbaud傳送速率;全雙工位;可編程特點(1或2停止位,7、8或9數據位);在數據發送時產生校驗或喚醒位;奇或偶校驗位;錯誤檢測等。
5.2 串行口通信編程
串行口主要用于移動電話和主交互機之間進行通信。串行通信的實現主要是通過對串口控制寄存器進行配置實現初始化。下面是這一過程的實現步驟:
1. 串口控制寄存器初始化;
2. 定義波特率;
3. 定義中斷;
4. 定義引腳的特殊功能;
5. 系統啟動。
下面為實現串口的通信程序:
#include
unsigned int a;
interrupt(0x2B) void S0RINT(void) //接收中斷服務子程序
{
a=S0RBUF; //將接收數據保存
}
void putchar(unsigned char tdata) //串行發送程序
{
while(!S0TBIR){;} //等待發送緩沖區清空
S0TBIR=0; //復位發送緩沖區中斷請求標志
S0TBUF=tdata; //裝載發送緩沖寄存器
}
void ASC_vInit(void) //串行通信初始化
{
S0CON=0x8011; //定義控制寄存器:SOR=1;SOREM=1;串行方式1
S0BG=0x0040; //定義波特率9 600Bd
S0RIC=0x0062; //定義接收中斷控制寄存器
S0TBIC=0x0080; //定義發送緩沖控制寄存器
P3 |=0x0400; //定義P3.10引腳為輸出鎖存(TXD0)
DP3 |=0x0400; //定義P3.10方向控制(TXD0為輸出)
Dp3 =0xF7FF; //定義P3.11方向控制(RXD0為輸入)
IEN=1; //開中斷
}
void main(void)
{
………………;
ASC_vInit(); //串口初始化
putchar(‘…..’); //串行發送
………………;
}
評論