1.引言
隨著高等級(jí)公路的不斷發(fā)展,對(duì)于高等級(jí)公路的路面基層、底基層施工質(zhì)量要求也日益嚴(yán)格,,采用常規(guī)的施工方法已難以滿足其表面幾何尺寸和平整度的要求,因此采用攤鋪機(jī)攤鋪路面基層,、底基層施工勢(shì)在必行,。但公路工程任務(wù)中,質(zhì)量要求高,,時(shí)間緊,,操作條件惡劣,迫切要求改善操作環(huán)境,,降低勞動(dòng)強(qiáng)度,,提高攤鋪機(jī)自動(dòng)化程度。工程機(jī)械一體化和機(jī)器人化是工程機(jī)械未來(lái)的發(fā)展方向,。融合電子技術(shù),、計(jì)算機(jī)技術(shù)、控制技術(shù),、通信技術(shù)等,,實(shí)現(xiàn)機(jī)械產(chǎn)品的自動(dòng)化和智能化,為機(jī)電一體化技術(shù)開(kāi)辟了發(fā)展的廣闊天地,。該瀝青混凝土自動(dòng)攤鋪機(jī)的研制,、開(kāi)發(fā),將提高道路攤鋪工程的自動(dòng)化程度和智能化水平,,改善道路工程的操作環(huán)境和勞動(dòng)條件,,降低勞動(dòng)強(qiáng)度,提高攤鋪機(jī)產(chǎn)品的檔次,,成為國(guó)內(nèi)領(lǐng)先,、國(guó)際先進(jìn)的國(guó)產(chǎn)化產(chǎn)品,,對(duì)促進(jìn)我國(guó)公路交通事業(yè)的發(fā)展,具有重要意義,。
2.?dāng)備仚C(jī)工作原理
瀝青混凝土道路的攤鋪過(guò)程是:在工作時(shí),,由裝載機(jī)從瀝青混凝土攪拌站將混合攪拌好的高溫鋪路材料料快速運(yùn)輸?shù)綌備仚C(jī)前方,將原料倒入攤鋪機(jī)的料斗中,。料斗的下方是左,、右兩條輸料帶,輸料帶將原料一直帶到車體后方,,原料從輸料帶上落下,。分料架是兩個(gè)螺旋桿,它們通過(guò)旋轉(zhuǎn)將堆積在中間的原料向兩邊分開(kāi),,基本均勻分布在路面上,。車體的最后方是熨平板,熨平板用高強(qiáng)壓和振搗器的高頻率將原料壓實(shí),,待攤鋪機(jī)走過(guò),,原料冷卻后,路面形成,。
3.通信模塊的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
圖1 通信模塊的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
自動(dòng)攤鋪機(jī)系統(tǒng)既龐大、又復(fù)雜,。包括車體的方向,、速度控制,輸分料控制,,大臂,、熨平板、找平控制,,發(fā)動(dòng)機(jī)的起,、停控制以及各種狀態(tài)參數(shù)的測(cè)量,、顯示和故障報(bào)警,。為了提高系統(tǒng)的可靠性,采用了集散型計(jì)算機(jī)體系結(jié)構(gòu),,實(shí)現(xiàn)了集中管理以及功能和危險(xiǎn)的分散,。所有這些子控制系統(tǒng)都在不同的單片機(jī)上完成,而這些子系統(tǒng)之間的參數(shù)傳輸則由主交互機(jī)進(jìn)行協(xié)調(diào),。顯而易見(jiàn),,攤鋪機(jī)能否在工作環(huán)境相當(dāng)惡劣的條件下正常、可靠,、穩(wěn)定地工作,,很大程度上取決于各個(gè)單片機(jī)于系統(tǒng)能否進(jìn)行可靠,、穩(wěn)定的通信。根據(jù)項(xiàng)目的要求,,對(duì)人機(jī)交互系統(tǒng)和測(cè)控機(jī)系統(tǒng)的各種輸入/輸出量的關(guān)系進(jìn)行了深入細(xì)致的研究和測(cè)量,,制定了如圖l所示的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
在圖1中,,主交互機(jī)與左交互機(jī),、右交互機(jī)、車體行駛測(cè)控機(jī),、找平輸分料測(cè)控機(jī)利用CAN總線進(jìn)行通信,;而主交互機(jī)與移動(dòng)電話則利用RS232C進(jìn)行串行通信。
4.通信模板的硬件設(shè)計(jì)
本系統(tǒng)中采用億恒公司的16位CMOS單片機(jī)系列的C164作為主控制器,。億恒C164是單片機(jī)是一款非常優(yōu)秀的單片機(jī),,特別是它的16位單片機(jī),高性能CPU 結(jié)合功能豐富的外設(shè),,每秒可執(zhí)行1250萬(wàn)條指令,,在CPU時(shí)鐘頻率20MHz時(shí)具有下面的性能特點(diǎn):
(1)帶有4級(jí)流水線高性能16位CPU
80ns最小指令循環(huán)時(shí)間,大多數(shù)指令僅需1個(gè)循環(huán),,即兩個(gè)CPU循環(huán),;16*16位乘法需400ns(20個(gè)CPU循環(huán)),32位除16位需800ns(40個(gè)CPU循環(huán)),。處理能力達(dá)到10MIPS,。
(2)集成在片存儲(chǔ)器
64KB在片可編程FLASH;2KB內(nèi)部RAM,,用于變量存儲(chǔ)器池,、系統(tǒng)堆棧和代碼;2KB在片高速RAM,,用于變量,、用戶堆棧和代碼;4KB在片數(shù)據(jù)EEPROM,,用于non-volatile變量,。
(3)外部總線接口
獨(dú)立或復(fù)用總線配置;段分配和片選信號(hào)產(chǎn)生,;8位或16位數(shù)據(jù)總線,。
(4)16個(gè)優(yōu)先級(jí)中斷系統(tǒng)
可達(dá)33個(gè)中斷節(jié)點(diǎn)帶有獨(dú)立的中斷矢量;在內(nèi)部程序執(zhí)行時(shí),,240ns/400ns中斷等待時(shí)間,;快速外部中斷。
(5)智能在片外設(shè)子系統(tǒng)
8通道10位A/D轉(zhuǎn)換器,,帶有可編程轉(zhuǎn)換時(shí)間(最小為7.76us,;5個(gè)定時(shí)/計(jì)數(shù)器,;同步/異步串行通道;帶有15個(gè)信息體的CAN摸量,;可編程時(shí)間間隔的看門(mén)狗定時(shí)器,;實(shí)時(shí)時(shí)鐘;用于系統(tǒng)初始化的程序引導(dǎo)裝載器,。
(6)59個(gè)I/O引腳
輸入模式具有三態(tài),;具有位尋址功能。
通信模塊的硬件電路如圖2所示,。
圖2 通信模塊的硬件電路圖
通信模塊帶有CANBUS,、RS232C各一路,可獨(dú)立進(jìn)行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)機(jī)器電源:+Vm(+5V), Gm,。
5.RS232C通信軟件設(shè)計(jì)
5.1 C164CI的異步串口
C164CI的異步串行口ASC0提供了與其它系統(tǒng)串行通信端口,,它的特點(diǎn)是:自帶波特率發(fā)生器的異步串口;異步模式,,最大625Kbaud傳送速率;全雙工位,;可編程特點(diǎn)(1或2停止位,,7、8或9數(shù)據(jù)位),;在數(shù)據(jù)發(fā)送時(shí)產(chǎn)生校驗(yàn)或喚醒位,;奇或偶校驗(yàn)位;錯(cuò)誤檢測(cè)等,。
5.2 串行口通信編程
串行口主要用于移動(dòng)電話和主交互機(jī)之間進(jìn)行通信,。串行通信的實(shí)現(xiàn)主要是通過(guò)對(duì)串口控制寄存器進(jìn)行配置實(shí)現(xiàn)初始化。下面是這一過(guò)程的實(shí)現(xiàn)步驟:
1. 串口控制寄存器初始化,;
2. 定義波特率,;
3. 定義中斷;
4. 定義引腳的特殊功能,;
5. 系統(tǒng)啟動(dòng),。
下面為實(shí)現(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ū)中斷請(qǐng)求標(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; //開(kāi)中斷
}
void main(void)
{
………………;
ASC_vInit(); //串口初始化
putchar(‘…..’); //串行發(fā)送
………………;
}
6.CAN總線通信軟件設(shè)計(jì)
6.1 C164CI的CAN模塊概述
C164CI的CAN模塊特點(diǎn)如下:
(1)遵循CAN V2.0B規(guī)定(符號(hào)標(biāo)準(zhǔn)和擴(kuò)展功能),。
(2)最大CAN通信速率為1MB/S,。
(3)完全的CAN裝置:
l 15個(gè)信息體,帶有自己的識(shí)別器和狀態(tài)控制位,;
l 每個(gè)信息體可以定義為發(fā)送或接收,。
(4)通過(guò)在片內(nèi)部XBUS(16位獨(dú)立方式)與主CPU相連(C166-內(nèi)核)。
(5)接收濾波器用可編程屏蔽寄存器:
l 全域屏蔽輸入信息體(全CAN功能),;
l 信息體15有附加屏蔽(基本CAN功能),;
l 靈活的中斷事件控制;
l 帶有兩個(gè)接收緩沖器,;
l 用自己的全域屏蔽寄存器進(jìn)行接接收濾波,。
6.2 CAN總線通信軟件設(shè)計(jì)
自動(dòng)攤鋪機(jī)系統(tǒng)CAN總線通信軟件設(shè)計(jì)的任務(wù)是:在選定通信規(guī)程CAN2.0B以后,規(guī)定各計(jì)算機(jī)傳送數(shù)據(jù)的格式和約定,;協(xié)調(diào)各計(jì)算機(jī)之間的通信,;統(tǒng)一考慮通信中的可靠性措施。
6.2.1 數(shù)據(jù)發(fā)送模式
由于要傳送數(shù)據(jù)的重要程度,、傳送周期不同,,在本系統(tǒng)的通信中采用兩種不同的數(shù)據(jù)發(fā)送模式:
(1)發(fā)送模式0:即發(fā)送一次,不檢測(cè)接收是否正確,,發(fā)送結(jié)束返回,。接收方接收到此類數(shù)據(jù)包后,不必發(fā)送應(yīng)答信息包,。該數(shù)據(jù)包的特點(diǎn)是:按照一定周期定時(shí)發(fā)送,,用于主操作面板上的狀態(tài)顯示,所以偶爾的傳送失敗不會(huì)影響系統(tǒng)的正常運(yùn)行與操作,。
(2) 發(fā)送模式1:即一定要將數(shù)據(jù)包正確發(fā)送給接收方,。采用重發(fā)機(jī)制,等待接收方應(yīng)答,,若沒(méi)有接收到應(yīng)答則重發(fā),。5次發(fā)送均失敗,則返回FALSE,,由發(fā)送方做出相應(yīng)的處理動(dòng)作,,如報(bào)警、停機(jī)等,;成功則返回TRUE,。該數(shù)據(jù)包的特點(diǎn)是:由相應(yīng)事件觸發(fā)發(fā)送,如果傳送失敗,,將影響系統(tǒng)的正常運(yùn)行,。
6.2.2 數(shù)據(jù)發(fā)送模式
對(duì)于自動(dòng)攤鋪機(jī)系統(tǒng)來(lái)說(shuō),,其CAN 網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量較少,而每種數(shù)據(jù)包只需要一部分節(jié)點(diǎn)來(lái)接收,,因此在通信設(shè)計(jì)中利用數(shù)據(jù)幀標(biāo)識(shí)符來(lái)實(shí)現(xiàn)定址組播,。為避免接收不必要的數(shù)據(jù)包,對(duì)接收節(jié)點(diǎn)按位編址,,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)驗(yàn)收濾波中的一位,。若一個(gè)報(bào)文標(biāo)識(shí)符高8位中對(duì)應(yīng)位為1,則接收,;否則忽略,。因此只要在發(fā)送節(jié)點(diǎn)根據(jù)數(shù)據(jù)包內(nèi)容設(shè)置合適的報(bào)文標(biāo)識(shí)符,數(shù)據(jù)包即可被相關(guān)節(jié)點(diǎn)正確接收,,而被無(wú)關(guān)節(jié)點(diǎn)忽略,。
6.2.3 校驗(yàn)
在CAN 結(jié)構(gòu)的MAC層中已經(jīng)實(shí)現(xiàn)了循環(huán)冗余碼〔CRC〕校驗(yàn)。但自動(dòng)攤鋪機(jī)工作環(huán)境惡劣,,工作條件復(fù)雜,,為了系統(tǒng)通信的可靠性,在控制程序級(jí)的通信中也進(jìn)行校驗(yàn),。為減輕系統(tǒng)負(fù)擔(dān)及降低程序復(fù)雜性,,控制程序級(jí)的校驗(yàn)采用了比較簡(jiǎn)單的求和取模校驗(yàn)方式,每個(gè)數(shù)據(jù)幀的最后一個(gè)數(shù)據(jù)字節(jié)作為校驗(yàn)和,,其值是之前所有數(shù)據(jù)字節(jié)求和后對(duì)256取模的值,。各節(jié)點(diǎn)的接收接口中以相同方法計(jì)算校驗(yàn)和,若校驗(yàn)正確則將數(shù)據(jù)包壓入接收隊(duì)列,,否則拋棄該包,。
6.2.4 數(shù)據(jù)包格式及內(nèi)容
其中:L取值為2—8:采用CAN2.0B標(biāo)準(zhǔn),使用29位標(biāo)識(shí)符,。
ID28—ID21:確定此幀的接收節(jié)點(diǎn),,每位代表1個(gè)節(jié)點(diǎn),可以廣播,。
ID20—IDl7:此幀的順序號(hào),,每發(fā)一個(gè)幀增1,,用于區(qū)分不同數(shù)據(jù)幀與重發(fā)數(shù)據(jù)幀,。
IDl6:應(yīng)答標(biāo)志位:為1表示此幀需要應(yīng)答,為0表示此幀不需應(yīng)答,。
IDl5—IDl3:指定此幀的發(fā)送節(jié)點(diǎn),,0—3分別代表左交互機(jī)、右交互機(jī),、車體行駛測(cè)控機(jī)和找平輸分料測(cè)控機(jī),。
ID12—ID0:無(wú)意義,。
6.3 CAN總線通信編程
CAN總線通信編程是一個(gè)比較煩瑣的事情,主要是涉及諸多的CAN寄存器,,但只要掌握其規(guī)律和技術(shù)關(guān)鍵,,就會(huì)變得容易起來(lái)。下面是CAN總線通信編程的實(shí)現(xiàn)步驟:
(1)CAN模量初始化,;
(2)定義每一個(gè)信息體,;
(3)裝載信息體數(shù)據(jù)(僅針對(duì)發(fā)送信息體);
(4)接收信息體接收數(shù)據(jù),;
(5)發(fā)送一個(gè)信息體,;
(6)檢查一個(gè)信息體;
(7)檢查是否關(guān)閉CAN總線,。
為便于進(jìn)行模塊化編程,,將CAN通信功能封裝成一個(gè)個(gè)子程序,并且生成一個(gè)專用的程序庫(kù),,供不同的程序員調(diào)用,,這樣就提高了編程效率,并易于功能擴(kuò)展,。下面給出其中的兩個(gè)子程序,。
下面為發(fā)送一個(gè)信息體的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)閉,并在必要時(shí)恢復(fù)
{
unsigned char busoff_var=0;
if(SR&0x80) //如果BOFF=1
{
busoff_var=1;
CR=CR&0xfe; //恢復(fù)關(guān)閉的總線(清零INIT)
}
}
7.結(jié)論
由于攤鋪機(jī)的功能繁多,,運(yùn)作復(fù)雜,,工作環(huán)境十分惡劣,因此控制系統(tǒng)的工作可靠性問(wèn)題就是自動(dòng)攤鋪機(jī)設(shè)計(jì)的關(guān)鍵,。在本系統(tǒng)中,,利用RS232C 實(shí)現(xiàn)了主交互機(jī)與移動(dòng)電話之間的串行通信;采用帶CAN總線的單片機(jī)完成不同模塊各自的功能,,又通過(guò)CAN總線傳送數(shù)據(jù)或命令,,實(shí)現(xiàn)了功能分散又集中監(jiān)視,危險(xiǎn)分散,。因此,,很適合于自動(dòng)攤鋪機(jī)中分布式控制系統(tǒng)的實(shí)現(xiàn)。現(xiàn)場(chǎng)實(shí)驗(yàn)結(jié)果表明:該通信模塊具有良好的可靠性,、穩(wěn)定性和安全性,。