电力谐波治理装置数据采集处理系统设计
影响到其它模块。本系统的开发此种方式。动态链接库主要有两种调用方法:静态调用和动态调用。
动态链接库的静态调用是最简单的调用方法。它主要使用external指令来声明外部的函数或过程。为了方便使用和维护动态链接库,可以将工程中所用到的所有不同动态链接库中的函数统一定义在一个单元中,并且还可以在该单元中定义调用库中函数或过程时所使用的常量或数据类型。
动态链接库的动态调用主要是使用windows api函数进行相应的操作,比静态调用复杂的多。因此,这里采用动态链接库的静态调用的方向。
3.2 连续ad采集的编程思路
(1)首先在程序初始化时调用 zt8360a_opendevice函数,用于打开设备,只调一次即可。
(2) 调用 zt8360a_disablead 函数,禁止ad;调用zt8360a_clearhfifo函数,清硬件缓冲区(hfifo);调用 zt8360a_clearsfifo 函数,清软件缓冲区(sfifo);调用zt8360a_aiinit 函数,做一些ad初始化工作;调用 zt8360a_openirq函数,打开hfifo半满中断。
(3)在一个循环中不断调用zt8360a_getsfifodata count判断sfifo中数据的个数,申请一个数组,并把这个数组中传入 zt8360a_ aisfifo 用于接收数据,把读出的数据保存到文件或直接显示。注意:sfifo的默认大小为 819200,用户要不断读数,使sfifo有空间放入新的来自hfifo的数,如果sfifo中的有效数据的个数接近819200,会使整个ad过程停止。如果想重新采集,必须重复2—3步。
(4) 调用 zt8360a_closeirq函数,停止采集过程。
(5) 在程序退出前调用 zt8360a_closedevice函数。3.3 pci8360a数据采集卡数据采集部分代码
if(zt8360a_opendevice(m_cardno) > 0) then
//初始化数据采集卡,返回0表示打开设备成功,m_cardno为1
begin
showmessage(`打开设备失败`);
exit;
end
else
begin
i:=zt8360a_getcardstatus(1); //采集卡状态
if i>0 then
begin
i:=zt8360a_getlasterr(); //得到当前错误号,为0表示无错误
showmessage(`错误号为:`+inttostr(i));
end;
getmem(data,sizeof(tsomearray)*8092); //读数据
zt8360a_disablead(m_cardno); //禁止ad
i:=zt8360a_getcardstatus(1);
if i>0 then
showmessage(`禁止ad失败,错误号为:`+inttostr(i));
zt8360a_clearhfifo(m_cardno); //清硬件缓冲区
i:=zt8360a_getcardstatus(1);
if i>0 then
i:=zt8360a_getlasterr();
showmessage(`清硬件缓冲区失败,错误号为:`+inttostr(i));
//showmessage(`hfifo`);
zt8360a_clearsfifo(m_cardno); //清驱动缓冲区
i:=zt8360a_getcardstatus(1);
if i>0 then
i:=zt8360a_getlasterr();
showmessage(`清驱动缓冲区失败,错误号为:`+inttostr(i));
zt8360a_aiinit(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次谐波相角的正切值。
图2 基于单个神经元的电力谐波
处理 理系 设计 数据采集 装置 谐波 治理 电力 相关文章:
- 入门指导:步进电机正反转处理方案 (12-09)
- 解密ARM A17处理器(12-09)
- MATLAB GUI的数字信号处理仿真平台的设计(12-09)
- 使用低成本FPGA巧妙地扩展微处理器的连接(12-08)
- 基于图像处理技术的智能照明控制研究(12-08)
- 基于开源微处理器OR1200的嵌入式SoC设计(12-08)