📄 opctest_gui.m
字号:
%在运行此程序:opctest 之前应该运行程序:opc_plant_initial
%运行opctest之后再运行opctest_control
%function opctest;
%clear;
open('D:\黄勇\GUI OPC\opckeyunxing\opctest_plant_GUI.mdl')
client_obj_da = opcda('server211', 'OPC.PHDServerDA.1');
connect(client_obj_da );
client_grp_obj = addgroup(client_obj_da , 'group');
%以下部分可做修改
client_item_obj = additem(client_grp_obj, {'EX1U','EX1Y'});
loop_flag=1;Ts_PHD=5;T_workspace=1;
%不懂
%**************************************************************************
%**************************************************************************
%模块输入初始化
xInitial=0; %系统初态
set_param('opctest_plant_GUI/plant_Delay', 'InitialInput','0');%延时模块初值
loop_figure_data_flag=1;
%不懂
%**************************************************************************
%**************************************************************************
%时实仿真循环
while loop_flag>0
tic;
u_plant_preobj = read(client_item_obj(1));
pause(3);
u_plant_obj = read(client_item_obj(1));
u_plant_prevalue=double(u_plant_preobj.Value);
u_plant_value=double(u_plant_obj.Value);
u_plant_delt=u_plant_value-u_plant_prevalue;
sim('opctest_plant_GUI');
plant_out_value=plant_out(length(plant_out'),1)
%plant_out在哪,是输出吗?
write(client_item_obj(2),plant_out_value);
xInitial=xFinal;
set_param('opctest_plant_GUI/plant_Delay', 'InitialInput','plant_out_value');
%r1 = read(client_item_obj);
loop_figure_data_flag=loop_figure_data_flag+1;
%*******************************
%循环次数为100,若超过100,则loop_figure_data_flag=1,从新开始计数画图
if loop_figure_data_flag==100
loop_figure_data_flag=1;
end;
%********************************
pause(Ts_PHD-toc);
end;
%不懂
%**************************************************************************
%**************************************************************************
%作图
data_length=1000;figure_flag_plant=0;
data_vector=zeros(1,data_length);
u_plant_delt_vector=zeros(1,data_length);
if figure_flag_plant==1
length_flag=rem(loop_flag,data_length);
u_plant_delt_vector(length_flag)=u_plant_delt;
data_vector(length_flag)=plant_out_value;
figure(2);
hold on;
subplot(2,1,1);
plot(1:length_flag,data_vector(1:length_flag),'r');
xlabel('length_flag');
ylabel('y');
title('实际输出y' );
subplot(2,1,2);
plot(1:length_flag,u_plant_delt_vector(1:length_flag),'g');
xlabel('length_flag');
ylabel('u_plant_delt');
title('增量输入u_plant_delt' );
hold off;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -