新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 電力諧波治理裝置數據采集處理系統設計

        電力諧波治理裝置數據采集處理系統設計

        作者: 時間:2011-10-11 來源:網絡 收藏
        3.3 pci8360a部分代碼

        本文引用地址:http://www.104case.com/article/178537.htm

          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 基于單個神經元的諧波檢測原理圖

          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控件用于顯示基波功率。為提高讀數據的速率,使用了線程。動態鏈接庫和防覆蓋技術的應用,使得系統更為可靠。多種采集方式同時應用,便于比較多種方法各自的優缺點。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 张北县| 固安县| 云梦县| 衡阳县| 白山市| 青岛市| 建始县| 大悟县| 安阳市| 黑龙江省| 广饶县| 土默特右旗| 石台县| 大名县| 玉屏| 垫江县| 灯塔市| 临桂县| 永济市| 县级市| 泌阳县| 乌鲁木齐市| 江门市| 偏关县| 双峰县| 什邡市| 陵水| 凤城市| 文安县| 龙南县| 淮北市| 汶上县| 清流县| 肃宁县| 梁河县| 水城县| 沛县| 乌兰察布市| 屯留县| 库尔勒市| 伊吾县|