摘要:饋線終端單元(FTU)是配電自動(dòng)化系統(tǒng)中的重要組成部分,以DSP為核心構(gòu)成的FTU具有運(yùn)算速度快和精度高等特點(diǎn), 而DNP3.0則是FTU與配網(wǎng)主站通信的主流規(guī)約。討論了在DSP平臺(tái)上實(shí)現(xiàn)DNP3.0的特殊性,介紹了DSP片內(nèi)異步串口的使用方法,給出了程序的主要流程圖和數(shù)據(jù)結(jié)構(gòu)以及涉及串行通信的C語(yǔ)言源碼。
DNP (Distributed Network Protocol,分布式網(wǎng)絡(luò)規(guī)約)是HARRIS公司推出的一種遠(yuǎn)動(dòng)通信規(guī)約,是目前電力系統(tǒng)自動(dòng)化產(chǎn)品市場(chǎng)上的一種主流通信規(guī)約。它既可作為FTU(Feeder Terminal Unit,饋線終端單元)與配網(wǎng)主站之間的規(guī)約,又可作為RTU與調(diào)度主站之間的規(guī)約。由于目前我國(guó)的大部分配電自動(dòng)化(DA)產(chǎn)品都支持DNP3.0,為使產(chǎn)品更具兼容性和標(biāo)準(zhǔn)性,F(xiàn)TU有必要采用DNP3.0作為其與配網(wǎng)主站之間的通信規(guī)約。
FTU作為配電自動(dòng)化系統(tǒng)(DAS)中重要的組成部分,除擔(dān)負(fù)最基本的測(cè)量與控制任務(wù)外,還要與中心子站或主站進(jìn)行通信。某些FTU還具有微機(jī)保護(hù)功能,故而其核心部分一般采用高檔次的16位或32位單片機(jī)。但在交流采樣的情況下,單片機(jī)計(jì)算U、I有效值以及P、Q等參數(shù)往往力不從心,導(dǎo)致實(shí)時(shí)性較差。雖然可以通過(guò)采用主—從結(jié)構(gòu)來(lái)解決,但這樣無(wú)疑要增加成本。DSP(數(shù)字信號(hào)處理器)恰恰以數(shù)學(xué)計(jì)算(如快速傅立葉變換)而見(jiàn)長(zhǎng),雖然它的控制功能遜于單片機(jī),但由于FTU只負(fù)責(zé)監(jiān)控一路柱上開(kāi)關(guān),故而在這種測(cè)控量不多的情況下,如果不需要就地保護(hù)功能,一片DSP還是完全能夠勝任的。TMS320F206(以下簡(jiǎn)稱F206) 是TI公司生產(chǎn)的TMS320C2000系列中的一款主流DSP,它屬于16位定點(diǎn)DSP,可應(yīng)用于電機(jī)控制以及工業(yè)自動(dòng)化和電力行業(yè)中,價(jià)格接近普通16位單片機(jī)。FTU以一片TMS320F206為核心,并輔以A/D轉(zhuǎn)換器等外圍器件,即可完成測(cè)控、參數(shù)計(jì)算和通信等任務(wù)。
由于DNP3.0幀格式中的基本單元是8位整型數(shù)(BYTE字節(jié)),而F206中的數(shù)據(jù)總線是16位的,尋址時(shí)是以字(WORD)為單位,而且TI提供的C語(yǔ)言中也沒(méi)有8位整型數(shù),這樣在F206平臺(tái)上實(shí)現(xiàn)DNP3.0時(shí)就存在一個(gè)8位/16位轉(zhuǎn)換的問(wèn)題。另外,大多數(shù)DSP利用外接UART(通用異步收發(fā)器)來(lái)實(shí)現(xiàn)串行通信。本文著重討論如何在保證程序清晰和高效的前提下利用F206片內(nèi)異步串口實(shí)現(xiàn)以DNP3.0為通信協(xié)議的串行通信。
1 DNP3.0簡(jiǎn)介[4~5]
DNP3.0為純軟件的通信協(xié)議,其結(jié)構(gòu)如圖1所示。它基于IEC 870-5標(biāo)準(zhǔn),采用了ISO七層模型中的三層:物理層、數(shù)據(jù)鏈路層和應(yīng)用層,其結(jié)構(gòu)為增強(qiáng)協(xié)議結(jié)構(gòu)。這種分層結(jié)構(gòu)使得數(shù)據(jù)傳送的可靠性大大提高,同時(shí)也便于軟件編程的模塊化。物理層一般采用普通的RS232或RS485;鏈路層采用CRC校驗(yàn);為了滿足較長(zhǎng)數(shù)據(jù)包的傳送,又增加了一個(gè)偽傳輸層。發(fā)送數(shù)據(jù)時(shí)它可以將較長(zhǎng)的應(yīng)用層報(bào)文拆分為多個(gè)短幀然后多幀傳送,反之,接收時(shí)將短幀組裝成完整的應(yīng)用層報(bào)文。
2 系統(tǒng)硬件
2.1 結(jié)構(gòu)框圖
硬件結(jié)構(gòu)框圖如圖2所示。
2.2 F206片內(nèi)異步串行口介紹[2~3]
F206片內(nèi)具有一個(gè)8位全雙工ASP(Asynchronous SerialPort,異步串行口),可以完成并行數(shù)據(jù)與串行數(shù)據(jù)的相互轉(zhuǎn)換,并可以產(chǎn)生可屏蔽硬件中斷TXRXINT。有關(guān)的外部引腳共6個(gè):發(fā)送端TX、接收端RX、IO0、IO1、IO2、I03,一般情況下只使用TX和RX就足夠了(另外還有一根地線)。
與編程有關(guān)的片內(nèi)16位寄存器共4個(gè):異步數(shù)據(jù)發(fā)送和接收寄存器ADTR、異步串口控制寄存器AS-PCR、I/O狀態(tài)寄存器IOSR、波特率除數(shù)寄存器BRD,均映射至I/O空間。ADTR為讀/寫寄存器,高8位恒為0,向ADTR寫數(shù)據(jù)即可啟動(dòng)串口發(fā)送。ASPCR用來(lái)控制串口的工作方式,BIT8為發(fā)送中斷屏蔽TIM,BIT7為接收中斷屏蔽RIM,BIT6為停止位選擇STB。IOSR反映串口的工作狀態(tài),BITll為發(fā)送寄存器空指示位THRE,BIT8為接收數(shù)據(jù)準(zhǔn)備就緒位DR。BRD用作波特率發(fā)生器,BRD值=CLKOUTl頻率/(16×波特率)。
值得注意的是,F(xiàn)206片內(nèi)串口與通用異步串口略有不同。它只支持最常見(jiàn)的1位起始位、8位數(shù)據(jù)位、1或2位停止位。另外幾種特殊格式不予支持,如6或7位數(shù)據(jù)位、1.5位停止位等。為適應(yīng)現(xiàn)場(chǎng)各種可能的通信方式,還應(yīng)當(dāng)擴(kuò)展一路以上的通用異步收發(fā)器(UART),本例采用TI公司的單路異步串口TLl6C550。關(guān)于這類芯片有很多文章介紹過(guò),在此不再贅述。
3 軟件部分
3.1 編程語(yǔ)言
采用C語(yǔ)言開(kāi)發(fā)DSP程序不僅可讀性和可移植性都很好,還能大大加快開(kāi)發(fā)速度。但用C語(yǔ)言實(shí)現(xiàn)某些硬件控制不如匯編方便,且實(shí)時(shí)性不如匯編[1]。因此采用在C程序中直接嵌入?yún)R編語(yǔ)句來(lái)完成通信模塊程序的編寫,除極少數(shù)采用匯編語(yǔ)言以外,絕大部分采用C語(yǔ)言編寫。
3.2 數(shù)據(jù)結(jié)構(gòu)定義
由于F206中的數(shù)據(jù)總線為16位,故而TI提供的C語(yǔ)言(以下簡(jiǎn)稱TI C)與標(biāo)準(zhǔn)C語(yǔ)言的數(shù)據(jù)類型略有不同。char、unsigned char、int和short均為16位,enum也為16位。相應(yīng)地,sizeof(int)和sizeof(short)的結(jié)果為1,而不是2,這一點(diǎn)在計(jì)算幀長(zhǎng)度時(shí)尤為重要,習(xí)慣于標(biāo)準(zhǔn)C的編程人員一定要特別注意。
由于DNP3.0幀格式中的基本單元是字節(jié),而TI C中卻沒(méi)有這一數(shù);據(jù)類型,在用結(jié)構(gòu)體類型定義具體的數(shù)據(jù)結(jié)構(gòu)時(shí),都是按字(WORD)對(duì)齊的,因此只能將DNP3.0數(shù)據(jù)格式中的BYTE定義為16位無(wú)符號(hào)整數(shù)WORD,將DNP3.0中的WORD定義為32位無(wú)符號(hào)整數(shù)DWORD。接收數(shù)據(jù)時(shí)將每個(gè)字節(jié)都存儲(chǔ)至一個(gè)字的低8位,發(fā)送時(shí)則只取每個(gè)字的低8位,這樣雖然浪費(fèi)了一半的存儲(chǔ)器空間,但程序編寫容易,效率也較高。
根據(jù)DNP3.0的層次結(jié)構(gòu)定義三個(gè)結(jié)構(gòu)體——鏈路層DL_LAYER、傳輸層T_LAYER和應(yīng)用層APP_LAYER,每個(gè)結(jié)構(gòu)體再按照DNP3.0中相應(yīng)層規(guī)定的字段去逐個(gè)定義相應(yīng)的成員即可。如鏈路層包括報(bào)頭和n個(gè)數(shù)據(jù)塊,報(bào)頭又包括起始字、長(zhǎng)度、控制字節(jié)等字段,控制字節(jié)按比特位又包括功能碼、方向位和幀計(jì)數(shù)位等。鏈路層結(jié)構(gòu)定義為:
(1)DL層控制字
typedef struct{
WORD b0-3_FuncCode:4,/*功能碼*/
b4_FCV:1 /*幀計(jì)數(shù)有效位*/
b5_FCB:1, /*幀計(jì)數(shù)位*/
b6_PRM:l /*主站標(biāo)志位*/
b7_DIR:1; /*方向位*/
}DL_CONTROL;
(2)DL層報(bào)頭
typedef struct{
DWORD dwStart; /*起始字*/
WORD wLength; /*長(zhǎng)度*/
DL_CONTROL DLCtrl; /*控制字*/
DWORD dwDest; /*目的地址*/
DWORD dwSource; /*源地址*/
DWORD dwCRC; /*校驗(yàn)碼*/
}DL_HEADER;
(3)DL層數(shù)據(jù)塊
typedef struct{
WORD awUserData[l6] /*用戶數(shù)據(jù)*/
DWORD dwCRC; /*校驗(yàn)碼*/
}DL_DATABLOCK;
3.3 流程圖
DNP3.0已經(jīng)詳細(xì)規(guī)定了協(xié)議的層次結(jié)構(gòu)及每一層的功能,程序的層次結(jié)構(gòu)只要與其一致就會(huì)非常清晰,編程時(shí)只需遵照這些層次間的數(shù)據(jù)流向編寫相應(yīng)的函數(shù)即可。物理層對(duì)應(yīng)串口收發(fā)中斷子程序,鏈路層、傳輸層和應(yīng)用層在接收與發(fā)送時(shí)各有一套函數(shù)去處理,以對(duì)應(yīng)串口的全雙工工作方式。其中,鏈路層接收處理流程如圖3所示。
3.4 ASP的相關(guān)程序
3.4.1 ASP的寄存器定義
ioport unsigned portFFF4;
#define ADTR portFFF4 /*收發(fā)寄存器*/
ioport unsigned portFFF5;
#define ASPCR poaFFF5 /*控制寄存器*/
ioport unsigned portFFF6;
#define IOSR poaFFF6 /*I/O狀態(tài)寄存器*/
ioport unsigned portFFF7;
#define BRD portFFF7 /*波特率發(fā)生器*/
3.4.2 初始化ASP
void InitASP(){ /*初始化異步串口*/
ASPCR=0xE080; /*RIM=1L:允許接收中斷,
STB=0:一位停止位*/
IOSR=0xl800; /*THRE=1:ADTR空*/
BRD=0x0020; /*20MHz/38400bps*/
}
3.4.3 異步串口呻斷服務(wù)子程序
void interrupt aspint(){
if((IOSR & 0x0l00)==0x0l00){
Recv();} /*有接收數(shù)據(jù)*/
if((IOSR & 0x0400)==0x0400){
……;} /*幀錯(cuò)誤處理*/
if((IOSR & 0x0800)==0x0800){
Send();} /*可以發(fā)送數(shù)據(jù)*/
*IFR=0x20; /*清中斷標(biāo)志*/;
asm("clrc INTM") /開(kāi)中斷*/;
}
由于采用F206的片內(nèi)串口作為通信工具,充分利用了DSP的片內(nèi)集成外設(shè),不僅使得通信模塊可靠性較高,而且接口方法簡(jiǎn)單,ASP的控制和讀寫通過(guò)幾個(gè)寄存器就可完成,非常方便。采用本文所介紹的方法編寫的以DNP3.0為規(guī)約的通信子程序流程清晰,符合模塊化的要求。自現(xiàn)場(chǎng)投入試運(yùn)行以來(lái),整個(gè)通信模塊工作穩(wěn)定可靠,能迅速響應(yīng)主站請(qǐng)求,主動(dòng)上報(bào)數(shù)據(jù),及時(shí)準(zhǔn)確。但是隨著現(xiàn)場(chǎng)總線技術(shù)的發(fā)展,F(xiàn)TU還應(yīng)具備至少一個(gè)現(xiàn)場(chǎng)總線接口(如CAN總線接口)。這樣不光通信質(zhì)量有保證,還可以簡(jiǎn)化通信規(guī)約(只保留一個(gè)應(yīng)用層即可),這應(yīng)該是FTU通信方式的一個(gè)發(fā)展方向.
- DNP3(6978)
FTU系統(tǒng)控制板共模浪涌(SURGE)干擾案例分析
4860
配電自動(dòng)化監(jiān)控系統(tǒng)的單核饋線終端設(shè)備(FTU)解決方案
6622飛凌嵌入式FET113i-S核心板在國(guó)產(chǎn)FTU中的適配性分析
1875
DNP3設(shè)備數(shù)據(jù) 轉(zhuǎn) CCLink IE Field Basic項(xiàng)目案例
1215
DSP在電源設(shè)計(jì)中的應(yīng)用
DSP的實(shí)現(xiàn)方法
FTU系統(tǒng)控制板共模浪涌(SURGE)干擾案例分析
FTU裝置是什么?FTU裝置有什么作用?
在CCS5.4下能實(shí)現(xiàn)將DSP中的某個(gè)變量不斷寫入PC上的某個(gè).txt文件中嗎
在定點(diǎn)DSP系統(tǒng)中可否實(shí)現(xiàn)浮點(diǎn)運(yùn)算?
在電機(jī)DSP控制系統(tǒng)中怎么實(shí)現(xiàn)離散模型參考自適應(yīng)算法?
AD原理圖出DNP標(biāo)志怎么處理?
BQ76920EVM電路圖中DNP標(biāo)識(shí)的含義是什么?
C語(yǔ)言在DSP開(kāi)發(fā)中的應(yīng)用是什么
HDLC的DSP與FPGA實(shí)現(xiàn)
M366S3323FTU-C7A
dtu,rtu,ttu,ftu的區(qū)別
基于LabVIEW開(kāi)發(fā)環(huán)境實(shí)現(xiàn)DSP設(shè)計(jì)
基于軟件編碼的中速紅外技術(shù)在FTU中的應(yīng)用是什么
如何在定點(diǎn)DSP系統(tǒng)中實(shí)現(xiàn)浮點(diǎn)運(yùn)算?
如何在定點(diǎn)DSP系統(tǒng)中實(shí)現(xiàn)浮點(diǎn)運(yùn)算?
嵌入式應(yīng)用程序中的USB 3.0鏈路共享怎么實(shí)現(xiàn)?
怎么在Matlab中實(shí)現(xiàn)數(shù)字通信FPGA硬件設(shè)計(jì)?
怎么用微芯片5.42 TCP/IP協(xié)議棧在PIC24上實(shí)現(xiàn)DNP?
怎樣巧用DSP在電源設(shè)計(jì)中的應(yīng)用?
求高人解惑,在dsp中如何實(shí)現(xiàn)加速度的實(shí)時(shí)積分成速度?
電源模塊在配網(wǎng)自動(dòng)化系統(tǒng)終端FTU的應(yīng)用
DNP 3.0規(guī)范在廣州地區(qū)調(diào)度系統(tǒng)的應(yīng)用
12在DSP 采樣系統(tǒng)中采用DAC實(shí)現(xiàn)量程自動(dòng)轉(zhuǎn)換
25I2C 串行總線技術(shù)在DSP 系統(tǒng)中的虛擬實(shí)現(xiàn)The Sim
9DSP+FPGA 結(jié)構(gòu)在雷達(dá)模擬系統(tǒng)中的應(yīng)用
15DSP在電測(cè)量系統(tǒng)中SPI閃速引導(dǎo)的實(shí)現(xiàn)
19DSP在直流無(wú)刷電機(jī)中的應(yīng)用
18101規(guī)約在基于TMS320F2812 的FTU中的實(shí)現(xiàn)
59CPLD在DSP系統(tǒng)中的應(yīng)用設(shè)計(jì)
39DSP互連分析與FPGA實(shí)現(xiàn)
24MAC在FPGA中的高效實(shí)現(xiàn)
29DNP3.0簡(jiǎn)要說(shuō)明
29CPLD在DSP系統(tǒng)中的應(yīng)用設(shè)計(jì)
2397
快速小波變換的定點(diǎn)DSP實(shí)現(xiàn)
1688
基于LabVIEW中DSP目標(biāo)文件加載的實(shí)現(xiàn)
1401
基于DSP的串行通信在變頻調(diào)速系統(tǒng)中的應(yīng)用
876
根據(jù)軟件編碼的中速紅外技術(shù)在FTU中的應(yīng)用
1614
Nand+Flash存儲(chǔ)管理在DSP系統(tǒng)中的實(shí)現(xiàn)
1772
DSP和Flash接口技術(shù)的實(shí)現(xiàn)
7906
FTU技術(shù)在農(nóng)村電網(wǎng)建設(shè)中的應(yīng)用
32融合DSP設(shè)計(jì)與FPGA硬件實(shí)現(xiàn)
226DSP在火災(zāi)探測(cè)中的應(yīng)用
62Altera Stratix25DSP在DSP設(shè)計(jì)實(shí)驗(yàn)教學(xué)中的應(yīng)用
28基于DSP實(shí)現(xiàn)交流保護(hù)
0SVPWM在變頻調(diào)速系統(tǒng)中的應(yīng)用及其DSP實(shí)現(xiàn)
9基于DSP和FPGA的SVPWM算法及其在變頻調(diào)速中的應(yīng)用
20基于CP 1243-1 DNP3的連接及調(diào)試
17基于DSP開(kāi)發(fā)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
7DSP技術(shù)在壓電被動(dòng)振動(dòng)控制中的應(yīng)用初探
2DSP技術(shù)及其在煤礦電機(jī)控制與保護(hù)中的應(yīng)用
3實(shí)時(shí)操作系統(tǒng)DSP_BIOS在DSP開(kāi)發(fā)中的應(yīng)用
8多核DSP在軍事應(yīng)用中的實(shí)現(xiàn)
5FlexRay傳輸單元FTU必要的步驟
9通過(guò)FPGA器件的DSP高速運(yùn)算可實(shí)現(xiàn)流水線技術(shù)在系統(tǒng)中的應(yīng)用
3604DSP技術(shù)在計(jì)算機(jī)工程中的應(yīng)用詳細(xì)資料說(shuō)明
6DSP的發(fā)展及DSP在感應(yīng)電動(dòng)機(jī)矢量控制中的應(yīng)用資料說(shuō)明
7FTU、DTU、TTU、RTU的區(qū)別你都清楚嗎
3157在DSP系統(tǒng)中實(shí)現(xiàn)更長(zhǎng)的電池壽命
2100
FTU、DTU、TTU、RTU的區(qū)別
2119RTU、FTU、DTU、TTU分別代表什么?各自又有什么用途呢?
5422
一文讀懂DTU、FTU、TTU、RTU的作用和區(qū)別!
18237超級(jí)電容器在FTU中的應(yīng)用
1974
從DNP3.0到Profinet:BL122DN為工業(yè)應(yīng)用帶來(lái)高效數(shù)據(jù)交互
1192配網(wǎng)自動(dòng)化終端DTU和FTU的區(qū)別?
10643還搞不懂DTU、RTU、FTU和TTU?
3582
在DSP上實(shí)現(xiàn)DDR2 PCB布局布線
3TMS320C645X DSP從EDMA 2.0版遷移到EDMA 3.0版
0
電子發(fā)燒友App


評(píng)論