【摘要】 LON總線是一種應(yīng)用日益廣泛的現(xiàn)場總線。為了使工業(yè)計算機系統(tǒng)方便地接入LON網(wǎng)絡(luò),文章介紹了采用雙口RAM作為數(shù)據(jù)通信橋梁的PC104系統(tǒng)LON總線接口電路的設(shè)計,并給出了詳細的硬件電路和軟件設(shè)計流程。
【關(guān)鍵詞】 PC104 LonWorks技術(shù) 雙口RAM FT3150
一、 引 言
LON(Local Operational Netwok)總線是由美國Echelon公司于1991年推出的局部操作網(wǎng)絡(luò),是一種基于嵌入式神經(jīng)元(Neuron)芯片的現(xiàn)場總線。Echelon公司推出了一系列軟硬件工具作為對LON總線設(shè)計和開發(fā)的支持。目前,LON總線被廣泛應(yīng)用在樓宇自動化、家庭自動化、保安系統(tǒng)、辦公設(shè)備、運輸設(shè)備、工業(yè)過程控制等行業(yè)。
PC104系統(tǒng)作為一種工業(yè)計算機系統(tǒng)目前在工業(yè)控制、鐵路運輸?shù)阮I(lǐng)域應(yīng)用越來越廣泛。由于PC104規(guī)范采用總線插接結(jié)構(gòu),使得PC104系統(tǒng)具有結(jié)構(gòu)緊湊、應(yīng)用靈活、整機功耗低等優(yōu)點。本文設(shè)計的接口電路利用雙口RAM存儲器作為橋梁,實現(xiàn)PC104系統(tǒng)主處理器與神經(jīng)元芯片之間的數(shù)據(jù)交換,使PC104系統(tǒng)具有LON總線連接能力。
二、 LON總線的特點
LON總線的特點在于它為用戶提供了針對實際工程應(yīng)用的通信芯片-神經(jīng)元(Neuron)芯片。它通過內(nèi)部集成的3個8位CPU,處理完整的LonWorks通信協(xié)議,從而確保在網(wǎng)絡(luò)節(jié)點之間可以使用可靠的通信標(biāo)準(zhǔn)進行數(shù)據(jù)通訊。Neuron芯片帶有強大的I/O功能。它通過11支可編程的I/O引腳,為用戶提供了數(shù)字量I/O、串口通訊、并行通訊等34種I/O功能,與實際應(yīng)用結(jié)合地十分緊密。為了方便用戶開發(fā),LonWorks提供了Neuron C開發(fā)語言及相應(yīng)的開發(fā)工具,并提出了網(wǎng)絡(luò)變量的全新概念。網(wǎng)絡(luò)變量以隱式報文的形式自動在網(wǎng)絡(luò)中傳遞信息、更新數(shù)據(jù),用戶無需為數(shù)據(jù)通信增加任何額外工作。
三、 接口硬件設(shè)計
本文設(shè)計的接口其硬件電路主要由PC104總線插槽、雙口RAM、FT3150芯片及外圍電路、擴展存儲器、CPLD邏輯譯碼電路組成,硬件結(jié)構(gòu)如圖1所示。
圖1 硬件結(jié)構(gòu)圖
1 FT3150及外圍電路
本文采用的是Echelon公司最新推出的FT3150神經(jīng)元芯片,它內(nèi)部集成了Neuron 3150處理器內(nèi)核和自由拓撲雙絞線收發(fā)器,減小了接口電路的功耗,符合PC104 規(guī)范對接口板低功耗的要求。同時本文使用了與之配套的Echelon公司的FT-X1通信變壓器,它對電磁干擾和高頻共膜噪聲具有較強的抗干擾能力。
圖2 FT3150結(jié)構(gòu)圖
圖2給出了FT3150 芯片的內(nèi)部結(jié)構(gòu)圖。FT3150芯片主要由Neurron芯片核心和一個自由拓撲收發(fā)器組成。Neuron芯片內(nèi)部包含處理七層LonTalk協(xié)議的3個8位處理器,芯片內(nèi)部集成了2KB RAM以及0.5KB EEPROM存儲器。芯片的I/O功能模塊提供了11支I/O引腳,根據(jù)實際需要對11支引腳進行編程,可以形成多達34種I/O功能,包括并行I/O、串行I/O、定時/計數(shù)器等等。通過對外引出地址及數(shù)據(jù)總線,芯片可以方便地擴充數(shù)據(jù)程序存儲器。
FT3150芯片服務(wù)引腳主要用于節(jié)點配置、安裝與維護。它被設(shè)計為輸入輸出復(fù)用引腳。當(dāng)其作為輸出引腳驅(qū)動LED時,不同的LED狀態(tài)指示了不同的節(jié)點工作狀態(tài),如表1所示。當(dāng)其作為輸入時,Neuron芯片會自動在網(wǎng)絡(luò)上發(fā)送含有Neuron芯片ID值信息的網(wǎng)絡(luò)管理消息,用于網(wǎng)絡(luò)配置。
表1 節(jié)點狀態(tài)
2 擴展存儲器
FT3150芯片的存儲空間最多可以擴展到64K,而且片中只集成了極少的程序和數(shù)據(jù)存儲器,分布在地址高段,其他必需的存儲空間需要用戶擴展。本文為芯片擴展了32K FLASH存儲器作為FT3150芯片的固件和程序存儲器,地址為0x0000-0x7FFF;16K RAM作為數(shù)據(jù)存儲器,地址為0x8000-0xBFFF;4K雙口RAM作為與PC104系統(tǒng)進行數(shù)據(jù)交換的數(shù)據(jù)存儲器,地址為0xC000-0xCFFF。
3 雙口RAM
雙口RAM是一種比較特殊的RAM存儲器,它具有兩套完全相同的獨立的地址、數(shù)據(jù)和控制信號。這些信號允許兩套系統(tǒng)同時訪問存儲器的數(shù)據(jù),即在兩套系統(tǒng)間形成了共用存儲區(qū),兩套系統(tǒng)可以通過這個共用存儲區(qū)進行數(shù)據(jù)交換。雙口RAM的內(nèi)部邏輯結(jié)構(gòu)如圖3所示。
圖3 雙口RAM內(nèi)部邏輯結(jié)構(gòu)圖
由于對存儲器操作的快速性,利用雙口RAM進行數(shù)據(jù)交換成為一種高效、普遍的數(shù)據(jù)交換方式,在高速數(shù)據(jù)采集等很多場合都有其廣泛應(yīng)用。但是,正是由于兩套系統(tǒng)同時對存儲器進行訪問,就存在著對存儲器讀寫沖突的問題。即當(dāng)雙方恰好同一時間對同一存儲器地址進行寫或一讀一寫操作時,操作數(shù)據(jù)會發(fā)生錯誤。
雙口RAM本身提供了幾種解決沖突問題的方法:中斷(INT)、忙(BUSY)、令牌(SEM)以及軟件編程。 本文采用了8K的IDT7005雙口RAM芯片,采用硬件忙信號解決操作沖突問題。當(dāng)訪問沖突發(fā)生事時,芯片會根據(jù)地址及片選信號判斷,在信號較慢一方產(chǎn)生(BUSY)信號,通知較慢方做出相應(yīng)處理。本文將兩路忙信號(BUSYL、BUSYR)接入CPLD實現(xiàn)與邏輯BUSY=BUSYL AND BUSYR,得到的輸出信號BUSY與PC104總線的IOCHRDY信號相連。PC104總線的IOCHRDY是慢速設(shè)備等待信號,當(dāng)信號有效時,PC104總線會自動延時地址信號、控制信號以及數(shù)據(jù)信號,直到慢速設(shè)備準(zhǔn)備好。當(dāng)雙口RAM訪問產(chǎn)生沖突,處理速度較快的PC104總線進行等待,直到Neuron芯片訪問完成后再進行操作。
4 復(fù)位電路
為了保證接口電路正常運行,本文使用了專用的復(fù)位芯片MAX809,芯片的功能主要是當(dāng)電源電壓低落至一門檻電壓甚至更低時,復(fù)位信號輸出RESET有效,使芯片復(fù)位。另一方面,作為PC104系統(tǒng)的組成部分,當(dāng)PC104系統(tǒng)復(fù)位引腳RESETDRV有效時,也同時引起Neuron芯片復(fù)位。
5 CPLD邏輯控制
接口電路使用了ALTERA的CPLD芯片EPM7064,通過VHDL語言編程實現(xiàn)對所有存儲器操作的片選信號和讀寫控制信號的產(chǎn)生、復(fù)位信號與雙口RAM忙信號的邏輯處理。
6 PC104總線
本文采用的PC104系統(tǒng)CPU板為SuperDX(盛博科技)。PC104系統(tǒng)為總線插接結(jié)構(gòu),本文按照PC104規(guī)范對板卡機械、電氣要求制作了電路,通過PC104總線插槽實現(xiàn)了與系統(tǒng)的總線連接。
四、 軟件設(shè)計
Echelon公司為了方便用戶對Neuron芯片的使用,專門為其開發(fā)了Neuron C語言。它是從ANSI C中派生出來的,并對ANSI C 進行了增刪。熟悉C語言的編程人員能夠輕松地掌握Neuron C語言并應(yīng)用其進行開發(fā)。為了與Neuron芯片的開發(fā)相配合,Neuron C語言也有其自身的特點:
1 網(wǎng)絡(luò)變量
這是Neuron C語言提出,專門應(yīng)用于LonWorks網(wǎng)絡(luò)信息傳輸?shù)淖兞啃问,?jié)點可使用網(wǎng)絡(luò)變量通過隱式報文與其他節(jié)點進行通信。網(wǎng)絡(luò)變量分為輸入網(wǎng)絡(luò)變量和輸出網(wǎng)絡(luò)變量,輸出網(wǎng)絡(luò)變量負責(zé)將變量數(shù)據(jù)報文發(fā)送到LonWorks網(wǎng)絡(luò)上,與之相對應(yīng)的輸入網(wǎng)絡(luò)變量在接收到報文后自動將數(shù)據(jù)更新。對用戶來講數(shù)據(jù)刷新完全是透明的。
用戶除了可以自行定義網(wǎng)絡(luò)變量外,還定義了標(biāo)準(zhǔn)網(wǎng)絡(luò)變量類型(SNVT)。根據(jù)具體應(yīng)用的不同,標(biāo)準(zhǔn)網(wǎng)絡(luò)變量有255種。
2 定時器
Neuron C語言為用戶提供了軟件計時器對象,它使編程人員能夠任意時刻激活所要完成任務(wù)。定時器分為兩種:毫秒計時器和秒計時器,提供的定時器時間間隔分別為是1~64000毫秒和1~65535秒。在一個程序中可以定義最多15個定時器對象。
3 調(diào)度程序
Neuron芯片的任務(wù)調(diào)度是由事件驅(qū)動的,當(dāng)一個給定的條件判斷為"TRUE"時,與條件有關(guān)的代碼體(任務(wù))即執(zhí)行,符合邏輯思考的一般習(xí)慣。編程人員可以定義任務(wù)作為某類事件發(fā)生的結(jié)果,如當(dāng)某一輸入引腳的狀態(tài)發(fā)生變化,則將相關(guān)的輸入變化值賦給輸出網(wǎng)絡(luò)變量;或者當(dāng)計時器溢出,將輸出網(wǎng)絡(luò)變量刷新,實現(xiàn)對輸出網(wǎng)絡(luò)變量的定時刷新。
本文的Neuron C程序流程如圖4所示。由于Neuron C語言的程序結(jié)構(gòu)為事件觸發(fā),調(diào)度程序順序檢查事件觸發(fā)條件是否滿足,如果滿足則執(zhí)行相應(yīng)處理程序。使用軟件計時器進行數(shù)據(jù)定時刷新,當(dāng)計時器溢出時,首先處理網(wǎng)絡(luò)輸入數(shù)據(jù),讀取相應(yīng)的輸入網(wǎng)絡(luò)變量。由于采用雙口RAM在PC104主處理器與FT3150芯片之間進行數(shù)據(jù)交換,只需要將網(wǎng)絡(luò)的更新數(shù)據(jù)存入相應(yīng)的雙口RAM存儲區(qū)。對于PC104系統(tǒng)的輸出數(shù)據(jù),F(xiàn)T3150芯片讀取相應(yīng)的存儲區(qū),獲得輸出數(shù)據(jù),將數(shù)據(jù)賦值給輸出網(wǎng)絡(luò)變量,F(xiàn)T3150芯片會自動更新網(wǎng)絡(luò)中的信息。為了保證數(shù)據(jù)刷新成功,程序要對輸出網(wǎng)絡(luò)變量更新是否成功進行檢查,發(fā)送失敗則進行重發(fā)。






