《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 電力諧波治理裝置數(shù)據(jù)采集處理系統(tǒng)設(shè)計(jì)
電力諧波治理裝置數(shù)據(jù)采集處理系統(tǒng)設(shè)計(jì)
摘要: 在信息科學(xué)中,數(shù)據(jù)采集技術(shù)已經(jīng)成為其重要的一個(gè)研究問(wèn)題,它已經(jīng)與計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、傳感器技術(shù)、信號(hào)處理技術(shù)共同構(gòu)成了現(xiàn)代檢測(cè)技術(shù)的基礎(chǔ),隨著科學(xué)技術(shù)的發(fā)展和數(shù)據(jù)采集系統(tǒng)的廣泛應(yīng)用,人們對(duì)數(shù)據(jù)采集的主要技術(shù)指標(biāo),如采樣速率、分辨率、精度、輸入電壓范圍、控制方式以及抗干擾能力等方面,都提出了越來(lái)越高的要求,尤其是采樣速率,更是數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)者和使用者最關(guān)心的一項(xiàng)重要指標(biāo)。在電力系統(tǒng)自動(dòng)化領(lǐng)域,實(shí)時(shí)數(shù)據(jù)采集是至關(guān)重要的環(huán)節(jié),它直接影響整個(gè)自動(dòng)化裝置的性能。因此,提高采集速度和精度一直是電力系統(tǒng)軟件開發(fā)人員要解決的難題。
Abstract:
Key words :

1  引言

                
   在信息科學(xué)中,數(shù)據(jù)采集技術(shù)已經(jīng)成為其重要的一個(gè)研究問(wèn)題,它已經(jīng)與計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、傳感器技術(shù)、信號(hào)處理技術(shù)共同構(gòu)成了現(xiàn)代檢測(cè)技術(shù)的基礎(chǔ),隨著科學(xué)技術(shù)的發(fā)展和數(shù)據(jù)采集系統(tǒng)的廣泛應(yīng)用,人們對(duì)數(shù)據(jù)采集的主要技術(shù)指標(biāo),如采樣速率、分辨率、精度、輸入電壓范圍、控制方式以及抗干擾能力等方面,都提出了越來(lái)越高的要求,尤其是采樣速率,更是數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)者和使用者最關(guān)心的一項(xiàng)重要指標(biāo)。在電力系統(tǒng)自動(dòng)化領(lǐng)域,實(shí)時(shí)數(shù)據(jù)采集是至關(guān)重要的環(huán)節(jié),它直接影響整個(gè)自動(dòng)化裝置的性能。因此,提高采集速度和精度一直是電力系統(tǒng)軟件開發(fā)人員要解決的難題。
           
