1 引言
在信息科学中,数据采集技术已经成为其重要的一个研究问题,它已经与计算机技术、网络技术、传感器技术、信号处理技术共同构成了现代检测技术的基础,随着科学技术的发展和数据采集系统的广泛应用,人们对数据采集的主要技术指标,如采样速率、分辨率、精度、输入电压范围、控制方式以及抗干扰能力等方面,都提出了越来越高的要求,尤其是采样速率,更是数据采集系统设计者和使用者最关心的一项重要指标。在电力系统自动化领域,实时数据采集是至关重要的环节,它直接影响整个自动化装置的性能。因此,提高采集速度和精度一直是电力系统软件开发人员要解决的难题。
2 系统结构
本文介绍的phcteeq-1型电力谐波综合治理实验装置的实时数据采集系统结构示意如图1所示。
图1 采集系统结构示意图
装置采用电力谐波有源滤波和无源滤波的先进理论和技术,以igbt-ipm智能模块、dsp、工控机等核心部件为硬件基础,进行电力谐波综合治理技术实验,实时性好,实验效果明显。装置采用公共基础台+功能挂件的设计方式,结构紧凑,集成度高,扩展性好,能够完成单相/三相电力谐波的产生、在线检测、分析、有源滤波和无源滤波等多项实验。
2.1 数据采集卡
在该装置中,模拟信号的采集主要通过数据采集卡,在这个装置中采用的pci8360a数据采集卡:它具有32个模拟量输入通道:ad0-ad31;输入信号范围:0~10v,-5v~+5v,0~20ma (0~10v为出厂默认设置)。输入精度为12位。单通道最大采样频率:500khz,多通道最大采样频率为200khz。启动转换方式为软件启动/外触发(定时)启动。这里将模拟量输入单双端选择跳线jp2设置为单端输入,模拟量输入范围选择跳线jp1,jp3设置为双极性。
在这个实验装置中需要采集的模拟信号有十四路:三相负载电流信号,三相补偿电流信号,三相电源电流信号,pwm波信号,变压器原边电流信号,三相电压信号。采用dhpt、dhct高精度微型传感器来完成数据采集的功能,采集到的数据经处理后传输到数据采集卡与dsp中。传输到数据采集卡的信号,一方面,实时动态显示原始信号,另一方面,经fft分析和基于单个人工神经元的自适应电力谐波检测方法分析后显示各次谐波权值。
2.2 dsp部分
dsp采用tms320f2812,tms320x28xx信号处理器集成了事件管理器(281x处理器),epwm, ecap, a/d转换模块,spi外设接口,sci通信接口,ecan总线通信模块,看门狗,通用目的数字量io,pll时钟模块,多通道缓冲串口,外部中断接口,存储器及其接口,内部集成电路(i2c)等多种外设单元,使用户能够以很便宜的价格开发高性能数字控制系统。传输给dsp的各种信号经fft算法分析,将各次谐波权值发送给工控机。dsp与上位机采用232串口通信。数据帧的格式如下:
a相:aaaa 1次谐波权值 3次谐波权值 5次谐波权值 … 25次谐波权值 aaaa
b相:bbbb 1次谐波权值 3次谐波权值 5次谐波权值 … 25次谐波权值 bbbb
c相:cccc 1次谐波权值 3次谐波权值 5次谐波权值 … 25次谐波权值 cccc
当用户选中了查看经dsp分析的某相信号时(单选),上位软件发送相应需求信号给dsp,例如:上位机发送aaaa,dsp接收到该信号后,首先发送两个字节的帧头aaaa响应上位机,上位机判断回传的数据是否为aaaa,是,则接收并显示,否,则不予理采。每次谐波权值采用32位表示,按照ieee 754 标准:
(1) 第1位为符号位,1 代表负,0代表正;
(2) 接下来用8位来表示指数部分;
(3) 接下来的23位用来表示有效数位。
帧尾为aaaa,表示一帧数据发送完毕。
2.3 plc部分
plc采用s7-200,主要完成挂件识别功能。将各变量状态通过opc技术与上位机软件通信。上位机软件组态显示电路状态,可以直观查看电路当前状态。
3 上位机软件
3.1 软件开发方式
软件采用delphi 7.0完全面向对象的可视化平台开发,它是borland公司最优秀的windows开发工具之一,它的可视化开发环境和面向对象的快速应用程序开发(rad)工具,使程序开发人员能在windows平台上快速开发出32位的windows应用程序。它采用面向对象的程序设计语言object pascal。下面对上位机软件中的关键技术加以说明。
在pci8360a的使用中有三种可行的软件开发方式:
(1) 使用厂家提供的开发软件。厂家提供的软件只能作为测试采集卡是否正常的工具。
(2) 自己动手编制程序完成底层的数集和指令的输出。此方法工作量大。
(3) 利用开发商所提供的windows标准动联接库文件。使用动态链接库有如下优点:
l应用程序编译链接后的可执行文件较小;
l应用程序所需用到的内存较小;
l对应用程某一模块的修改,更换不会影响到其它模块。本系统的开发此种方式。动态链接库主要有两种调用方法:静态调用和动态调用。
动态链接库的静态调用是最简单的调用方法。它主要使用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函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)