Comtrade格式錄波資料顯示
阿新 • • 發佈:2018-11-12
本文介紹幾種comtrade格式的電力錄波檢視方法,並給出相關的下載連結 這幾個軟體的具體使用方法就不一一詳述了,最後給出使用MATLAB GUI的錄波資料檢視步驟 具體還是要自己動手實現
幾個軟體實現效果圖以及相關下載連結 僅供參考
- ScopeView Download
效果圖:
- SFT2826 Download
效果圖:
- PQDiffractor Download
效果圖:
- OMICRON SVScout Download
效果圖:
如果無法下載 或者無法安裝 建議更換軟體 上面幾個總有一款適合你
最後 介紹使用MATLAB,利用GUI顯示comtrade錄波
第一種方法 可以使用read_comtrade函式來讀取 COMTRADE reader
這個我先不做介紹 之後可能會補充 讀者可以參考連線 下載相關檔案測試
第二種方法 利用GUI顯示錄波
圖形使用者介面(Graphical User Interface,GUI)又稱圖形使用者介面,是指採用圖形方式顯示的計算機操作使用者介面。建立Matlab GUI介面通常有兩種方式:一種是使用.m檔案直接動態新增控制元件;另一種是使用GUIDE快速的視覺化生成GUI介面。
電力系統瞬態資料交換通用格式(Common format for transient data exchange,COMTRADE)是IEEE為了解決數字故障錄波裝置、數字保護、微機測試裝置之間的資料交換問題,於1991年提出、1999年修訂和完善的一種公用的資料傳輸格式標準。該標準提供一種易於說明的資料交換通用格式,為不同廠家生產的裝置所遵循。本文采用GUIDE方法建立Matlab GUI實現Comtrade格式錄波資料顯示。
-
首先,啟動matlab,在命令視窗輸入guide。
-
在彈出的視窗選擇 Blank GUI。
-
隨後彈出的視窗中,左側是工具欄,可以拖拽;右側是展示介面。
-
左側工具欄控制元件按圖中順序依次為:
按鈕 Push Button | 滾動條 Slider |
---|---|
單選按鈕 Radio Button | 檢查框 Checkbox |
可編輯文字 Edit Text | 靜態文字 Static Text |
彈出式選單 Popup Menu | 列表框 Listbox |
切換按鈕 Toggle Button | 表格 Table |
座標 Axes | 面板 Panel |
按鈕組 Button Group | ActiveX控制元件 |
-
雙擊控制元件,在檢查器中顯示各控制元件的屬性,其中常規屬性有(以按鈕控制元件為例):
-
在展示介面新增靜態文字、座標和按鈕
-
編輯靜態文字為“Comtrade格式錄波資料顯示”;編輯座標為“fig”;編輯按鈕為“選擇檔案”。
進一步編輯按鈕的事件響應Callback,單擊圖中紅框內的按鈕:
-
跳轉到指令碼guitest.m:
-
直接修改上圖紅框中的程式碼如下:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[t,data]= ComtradeRead();
%% 顯示
axes(handles.fig); %開啟fig的控制代碼
subplot(311)
plot(t,data(:,1),'r',t,data(:,2),'g',t,data(:,3),'b')
subplot(312)
plot(t,data(:,4),'k')
subplot(313)
plot(t,data(:,5),'r',t,data(:,6),'g',t,data(:,7),'b')
其中,[t,data]=ComtradeRead()源程式如下,相關程式碼已作註釋:
function [t,data] = ComtradeRead()
%% 匯入資料
[CFGFileName,PathName] = uigetfile('*.cfg','選擇.CFG檔案'); %開啟.CFG檔案
CFGPathFile = [PathName CFGFileName]; %讀取.CFG檔案路徑和名稱
DatFileName = [CFGFileName(:,1:length(CFGFileName)-4) '.dat']; %獲得.DAT檔名稱
DATPathFile = [PathName DatFileName]; %獲得.DAT檔案路徑
%% 讀取配置檔案
CFGid = fopen(CFGPathFile);
CFG = textscan(CFGid,'%s','delimiter','\n');
fclose(CFGid);
CFG_len = length(CFG{1,1});
CFG_str = cell(size(CFG{1,1}));
for i = 1:CFG_len
temp_str = char(CFG{1,1}{i});
CFG_str{i}=textscan(temp_str,'%s','delimiter',',');
end
% 通道數目
No_Ch = str2double(cell2mat(CFG_str{2,1}{1,1}(1)));
Ana_Ch = CFG_str{2,1}{1,1}{2,1};
Ana_Ch(length(Ana_Ch)) = [];
Ana_Ch = str2double(Ana_Ch);
Dig_Ch = CFG_str{2,1}{1,1}{3,1};
Dig_Ch(length(Dig_Ch)) = [];
Dig_Ch = str2double(Dig_Ch);
% 取樣頻率
samp_rate = textscan(cell2mat(CFG_str{5+No_Ch,1}{1,1}(1)),'%f');
samp_rate = samp_rate{1,1};
% 資料長度
dat_len = textscan(cell2mat(CFG_str{5+No_Ch,1}{1,1}(2)),'%f');
dat_len = dat_len{1,1};
% 儲存格式
format=char(CFG_str{8+No_Ch,1}{1,1}(1));
%% 讀取資料檔案
DAT_id = fopen(DATPathFile);
algdat = zeros(dat_len,Ana_Ch+2);
num = zeros(dat_len,1);
time = zeros(dat_len,1);
if strcmpi(format, 'BINARY')
for i = 1:dat_len
num(i) = fread(DAT_id,1,'int32');
time(i) = fread(DAT_id,1,'int32');
row_array = fread(DAT_id,Ana_Ch+ceil(Dig_Ch/16),'int16');
for j=3:Ana_Ch+2
algdat(i,j) = row_array(j-2);
end
end
algdat(:,1) = num;
algdat(:,2) = time;
else
DAT = textscan(DAT_id, '%s', 'delimiter', '\n');
for i = 1:dat_len
DAT_str = textscan(char(DAT{1,:}(i)), '%n', 'delimiter', ',');
for j=1:Ana_Ch+2
algdat(i,j) = dat_string(j);
end
end
end
fclose(DAT_id);
t = algdat(:,2)./1000;
%% 獲得最終資料
data = zeros(dat_len, Ana_Ch);
for i = 1:Ana_Ch
j = i+2;
var_string = strcat('Ch',char((CFG_str{j,1}{1,1}{1,1})));
multiplier = str2double(CFG_str{j,1}{1,1}{6,1});
offset = str2double(CFG_str{j,1}{1,1}{7,1});
data(:,i) = algdat(:,i+2)*multiplier+offset;
end
end
- 單擊開始按鈕,執行GUI。
- 選擇相應的.cfg檔案,執行結果如下:
GUI部分參考於 西涼河葛三叔
後續補充作者測試結果
ps : csdn上的錄波檢視軟體需要太多積分了 我們還是自己動手吧
歡迎討論