欢迎来到天天文库
浏览记录
ID:9416439
大小:53.00 KB
页数:5页
时间:2018-04-30
《dnp3.0在基于dsp的ftu中的实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、DNP3.0在基于DSP的FTU中的实现
2、第1...摘要:馈线终端单元(FTU)是配电自动化系统中的重要组成部分,以DSP为核心构成的FTU具有运算速度快和精度高等特点,而DNP3.0则是FTU与配网主站通信的主流规约。讨论了在DSP平台上实现DNP3.0的特殊性,介绍了DSP片内异步串口的使用方法,给出了程序的主要流程图和数据结构以及涉及串行通信的C语言源码。DNP(DistributedNetinalUnit,馈线终端单元)与配网主站之间的规约,又可作为RTU与调度主站之间的规约。由于目前我国的大部分配电自动化(DA)产品都支持DNP3.0,为使产品更具兼容性和标准性,FTU有
3、必要采用DNP3.0作为其与配网主站之间的通信规约。FTU作为配电自动化系统(DAS)中重要的组成部分,除担负最基本的测量与控制任务外,还要与中心子站或主站进行通信。某些FTU还具有微机保护功能,故而其核心部分一般采用高档次的16位或32位单片机。但在交流采样的情况下,单片机计算U、I有效值以及P、Q等参数往往力不从心,导致实时性较差。虽然可以通过采用主—从结构来解决,但这样无疑要增加成本。DSP(数字信号处理器)恰恰以数学计算(如快速傅立叶变换)而见长,虽然它的控制功能逊于单片机,但由于FTU只负责监控一路柱上开关,故而在这种测控量不多的情况下,如果不需要就地保护功能,一片DSP
4、还是完全能够胜任的。TMS320F206(以下简称F206)是TI公司生产的TMS320C2000系列中的一款主流DSP,它属于16位定点DSP,可应用于电机控制以及工业自动化和电力行业中,价格接近普通16位单片机。FTU以一片TMS320F206为核心,并辅以A/D转换器等外围器件,即可完成测控、参数计算和通信等任务。由于DNP3.0帧格式中的基本单元是8位整型数(BYTE字节),而F206中的数据总线是16位的,寻址时是以字(,BIT7为接收中断屏蔽RIM,BIT6为停止位选择STB。IOSR反映串口的工作状态,BITll为发送寄存器空指示位THRE,BIT8为接收数据准备就绪
5、位DR。BRD用作波特率发生器,BRD值=CLKOUTl频率/(16×波特率)。值得注意的是,F206片内串口与通用异步串口略有不同。它只支持最常见的1位起始位、8位数据位、1或2位停止位。另外几种特殊格式不予支持,如6或7位数据位、1.5位停止位等。为适应现场各种可能的通信方式,还应当扩展一路以上的通用异步收发器(UART),本例采用TI公司的单路异步串口TLl6C550。关于这类芯片有很多文章介绍过,在此不再赘述。3软件部分3.1编程语言采用C语言开发DSP程序不仅可读性和可移植性都很好,还能大大加快开发速度。但用C语言实现某些硬件控制不如汇编方便,且实时性不如汇编[1]。因此
6、采用在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中却没有这一数;据类型,在用结构体类型定义具体的数据结构时,都是按字(:l/
7、*主站标志位*/b7_DIR:1;/*方向位*/}DL_CONTROL;(2)DL层报头typedefstruct{D")/开中断*/;}由于采用F206的片内串口作为通信工具,充分利用了DSP的片内集成外设,不仅使得通信模块可靠性较高,而且接口方法简单,ASP的控制和读写通过几个寄存器就可完成,非常方便。采用本文所介绍的方法编写的以DNP3.0为规约的通信子程序流程清晰,符合模块化的要求。自现场投入试运行以来,整个通信模块工作稳定可靠,能迅速响应主站请求,主动上报数据,及时准确。但是随着现场总线技术的发展,FTU还应具备至少一个现场总线接口(如CAN总线接口)。这样不光通信质量有
8、保证,还可以简化通信规约(只保留一个应用层即可),这应该是FTU通信方式的一个发展方向。500)this.style.ouseg(this)">[相关贴图]500)this.style.ouseg(this)">500)this.style.ouseg(this)">[相关贴图]500)this.style.ouseg(this)">500)this.style.ouseg(this)">[相关贴图]500)this.style.ouseg(this)">
此文档下载收益归作者所有