微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 数据采集处理系统在电力中的应用设计

数据采集处理系统在电力中的应用设计

时间:12-30 来源:3721RD 点击:

t(m_cardno, 0, 1, 0, 0, 1, 625 ,1, 0, 0);

  //设置ad方式控制寄存器

  i:=zt8360a_getcardstatus(1);

  if i<>0 then

  // i:=zt8360a_getlasterr();

  i:=zt8360a_getlasterr();

  showmessage(`intit`+inttostr(i));

  zt8360a_openirq( m_cardno, 0, 0, 0, 0); //打开8360a中断

  i:=zt8360a_getcardstatus(1);

  if i<>0 then

  i:=zt8360a_getlasterr();

  showmessage(`打开中断失败,错误号为:`+inttostr(i));

  end;

  end;

  3.4 基于单个人工神经元的自适应电力谐波检测方法

  基于单个人工神经元的自适应电力谐波检测原理如图2所示,该方法能够对奇次、偶次、特定次、总谐波以及相位进行实时准确的动态检测。假设实际系统中需要检测的最高次谐波是n次。

  (1) 检测总谐波电流:只取sinωt和cosωt作为参考输入。人工神经元学习完成之后,系统的输出z(t)即为总谐波电流。

  (2) 检测奇次谐波电流:取sinωt、cosωt以及sin(2k+1)ωt、cos(2k+1)

  (3) ≤2k+1≤n,k为正整数) 等作为参考输入。人工神经元学习完成之后

  i2k+1(t) = w(2k+1)s·sin(2k+1)ωt + w(2k+1)c·cos(2k+1)ωt (1)

  就是对应的奇次谐波电流的值。

  (4) 检测偶次谐波电流:取sinωt、cosωt以及sin2kωt、cos2kωt(2≤2k≤n,k为正整数)等作为参考输入。人工神经元学习完成之后

  i2k(t) = w2ks·sin2kωt + w2kc·cos2kωt (2)

  就是对应的偶次谐波电流的值。

  (5) 检测特定次谐波和相位:取sinωt、cosωt以及sinkωt、coskωt(k∈[2,n]且为正整数)等作为参考输入。人工神经元学习完成之后

  ik(t) = wks·sinkωt + wkc·coskωt (3)

  就是对应的k次谐波的值;wkc/wks就是k次谐波相角的正切值。

  3.5 iplot控件的应用

  iplot控件是非常优秀的控件,能够直观实时显示工业现场中的模拟信号。它功能强大,即使在划分数据时也可以缩放,滚动。x轴,y轴和频道数均无限制。对于不同通道信号采用颜色区分,并用文字标注,方便观察比较分析。能以.bmp,.emf,.jpg各种图形格式保存信号曲线,也可以打印输出。现以其中一路通道信号的显示加以说明。

  var

  currcount:integer;

  retcount:integer;

  i:integer;

  begin

  //设置iocomp中iplt控件的参数

  iplot.channel[0].titletext:= `u相电压信号`; //设置通道标题文字

  iplt1.xaxis[0].min:=0; //设置u相电压信号x轴的起始坐标值

  iplt1.xaxis[0].SPAN:=2560; //设置x轴的坐标域

  iplt1.yaxis[0].min:=-5000; //y轴表示u相电压信号的幅值

  iplt1.yaxis[0].SPAN:=10000;

  i:=zt8360a_getlasterr();

  if i<>0 then

  showmessage(`错误号为:`+inttostr(i));

  currcount := zt8360a_getsfifodatacount(m_cardno);

  //得到驱动缓冲区(sfifo)中当前有效数据的个数

  if currcount > 0 then

  begin

  retcount := zt8360a_aisfifo(m_cardno, data, 8192);

  //定时启动ad或外触发启动ad时,从驱动缓冲区中读8192个数到缓冲区

  for i:=0 to retcount do

  begin

  iplt1.channel[0].addxy(x,data^[i]); //图形显示

  x:=x+1;

  end;

  end;

  end;

  3.6 线程的应用和防止数据覆盖

  windows提供的多媒体定时器,它的最小时间精度只能达到1ms。不能满足实时数据采集的要求。在本项目中,采集的电压信号频率为50hz,每个周期为0.02秒。根据项目要求,每个周期需采样256个点,即每0.02/256=0.000078125秒读一次。因此需要使用线程。另外,pci8360a的单通道采样频率最高可达500khz,即每1/500000=0.000002秒采样一次。因此,可能出现数据覆盖,即还没有处理的数据被新读入的数据覆盖。为防止这种情况发生,需要创建缓存区。

  4 结束语

在该项目的上位机软件开发过程中,数据采集是其它工作的前提。在数据采集中掌握pci8360a数据采集卡的的使用是非常重要的,它有效的利用了工机控机高速处理能力。在使用过程中要注意:未接信号的通道一定要接模拟地;为防止引入现场干扰,不应该使信号引脚悬空,可以将不使用的信号引脚与模拟地短路;各选择跳线均选出厂设置。iocomp图形控件的使用使得实验的上位机界面更加美观。iplot控件显示各路信号波形。ispectrumdisplay,ipiechart控件用于显示各次谐波含有率,iangularloggauge控件用于显示基波功率。为提高读数据的速率,使用了线程。动态链接库和防覆盖技术的应用,使得系统更为可靠。多种采集方式同时应用,便于比较多种方法各自的优

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top