本文介绍几种comtrade格式的电力录波查看方法,并给出相关的下载链接 这几个软件的具体使用方法就不一一详述了,最后给出使用MATLAB GUI的录波数据查看步骤 具体还是要自己动手实现
几个软件实现效果图以及相关下载链接 仅供参考
- ScopeView Download
效果图:
- SFT2826 Download
效果图:
- PQDiffractor Download
效果图:
- OMICRON SVScout Download
效果图:
如果无法下载 或者无法安装 建议更换软件 上面几个总有一款适合你
—更新20181112—
工具 waveEV
该工具可以直接下载,但是由于在CSDN上是有30积分下载的,不方便直接上链接 需要的可以留言 *留下邮箱 *
—更新完毕—
最后 介绍使用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上的录波查看软件需要太多积分了 我们还是自己动手吧
欢迎讨论