【關(guān)鍵詞】現(xiàn)場總線,LonWorks,并行通信,神經(jīng)元芯片
【摘要】本文首先簡要地介紹了LonWorks現(xiàn)場總線技術(shù)以及LonWorks控制模塊,在此基礎(chǔ)上提出了一種LonWorks控制模塊與MCS-51單片機(jī)并行通信節(jié)點(diǎn)的組成原理及其設(shè)計(jì)與實(shí)現(xiàn)。1 引 言
現(xiàn)場總線是在自動(dòng)化領(lǐng)域中出現(xiàn)的一種嶄新的控制技術(shù),它以其全數(shù)字化、全分散式、全開放性、互操作性以及開放式的互連網(wǎng)絡(luò)等特點(diǎn)為傳統(tǒng)的自動(dòng)控制系統(tǒng)帶來了革命性的變革,已成為未來控制系統(tǒng)的發(fā)展方向。在眾多流動(dòng)的現(xiàn)場總線中,由美國Echelon公司研制的LonWorks現(xiàn)場總線是唯一遵循了國際標(biāo)準(zhǔn)化組織ISO定義的開放系統(tǒng)互連OSI全部7層模型的現(xiàn)場總線標(biāo)準(zhǔn),因其能充分滿足未來發(fā)展對測控網(wǎng)絡(luò)的要求,具有廣闊的應(yīng)用前景。Lon Works現(xiàn)場總線技術(shù)的優(yōu)勢在于其高性能低成本的網(wǎng)絡(luò)接口產(chǎn)品 、含3個(gè)CPU的超大規(guī)模Neuron芯片、固化的LonTalk通信協(xié)議以及方便的開發(fā)調(diào)試服務(wù)工具 。實(shí)現(xiàn)LonWorks技術(shù)的關(guān)鍵是LonWorks智能設(shè)備,即控制網(wǎng)絡(luò)節(jié)點(diǎn)的應(yīng)用開發(fā)。本文將著重討論并提出了一種LonWorks控制模塊與MCS-51單片機(jī)并行通信節(jié)點(diǎn)的組成原理及其設(shè)計(jì)與實(shí)現(xiàn)。
2 原理
2.1 神經(jīng)元芯片
神經(jīng)元芯片是LonWorks技術(shù)的核心,它有3個(gè)CPU,每個(gè)CPU各自分工不同,如圖2—1所示。
CPU-1是介質(zhì)訪問控制處理器,處理LonTalk協(xié)議的第一和第二層,包括驅(qū)動(dòng)通信子系統(tǒng)硬件和執(zhí)行MAC算法。CPU-2是網(wǎng)絡(luò)處理器,它實(shí)現(xiàn)LonLalk協(xié)議的第三到第六層,包括處理網(wǎng)絡(luò)變量、尋址、事件處理、軟件計(jì)時(shí)器、網(wǎng)絡(luò)管理和路由等,同時(shí)還控制網(wǎng)絡(luò)通信端口,發(fā)送和接收數(shù)據(jù)包。CPU-3是應(yīng)用處理器,它執(zhí)行用戶的代碼以及用戶代碼調(diào)用的操作系統(tǒng)命令。CPU-1和CPU-2用共享存儲區(qū)中的網(wǎng)絡(luò)緩存區(qū)進(jìn)行通信。CPU-2和CPU-3用共享存儲區(qū)中的應(yīng)用緩存區(qū)進(jìn)行通信。在多數(shù)應(yīng)用中,編程采用Neuron C語言。
2.2 Lon Works節(jié)點(diǎn)與控制模塊
LonWorks網(wǎng)上的每個(gè)控制點(diǎn),即LonWorks節(jié)點(diǎn)是和在物理上與之相連的現(xiàn)場I/O設(shè)備交互作用并在控制網(wǎng)絡(luò)中使用LonTalk協(xié)議與其他節(jié)點(diǎn)互相通信的一類對象。
LonWorks網(wǎng)絡(luò)控制節(jié)點(diǎn)有兩種類型。如圖2—2所示:
在圖2—2a中,Neuron芯片是唯一的處理器,此類LonWorks節(jié)點(diǎn)適合于I/O設(shè)備簡單 、處理任務(wù)不復(fù)雜的系統(tǒng),稱為基于Neuron芯片的節(jié)點(diǎn);而在圖2—2b中,Neuron芯片只作為通信處理器,充當(dāng)Lon-Works網(wǎng)絡(luò)的網(wǎng)絡(luò)接口,節(jié)點(diǎn)應(yīng)用程序由主處理器來執(zhí)行,此類MIP結(jié)構(gòu)的LonWorks節(jié)點(diǎn)適合于對I/O設(shè)備及處理任務(wù)要求較高的系統(tǒng),稱為基于主機(jī)的節(jié)點(diǎn),其中的主處理器可以是任何微控制器或PC等。
不論哪種類型的LonWorks節(jié)點(diǎn)都有一個(gè)電源、一片Neuron芯片用于通信和控制、一個(gè)I/O接口以及一個(gè)收發(fā)器負(fù)責(zé)將節(jié)點(diǎn)連接到LonWorks網(wǎng)絡(luò)。為了便于LonWorks現(xiàn)場總線的應(yīng)用,Echelon公司開發(fā)出了多種型號的LonWorks控制模塊,將Neuron芯片、收發(fā)器以及存儲器集成在一起,如圖中虛線框所示,極大地方便了LonWorks總線的應(yīng)用設(shè)計(jì)開發(fā)人員,使開發(fā)人員將注意力更集中于控制系統(tǒng)的選擇、應(yīng)用和實(shí)現(xiàn)。
3 節(jié)點(diǎn)硬件的設(shè)計(jì)
LonWorks控制模塊與MCS-51單片機(jī)并行通信節(jié)點(diǎn)的硬件電路原理示意圖如圖3—1所示,它屬于圖2—2b類基于主機(jī)的LonWorks節(jié)點(diǎn)。
圖3—1是其硬件電路原理圖。需要說明的是:Neuron芯片提供有11個(gè)可編程的I/O引腳(IO-0至IO-10),它們可以配置為多達(dá)34種不同的應(yīng)用對象,從而借助于最小的外接電路實(shí)現(xiàn)靈活的輸入輸出功能。Neuron芯片的并行I/O對象需要使用全部11個(gè)引腳 ,其中IO-0~I(xiàn)O-7用于雙向數(shù)據(jù)線,IO-8~I(xiàn)O-10用于控制信號線,它有3種工作方式 :即主方式(Master)、從A方式(Slave A)和從B方式(SlaveB)。對于要求建立Neuron芯片與微處理器或微控制器之間的連接,即建立基于主機(jī)的LonWorks節(jié)點(diǎn)來說,Neuron芯片的并行接口工作在從B方式是最佳的選擇。工作在從B方式的Neuron芯片,在主機(jī)的地址空間,就像是兩個(gè)寄存器,一個(gè)是讀寫數(shù)據(jù)寄存器(偶地址),另一個(gè)是只讀狀態(tài)寄存器(奇地址)。主機(jī)正是通過對這兩個(gè)寄存器的訪問實(shí)現(xiàn)主機(jī)與Neuron芯片之間的數(shù)據(jù)并行傳輸?shù)?。在從B方式下,IO-0除作為數(shù)據(jù)低位外,還兼作握手HS位,用于主機(jī)與Neuron芯片的握手應(yīng)答;IO-8則作為片選信號位;IO-9作為讀寫信號線;IO-10作為寄存器尋址輸入位。另外,由于并行通信要求雙方設(shè)備必須同步,無論MCS-51處理器和Neuron芯片哪一方復(fù)位,雙方都必須重新進(jìn)行同步,因此在MCS-51處理器和Neuron芯片復(fù)位電路的設(shè)計(jì)上應(yīng)遵循以下原則:要求雙方都能意識到對方的復(fù)位,MCS-51處理器的復(fù)位要觸發(fā)Neuron芯片的復(fù)位,這是通過直接控制(硬件連接)實(shí)現(xiàn)的;而Neuron芯片在由于某種原因引起復(fù)位時(shí),會在其RESET端自動(dòng)產(chǎn)生低電平輸出,利用這一復(fù)位輸出信號,通過一個(gè)D觸發(fā)器以中斷方式來通知MCS-51處理器,以使MCS-51處理器作出相應(yīng)處理,這是通過中斷服務(wù)子程序?qū)崿F(xiàn)的。
4 節(jié)點(diǎn)軟件的設(shè)計(jì)
由于Neuron芯片內(nèi)裝有LonTalk通信協(xié)議固件,因此無論Neuron芯片并行I/O對象工作于何種方式下,對于Neuron芯片來說,其實(shí)現(xiàn)軟件相對容易。故對于LonWorks控制模塊與MCS-51單片機(jī)的并行通信節(jié)點(diǎn)的實(shí)現(xiàn),關(guān)鍵在于MCS-51單片機(jī)的軟件設(shè)計(jì),這是因?yàn)镸CS-51處理器內(nèi)不含LonTalk通信協(xié)議固件,因此要實(shí)現(xiàn)與Neuron芯片的并行數(shù)據(jù)傳輸,MCS-51處理器這一方必須復(fù)制Neuron芯片的行為,即能執(zhí)行Neuron芯片的握手/令牌傳遞算法。Neuron芯片并行I/O對象的令牌命令字節(jié)格式描述如圖4—1所示。
上述每一命令的第一字節(jié)代表的是該命令類型,其中,CMD-XFER=0x01,CMD-NULL=0x00,CMD-RESYNC=0x5A,CMD-ACKSYNC=0x07,數(shù)據(jù)長度是實(shí)際發(fā)送的數(shù)據(jù)長度,不包括EOM,EOM是命令結(jié)束字節(jié),可以為任意字節(jié),它只被發(fā)送,接收方不讀該字節(jié),主要是通過寫該字節(jié)保持HS位為讀方可寫的狀態(tài)以便傳遞令牌。令牌傳遞過程如圖4—2所示。
為實(shí)現(xiàn)與并行I/O設(shè)備的通信并保證安全可靠,Neuron芯片由固件自動(dòng)執(zhí)行令牌傳遞協(xié)議,以防止總線沖突。在任何給定的時(shí)間內(nèi),僅有一個(gè)設(shè)備擁有令牌。該令牌是一虛擬令牌,它決定著哪一設(shè)備擁有寫總線權(quán)。若主機(jī)擁有令牌,它將有權(quán)將準(zhǔn)備好的數(shù)據(jù)發(fā)送給或?qū)⒘钆平唤oNeuron芯片,若Neuron芯片擁有令牌,它可將準(zhǔn)備好的數(shù)據(jù)發(fā)送給主機(jī)或交出令牌。因而令牌在主機(jī)與Neuron芯片之間以乒乓方式來回傳遞。
當(dāng)Neuron芯片復(fù)位后,MCS-51處理器將自動(dòng)獲得令牌并負(fù)責(zé)令牌的傳遞。Neuron芯片在任何復(fù)位的情況下都通過并行總線要求同步,其目的是為了防止Neuron芯片作出錯(cuò)誤的假定,比如錯(cuò)誤的傳送開始或錯(cuò)誤的傳送數(shù)據(jù),這將由Neuron芯片通過同步作用自動(dòng)結(jié)束。持有令牌的MCS-51處理器在任何時(shí)候應(yīng)用RESYNC命令可以初始化重新同步操作 。無論Neuron芯片和MCS-51處理器哪一方設(shè)備復(fù)位,都要求雙方必須重新同步,因此雙方都應(yīng)能意識到對方的復(fù)位,MCS-51處理器要監(jiān)視Neu-ron芯片的復(fù)位,且MCS-51處理器的復(fù)位要觸發(fā)Neuron芯片的復(fù)位。
HS位(即IO-0)是主要的握手控制信號,用于控制實(shí)際數(shù)據(jù)的傳輸。在Neuron芯片并行I/O對象從B方式下,HS由Neuron芯片驅(qū)動(dòng),它通知MCS-51處理器目前Neuron芯片是忙還是閑,當(dāng)Neuron芯片執(zhí)行一次讀寫數(shù)據(jù)操作后,HS狀態(tài)位被置“0”,當(dāng)MCS-51處理器執(zhí)行一次讀寫操作后,HS狀態(tài)位被置“1”,由于這是由硬件而非由固件控制的,因此,MCS-51處理器必須在程序中輪詢該狀態(tài)位,從而正確地啟動(dòng)自身的讀寫操作。
為了實(shí)現(xiàn)LonWorks控制模塊與MCS-51處理器的并行通信,MCS-51處理器這一方需要人為地完成Neuron芯片的握手/令牌傳遞協(xié)議,在編制程序時(shí),還要注意的是要保證Neuron芯片一方保持令牌的時(shí)間不能超過Neuron芯片看門狗定時(shí)器的定時(shí)時(shí)間,以防止Neuron芯片意外復(fù)位而導(dǎo)致通信失敗。
5 結(jié)束語
基于Neuron芯片的LonWorks控制網(wǎng)絡(luò)節(jié)點(diǎn),只能用于I/O及控制較簡單的系統(tǒng)。對于工業(yè)應(yīng)用中I/O及控制較復(fù)雜的控制系統(tǒng),往往要采用基于主要處理器的LonWorks網(wǎng)絡(luò)節(jié)點(diǎn)。本文所設(shè)計(jì)的控制網(wǎng)絡(luò)節(jié)點(diǎn),其主處理器采用的是MCS-51系列單片機(jī),主處理器與Neuron芯片之間采用的是并行雙向數(shù)據(jù)通信,其傳輸速率最高可達(dá)9600bps,目前該節(jié)點(diǎn)已經(jīng)應(yīng)用于智能小區(qū)安保控制系統(tǒng)。