This topic has not been translated yet.

量测和输出系统

功能帮助 仿真工作台基础功能

CloudPSS提供了灵活的量测方法及量测/输出元件供用户使用。

电气量量测方法

对于电气量(电压、电流、功率等)的量测主要有两种方法:

例如要实现对某一电阻的电流测量可拖拽电流表与该电阻串联,并设置该电流表输出信号名称,或在该电阻的参数设置->Monitoring填写Branch Current [kA]对应的标签名称,如图所示。量测所得的信号或引脚可进一步连接至其余的控制、电气或输出元件。

电流测量
采用电流表测量电流
电流测量
采用内部量输出得到电流测量信号

信号整理

某些元件的量测信号为多维信号,例如三相交流电压源->Monitoring->3 Phase Source Votage Vector所对应的信号即为3维信号。用户若需要其中某一维的信号,如A相,则可利用控制-基础->多路信号分离进行信号拆分,详见多路信号分离元件说明。同理,若要将多路信号合并为多维信号进行绘图,则可利用控制-基础->多路信号合并进行信号合并,详见多路信号合并元件说明

信号输出

为实现对某一信号的输出显示,必须同时加入输出通道示波器分组两种元件。输出通道对输入信号进行采集并传递至示“波器分组”元件,其输入端口可以为元件的输出引脚,也可以为以#号开头的量测信号名称。注意输入引脚的维数与信号维数需匹配。单击波器分组元件可显示输出通道名称,勾选对应的名称即可在该示波器分组内显示该信号。在一个仿真工程文件内,输出通道示波器分组理论上可存在任意个,用户可根据待输出信号的类型、大小范围等合理设置“示波器分组”所勾选的信号,便于仿真结果分析。

示波器窗口类型

CloudPSS提供了四种示波器窗口类型,用户可选择每个示波器的显示模式,如下图所示。

示波器模式选择
示波器显示模式选择
一共有四种模式可选,其含义分别如下:

  1. Compressed Time Axis Window: 默认模式,时间坐标轴最大值随仿真时间变化,最小值为仿真开始时间不变,如下图所示。

    输出1号
    Compressed Time Axis Window模式演示

  2. Global Time Axis Window: 时间坐标轴最大值为仿真结束时间不变,最小值为仿真开始时间不变,如下图所示。

    输出2号
    Global Time Axis Window模式演示

  3. Moving Time Axis Window: 默认模式,时间坐标轴最大值随仿真时间变化,时间坐标轴范围为参数Window Width指示的值,如下图所示。

    Moving
    Moving Time Axis Window示波器参数
    输出3号
    Moving Time Axis Window模式演示

  4. Oscilloscope Time Axis Window: 与示波器显示模式相近,仿真窗口时间轴范围为Window Width指示的值,如下图所示。

    输出4号
    Oscilloscope Time Axis Window模式演示

结果下载

仿真运行结束后(需手动点击结束按钮),可在弹出的波形展示界面中选择数据下载,即可选择相应的数据通道进行下载。

波形展示
波形展示界面
数据下载
数据下载界面

只有保存后的算例工程才可进行数据下载。

下载的数据为经过压缩存储的数据格式。可通过以下MatLab代码进行解析。解析后每个通道的数据存储在结构体Ch_X中(X为序号,Ch_X.Name为通道名称,Ch_X.Data为通道数据。)

若解析代码报错,请重新下载最新的代码进行尝试。

将数据导入 MatLabCloudPSSDataImport.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
clear;
clc;

[fname,pname]=uigetfile('*.*','open');
filename = strcat(pname,fname);

fid = fopen(filename,'r','n','utf-8');
config = fgetl(fid);
data = fscanf(fid,'%f');
fclose(fid);


textcell = regexp(config,'<[|]>','split');

starttime = textcell{1};
tempcell = regexp(starttime, '=', 'split');
Tstart = str2double(tempcell{2});

endtime = textcell{2};
tempcell = regexp(endtime, '=', 'split');
Tend = str2double(tempcell{2});

ChannelNo = length(textcell) - 2;

dataloc = 1;
for ptr = 1: ChannelNo
loc = ptr + 2;
temp = textcell{loc};
tempcell = regexp(temp, '=', 'split');
ChannelName{ptr} = tempcell{1};
tempNum= regexp(tempcell{2}, ',', 'split');
ChannelSpTime(ptr) = str2double(tempNum{1});
ChannelPointNum(ptr) = str2double(tempNum{2});
%generate Channel
ChNo = sprintf('Ch_%d',ptr);
Channel{ptr} = ChNo;
%generate Channel Name
eval(sprintf('%s.Name = ChannelName{ptr};',ChNo));
%initialize Channel Data
eval(sprintf('%s.Data = zeros(ChannelPointNum(ptr),2);',ChNo));
%generate Timeline
deltaT = 1/ChannelSpTime(ptr);
timeline = (Tstart + deltaT):deltaT:(Tstart + deltaT*ChannelPointNum(ptr));
timeline = timeline.';
eval(sprintf('%s.Data(:,1)= timeline;',ChNo));
eval(sprintf('%s.Data(:,2)= data(dataloc:(dataloc-1)+ChannelPointNum(ptr));',ChNo));

%%
dataloc = dataloc + ChannelPointNum(ptr);
end


disp('导入完成!');

for ptr = 1: ChannelNo
fprintf('Ch_%d -> %s\n',ptr,ChannelName{ptr});
end

clear Channel ChannelNo ChannelPointNum ChannelSpTime ChNo config data dataloc deltaT endtime fid filename fname loc pname ptr starttime temp tempcell tempNum Tend textcell timeline Tstart ans