2  系統(tǒng)結(jié)構(gòu)
               
  本文介紹的phcteeq-1型電力諧波綜合治理實(shí)驗(yàn)裝置的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)示意如圖1所示。

                                                         圖1  采集系統(tǒng)結(jié)構(gòu)示意圖
               
  裝置采用電力諧波有源濾波和無(wú)源濾波的先進(jìn)理論和技術(shù),以igbt-ipm智能模塊、dsp、工控機(jī)等核心部件為硬件基礎(chǔ),進(jìn)行電力諧波綜合治理技術(shù)實(shí)驗(yàn),實(shí)時(shí)性好,實(shí)驗(yàn)效果明顯。裝置采用公共基礎(chǔ)臺(tái)+功能掛件的設(shè)計(jì)方式,結(jié)構(gòu)緊湊,集成度高,擴(kuò)展性好,能夠完成單相/三相電力諧波的產(chǎn)生、在線檢測(cè)、分析、有源濾波和無(wú)源濾波等多項(xiàng)實(shí)驗(yàn)。
           
  2.1 數(shù)據(jù)采集卡
               
  在該裝置中,模擬信號(hào)的采集主要通過(guò)數(shù)據(jù)采集卡,在這個(gè)裝置中采用的pci8360a數(shù)據(jù)采集卡:它具有32個(gè)模擬量輸入通道:ad0-ad31;輸入信號(hào)范圍:0~10v,-5v~+5v,0~20ma (0~10v為出廠默認(rèn)設(shè)置)。輸入精度為12位。單通道最大采樣頻率:500khz,多通道最大采樣頻率為200khz。啟動(dòng)轉(zhuǎn)換方式為軟件啟動(dòng)/外觸發(fā)(定時(shí))啟動(dòng)。這里將模擬量輸入單雙端選擇跳線jp2設(shè)置為單端輸入,模擬量輸入范圍選擇跳線jp1,jp3設(shè)置為雙極性。
           
  在這個(gè)實(shí)驗(yàn)裝置中需要采集的模擬信號(hào)有十四路:三相負(fù)載電流信號(hào),三相補(bǔ)償電流信號(hào),三相電源電流信號(hào),pwm波信號(hào),變壓器原邊電流信號(hào),三相電壓信號(hào)。采用dhpt、dhct高精度微型傳感器來(lái)完成數(shù)據(jù)采集的功能,采集到的數(shù)據(jù)經(jīng)處理后傳輸?shù)綌?shù)據(jù)采集卡與dsp中。傳輸?shù)綌?shù)據(jù)采集卡的信號(hào),一方面,實(shí)時(shí)動(dòng)態(tài)顯示原始信號(hào),另一方面,經(jīng)fft分析和基于單個(gè)人工神經(jīng)元的自適應(yīng)電力諧波檢測(cè)方法分析后顯示各次諧波權(quán)值。
           
  2.2 dsp部分
               
  dsp采用tms320f2812,tms320x28xx信號(hào)處理器集成了事件管理器(281x處理器),epwm, ecap, a/d轉(zhuǎn)換模塊,spi外設(shè)接口,sci通信接口,ecan總線通信模塊,看門狗,通用目的數(shù)字量io,pll時(shí)鐘模塊,多通道緩沖串口,外部中斷接口,存儲(chǔ)器及其接口,內(nèi)部集成電路(i2c)等多種外設(shè)單元,使用戶能夠以很便宜的價(jià)格開發(fā)高性能數(shù)字控制系統(tǒng)。傳輸給dsp的各種信號(hào)經(jīng)fft算法分析,將各次諧波權(quán)值發(fā)送給工控機(jī)。dsp與上位機(jī)采用232串口通信。數(shù)據(jù)幀的格式如下:
               
  a相:aaaa  1次諧波權(quán)值 3次諧波權(quán)值 5次諧波權(quán)值 … 25次諧波權(quán)值 aaaa
               
  b相:bbbb  1次諧波權(quán)值 3次諧波權(quán)值 5次諧波權(quán)值 … 25次諧波權(quán)值 bbbb
               
  c相:cccc  1次諧波權(quán)值 3次諧波權(quán)值 5次諧波權(quán)值 … 25次諧波權(quán)值 cccc
               
  當(dāng)用戶選中了查看經(jīng)dsp分析的某相信號(hào)時(shí)(單選),上位軟件發(fā)送相應(yīng)需求信號(hào)給dsp,例如:上位機(jī)發(fā)送aaaa,dsp接收到該信號(hào)后,首先發(fā)送兩個(gè)字節(jié)的幀頭aaaa響應(yīng)上位機(jī),上位機(jī)判斷回傳的數(shù)據(jù)是否為aaaa,是,則接收并顯示,否,則不予理采。每次諧波權(quán)值采用32位表示,按照ieee 754 標(biāo)準(zhǔn):
               
  (1) 第1位為符號(hào)位,1 代表負(fù),0代表正;
               
  (2) 接下來(lái)用8位來(lái)表示指數(shù)部分;
               
  (3) 接下來(lái)的23位用來(lái)表示有效數(shù)位。
               
  幀尾為aaaa,表示一幀數(shù)據(jù)發(fā)送完畢。


           
  2.3 plc部分
               
  plc采用s7-200,主要完成掛件識(shí)別功能。將各變量狀態(tài)通過(guò)opc技術(shù)與上位機(jī)軟件通信。上位機(jī)軟件組態(tài)顯示電路狀態(tài),可以直觀查看電路當(dāng)前狀態(tài)。
           
