引言
現(xiàn)場總線的出現(xiàn)使得全數(shù)字化,全開放式,,具有可互操作性,,徹底分散的現(xiàn)場總線控制系統(tǒng)(fieldbus control system)得以實(shí)現(xiàn),現(xiàn)場總線控制系統(tǒng)已成為自動化領(lǐng)域中的一個熱點(diǎn),,也將成為工業(yè)過程控制的一個重要發(fā)展方向,。
控制器局域網(wǎng)CAN(controller areanet work)是德國Bosch公司在現(xiàn)代汽車電子技術(shù)領(lǐng)域中推出的一種多主控制器局域網(wǎng)絡(luò)技術(shù),能有效支持分布式和實(shí)時控制,,最早主要應(yīng)用于汽車內(nèi)部電子監(jiān)測和控制器件數(shù)據(jù)通信,。由于其高可靠性及高實(shí)時性而廣泛應(yīng)用于工業(yè)現(xiàn)場控制等領(lǐng)域。其突出的特點(diǎn)是采用最長8個數(shù)據(jù)字節(jié)的短幀結(jié)構(gòu),,傳輸時間短,,實(shí)時性高,;另外CAN協(xié)議取消了傳統(tǒng)的地址編碼概念,取而代之的是基于數(shù)據(jù)塊標(biāo)識符的無損優(yōu)先級仲裁,,給分布式控制系統(tǒng)實(shí)現(xiàn)模塊間的信息共享帶來了極大的方便,。
基于CAN總線的主要特點(diǎn)及發(fā)展趨勢,我校電液實(shí)驗(yàn)室開放式電液伺服控制系統(tǒng)的改造中采用CAN總線作為現(xiàn)場總線標(biāo)準(zhǔn),,構(gòu)建了一套基于CAN總線智能節(jié)點(diǎn)的現(xiàn)場總線控制系統(tǒng),。文中將詳細(xì)介紹智能數(shù)據(jù)采集模塊的軟硬件設(shè)計(jì),該模塊可以實(shí)現(xiàn)控制現(xiàn)場的數(shù)字,、模擬信號采集,,現(xiàn)場數(shù)據(jù)預(yù)處理,數(shù)據(jù)傳送以及與監(jiān)控計(jì)算機(jī)通訊等功能,。
液壓伺服系統(tǒng)簡介
開放式電液伺服控制系統(tǒng)包括數(shù)臺電液伺服位置控制實(shí)驗(yàn)臺,、電液比例轉(zhuǎn)速控制實(shí)驗(yàn)臺、電液比例力控制實(shí)驗(yàn)臺,。各實(shí)驗(yàn)臺配置1套基于CAN總線的智能數(shù)據(jù)采集模塊和內(nèi)置控制算法的智能控制模塊,,通過CAN總線將各分散的采集模塊和控制模塊組成一個控制網(wǎng)絡(luò),1臺PC機(jī)通過內(nèi)置的CAN適配卡接入局部網(wǎng)絡(luò),,模擬工業(yè)現(xiàn)場的過程控制,,PC機(jī)作為擔(dān)任過程控制監(jiān)控任務(wù)的控制站,,可以實(shí)時顯示各實(shí)驗(yàn)臺工作狀況及向各實(shí)驗(yàn)臺發(fā)送啟停命令,,同時還可以通過高速以太網(wǎng)將現(xiàn)場數(shù)據(jù)遠(yuǎn)程傳輸至工程師站等管理級計(jì)算機(jī),實(shí)現(xiàn)如圖1所示的分層現(xiàn)場總線控制系統(tǒng),。
圖1 開放式電液伺服控制系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)硬件設(shè)計(jì)
數(shù)據(jù)采集模塊作為一種智能化現(xiàn)場儀表,,主要包括硬件系統(tǒng)和控制軟件2大部分。模塊硬件部分以80C196KC單片機(jī)作為采集模塊的核心,,外圍電路主要包括CAN總線接口,,程序存儲器,電源監(jiān)控及復(fù)位電路,,GAL譯碼電路,,DI、A/D轉(zhuǎn)換電路及模塊參數(shù)設(shè)置電路等,。模塊結(jié)構(gòu)如圖2所示,。
圖2 數(shù)據(jù)采集模塊結(jié)構(gòu)
80C196KC單片機(jī)簡介
80C196KC是Intel公司推出的高性能16位單片機(jī)。和MCS51系列單片機(jī)相比,,MCS196系列單片機(jī)具有更快的運(yùn)算速度和更豐富的片上外圍設(shè)備,,提高了控制系統(tǒng)的實(shí)時性,主要體現(xiàn)在以下幾個方面:
a.可采用8/16位動態(tài)總線配置方式,,增強(qiáng)系統(tǒng)的靈活性,。
b.CPU中的算術(shù)邏輯單元不采用常規(guī)的累加器結(jié)構(gòu),,改用寄存器-寄存器結(jié)構(gòu)。CPU的操作直接面向256字節(jié)的寄存器,,消除了51單片機(jī)中存在的累加器的瓶頸問題,,提高了操作速度和數(shù)據(jù)吞吐能力。
c.有一套效率更高,、執(zhí)行速度更快的指令系統(tǒng),。可以對帶符號數(shù)和不帶符號數(shù)進(jìn)行操作,,16×16位只需1.4μs(20MHz),,32÷16位只需2.4μs(20MHz),此外還有3操作數(shù)指令,,大大提高指令效率,。
選擇80C196KC單片機(jī)作為數(shù)據(jù)采集模塊的核心器件,可以滿足應(yīng)用系統(tǒng)的要求,,保證系統(tǒng)的可靠性和實(shí)時性,。
CAN總線接口電路
CAN總線接口由PHILIPS公司的獨(dú)立總線控制器SJA1000和接口芯片82C250組成。SJA1000在軟件上和引腳上都是與它的前款PCA82C200獨(dú)立控制器兼容的,,并增加了許多新功能:標(biāo)準(zhǔn)幀數(shù)據(jù)結(jié)構(gòu)和擴(kuò)展幀數(shù)據(jù)結(jié)構(gòu),,并且這2種幀格式都具有單/雙接收過濾器;64字節(jié)的接收FIFO,;可讀錯誤計(jì)數(shù)器和可編程的出錯警告界限以及僅聽模式和自測試模式等,。硬件連接上比較簡單:SJA1000的數(shù)據(jù)地址總線是分時復(fù)用的,可以直接與80C196KC的P3口連接,,對應(yīng)控制線相連即可,。需注意的是,80C196KC是Intel公司的處理器,,因此SJA1000工作在Intel方式,,mode引腳應(yīng)接電源正端,另外單片機(jī)的外部中斷只有正跳變有效,,而SJA1000的中斷信號是低電平有效,,因此需反相后才能連接單片機(jī)中斷引腳。
選擇3種不同的工作方式:高速,、斜率控制和待機(jī),。在低速和總線長度較短時,一般采用斜率控制方式,,限制上升和下降斜率,,降低射頻干擾,斜率可通過由RS引腳至地連接的電阻進(jìn)行控制,。通信信號傳輸?shù)綄?dǎo)線的端點(diǎn)時會發(fā)生反射,,反射信號會干擾正常信號的傳輸,,因而總線兩端通常應(yīng)接有終端電阻,以消除反射信號,,其阻值約等于傳輸電纜的特性阻抗,,一般取120Ω。
數(shù)字信號采集電路
電液伺服實(shí)驗(yàn)臺需要采集的物理量之一是液壓缸的位移,,實(shí)驗(yàn)室現(xiàn)有裝備的位移傳感器有2種:感應(yīng)同步器和旋轉(zhuǎn)光電編碼器,。二者都配有帶BCD碼輸出的數(shù)顯測量儀表,直接采集數(shù)顯表的數(shù)字量可以保證采集模塊具有儀表的高精度,,避免因采集傳感器前端脈沖而帶來的誤差,,同時也使電路更加簡潔。
數(shù)字顯示儀表的有效BCD碼位數(shù)為5位(個,、十,、百位及2位小數(shù)位),另帶一位符號位,,共有21位二進(jìn)制位,。80C196KC片內(nèi)不帶程序存儲器,因而用P3和P4口作為地址數(shù)據(jù)總線,,單片機(jī)剩余有效IO口資源較少,,因此必須擴(kuò)展并口。并口擴(kuò)展可以采用專用擴(kuò)展芯片或通用74系列的邏輯芯片,,為了簡化電路和編程,,采用常見的可擴(kuò)展24路IO口的82C55A并口擴(kuò)展芯片。現(xiàn)場的數(shù)字顯示儀表的輸出是非標(biāo)準(zhǔn)的TTL電平,,為了實(shí)現(xiàn)模塊與前端儀表兼容和隔離,,對輸入的數(shù)字信號采用了TLP521光耦進(jìn)行電平轉(zhuǎn)換和信號隔離,。
A/D轉(zhuǎn)換電路電路
本模塊中A/D轉(zhuǎn)換器選用AD1,,它與AD574兼容,12位分辨率,,輸入電壓范圍0~±10V或0~±5V單雙極性可選,,轉(zhuǎn)換時間為10μs,單通道最大采集速率50KHz,,片內(nèi)帶基準(zhǔn)電壓,、三態(tài)緩沖器,且具有采樣保持電路,,完全滿足設(shè)計(jì)的需要,。
模擬電壓信號來自BLR1型拉壓式稱重傳感器,傳感器壓力測量量程為0~5000kg,,輸出電壓信號0~16mV,。為適應(yīng)AD1輸入電壓范圍,,需對傳感器的微弱電壓信號放大,但同時并存許多噪聲源:傳感器內(nèi)阻,、電纜電阻,、放大器電路以及電路周圍的電磁干擾源。因此,,電壓信號前端采用低通濾波器和差分放大器AD620等來抑制差模噪聲和共模噪聲,,如圖3所示。
圖3
設(shè)Vs為傳感器的信號電壓,,Vn1,、Vn2為外部噪聲源在電纜線上的感應(yīng)噪聲信號,Vns為電路噪聲,。因此,,差分放大器輸出電壓Vo為: Vo=A(V1-V2)=A(Vs+Vns+(Vn1+Vn2));如果噪聲源與信號源頻譜不重疊,,則經(jīng)低通濾波電路后:Vf≈AVs,。
GAL譯碼電路
本模塊電路中,單片機(jī)擴(kuò)展外圍器件較多,,有程序存儲器AT28C256,、CAN控制器SJA1000、并口擴(kuò)展82C55A和A/D轉(zhuǎn)換AD1,。196單片機(jī)在模塊中主要工作于8位總線寬度下,,由于AD1采用了12位并行輸出模式,因此還需動態(tài)改變總線寬度,。為了簡化電路,,以及適應(yīng)196單片機(jī)較高總線速度的要求,譯碼電路放棄了傳統(tǒng)的門電路組合的方法,,采用了可多次編程的通用陣列邏輯器件(generic array logic)GAL16V8,。這樣可以減少元器件數(shù)量、降低線路復(fù)雜程度,,同時降低故障機(jī)率及提高硬件設(shè)計(jì)的靈活性,。
GAL16V8引腳分配及邏輯表達(dá)式如下:
Input device‘P16V8AS’; WR,,RD,,CAN,A12,,A13,,A14,A15,ADC pin2,,3,,4,5,,6,,7,8,,9,; BUSWIDTH,CSCAN,,INTCAN,,CEROM,CSADC,, CS8255,,NTADC,EADC pin19,,18,,17,16,,15,,14,13,,12,; EQUATI !CEROM=!A15&!A14&A13&!A12# !A15&!A14&A13&A12 #!A15&A14&!A13&!A12#!A15& A14&!A13&A12 #!A15&A14&A13&!A12#!A15& A14&A13&A12 #A15&!A14&!A13&!A12#A15&! A14&!A13&A12; !CSCAN=A15&!A14&A13&!A12,; !CS8255=A15&!A14&A13&A12,; !CSADC=A15&A14&!A13&!A12; BUSWIDTH=A15&A14&!A13&!A12,; !INTCAN=CAN,; !INTADC=ADC; !CEADC=WR&RD,;
由上述邏輯表達(dá)式可以看出,,外圍器件地址基地址由最高4位地址A12~A15決定,AT28C256,、SJA1000、82C55A及AD1對應(yīng)基地址分別為:2000H,,A000H,,B000H,C000H。當(dāng)選通AD1時,,單片機(jī)總線寬度控制引腳BUSWIDTH將置為高,,動態(tài)調(diào)整到16位總線寬度,其余時刻,,BUSWIDTH為低,,單片機(jī)保持8位總線寬度。INTCAN和INTADC分別是對SJA1000和AD1中斷請求信號取反,。GAL表達(dá)式文件用ABEL軟件編譯形成JED文件,,使用通用編程器燒入芯片,且可反復(fù)多次燒寫,,方便調(diào)試,。
軟件編程
控制軟件的合理設(shè)計(jì)是模塊實(shí)時、有效地完成數(shù)據(jù)采集及通信任務(wù)的關(guān)鍵,,主要包括系統(tǒng)初始化,、CAN信息處理、數(shù)據(jù)采集及處理等功能模塊,。系統(tǒng)開放一個定時中斷,,定時時間對應(yīng)上位機(jī)發(fā)送來的采樣周期。CAN報文的接收主要有2種方式:中斷和查詢方式,。為提高系統(tǒng)的實(shí)時性,,同時也保證接收緩沖器不出現(xiàn)數(shù)據(jù)溢出現(xiàn)象,模塊中采用中斷接收方式,。CAN報文發(fā)送采用查詢方式,,即當(dāng)需要發(fā)送數(shù)據(jù)時,將預(yù)先組織好的數(shù)據(jù)幀按字節(jié)寫入SJA1000的發(fā)送緩沖寄存器中,。
SJA1000的初始化主要是在SJA1000的復(fù)位模式下設(shè)置相應(yīng)寄存器,。在初始化CAN內(nèi)部寄存器時應(yīng)注意同一網(wǎng)絡(luò)中各模塊的通信速率的設(shè)置應(yīng)一致。下面給出SJA1000工作在BasicCAN模式下的簡單的初始化源程序: INIT-SJA1000: LDB AL,, #01H STB AL,, REG-CR ,;復(fù)位SJA1000 LDB AL,, #0AAH STB AL, REG-OCR??;設(shè)置輸出寄存器為普通輸出模式 LDB AL, #048H STB AL,, REG-CDR?。皇鼓軆?nèi)部比較器,禁止時鐘輸出 STB #01H,, REG-BTR0?。辉O(shè)置波特率為 250K(使用16M晶振) STB #1CH,, REG-BTR1 LDB AL,, #00H STB AL, REG-ACR??;設(shè)置驗(yàn)收碼寄存器 LDB AL, #0FFH STB AL,, REG-AMR?。辉O(shè)置驗(yàn)收屏蔽碼寄存器 LDB AL,, REG-CR ANDB AL,, #0FEH ,;SJA1000退出復(fù)位模式 LDB AL,, #02H STB AL, REG-CR??;設(shè)置中斷寄存器,使能 接收中斷 RET 以上程序段可以正確初始化SJA1000,,為了提高程序可靠性和容錯性,,實(shí)際應(yīng)用中應(yīng)該讀出SJA1000寄存器內(nèi)容并加以比較,從而判斷是否正確寫入,。
結(jié)束語
基于以上所述的軟,、硬件設(shè)計(jì)實(shí)現(xiàn)了CAN協(xié)議所包括數(shù)據(jù)鏈路層和物理層,由于CAN總線協(xié)議沒有定義應(yīng)用層,,因此在實(shí)際的應(yīng)用中有必要定義高層通信協(xié)議,,即相應(yīng)的命令、參數(shù)和數(shù)據(jù)的格式,。國際上比較流行的基于CAN底層協(xié)議的高層協(xié)議有DeviceNet和CANopen,,我們在簡單應(yīng)用中,采用了自定義的簡單通信協(xié)議,,在此不作敘述,。設(shè)計(jì)的智能數(shù)據(jù)采集模塊應(yīng)用于電液伺服控制系統(tǒng)以來,運(yùn)行情況良好,,由于CAN總線的應(yīng)用,,大大提高了分布式數(shù)據(jù)采集和控制系統(tǒng)的靈活性,、可靠性和實(shí)時性,,建立了一個有效的現(xiàn)場總線控制系統(tǒng)的實(shí)驗(yàn)教學(xué)平臺,。同時該數(shù)據(jù)采集模塊也可以方便地移植到工業(yè)上的其它控制系統(tǒng)中,與其它基于CAN總線的智能控制模塊組成CAN現(xiàn)場總線控制系統(tǒng),。