基于C167的PROFlBUS-DP智能從站的設(shè)計(jì)
摘要:設(shè)計(jì)了基于C167的PROFIBUS-DP總線協(xié)議的智能從站。依據(jù)系統(tǒng)所要實(shí)現(xiàn)的功能,提出了使用PRO-FIBUS-DP協(xié)議智能接口芯片SPC3和軟件的實(shí)現(xiàn)方案。以C167與SPC3為核心設(shè)計(jì)了其軟硬件系統(tǒng),經(jīng)調(diào)試滿足了設(shè)計(jì)要求,目前已在實(shí)際工程中得到應(yīng)用。
關(guān)鍵詞:PROFIBUS-DP;智能從站;C167;SPC3
現(xiàn)場(chǎng)總線控制系統(tǒng)已逐漸發(fā)展成為繼集散控制系統(tǒng)之后的新一代控制系統(tǒng),在眾多的現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)中,過(guò)程現(xiàn)場(chǎng)總線(PROFIBUS)標(biāo)準(zhǔn)以其國(guó)際化、開(kāi)放式、不依賴設(shè)備生產(chǎn)商的種種優(yōu)勢(shì),成為當(dāng)前爭(zhēng)相研究的對(duì)象。
PROFIBUS廣泛適用于制造業(yè)自動(dòng)化、流程工業(yè)自動(dòng)化和樓宇、交通電力等領(lǐng)域的自動(dòng)化,是一種用于工廠自動(dòng)化車間級(jí)監(jiān)控和現(xiàn)場(chǎng)設(shè)備層數(shù)據(jù)通信與控制的現(xiàn)場(chǎng)總線技術(shù)??蓪?shí)現(xiàn)現(xiàn)場(chǎng)設(shè)備層到車間級(jí)監(jiān)控的分散式數(shù)字控制和現(xiàn)場(chǎng)通信網(wǎng)絡(luò),從而為實(shí)現(xiàn)工廠綜合自動(dòng)化和現(xiàn)場(chǎng)設(shè)備智能化提供了可行的解決方案。
與其它現(xiàn)場(chǎng)總線系統(tǒng)相比,PROFIBUS的優(yōu)勢(shì)在于具有穩(wěn)定的國(guó)際標(biāo)準(zhǔn)EN50170作保證,并經(jīng)實(shí)際應(yīng)用驗(yàn)證其具有普遍性。目前已應(yīng)用的領(lǐng)域包括加工制造、過(guò)程控制和自動(dòng)化等。PROFIBUS-DP是開(kāi)放的,與制造商無(wú)關(guān),無(wú)知識(shí)產(chǎn)權(quán)保護(hù)的標(biāo)準(zhǔn)。任何人都可以獲得這個(gè)標(biāo)準(zhǔn)并設(shè)計(jì)各自的軟硬件方案。原則上,PROFIBUS-DP協(xié)議在任何微處理機(jī)器上都可以實(shí)現(xiàn),在微處理器內(nèi)部或外部安裝串行通信接口即可完成。利用PROFIBUS-DP模型中的服務(wù)訪問(wèn)點(diǎn),通過(guò)單片機(jī)編程來(lái)實(shí)現(xiàn)PROFIBUS-DP的狀態(tài)機(jī)制。
PROFIBUS協(xié)議結(jié)構(gòu)是根據(jù)IS07498國(guó)際標(biāo)準(zhǔn),以開(kāi)放式系統(tǒng)互聯(lián)網(wǎng)絡(luò)(Open System Interconnection-OSI)作為參考模型的。該模型共有7層,文中所探討的PROFIBUS-DP系統(tǒng)定義了第1,2層和用戶接口。使用單片機(jī)C167和智能通訊芯片SPC3設(shè)計(jì)了PROFIBUS-DP智能從站的硬件電路及其控制軟件,該系統(tǒng)即將在西北電網(wǎng)與華北電網(wǎng)聯(lián)網(wǎng)的靈寶背靠背直流工程中投入使用。
1 PROFIBUS-DP系統(tǒng)配置和設(shè)備類型
PROFIBUS-DP允許構(gòu)成單主站或多主站系統(tǒng)。在同一總線上最多可連接126個(gè)站點(diǎn)。系統(tǒng)配置的描述包括:站數(shù)、站地址、輸入/輸出地址、輸入/輸出數(shù)據(jù)格式、診斷信息格式及所使用的總線參數(shù)。每個(gè)PROFIBUS-DP系統(tǒng)可包括以下幾種不同類型設(shè)備:
(1)一級(jí)DP主站(DPM1):一級(jí)DP主站是中央控制器,它在預(yù)定的信息周期內(nèi)與分散的站(如DP從站)交換信息,典型的DPM1如PLC或PC;
(2)二級(jí)DP主站(DPM2):二級(jí)DP主站是編程器、組態(tài)設(shè)備或操作面板,在DP系統(tǒng)組態(tài)操作時(shí)使用,完成系統(tǒng)操作和監(jiān)視目的;
(3)DP從站:DP從站是進(jìn)行輸入和輸出信息采集和發(fā)送的外圍設(shè)備(I/O設(shè)備、驅(qū)動(dòng)器、HMI、閥門等);
(4)單主站系統(tǒng):在總線系統(tǒng)的運(yùn)行階段,只有一個(gè)活動(dòng)主站;
(5)多主站系統(tǒng):總線上連有多個(gè)主站。這些主站與各自從站構(gòu)成相互獨(dú)立的子系統(tǒng)。每個(gè)子系統(tǒng)包括一個(gè)DPM1、指定的若干從站及可能的DPM2設(shè)備。
任何一個(gè)主站均可讀取DP從站的輸入/輸出映象,但只有一個(gè)DP主站允許對(duì)DP從站寫入數(shù)據(jù)。
DPM1和相關(guān)DP從站之間的用戶數(shù)據(jù)傳輸是由DPM1按照確定的遞歸順序自動(dòng)進(jìn)行。在對(duì)總線系統(tǒng)進(jìn)行組態(tài)時(shí),用戶對(duì)DP從站與DPM1的關(guān)系作出規(guī)定,確定哪些DP從站被納入信息交換的循環(huán)周期,哪些被排斥在外。
DPM1和DP從站間的數(shù)據(jù)傳送分3個(gè)階段:參數(shù)設(shè)定、組態(tài)、數(shù)據(jù)交換。在參數(shù)設(shè)定階段,每個(gè)從站將自己的實(shí)際組態(tài)數(shù)據(jù)與從DPM1接收到的組態(tài)數(shù)據(jù)進(jìn)行比較。只有當(dāng)實(shí)際數(shù)據(jù)與所需的組態(tài)數(shù)據(jù)相匹配時(shí),DP從站才進(jìn)入用戶數(shù)據(jù)傳輸階段。因此,設(shè)備類型、數(shù)據(jù)格式、長(zhǎng)度以及輸入輸出數(shù)量必須與實(shí)際組態(tài)一致。
2 電路主要器件介紹
從站的硬件電路采用西門子C167單片機(jī)和智能通訊芯片SPC3。
2.1 C167微控制芯片
C167SR是西門子C16X系列第二代CMOS微處理器。它兼容16位CPU的高性能(高達(dá)1 000萬(wàn)條指令每秒),并具有智能外圍設(shè)備擴(kuò)展功能。它的主要優(yōu)點(diǎn)體現(xiàn)在:增強(qiáng)了IO口的應(yīng)用,提供了附加的內(nèi)部高速RAM,CAN總線控制器和鎖相環(huán)PLL等功能;繼承了RISC處理器的優(yōu)點(diǎn),而克服了CISC處理器在嵌入式應(yīng)用中的瓶頸;在指令處理上,采用4級(jí)指令流水線管道結(jié)構(gòu);在存儲(chǔ)管理上,統(tǒng)一線性地址空間可達(dá)16 MB,具有段代碼、頁(yè)數(shù)據(jù)式管理機(jī)制;采用寄存器池,池間的切換時(shí)間只要80 ns;16位乘法400 ns,32位除法800 ns,中斷響應(yīng)時(shí)間最長(zhǎng)400 ns;外部事件控制器PEC服務(wù)具有類似DMA的功能,可實(shí)現(xiàn)存儲(chǔ)器與外設(shè)之間的高速數(shù)據(jù)傳輸;豐富的在片外設(shè):2 kB RAM、10路A/D、111路I/O、5個(gè)定時(shí)器/計(jì)數(shù)器、16個(gè)比較/捕獲單元、2個(gè)串行通信接口、在片的Watchdog等。
CPU的內(nèi)核是由一個(gè)4級(jí)流水線指令管道,一個(gè)16位的算術(shù)邏輯單元以及指示作用的SFR構(gòu)成。另外還專有做乘法,除法運(yùn)算的硬件單元,一個(gè)位屏蔽器,一個(gè)移位器?;谶@些硬件保證,大多數(shù)C167的指令在20 MHz時(shí)鐘頻率下,只需要1個(gè)時(shí)鐘周期,也就是100 ns就能完成。例如,移位和循環(huán)指令通常只要一個(gè)時(shí)鐘周期,而和移位的數(shù)目沒(méi)關(guān)系。被優(yōu)化的乘除法指令使得執(zhí)行速度快了很多,它分成了2個(gè)部分:16×16位的乘法需要5個(gè)周期,32/16位的除法需要10個(gè)周期。另一個(gè)管道優(yōu)化,即所謂的跳緩存,它將重復(fù)的循環(huán)跳轉(zhuǎn)指令周期由2個(gè)減到1個(gè)。CPU可以對(duì)位于片上RAM的特殊寄存器進(jìn)行16位的直接處理。CPU每訪問(wèn)一次寄存器組,其基址由索引指針寄存器指定。寄存器組數(shù)目?jī)H僅受限于內(nèi)部RAM的可用空間。對(duì)于簡(jiǎn)單的參數(shù)傳遞,一組寄存器可能會(huì)覆蓋其它數(shù)據(jù)。最高達(dá)2 kB的系統(tǒng)堆棧用來(lái)存儲(chǔ)臨時(shí)數(shù)據(jù)。此堆棧也是位于片上RAM,CPU對(duì)其通過(guò)堆棧指針寄存器進(jìn)行訪問(wèn)。兩個(gè)獨(dú)立的特殊功能寄存器,STKOV以及STKUN,通過(guò)比較堆棧內(nèi)的值來(lái)檢測(cè)被訪問(wèn)的堆棧是否上溢和下溢,其基本功能模塊,如圖l所示。
2.2 SPC3智能通訊芯片
SPC3是用于從站開(kāi)發(fā)的智能通訊芯片,它支持PROFIBUS-DP協(xié)議。SPC3內(nèi)部集成了1.5 kB的雙口RAM,其地址空間為00H~5FFH。以功能區(qū)分,可分為3個(gè)區(qū)域。
內(nèi)部鎖存器/寄存器位于前21個(gè)地址。主要包括:方式寄存器1和寄存器O,中斷控制寄存器,狀態(tài)寄存器,以及輸入緩沖器、輸出緩沖器和診斷緩沖器各自的狀態(tài)寄存器。從016H~03FH為配置參數(shù)區(qū)域,各種BUF的指針與長(zhǎng)度(包括本站地址、地址允許改變變量、用戶看門狗值和設(shè)備標(biāo)識(shí)號(hào))在此區(qū)域設(shè)置。整個(gè)緩沖器結(jié)構(gòu)就是基于這些參數(shù)寫的。用戶緩沖器區(qū)域位于從40H開(kāi)始的單元,用來(lái)接收來(lái)自IO應(yīng)用和主站的數(shù)據(jù)。
SPC3有14個(gè)中斷源,各個(gè)中斷源沒(méi)有優(yōu)先級(jí),而是通過(guò)中斷屏蔽寄存器和中斷響應(yīng)寄存器實(shí)現(xiàn)中斷。診斷分為外部診斷和狀態(tài)診斷,從站地址可以是固定的,也可以由主站設(shè)置。用戶看門狗計(jì)數(shù)器是一個(gè)16位的內(nèi)部存儲(chǔ)器單元。初始值由“RUserWdValue”單元給定,每接收一個(gè)數(shù)據(jù)報(bào)文,計(jì)數(shù)器減1。當(dāng)減到0000H時(shí),SPC3進(jìn)入“等待參數(shù)化”狀態(tài),DP狀態(tài)機(jī)制執(zhí)行“離開(kāi)主站”命令。另外,SPC3內(nèi)部還集成了一個(gè)看門狗計(jì)數(shù)器,可工作于3種不同的狀態(tài):波特率監(jiān)測(cè)、波特率控制和DP控制。SPC3還能自動(dòng)標(biāo)識(shí)總線波特率,范圍為0.009 6~12 MHz。
3 PROFIBUS-DP智能從站設(shè)計(jì)
3.1 系統(tǒng)設(shè)計(jì)
從站與主站之間的通信連接示意圖,如圖2所示。圖2描述了主站與從站的連接??梢钥闯鯯PC3作為一個(gè)重要的媒介連接主站與從站,其數(shù)據(jù)交換的標(biāo)準(zhǔn)為RS485。
3.2 硬件電路設(shè)計(jì)
圖3為C167與SPC3的接口電路。SPC3通過(guò)一塊內(nèi)置1.5 kB雙口RAM與CPU接口,它支持多種CPU。SPC3中雙口RAM的地址為1000H~15FFH。
SPC3的AB7~AB0管腳為地址總線,DB7~DB0管腳為數(shù)據(jù)總線,ALE管腳是地址鎖存使能,XWR管腳為寫信號(hào),XRD管腳為讀信號(hào),XINT管腳用于進(jìn)行中斷控制,RESET管腳的功能是接CPU RESET輸入,CLK管腳為時(shí)鐘脈沖輸入,所接的時(shí)鐘頻率為48 MHz。SPC3的右側(cè)XCS管腳的作用是進(jìn)行片選,XTEST0和XTEST1管腳必須接5 V電源,DIVIDER管腳是用來(lái)設(shè)置CLKOUT的分頻系數(shù),AB8~AB10管腳為地址總線,VDD接5 V電源,VSS接地,CLKOUT管腳為分頻時(shí)鐘脈沖輸出,XDATAEXCH管腳為PROFIBUS-DP的數(shù)據(jù)交換狀態(tài),XREADY/XDTACK管腳為外部CPU的準(zhǔn)備好信號(hào),TXD管腳是串行發(fā)送端口,RXD管腳為串行接收端口。
C167的P27~P20管腳為地址總線,P07~P00管腳為數(shù)據(jù)總線,ALE管腳的功能是地址鎖存使能;WR管腳的用途是外部數(shù)據(jù)存儲(chǔ)器寫信號(hào),低電平有效;RD管腳的用途是外部數(shù)據(jù)存儲(chǔ)器讀信號(hào),低電平有效;INT0管腳為外部中斷0,低電平有效;RST管腳的用途是復(fù)位,當(dāng)晶振在運(yùn)行中,只要復(fù)位管腳出現(xiàn)2個(gè)機(jī)器周期高電平即可復(fù)位,內(nèi)部有擴(kuò)散電阻連接到VSS,僅需要外接一個(gè)電容到VCC即可實(shí)現(xiàn)上電復(fù)位。
圖3中的模塊1為光電隔離,模塊2為驅(qū)動(dòng)器,SPC3過(guò)光電隔離后與總線驅(qū)動(dòng)器相連,具體的連接電路,如圖4所示。
圖4為PROFIBUS-DP的RS-485傳輸接口電路。其中,M和2M為不同的電源地,P5,2P5為兩組不共地的+5 V電源。74HCl32為施密特與非門。RS485總線驅(qū)動(dòng)器一側(cè)與9針D型插座相連,另一側(cè)通過(guò)光耦與SPC3相連。HCPL-0601和HCPL-7721是能夠滿足12 MB·s-1波特率的光耦,采用光電隔離主要是為了消除來(lái)自外界的干擾。
3.3 軟件設(shè)計(jì)
由于SPC3集成了完整的PROFIBUS-DP協(xié)議,因此C167不用參與處理PROFIBUS-DP狀態(tài)機(jī),P89C61X2的主要任務(wù)就是根據(jù)SPC3產(chǎn)生的中斷,對(duì)SPC3接受到的主站發(fā)出的輸出數(shù)據(jù)轉(zhuǎn)存,組織要通過(guò)SPC3發(fā)給主站的數(shù)據(jù),并根據(jù)要求組織外部診斷等。
主程序和中斷程序的流程圖,分別如圖5和圖6所示。
主程序中的SPC3初始化包括設(shè)置SPC3允許的中斷,寫入從站識(shí)別號(hào)和地址,設(shè)置SPC3方式寄存器,設(shè)置診斷緩沖區(qū)、參數(shù)緩沖區(qū)、配置緩沖區(qū)、地址緩沖區(qū)和初始長(zhǎng)度,并根據(jù)以上初始值求出各個(gè)緩沖區(qū)的指針及輔助緩沖區(qū)的指針。根據(jù)傳輸?shù)臄?shù)據(jù)長(zhǎng)度,確定輸出緩沖區(qū),輸入緩沖區(qū)和指針。
中斷程序主要用來(lái)處理PRM報(bào)文,CFG報(bào)文和SSA報(bào)文。
另外,PROFIBUS設(shè)備具有不同的性能特點(diǎn),為達(dá)到PROFIBUS簡(jiǎn)單的即插即用配置,PROFIBUS設(shè)備的特性均在電子設(shè)備數(shù)據(jù)庫(kù)文件(GSD)中具體說(shuō)明。標(biāo)準(zhǔn)化的GSD數(shù)據(jù)將通信擴(kuò)大到操作員控制級(jí),使用基于GSD的組態(tài)工具可將不同廠商生產(chǎn)的設(shè)備集成在同一總線系統(tǒng)中,簡(jiǎn)單而且用戶界面友好。
4 結(jié)束語(yǔ)
PROFIBUS-DP開(kāi)發(fā)器件的選擇比較靈活。在對(duì)數(shù)據(jù)傳輸速度有較高要求的應(yīng)用場(chǎng)合,必須根據(jù)應(yīng)用需求選擇器件,尤其是對(duì)處理器、RS485接口器件和收發(fā)器芯片更要慎重選擇,這是快速數(shù)據(jù)傳輸?shù)那疤帷?br />