鉅大LARGE | 點擊量:1136次 | 2020年02月05日
DNP3.0在基于DSP的FTU中的實現
摘要:饋線終端單元(FTU)是配電自動化系統中的重要組成部分,以DSp為核心構成的FTU具有運算速度快和精度高等特點,而DNp3.0則是FTU與配網主站通信的主流規約。討論了在DSp平臺上實現DNp3.0的特殊性,介紹了DSp片內異步串口的使用方法,給出了程序的主要流程圖和數據結構以及涉及串行通信的C語言源碼。
DNp(DistributedNetworkprotocol,分布式網絡規約)是HARRIS公司推出的一種遠動通信規約,是目前電力系統自動化產品市場上的一種主流通信規約。它既可作為FTU(FeederTerminalUnit,饋線終端單元)與配網主站之間的規約,又可作為RTU與調度主站之間的規約。由于目前我國的大部分配電自動化(DA)產品都支持DNp3.0,為使產品更具兼容性和標準性,FTU有必要采用DNp3.0作為其與配網主站之間的通信規約。
FTU作為配電自動化系統(DAS)中重要的組成部分,除擔負最基本的測量與控制任務外,還要與中心子站或主站進行通信。某些FTU還具有微機保護功能,故而其核心部分一般采用高檔次的16位或32位單片機。但在交流采樣的情況下,單片機計算U、I有效值以及p、Q等參數往往力不從心,導致實時性較差。雖然可以通過采用主—從結構來解決,但這樣無疑要增加成本。DSp(數字信號處理器)恰恰以數學計算(如快速傅立葉變換)而見長,雖然它的控制功能遜于單片機,但由于FTU只負責監控一路柱上開關,故而在這種測控量不多的情況下,如果不需要就地保護功能,一片DSp還是完全能夠勝任的。TMS320F206(以下簡稱F206)是TI公司生產的TMS320C2000系列中的一款主流DSp,它屬于16位定點DSp,可應用于電機控制以及工業自動化和電力行業中,價格接近普通16位單片機。FTU以一片TMS320F206為核心,并輔以A/D轉換器等外圍器件,即可完成測控、參數計算和通信等任務。
由于DNp3.0幀格式中的基本單元是8位整型數(BYTE字節),而F206中的數據總線是16位的,尋址時是以字(WORD)為單位,而且TI提供的C語言中也沒有8位整型數,這樣在F206平臺上實現DNp3.0時就存在一個8位/16位轉換的問題。另外,大多數DSp利用外接UART(通用異步收發器)來實現串行通信。本文著重討論如何在保證程序清晰和高效的前提下利用F206片內異步串口實現以DNp3.0為通信協議的串行通信。
1DNp3.0簡介[4~5]
DNp3.0為純軟件的通信協議,其結構如圖1所示。它基于IEC870-5標準,采用了ISO七層模型中的三層:物理層、數據鏈路層和應用層,其結構為增強協議結構。這種分層結構使得數據傳送的可靠性大大提高,同時也便于軟件編程的模塊化。物理層一般采用普通的RS232或RS485;鏈路層采用CRC校驗;為了滿足較長數據包的傳送,又增加了一個偽傳輸層。發送數據時它可以將較長的應用層報文拆分為多個短幀然后多幀傳送,反之,接收時將短幀組裝成完整的應用層報文。
2系統硬件
2.1結構框圖
硬件結構框圖如圖2所示。
2.2F206片內異步串行口介紹[2~3]
F206片內具有一個8位全雙工ASp(AsynchronousSerialport,異步串行口),可以完成并行數據與串行數據的相互轉換,并可以產生可屏蔽硬件中斷TXRXINT。有關的外部引腳共6個:發送端TX、接收端RX、IO0、IO1、IO2、I03,一般情況下只使用TX和RX就足夠了(另外還有一根地線)。
與編程有關的片內16位寄存器共4個:異步數據發送和接收寄存器ADTR、異步串口控制寄存器AS-pCR、I/O狀態寄存器IOSR、波特率除數寄存器BRD,均映射至I/O空間。ADTR為讀/寫寄存器,高8位恒為0,向ADTR寫數據即可啟動串口發送。ASpCR用來控制串口的工作方式,BIT8為發送中斷屏蔽TIM,BIT7為接收中斷屏蔽RIM,BIT6為停止位選擇STB。IOSR反映串口的工作狀態,BITll為發送寄存器空指示位THRE,BIT8為接收數據準備就緒位DR。BRD用作波特率發生器,BRD值=CLKOUTl頻率/(16×波特率)。
值得注意的是,F206片內串口與通用異步串口略有不同。它只支持最常見的1位起始位、8位數據位、1或2位停止位。另外幾種特殊格式不予支持,如6或7位數據位、1.5位停止位等。為適應現場各種可能的通信方式,還應當擴展一路以上的通用異步收發器(UART),本例采用TI公司的單路異步串口TLl6C550。關于這類芯片有很多文章介紹過,在此不再贅述。
3軟件部分
3.1編程語言
采用C語言開發DSp程序不僅可讀性和可移植性都很好,還能大大加快開發速度。但用C語言實現某些硬件控制不如匯編方便,且實時性不如匯編[1]。因此采用在C程序中直接嵌入匯編語句來完成通信模塊程序的編寫,除極少數采用匯編語言以外,絕大部分采用C語言編寫。
3.2數據結構定義
由于F206中的數據總線為16位,故而TI提供的C語言(以下簡稱TIC)與標準C語言的數據類型略有不同。char、unsignedchar、int和short均為16位,enum也為16位。相應地,sizeof(int)和sizeof(short)的結果為1,而不是2,這一點在計算幀長度時尤為重要,習慣于標準C的編程人員一定要特別注意。
由于DNp3.0幀格式中的基本單元是字節,而TIC中卻沒有這一數;據類型,在用結構體類型定義具體的數據結構時,都是按字(WORD)對齊的,因此只能將DNp3.0數據格式中的BYTE定義為16位無符號整數WORD,將DNp3.0中的WORD定義為32位無符號整數DWORD。接收數據時將每個字節都存儲至一個字的低8位,發送時則只取每個字的低8位,這樣雖然浪費了一半的存儲器空間,但程序編寫容易,效率也較高。
根據DNp3.0的層次結構定義三個結構體——鏈路層DL_LAYER、傳輸層T_LAYER和應用層App_LAYER,每個結構體再按照DNp3.0中相應層規定的字段去逐個定義相應的成員即可。如鏈路層包括報頭和n個數據塊,報頭又包括起始字、長度、控制字節等字段,控制字節按比特位又包括功能碼、方向位和幀計數位等。鏈路層結構定義為:
(1)DL層控制字
typedefstruct{
WORDb0-3_FuncCode:4,/*功能碼*/
b4_FCV:1/*幀計數有效位*/
b5_FCB:1,/*幀計數位*/
b6_pRM:l/*主站標志位*/
b7_DIR:1;/*方向位*/
}DL_CONTROL;
(2)DL層報頭
typedefstruct{
DWORDdwStart;/*起始字*/
WORDwLength;/*長度*/
DL_CONTROLDLCtrl;/*控制字*/
DWORDdwDest;/*目的地址*/
DWORDdwSource;/*源地址*/
DWORDdwCRC;/*校驗碼*/
}DL_HEADER;
(3)DL層數據塊
typedefstruct{
WORDawUserData[l6]/*用戶數據*/
DWORDdwCRC;/*校驗碼*/
}DL_DATABLOCK;
3.3流程圖
DNp3.0已經詳細規定了協議的層次結構及每一層的功能,程序的層次結構只要與其一致就會非常清晰,編程時只需遵照這些層次間的數據流向編寫相應的函數即可。物理層對應串口收發中斷子程序,鏈路層、傳輸層和應用層在接收與發送時各有一套函數去處理,以對應串口的全雙工工作方式。其中,鏈路層接收處理流程如圖3所示。
3.4ASp的相關程序
3.4.1ASp的寄存器定義
ioportunsignedportFFF4;
#defineADTRportFFF4/*收發寄存器*/
ioportunsignedportFFF5;
#defineASpCRpoaFFF5/*控制寄存器*/
ioportunsignedportFFF6;
#defineIOSRpoaFFF6/*I/O狀態寄存器*/
ioportunsignedportFFF7;
#defineBRDportFFF7/*波特率發生器*/
3.4.2初始化ASp
voidInitASp(){/*初始化異步串口*/
ASpCR=0xE080;/*RIM=1L:允許接收中斷,
STB=0:一位停止位*/
IOSR=0xl800;/*THRE=1:ADTR空*/
BRD=0x0020;/*20MHz/38400bps*/
}
3.4.3異步串口呻斷服務子程序
voidinterruptaspint(){
if((IOSR&0x0l00)==0x0l00){
Recv();}/*有接收數據*/
if((IOSR&0x0400)==0x0400){
……;}/*幀錯誤處理*/
if((IOSR&0x0800)==0x0800){
Send();}/*可以發送數據*/
*IFR=0x20;/*清中斷標志*/;
asm("clrcINTM")/開中斷*/;
}
由于采用F206的片內串口作為通信工具,充分利用了DSp的片內集成外設,不僅使得通信模塊可靠性較高,而且接口方法簡單,ASp的控制和讀寫通過幾個寄存器就可完成,非常方便。采用本文所介紹的方法編寫的以DNp3.0為規約的通信子程序流程清晰,符合模塊化的要求。自現場投入試運行以來,整個通信模塊工作穩定可靠,能迅速響應主站請求,主動上報數據,及時準確。但是隨著現場總線技術的發展,FTU還應具備至少一個現場總線接口(如CAN總線接口)。這樣不光通信質量有保證,還可以簡化通信規約(只保留一個應用層即可),這應該是FTU通信方式的一個發展方向.
技術專區慕展上,世強帶來的SiC、GaN、三電平讓你的效率直達最high點如何利用二級輸出濾波器防止開關電源噪聲陶瓷垂直貼裝封裝(CVMp)的焊接注意事項及布局DC-DC轉換器的平均小信號數學建模及環路補償設計常用基準穩壓電源產生辦法有哪些?
上一篇:LM系列開關電源集成電路