3  上位機(jī)軟件
           
  3.1 軟件開發(fā)方式
               
  軟件采用delphi 7.0完全面向?qū)ο蟮目梢暬脚_(tái)開發(fā),它是borland公司最優(yōu)秀的windows開發(fā)工具之一,它的可視化開發(fā)環(huán)境和面向?qū)ο蟮目焖賾?yīng)用程序開發(fā)(rad)工具,使程序開發(fā)人員能在windows平臺(tái)上快速開發(fā)出32位的windows應(yīng)用程序。它采用面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言object pascal。下面對(duì)上位機(jī)軟件中的關(guān)鍵技術(shù)加以說(shuō)明。
               
  在pci8360a的使用中有三種可行的軟件開發(fā)方式:
               
  (1) 使用廠家提供的開發(fā)軟件。廠家提供的軟件只能作為測(cè)試采集卡是否正常的工具。
               
  (2) 自己動(dòng)手編制程序完成底層的數(shù)集和指令的輸出。此方法工作量大。
               
  (3) 利用開發(fā)商所提供的windows標(biāo)準(zhǔn)動(dòng)聯(lián)接庫(kù)文件。使用動(dòng)態(tài)鏈接庫(kù)有如下優(yōu)點(diǎn):
               
  l應(yīng)用程序編譯鏈接后的可執(zhí)行文件較?。?br />                
  l應(yīng)用程序所需用到的內(nèi)存較??;
               
  l對(duì)應(yīng)用程某一模塊的修改,更換不會(huì)影響到其它模塊。本系統(tǒng)的開發(fā)此種方式。動(dòng)態(tài)鏈接庫(kù)主要有兩種調(diào)用方法:靜態(tài)調(diào)用和動(dòng)態(tài)調(diào)用。
               
  動(dòng)態(tài)鏈接庫(kù)的靜態(tài)調(diào)用是最簡(jiǎn)單的調(diào)用方法。它主要使用external指令來(lái)聲明外部的函數(shù)或過(guò)程。為了方便使用和維護(hù)動(dòng)態(tài)鏈接庫(kù),可以將工程中所用到的所有不同動(dòng)態(tài)鏈接庫(kù)中的函數(shù)統(tǒng)一定義在一個(gè)單元中,并且還可以在該單元中定義調(diào)用庫(kù)中函數(shù)或過(guò)程時(shí)所使用的常量或數(shù)據(jù)類型。
               
  動(dòng)態(tài)鏈接庫(kù)的動(dòng)態(tài)調(diào)用主要是使用windows api函數(shù)進(jìn)行相應(yīng)的操作,比靜態(tài)調(diào)用復(fù)雜的多。因此,這里采用動(dòng)態(tài)鏈接庫(kù)的靜態(tài)調(diào)用的方向。
           
  3.2 連續(xù)ad采集的編程思路
               
  (1)首先在程序初始化時(shí)調(diào)用 zt8360a_opendevice函數(shù),用于打開設(shè)備,只調(diào)一次即可。
               
  (2) 調(diào)用 zt8360a_disablead 函數(shù),禁止ad;調(diào)用zt8360a_clearhfifo函數(shù),清硬件緩沖區(qū)(hfifo);調(diào)用 zt8360a_clearsfifo 函數(shù),清軟件緩沖區(qū)(sfifo);調(diào)用zt8360a_aiinit 函數(shù),做一些ad初始化工作;調(diào)用 zt8360a_openirq函數(shù),打開hfifo半滿中斷。
               
  (3)在一個(gè)循環(huán)中不斷調(diào)用zt8360a_getsfifodata count判斷sfifo中數(shù)據(jù)的個(gè)數(shù),申請(qǐng)一個(gè)數(shù)組,并把這個(gè)數(shù)組中傳入 zt8360a_ aisfifo 用于接收數(shù)據(jù),把讀出的數(shù)據(jù)保存到文件或直接顯示。注意:sfifo的默認(rèn)大小為 819200,用戶要不斷讀數(shù),使sfifo有空間放入新的來(lái)自hfifo的數(shù),如果sfifo中的有效數(shù)據(jù)的個(gè)數(shù)接近819200,會(huì)使整個(gè)ad過(guò)程停止。如果想重新采集,必須重復(fù)2—3步。
               
  (4) 調(diào)用 zt8360a_closeirq函數(shù),停止采集過(guò)程。
               
  (5) 在程序退出前調(diào)用 zt8360a_closedevice函數(shù)。
           
  3.3 pci8360a數(shù)據(jù)采集卡數(shù)據(jù)采集部分代碼

                if(zt8360a_opendevice(m_cardno) <> 0) then
                //初始化數(shù)據(jù)采集卡,返回0表示打開設(shè)備成功,m_cardno為1
                begin
                    showmessage(`打開設(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);          //打開8360a中斷
                   i:=zt8360a_getcardstatus(1);
                  if i<>0 then
                   i:=zt8360a_getlasterr();
                      showmessage(`打開中斷失敗,錯(cuò)誤號(hào)為:`+inttostr(i));
                   end;
            end;
           


  3.4 基于單個(gè)人工神經(jīng)元的自適應(yīng)電力諧波檢測(cè)方法
               
  基于單個(gè)人工神經(jīng)元的自適應(yīng)電力諧波檢測(cè)原理如圖2所示,該方法能夠?qū)ζ娲巍⑴即?、特定次、總諧波以及相位進(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)曲線,也可以打印輸出?,F(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。不能滿足實(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ù)覆蓋,即還沒有處理的數(shù)據(jù)被新讀入的數(shù)據(jù)覆蓋。為防止這種情況發(fā)生,需要?jiǎng)?chuàng)建緩存區(qū)。
           
4  結(jié)束語(yǔ)
               
  在該項(xiàng)目的上位機(jī)軟件開發(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)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。