基于CPLD的內(nèi)燃機(jī)車邏輯控制模塊的設(shè)計(jì)
作者:王 曦 王立德 劉 彪 丁國(guó)君
本文引用地址:http://www.ex-cimer.com/article/201610/308494.htm0 引言
內(nèi)燃機(jī)車在實(shí)際應(yīng)用中仍占有很大的比重,比如在貨運(yùn)及調(diào)車運(yùn)轉(zhuǎn)方面發(fā)揮著重要的作用,且隨著科學(xué)技術(shù)的發(fā)展,對(duì)機(jī)車的可靠性,安全性及高效性提出了更高的要求。因此,基于內(nèi)燃機(jī)車的新設(shè)備的開發(fā)和研究很有必要。
目前,我國(guó)大多數(shù)內(nèi)燃機(jī)車邏輯控制電路采用繼電器有觸點(diǎn)控制,有觸點(diǎn)電器故障率高,長(zhǎng)期使用容易導(dǎo)致動(dòng)、靜觸頭接觸不良甚至不導(dǎo)通,更嚴(yán)重的是,機(jī)車運(yùn)行中的強(qiáng)烈振動(dòng)可能引起控制電路的誤動(dòng)作,給行車帶來危險(xiǎn)。此外,傳統(tǒng)有觸點(diǎn)控制電路接線復(fù)雜,給布線,維護(hù)和檢修帶來了很大的不便,且控制系統(tǒng)的通用性和靈活性差,當(dāng)機(jī)車的控制功能或控制過程需做修改時(shí),必須重新布線。
本文介紹的內(nèi)燃機(jī)車邏輯控制模塊的設(shè)計(jì),首先對(duì)內(nèi)燃機(jī)車的控制邏輯進(jìn)行分析優(yōu)化,然后設(shè)計(jì)可以完全取代原有邏輯控制功能的 IP核,在此基礎(chǔ)上利用 SOC技術(shù)并結(jié)合電力電子技術(shù)取代了機(jī)車上繼電器和接觸器的輔助觸點(diǎn),最大限度地簡(jiǎn)化了傳統(tǒng)的有觸點(diǎn)控制電路,減少了外部連線,提高了系統(tǒng)的可靠性和設(shè)計(jì)制造的靈活性,縮短了內(nèi)燃機(jī)車設(shè)計(jì)調(diào)試的時(shí)間,實(shí)現(xiàn)了控制系統(tǒng)的通用性。 1 邏輯控制模塊的整體結(jié)構(gòu)
內(nèi)燃機(jī)車邏輯控制模塊由輸入、輸出、控制、電源這四個(gè)部分組成(如圖 1所示)。每個(gè)模塊包含兩套結(jié)構(gòu)和功能完全相同的系統(tǒng),每一套系統(tǒng)都能獨(dú)立工作。同一時(shí)間,一個(gè)邏輯控制模塊中只有一套系統(tǒng)進(jìn)行工作,另一套系統(tǒng)備用,由模塊上的電源轉(zhuǎn)換開關(guān)在兩套系統(tǒng)之間進(jìn)行切換。
整個(gè)系統(tǒng)包括邏輯控制模塊,司機(jī)室顯示屏,檢測(cè)儀,數(shù)據(jù)采集模塊四種節(jié)點(diǎn),在實(shí)際運(yùn)行中,邏輯控制模塊需要向顯示屏傳輸自身狀態(tài)等數(shù)據(jù)信息用于顯示,并且還要接收檢測(cè)儀的 定時(shí)查詢,因此它還承擔(dān)著接收和發(fā)送信息的任務(wù),所以在設(shè)計(jì)中加入了 CAN總線控制器,通過 CAN總線跟其它節(jié)點(diǎn)進(jìn)行信息交互。
邏輯控制模塊的硬件設(shè)計(jì)
2.1 輸入與輸出電路的設(shè)計(jì)
輸入電路用于采集機(jī)車上各條控制線路的信號(hào),因此整個(gè)輸入電路由若干路結(jié)構(gòu)相同的輸入通道組成,如圖 2所示。
輸入通道采集的信號(hào)來自內(nèi)燃機(jī)車上的 110V線路,110V的直流信號(hào)通過降壓處理后,經(jīng)過光耦隔離和施密特觸發(fā)器(74HC14)整形和濾波,生成 CPLD能夠處理的信號(hào),然后傳輸給CPLD,為 CPLD進(jìn)行邏輯判斷和控制提供相應(yīng)的線路信息。
輸出電路也由若干條結(jié)構(gòu)相同的輸出通道組成,用于驅(qū)動(dòng)內(nèi)燃機(jī)車上的接觸器及控制一些用電設(shè)備(如干燥器,指示燈等)的開通和關(guān)斷。輸出通道的結(jié)構(gòu)如圖 2所示。
CPLD以原有的邏輯控制電路為基礎(chǔ),根據(jù)輸入信息進(jìn)行邏輯判斷和處理后輸出各種控制信號(hào),輸出的控制信號(hào)電壓為3.3V,不足以驅(qū)動(dòng)MOSFET,因此,首先通過驅(qū)動(dòng)芯片 ULN2004將控制信號(hào)放大到 7V左右,然后利用原副邊比1:3的變壓器放大到 20V左右以達(dá)到能夠驅(qū)動(dòng) MOSFET的電壓等級(jí)。該變壓器除起到信號(hào)放大作用外,還起到了保護(hù)和隔離的作用,進(jìn)一步提高了整個(gè)系統(tǒng)的安全性和可靠性。CPLD輸出的控制信號(hào)經(jīng)過一系列處理后通過控制MOSFET的開斷實(shí)現(xiàn)了對(duì)機(jī)車上的接觸器及用電設(shè)備的控制。
2.2 控制電路的設(shè)計(jì)
控制電路主要由兩部分組成,一是以 CPLD為核心的機(jī)車邏輯判斷和控制部分,一是以單片機(jī)和 CAN控制器為核心的通信控制部分??刂齐娐返慕Y(jié)構(gòu)如圖 3所示。
本次設(shè)計(jì)中使用Lattice公司ispMACH4000系列的LC4512V型CPLD,ATMEL公司的 89C52單片機(jī),采用 Philips的 CAN控制器 SJA1000及 CAN收發(fā)器PCA82C250。由于 CPLD內(nèi)部資源有限,為節(jié)省對(duì)晶振分頻所耗費(fèi)的資源,采用外部 100HZ的時(shí)鐘發(fā)生器,該時(shí)鐘發(fā)生器由NE555芯片構(gòu)成,為 CPLD提供計(jì)算時(shí)間的基本時(shí)鐘,用于邏輯控制中的延時(shí)和信號(hào)濾波。CPLD電源為 5V轉(zhuǎn) 3.3V的電源芯片LM3940,為 CPLD提供穩(wěn)定的 3.3V電壓。單片機(jī)外接 5V電源。CPLD將需要傳輸?shù)男畔鬟f給單片機(jī)(MCU),再由單片機(jī)控制通信部分完成發(fā)送任務(wù)。PCA82C250是 CAN控制器和物理傳輸線路之間的接口,提供了對(duì)總線的差動(dòng)接收和差動(dòng)發(fā)送能力,為了增強(qiáng)系統(tǒng)的抗干擾能力,在 SJA1000和 PCA82C250之間使用光耦 6N137以實(shí)現(xiàn)電氣隔離,在通信控制部分使用 B0505隔離電源模塊。
2.3 系統(tǒng)電源介紹
邏輯控制模塊上分為四個(gè)電壓等級(jí),分別是110V,12V,5V,3.3V。其中 110V為機(jī)車控制電路電壓,為邏輯控制模塊的電源模塊提供穩(wěn)定的輸入電壓;12V為驅(qū)動(dòng)芯片 ULN2004提供電源;5V給單片機(jī)及外圍電路供電;3.3V給 CPLD及輸入隔離電路供電。
12V和5V是采用標(biāo)準(zhǔn)化的機(jī)車專用電源模塊將 110V電壓變換得到,該電源模塊的輸入
輸出均采用相應(yīng)的保護(hù),提供系統(tǒng)工作所需的兩路電壓。3.3V由電源芯片 LM3940轉(zhuǎn)換得到。 邏輯控制模塊的軟件設(shè)計(jì) 邏輯控制模塊的軟件設(shè)計(jì)包括機(jī)車邏輯控制 IP核設(shè)計(jì)及 CAN通信的程序設(shè)計(jì)。
3.1 機(jī)車邏輯控制IP核設(shè)計(jì)
本系統(tǒng)采用SOC 技術(shù)設(shè)計(jì),將信號(hào)采集,處理,控制,存儲(chǔ),傳輸?shù)裙δ茉谝粔K CPLD上實(shí)現(xiàn),該系統(tǒng)實(shí)現(xiàn)的前提是機(jī)車邏輯控制 IP核的使用。機(jī)車邏輯控制 IP核采用 Verilog語言編制,使用Verilog-HDL設(shè)計(jì),采用自頂向下的設(shè)計(jì)方法,把本系統(tǒng)分為幾個(gè)基本模塊(如圖 4所示),再將每個(gè)基本模塊劃分為下一層次的基本模塊,直到能用 PLD器件結(jié)構(gòu)相對(duì)應(yīng)的邏輯單元來實(shí)現(xiàn)。
在輸入模塊的設(shè)計(jì)中,為每一個(gè)輸入信號(hào)設(shè)置一個(gè)輸入狀態(tài)寄存器,用于存儲(chǔ)各輸入信號(hào)狀態(tài);并設(shè)置一個(gè)輸入緩沖區(qū)。整個(gè)輸入模塊的功能就是讀取輸入信號(hào)狀態(tài),并將其置入輸入緩沖區(qū),其工作流程如圖六所示。同樣,在輸出模塊的設(shè)計(jì)中,為每一路輸出也設(shè)置一個(gè)狀態(tài)寄存器,并設(shè)置一個(gè)輸出緩沖區(qū)。輸出子模塊的主要功能就是從輸出緩沖區(qū)中讀取輸出狀態(tài)并將其輸出。
功能模塊主要用來完成邏輯功能的實(shí)現(xiàn)。該模塊中根據(jù)機(jī)車原有的邏輯控制電路生成了各種虛擬繼電器和接觸器,執(zhí)行時(shí)首先從輸入緩沖區(qū)中讀出各輸入狀態(tài),如果有延時(shí)關(guān)系,還得從延時(shí)模塊中讀取相應(yīng)的參數(shù);然后調(diào)用各種虛擬繼電器或接觸器判斷邏輯關(guān)系的成立與否;如邏輯關(guān)系成立則將相應(yīng)的輸出狀態(tài)寄存器置“1”,否則置“0”。
延時(shí)模塊用來實(shí)現(xiàn)相應(yīng)時(shí)間繼電器功能的,當(dāng)有延時(shí)信號(hào)到來時(shí),啟動(dòng)延時(shí)模塊,首先初始化各寄存器并設(shè)置延時(shí)值,然后開始計(jì)時(shí)。如果延時(shí)信號(hào)在延時(shí)時(shí)間到后還存在,則設(shè)置延時(shí)緩沖區(qū)參數(shù);否則結(jié)束延時(shí)過程。
數(shù)據(jù)傳輸模塊實(shí)現(xiàn)CPLD和單片機(jī)之間的數(shù)據(jù)傳輸,CPLD將相應(yīng)的數(shù)據(jù)存儲(chǔ)在寄存器中并映射到單片機(jī)的地址空間,單片機(jī)將 CPLD作為外設(shè)進(jìn)行讀寫操作。
3.2 CAN通信程序設(shè)計(jì)
內(nèi)燃機(jī)車邏輯控制模塊作為整個(gè)檢測(cè)控制模塊中的一個(gè)節(jié)點(diǎn),需要同其它節(jié)點(diǎn)進(jìn)行信息交互,交互的數(shù)據(jù)包括邏輯控制 IP核功能模塊中生成的虛擬繼電器,接觸器的狀態(tài)信息及故障信息。本設(shè)計(jì)中采用 CAN總線作為數(shù)據(jù)傳輸?shù)拿浇椤?/p>
邏輯控制模塊在三種條件下對(duì)外部發(fā)送信息。
1 沒有接收到外部請(qǐng)求及自身數(shù)據(jù)信息沒發(fā)生改變的前提下定時(shí)對(duì)外部發(fā)送數(shù)據(jù)。通過單片機(jī)內(nèi)的定時(shí)器實(shí)現(xiàn)。
2 當(dāng)需要傳輸?shù)臄?shù)據(jù)發(fā)生改變時(shí),立刻對(duì)外部發(fā)送數(shù)據(jù)。單片機(jī)在每一個(gè) While循環(huán)中查看數(shù)據(jù)的狀態(tài),如數(shù)據(jù)發(fā)生變化則調(diào)用發(fā)送函數(shù)發(fā)送數(shù)據(jù)。
3 當(dāng)接收到外部請(qǐng)求時(shí),立刻對(duì)外部發(fā)送數(shù)據(jù)。在接收函數(shù)中對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn),正確后接收,再根據(jù)定好的協(xié)議得到目標(biāo)節(jié)點(diǎn)地址并判斷是否是請(qǐng)求數(shù)據(jù)發(fā)送,如果是則調(diào)用發(fā)送函數(shù)向目標(biāo)節(jié)點(diǎn)發(fā)送數(shù)據(jù)。
CAN通信的主程序流程圖如圖 5所示。
4 邏輯控制模塊抗干擾設(shè)計(jì)
由于機(jī)車運(yùn)行環(huán)境的特殊性,對(duì)邏輯控制模塊的穩(wěn)定性和抗干擾能力有更高的要求。在系統(tǒng)的輸入端加入光耦器件進(jìn)行隔離,在輸出端加入變壓器進(jìn)行隔離,這樣既提高了系統(tǒng)的抗干擾能力,又進(jìn)一步保證了系統(tǒng)的安全。同時(shí)通過使用施密特觸發(fā)器,加入硬件濾波,能夠有效地抑制幅值較小,持續(xù)時(shí)間較長(zhǎng)的干擾信號(hào),對(duì)于持續(xù)時(shí)間短,幅值較大的干擾信號(hào)的處理,通過在芯片內(nèi)部用 Verilog引入濾波時(shí)鐘和軟件濾波模塊實(shí)現(xiàn)數(shù)字濾波。 5 結(jié)語
內(nèi)燃機(jī)車邏輯控制模塊利用 SOC技術(shù)實(shí)現(xiàn)了傳統(tǒng)的繼電器控制電路的可編程無觸點(diǎn)控制,大大減少了控制電路的機(jī)械觸點(diǎn)和布線,簡(jiǎn)化了機(jī)車控制電路的設(shè)計(jì)、生產(chǎn)和調(diào)試過程,提高了控制系統(tǒng)可靠性,并且可以方便地用硬件描述語言完成各種控制功能,具有很強(qiáng)的靈活性和通用性。無觸點(diǎn)控制是內(nèi)燃機(jī)車電氣控制系統(tǒng)的發(fā)展方向。
本文作者的創(chuàng)新點(diǎn):采用 SOC技術(shù),設(shè)計(jì)和利用內(nèi)燃機(jī)車邏輯控制 IP核取代了原有的有觸點(diǎn)控制系統(tǒng),大大提高了邏輯控制系統(tǒng)的通用性和可靠性,簡(jiǎn)化了布線和生產(chǎn)調(diào)試過程。在通信方面,用 CAN總線取代了機(jī)車上原有的串口通信,提高了通信效率和穩(wěn)定性。
參考文獻(xiàn):
[1]丁磊.CPLD在基于單片機(jī)的多入多出控制系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2006,9-2: 172-174.
[2]金衛(wèi)民,神顯豪,鞏傳雷.基于 CAN總線的DNC遠(yuǎn)程診斷及監(jiān)控系統(tǒng)[J].微計(jì)算機(jī)信息,2007,12-2:32-34.
[3]謝東,溫陽東.電力機(jī)車邏輯控制單元的設(shè)計(jì)[J].自動(dòng)化與儀器儀表,2006,3:29-32.
[4]杜尚豐,曹曉鐘,涂津.CAN總線測(cè)控技術(shù)及其應(yīng)用.電子工業(yè)出版社,2007
[5]布朗.數(shù)字邏輯基礎(chǔ)與 Verilog設(shè)計(jì).機(jī)械工業(yè)出版社,2007
[6]焦志新.東風(fēng) 7型內(nèi)燃機(jī)車運(yùn)用與保養(yǎng).中國(guó)鐵道出版社,2004
評(píng)論