基于CAN總線數(shù)控系統(tǒng)遠(yuǎn)程輸入輸出模塊的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
CAN即控制器局域網(wǎng),他的通信具有突出的可靠性、實(shí)時(shí)性和靈活性。他的應(yīng)用不再局限于汽車行業(yè),其中CAN在機(jī)床數(shù)控系統(tǒng)方面實(shí)現(xiàn)的功能主要包括:程序管理;機(jī)床系統(tǒng)參數(shù)輸入輸出診斷、參數(shù)的通訊;機(jī)床狀態(tài)采集;機(jī)床工作模式采集;數(shù)據(jù)庫(kù)管理等。
目前,國(guó)產(chǎn)數(shù)控系統(tǒng)的主要份額是經(jīng)濟(jì)型機(jī)床數(shù)控系統(tǒng)。經(jīng)濟(jì)型數(shù)控系統(tǒng)與機(jī)床基本輸入輸出接口的數(shù)量都是有限的,經(jīng)常不能滿足實(shí)際操作中的需求,同時(shí)在實(shí)際車間中,機(jī)床與數(shù)控系統(tǒng)可能距離較遠(yuǎn),輸入輸出信號(hào)在遠(yuǎn)程傳輸過(guò)程中非常容易受到干擾而出錯(cuò),而CAN總線在傳輸較遠(yuǎn)距離的信號(hào)時(shí)傳輸時(shí)間短,受干擾概率低,還具有較高的傳輸速度,基于這些原因本文提出了基于CAN總線的數(shù)控系統(tǒng)遠(yuǎn)程輸入輸出模塊的設(shè)計(jì)思想。
2 模塊結(jié)構(gòu)設(shè)計(jì)
該模塊的組成結(jié)構(gòu)設(shè)計(jì)如下:CANIN,CANOUT是CAN總線的輸入輸出接口。DI,DO是模塊與機(jī)床的接口,DI:機(jī)床信息輸入接口;DO:來(lái)自數(shù)控系統(tǒng)的信息輸出給機(jī)床的接口。且D1,DO接口接收的信息都是開(kāi)關(guān)量信息。
3 模塊硬件設(shè)計(jì)
本輸入輸出模塊中的微處理器選用宏晶公司的單片機(jī)STC89C516RD+。在CAN總線通信接口中,CAN通信控制器選用SJA1000,CAN總線驅(qū)動(dòng)器采用PCA82C250。由圖2 CAN遠(yuǎn)程輸入輸出模塊硬件原理圖可以看出,電路主要由6部分組成:微控制器STC89C516RD+、獨(dú)立CAN控制器、電氣隔離器件6N137、CAN總線驅(qū)動(dòng)器PCA82C250、輸出模塊和輸入模塊。微處理器STC89C516RD+負(fù)責(zé)向輸出模塊傳出要輸出的數(shù)據(jù),對(duì)輸入模塊的輸入點(diǎn)進(jìn)行掃描輸入,以及初始化SJA1000,并通過(guò)控制SJA1000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。
SJA1000的AD0~AD7連接到STC89C516RD+的P0口,片選信號(hào)CS*由P2.7控制,其為0時(shí)CPU片外存儲(chǔ)器地址可選中SJA1000,進(jìn)而可對(duì)SJA1000執(zhí)行相應(yīng)的讀/寫(xiě)操作。SJA1000的RD*WR*ALE分別與STC89C516RD+的對(duì)應(yīng)引腳相連,INT*接STC89C516RD+的INT0*,使單片機(jī)可通過(guò)中斷方式對(duì)SJA1000進(jìn)行實(shí)時(shí)訪問(wèn)。P1口3個(gè)端口外接一撥碼開(kāi)關(guān),用來(lái)確定自身模塊的標(biāo)識(shí)號(hào)即該模塊的ID號(hào),撥碼開(kāi)關(guān)的取值為000~111,所以該ID號(hào)的取值為0~7。
為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,SJA1000的TX0和RX0并不是直接與PCA82C250的TXD和RXD相連,而是在中間加入了一級(jí)高速光耦6N137,這樣就很好地實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)間的電氣隔離,但前提是光耦部分電路所采用的兩個(gè)電源VCC和VDD必須完全隔離,否則就只是利用其響應(yīng)速度做低通濾波器用。電源的完全隔離可采用小功率的DC-DC,或帶多5 V隔離輸出的開(kāi)關(guān)電源模塊實(shí)現(xiàn)。這雖然增加了接口電路的復(fù)雜性及成本,但卻提高了節(jié)點(diǎn)的穩(wěn)定性和安全性。
輸出模塊中各輸出點(diǎn)通過(guò)鎖存器74ALS273與STC89C516RD+的P0口相接,并由P2譯出的地址以及寫(xiě)信號(hào)WR*進(jìn)行鎖存控制。而輸入模塊中各輸入點(diǎn)通過(guò)總線緩沖器74ABT245與P0口相連,74ABT245由P2譯出的地址以及讀信號(hào)RD*進(jìn)行選通控制。這樣STC89C516RD+就可以方便地對(duì)外部I/O進(jìn)行訪問(wèn)而無(wú)須其他額外的軟硬件開(kāi)支,大大提高了STC89C516RD+的執(zhí)行效率。
4 模塊軟件設(shè)計(jì)
CAN總線數(shù)控系統(tǒng)遠(yuǎn)程輸入輸出模塊的軟件設(shè)計(jì)主要包括6大部分:STC89C516RD+初始化、CAN控制器初始化、報(bào)文發(fā)送、報(bào)文接收、對(duì)輸出點(diǎn)的輸出訪問(wèn)和輸入點(diǎn)的掃描輸入。本設(shè)計(jì)應(yīng)用的CAN的pelic模式的標(biāo)準(zhǔn)幀格式。
程序流程如圖3所示。SJA1000初始化只有在復(fù)位模式下才能進(jìn)行,初始化主要包括通過(guò)調(diào)節(jié)撥碼開(kāi)關(guān)設(shè)置本模塊的標(biāo)識(shí)符,工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器(AMR)和接收代碼寄存器(ACR)的設(shè)置、波特率設(shè)置和中斷允許寄存器(IER)的設(shè)置等。
機(jī)床信息傳到數(shù)控系統(tǒng):當(dāng)掃描到機(jī)床的輸入信號(hào)有電平變化時(shí),模塊把自身的ID信息和輸入信號(hào)一起打包成標(biāo)準(zhǔn)幀發(fā)送給數(shù)控系統(tǒng)。
數(shù)控系統(tǒng)指令傳到機(jī)床:模塊實(shí)時(shí)監(jiān)控總線,當(dāng)總線上有來(lái)自數(shù)控系統(tǒng)的信息,啟動(dòng)CAN接收,根據(jù)AMR和ACR來(lái)判斷是否該接收該指令幀,如果不應(yīng)該接收,將信息丟棄,如果應(yīng)該接收,將指令輸出給機(jī)床。
5 模塊應(yīng)用
在實(shí)際應(yīng)用中,多塊輸入輸出模塊相連接組成CAN的網(wǎng)絡(luò),多塊輸入輸出模塊的上位機(jī)都是機(jī)床數(shù)控系統(tǒng),各模塊的輸入輸出接口均與機(jī)床相連如圖4所示。
注意在該網(wǎng)絡(luò)中,在總線的兩端應(yīng)各接有一個(gè)終端電阻,終端電阻的作用是吸收信號(hào)線上電脈沖的多余能量,防止反射形成信號(hào)混淆,而信號(hào)混淆將導(dǎo)致通訊錯(cuò)誤。
由于各模塊的ID號(hào)的取值為0~7,所以本設(shè)計(jì)數(shù)控系統(tǒng)外部可擴(kuò)展8個(gè)輸入輸出模塊,其中各個(gè)模塊ID號(hào)設(shè)置不能相同,且站號(hào)越小,優(yōu)先級(jí)越高。在本設(shè)計(jì)中每個(gè)模塊的輸入點(diǎn)為64個(gè),輸出點(diǎn)為64個(gè),則一共可以擴(kuò)展到512(64*8)個(gè)輸入輸出點(diǎn)。
6 結(jié) 語(yǔ)
基于CAN總線的數(shù)控系統(tǒng)遠(yuǎn)程輸入輸出模塊不僅擴(kuò)展了經(jīng)濟(jì)型數(shù)控系統(tǒng)的輸入輸出節(jié)點(diǎn),而且提高了遠(yuǎn)程輸入輸出信號(hào)傳輸?shù)恼_率。本系統(tǒng)通過(guò)了現(xiàn)場(chǎng)進(jìn)行的實(shí)驗(yàn)測(cè)試,總線單接一個(gè)模塊;接兩個(gè)模塊;串接8個(gè)模塊,分別測(cè)試各個(gè)模塊的工作情況,機(jī)床和數(shù)控系統(tǒng)之間的信息都能正確傳送,通信速率完全能滿足系統(tǒng)實(shí)時(shí)性能的要求,運(yùn)行可靠。系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單,集成度、智能化程度高,結(jié)構(gòu)與功能可擴(kuò)展性好,安全可靠,極大地增加了數(shù)控系統(tǒng)和機(jī)床通信的輸入輸出節(jié)點(diǎn)。隨著未來(lái)工廠自動(dòng)化的發(fā)展,CAN總線將具有廣闊的應(yīng)用前景。