- 相關(guān)推薦
DNP3.0在基于DSP的FTU中的實(shí)現
摘要:饋線(xiàn)終端單元(FTU)是配電自動(dòng)化系統中的重要組成部分,以DSP為核心構成的FTU具有運算速度快和精度高等特點(diǎn), 而DNP3.0則是FTU與配網(wǎng)主站通信的主流規約。討論了在DSP平臺上實(shí)現DNP3.0的特殊性,介紹了DSP片內異步串口的使用方法,給出了程序的主要流程圖和數據結構以及涉及串行通信的C語(yǔ)言源碼。DNP (Distributed Network Protocol,分布式網(wǎng)絡(luò )規約)是HARRIS公司推出的一種遠動(dòng)通信規約,是目前電力系統自動(dòng)化產(chǎn)品市場(chǎng)上的一種主流通信規約。它既可作為FTU(Feeder Terminal Unit,饋線(xiàn)終端單元)與配網(wǎng)主站之間的規約,又可作為RTU與調度主站之間的規約。由于目前我國的大部分配電自動(dòng)化(DA)產(chǎn)品都支持DNP3.0,為使產(chǎn)品更具兼容性和標準性,FTU有必要采用DNP3.0作為其與配網(wǎng)主站之間的通信規約。
FTU作為配電自動(dòng)化系統(DAS)中重要的組成部分,除擔負最基本的測量與控制任務(wù)外,還要與中心子站或主站進(jìn)行通信。某些FTU還具有微機保護功能,故而其核心部分一般采用高檔次的16位或32位單片機。但在交流采樣的情況下,單片機計算U、I有效值以及P、Q等參數往往力不從心,導致實(shí)時(shí)性較差。雖然可以通過(guò)采用主—從結構來(lái)解決,但這樣無(wú)疑要增加成本。DSP(數字信號處理器)恰恰以數學(xué)計算(如快速傅立葉變換)而見(jiàn)長(cháng),雖然它的控制功能遜于單片機,但由于FTU只負責監控一路柱上開(kāi)關(guān),故而在這種測控量不多的情況下,如果不需要就地保護功能,一片DSP還是完全能夠勝任的。TMS320F206(以下簡(jiǎn)稱(chēng)F206) 是TI公司生產(chǎn)的TMS320C2000系列中的一款主流DSP,它屬于16位定點(diǎn)DSP,可應用于電機控制以及工業(yè)自動(dòng)化和電力行業(yè)中,價(jià)格接近普通16位單片機。FTU以一片TMS320F206為核心,并輔以A/D轉換器等外圍器件,即可完成測控、參數計算和通信等任務(wù)。
由于DNP3.0幀格式中的基本單元是8位整型數(BYTE字節),而F206中的數據總線(xiàn)是16位的,尋址時(shí)是以字(WORD)為單位,而且TI提供的C語(yǔ)言中也沒(méi)有8位整型數,這樣在F206平臺上實(shí)現DNP3.0時(shí)就存在一個(gè)8位/16位轉換的問(wèn)題。另外,大多數DSP利用外接UART(通用異步收發(fā)器)來(lái)實(shí)現串行通信。本文著(zhù)重討論如何在保證程序清晰和高效的前提下利用F206片內異步串口實(shí)現以DNP3.0為通信協(xié)議的串行通信。
1 DNP3.0簡(jiǎn)介[4~5]
DNP3.0為純軟件的通信協(xié)議,其結構如圖1所示。它基于IEC 870-5標準,采用了ISO七層模型中的三層:物理層、數據鏈路層和應用層,其結構為增強協(xié)議結構。這種分層結構使得數據傳送的可靠性大大提高,同時(shí)也便于軟件編程的模塊化。物理層一般采用普通的RS232或RS485;鏈路層采用CRC校驗;為了滿(mǎn)足較長(cháng)數據包的傳送,又增加了一個(gè)偽傳輸層。發(fā)送數據時(shí)它可以將較長(cháng)的應用層報文拆分為多個(gè)短幀然后多幀傳送,反之,接收時(shí)將短幀組裝成完整的應用層報文。
2 系統硬件
2.1 結構框圖
硬件結構框圖如圖2所示。
2.2 F206片內異步串行口介紹[2~3]
F206片內具有一個(gè)8位全雙工ASP(Asynchronous SerialPort,異步串行口),可以完成并行數據與串行數據的相互轉換,并可以產(chǎn)生可屏蔽硬件中斷TXRXINT。有關(guān)的外部引腳共6個(gè):發(fā)送端TX、接收端RX、IO0、IO1、IO2、I03,一般情況下只使用TX和RX就足夠了(另外還有一根地線(xiàn))。
與編程有關(guān)的片內16位寄存器共4個(gè):異步數據發(fā)送和接收寄存器ADTR、異步串口控制寄存器AS-PCR、I/O狀態(tài)寄存器IOSR、波特率除數寄存器BRD,均映射至I/O空間。ADTR為讀/寫(xiě)寄存器,高8位恒為0,向ADTR寫(xiě)數據即可啟動(dòng)串口發(fā)送。ASPCR用來(lái)控制串口的工作方式,BIT8為發(fā)送中斷屏蔽TIM,BIT7為接收中斷屏蔽RIM,BIT6為停止位選擇STB。IOSR反映串口的工作狀態(tài),BITll為發(fā)送寄存器空指示位THRE,BIT8為接收數據準備就緒位DR。BRD用作波特率發(fā)生器,BRD值=CLKOUTl頻率/(16×波特率)。
值得注意的是,F206片內串口與通用異步串口略有不同。它只支持最常見(jiàn)的1位起始位、8位數據位、1或2位停止位。另外幾種特殊格式不予支持,如6或7位數據位、1.5位停止位等。為適應現場(chǎng)各種可能的通信方式,還應當擴展一路以上的通用異步收發(fā)器(UART),本例采用TI公司的單路異步串口TLl6C550。關(guān)于這類(lèi)芯片有很多文章介紹過(guò),在此不再贅述。
3 軟件部分
3.1 編程語(yǔ)言
采用C語(yǔ)言開(kāi)發(fā)DSP程序不僅可讀性和可移植性都很好,還能大大加快開(kāi)發(fā)速度。但用C語(yǔ)言實(shí)現某些硬件控制不如匯編方便,且實(shí)時(shí)性不如匯編[1]。因此采用在C程序中直接嵌入匯編語(yǔ)句來(lái)完成通信模塊程序的編寫(xiě),除極少數采用匯編語(yǔ)言以外,絕大部分采用C語(yǔ)言編寫(xiě)。
3.2 數據結構定義
由于F206中的數據總線(xiàn)為16位,故而TI提供的C語(yǔ)言(以下簡(jiǎn)稱(chēng)TI C)與標準C語(yǔ)言的數據類(lèi)型略有不同。char、unsigned char、int和short均為16位,enum也為16位。相應地,sizeof(int)和sizeof(short)的結果為1,而不是2,這一點(diǎn)在計算幀長(cháng)度時(shí)尤為重要,習慣于標準C的編程人員一定要特別注意。
由于DNP3.0幀格式中的基本單元是字節,而TI C中卻沒(méi)有這一數;據類(lèi)型,在用結構體類(lèi)型定義具體的數據結構時(shí),都是按字(WORD)對齊的,因此只能將DNP3.0數據格式中的BYTE定義為16位無(wú)符號整數WORD,將DNP3.0中的WORD定
【DNP3.0在基于DSP的FTU中的實(shí)現】相關(guān)文章:
基于DSP的擴頻電臺基帶模塊的設計與實(shí)現03-18
基于幀的實(shí)時(shí)話(huà)音變換技術(shù)與DSP實(shí)現03-07
基于A(yíng)DI TigerSHARC DSP的OFDM收發(fā)信機的設計與實(shí)現03-30
基于USB與DSP的指紋識別系統的設計實(shí)現03-19
基于TMS320C549DSP實(shí)現CVSD語(yǔ)音編解碼03-07
基于DSP的仿生機器蟹多關(guān)節控制系統的實(shí)現03-21
FFT算法的研究與DSP實(shí)現03-07