新聞中心

        EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 電力諧波治理裝置數(shù)據(jù)采集處理系統(tǒng)設(shè)計(jì)

        電力諧波治理裝置數(shù)據(jù)采集處理系統(tǒng)設(shè)計(jì)

        作者: 時(shí)間:2011-10-11 來(lái)源:網(wǎng)絡(luò) 收藏
        3.3 pci8360a部分代碼

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

          if(zt8360a_opendevice(m_cardno) > 0) then

          //初始化卡,返回0表示打開(kāi)設(shè)備成功,m_cardno為1

          begin

          showmessage(`打開(kāi)設(shè)備失敗`);

          exit;

          end

          else

          begin

          i:=zt8360a_getcardstatus(1); //采集卡狀態(tài)

          if i>0 then

          begin

          i:=zt8360a_getlasterr(); //得到當(dāng)前錯(cuò)誤號(hào),為0表示無(wú)錯(cuò)誤

          showmessage(`錯(cuò)誤號(hào)為:`+inttostr(i));

          end;

          getmem(data,sizeof(tsomearray)*8092); //讀數(shù)據(jù)

          zt8360a_disablead(m_cardno); //禁止ad

          i:=zt8360a_getcardstatus(1);

          if i>0 then

          showmessage(`禁止ad失敗,錯(cuò)誤號(hào)為:`+inttostr(i));

          zt8360a_clearhfifo(m_cardno); //清硬件緩沖區(qū)

          i:=zt8360a_getcardstatus(1);

          if i>0 then

          i:=zt8360a_getlasterr();

          showmessage(`清硬件緩沖區(qū)失敗,錯(cuò)誤號(hào)為:`+inttostr(i));

          //showmessage(`hfifo`);

          zt8360a_clearsfifo(m_cardno); //清驅(qū)動(dòng)緩沖區(qū)

          i:=zt8360a_getcardstatus(1);

          if i>0 then

          i:=zt8360a_getlasterr();

          showmessage(`清驅(qū)動(dòng)緩沖區(qū)失敗,錯(cuò)誤號(hào)為:`+inttostr(i));

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

          //設(shè)置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); //打開(kāi)8360a中斷

          i:=zt8360a_getcardstatus(1);

          if i>0 then

          i:=zt8360a_getlasterr();

          showmessage(`打開(kāi)中斷失敗,錯(cuò)誤號(hào)為:`+inttostr(i));

          end;

          end;

          3.4 基于單個(gè)人工神經(jīng)元的自適應(yīng)檢測(cè)方法

          基于單個(gè)人工神經(jīng)元的自適應(yīng)檢測(cè)原理如圖2所示,該方法能夠?qū)ζ娲巍⑴即巍⑻囟ù巍⒖?a class="contentlabel" href="http://www.104case.com/news/listbylabel/label/諧波">諧波以及相位進(jìn)行實(shí)時(shí)準(zhǔn)確的動(dòng)態(tài)檢測(cè)。假設(shè)實(shí)際系統(tǒng)中需要檢測(cè)的最高次諧波是n次。

          (1) 檢測(cè)總諧波電流:只取sinωt和cosωt作為參考輸入。人工神經(jīng)元學(xué)習(xí)完成之后,系統(tǒng)的輸出z(t)即為總諧波電流。

          (2) 檢測(cè)奇次諧波電流:取sinωt、cosωt以及sin(2k+1)ωt、cos(2k+1)

          (3) ≤2k+1≤n,k為正整數(shù)) 等作為參考輸入。人工神經(jīng)元學(xué)習(xí)完成之后

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

          就是對(duì)應(yīng)的奇次諧波電流的值。

          (4) 檢測(cè)偶次諧波電流:取sinωt、cosωt以及sin2kωt、cos2kωt(2≤2k≤n,k為正整數(shù))等作為參考輸入。人工神經(jīng)元學(xué)習(xí)完成之后

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

          就是對(duì)應(yīng)的偶次諧波電流的值。

          (5) 檢測(cè)特定次諧波和相位:取sinωt、cosωt以及sinkωt、coskωt(k∈[2,n]且為正整數(shù))等作為參考輸入。人工神經(jīng)元學(xué)習(xí)完成之后

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

          就是對(duì)應(yīng)的k次諧波的值;wkc/wks就是k次諧波相角的正切值。

          

          圖2 基于單個(gè)神經(jīng)元的諧波檢測(cè)原理圖

          3.5 iplot控件的應(yīng)用

          iplot控件是非常優(yōu)秀的控件,能夠直觀實(shí)時(shí)顯示工業(yè)現(xiàn)場(chǎng)中的模擬信號(hào)。它功能強(qiáng)大,即使在劃分?jǐn)?shù)據(jù)時(shí)也可以縮放,滾動(dòng)。x軸,y軸和頻道數(shù)均無(wú)限制。對(duì)于不同通道信號(hào)采用顏色區(qū)分,并用文字標(biāo)注,方便觀察比較分析。能以.bmp,.emf,.jpg各種圖形格式保存信號(hào)曲線,也可以打印輸出。現(xiàn)以其中一路通道信號(hào)的顯示加以說(shuō)明。

          var

          currcount:integer;

          retcount:integer;

          i:integer;

          begin

          //設(shè)置iocomp中iplt控件的參數(shù)

          iplot.channel[0].titletext:= `u相電壓信號(hào)`; //設(shè)置通道標(biāo)題文字

          iplt1.xaxis[0].min:=0; //設(shè)置u相電壓信號(hào)x軸的起始坐標(biāo)值

          iplt1.xaxis[0].span:=2560; //設(shè)置x軸的坐標(biāo)域

          iplt1.yaxis[0].min:=-5000; //y軸表示u相電壓信號(hào)的幅值

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

          i:=zt8360a_getlasterr();

          if i>0 then

          showmessage(`錯(cuò)誤號(hào)為:`+inttostr(i));

          currcount := zt8360a_getsfifodatacount(m_cardno);

          //得到驅(qū)動(dòng)緩沖區(qū)(sfifo)中當(dāng)前有效數(shù)據(jù)的個(gè)數(shù)

          if currcount > 0 then

          begin

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

          //定時(shí)啟動(dòng)ad或外觸發(fā)啟動(dòng)ad時(shí),從驅(qū)動(dòng)緩沖區(qū)中讀8192個(gè)數(shù)到緩沖區(qū)

          for i:=0 to retcount do

          begin

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

          x:=x+1;

          end;

          end;

          end;

          3.6 線程的應(yīng)用和防止數(shù)據(jù)覆蓋

          windows提供的多媒體定時(shí)器,它的最小時(shí)間精度只能達(dá)到1ms。不能滿(mǎn)足實(shí)時(shí)數(shù)據(jù)采集的要求。在本項(xiàng)目中,采集的電壓信號(hào)頻率為50hz,每個(gè)周期為0.02秒。根據(jù)項(xiàng)目要求,每個(gè)周期需采樣256個(gè)點(diǎn),即每0.02/256=0.000078125秒讀一次。因此需要使用線程。另外,pci8360a的單通道采樣頻率最高可達(dá)500khz,即每1/500000=0.000002秒采樣一次。因此,可能出現(xiàn)數(shù)據(jù)覆蓋,即還沒(méi)有的數(shù)據(jù)被新讀入的數(shù)據(jù)覆蓋。為防止這種情況發(fā)生,需要?jiǎng)?chuàng)建緩存區(qū)。

          4 結(jié)束語(yǔ)

          在該項(xiàng)目的上位機(jī)軟件開(kāi)發(fā)過(guò)程中,數(shù)據(jù)采集是其它工作的前提。在數(shù)據(jù)采集中掌握pci8360a數(shù)據(jù)采集卡的的使用是非常重要的,它有效的利用了工機(jī)控機(jī)高速能力。在使用過(guò)程中要注意:未接信號(hào)的通道一定要接模擬地;為防止引入現(xiàn)場(chǎng)干擾,不應(yīng)該使信號(hào)引腳懸空,可以將不使用的信號(hào)引腳與模擬地短路;各選擇跳線均選出廠設(shè)置。iocomp圖形控件的使用使得實(shí)驗(yàn)的上位機(jī)界面更加美觀。iplot控件顯示各路信號(hào)波形。ispectrumdisplay,ipiechart控件用于顯示各次諧波含有率,iangularloggauge控件用于顯示基波功率。為提高讀數(shù)據(jù)的速率,使用了線程。動(dòng)態(tài)鏈接庫(kù)和防覆蓋技術(shù)的應(yīng)用,使得系統(tǒng)更為可靠。多種采集方式同時(shí)應(yīng)用,便于比較多種方法各自的優(yōu)缺點(diǎn)。


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 昆山市| 普定县| 栖霞市| 香格里拉县| 黄陵县| 扶风县| 永康市| 封开县| 苗栗县| 农安县| 乐安县| 蓬安县| 商南县| 娄烦县| 卢龙县| 临汾市| 和硕县| 兴仁县| 全州县| 岱山县| 阿巴嘎旗| 农安县| 高雄市| 武隆县| 镇江市| 大庆市| 九寨沟县| 高唐县| 札达县| 延吉市| 阿勒泰市| 栾川县| 北安市| 汨罗市| 麻栗坡县| 裕民县| 府谷县| 屏东县| 辉南县| 根河市| 龙井市|