⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opctest_gui.m

📁 此程序应用于Simulink和PHD 数据库之间的通讯
💻 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 + -