📄 tempsimumain.m
字号:
if get(handles.checkboxGrid,'value')
set(handles.axes1,'XGrid','on','YGrid','on');
else
set(handles.axes1,'XGrid','off','YGrid','off');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 单条带钢仿真 结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 多条带钢仿真 开始
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif get(handles.btnMultiSimu,'value')==1
% 判断是否新图显示
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if get(handles.checkboxFigure,'value')
hNew=figure('Name',['绘制子图 带钢数: ',get(handles.editStripNo,'String')],...
'NumberTitle','off');
axes('parent',hNew);
set(gcf,'color','w');
else
axes(handles.axes1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 仿真的带钢序号及仿真的带钢数目
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
sign=handles.stripListVal1:handles.stripListVal2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 初始化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Temp_simu=zeros(length(sign),16);
Temp_act=zeros(length(sign),1);
Temp_pre=zeros(length(sign),16);
Temp_deform_inc=zeros(length(sign),7);
Temp_heat_trans=zeros(length(sign),7);
Temp_radiat=zeros(length(sign),8);
Temp_cooling=zeros(length(sign),8);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if isequal(get(handles.UIMenuModel1,'checked'),'on')
% 进行现场模型仿真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
progressbar % 调用自制的进度条
tt=0;
for iflag=sign,
tt=tt+1;
pause(0.1)
[Temp_simu(tt,:),Temp_act(tt,:),Temp_pre(tt,:),...
Temp_deform_inc(tt,:),Temp_heat_trans(tt,:),...
Temp_radiat(tt,:),Temp_cooling(tt,:)]=...
TempSimuCalc(iflag,Mparam,Eparam,data);
progressbar(tt/length(sign)) % 更新进度条
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif isequal(get(handles.UIMenuModel2,'checked'),'on')
% 切换至差分模型目录
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
path_pwd=handles.PathDefault;
path=strcat(handles.PathDefault,'\DiffModel');
cd(path);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 进行差分模型仿真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
progressbar % 调用自制的进度条
tt=0;
for iflag=sign,
tt=tt+1;
[Temp_simu(tt,:),Temp_act(tt,:),Temp_pre(tt,:),...
Temp_deform_inc(tt,:),Temp_heat_trans(tt,:),...
Temp_radiat(tt,:),Temp_cooling(tt,:)]=...
TempDiffSimul(iflag,data);
progressbar(tt/length(sign)) % 更新进度条
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cd(path_pwd);
end
% 进行离线自适应
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if isequal(get(handles.UIMenuSelfAdapt,'Checked'),'on')
Temp_adapt=selfadapt(Temp_act,Temp_simu(:,16));
Temp_simu(:,16)=Temp_adapt;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 按观测点选择作图显示
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
str = {'RDT','F1入','F2入','F3入','F4入','F5入',...
'F6入','F7入','FDT'};
[s_Temp,v_Temp] = listdlg('name','多条带钢的各轧制点温度','PromptString','选择:',...
'SelectionMode','single','ListString',str);
if v_Temp
switch s_Temp
case 1
plot(Temp_simu(:,1),'-*b');
% axis([-inf,inf,min(Temp_simu(:,1))-50,max(Temp_simu(:,1))+50]);
title('粗轧出口温度','fontweight','bold','fontsize',10);
case 2
plot(Temp_simu(:,2),'-*b');
% axis([-inf,inf,min(Temp_simu(:,2))-50,max(Temp_simu(:,2))+50]);
title('F1入口温度','fontweight','bold','fontsize',10);
case 3
plot(Temp_simu(:,4),'-*b');
% axis([-inf,inf,min(Temp_simu(:,4))-50,max(Temp_simu(:,4))+50]);
title('F2入口温度','fontweight','bold','fontsize',10);
case 4
plot(Temp_simu(:,6),'-*b');
% axis([-inf,inf,min(Temp_simu(:,6))-50,max(Temp_simu(:,6))+50]);
title('F3入口温度','fontweight','bold','fontsize',10);
case 5
plot(Temp_simu(:,8),'-*b');
% axis([-inf,inf,min(Temp_simu(:,8))-50,max(Temp_simu(:,8))+50]);
title('F4入口温度','fontweight','bold','fontsize',10);
case 6
plot(Temp_simu(:,10),'-*b');
% axis([-inf,inf,min(Temp_simu(:,10))-50,max(Temp_simu(:,10))+50]);
title('F5入口温度','fontweight','bold','fontsize',10);
case 7
plot(Temp_simu(:,12),'-*b');
% axis([-inf,inf,min(Temp_simu(:,12))-50,max(Temp_simu(:,12))+50]);
title('F6入口温度','fontweight','bold','fontsize',10);
case 8
plot(Temp_simu(:,14),'-*b');
% axis([-inf,inf,min(Temp_simu(:,14))-50,max(Temp_simu(:,14))+50]);
title('F7入口温度','fontweight','bold','fontsize',10);
case 9
plot(Temp_simu(:,16),'.-b'),hold on,plot(Temp_pre(:,16),'.-g'),hold on,plot(Temp_act(:,1),'.-r'),hold off;
% axis([-inf,inf,min(Temp_simu(:,16))-50,max(Temp_simu(:,16))+50]);
legend('仿真值', '预计算','实际值');
title('精轧温度仿真比较','fontweight','bold','fontsize',10);
end
xlabel('带钢数','FontSize',9);
ylabel('温度(`C)','FontSize',9);
if get(handles.checkboxGrid,'value')
grid on;
else
grid off;
end
if get(handles.checkboxHold,'value')
hold on;
else
hold off;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 多条带钢仿真 结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
% 单条或多条带钢仿真 结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 仿真结果处理存入‘精轧温度计算’控件的Userdata
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FM.Temp_simu=Temp_simu;
FM.Temp_act=Temp_act;
FM.Temp_pre=Temp_pre;
FM.Temp_deform_inc=Temp_deform_inc;
FM.Temp_heat_trans=Temp_heat_trans;
FM.Temp_radiat=Temp_radiat;
FM.Temp_cooling=Temp_cooling;
assignin('base','FMSimResult',FM);
set(hObject,'Userdata',[]);
set(hObject,'Userdata',FM);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% '查看结果' 子窗体的控件设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 单条带钢查看
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if get(handles.btnMultiSimu,'value')==0
% '查看结果' 子窗体的控件设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sresult.stripNo=data(sign,1);
Sresult.stripTime='2005-01-19';
Sresult.width=data(sign,61);
Sresult.x_eps=data(sign,7:13);
Sresult.thick=data(sign,14:21);
Sresult.x_force=data(sign,44:50);
Sresult.x_roll_torque=data(sign,37:43);
Sresult.rf_time=data(sign,4);
Sresult.water_status=dec2bin(data(sign,60));
Sresult.xva=data(sign,6);
Sresult.RDT=data(sign,2);
Sresult.F1=Temp_simu(2);
Sresult.F2=Temp_simu(4);
Sresult.F3=Temp_simu(6);
Sresult.F4=Temp_simu(8);
Sresult.F5=Temp_simu(10);
Sresult.F6=Temp_simu(12);
Sresult.F7=Temp_simu(14);
Sresult.FDT=Temp_simu(16);
assignin('base','Sresult',Sresult);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 多条带钢查看
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif get(handles.btnMultiSimu,'value')==1
Sresult.N=abs(handles.stripListVal2-handles.stripListVal1)+1;
Sresult.minSimu=min(Temp_simu(:,16));
Sresult.maxSimu=max(Temp_simu(:,16));
Sresult.meanSimu=mean(Temp_simu(:,16));
Sresult.stdSimu=std(Temp_simu(:,16));
Sresult.minAct=min(Temp_act(:,1));
Sresult.maxAct=max(Temp_act(:,1));
Sresult.meanAct=mean(Temp_act(:,1));
Sresult.stdAct=std(Temp_act(:,1));
Sresult.maxAbsError=max(abs(Temp_act(:,1)-Temp_simu(:,16)));
Sresult.maxRelError=100*max(abs(Temp_act(:,1)-Temp_simu(:,16))./Temp_act(:,1));
Sresult.mse=sqrt(mse(Temp_act(:,1)-Temp_simu(:,16)));
% Sresult.mse=sqrt((Temp_act(:,1)-Temp_simu(:,16))'*(Temp_act(:,1)-Temp_simu(:,16))/Sresult.N);
Sresult.mae=mae(Temp_act(:,1)-Temp_simu(:,16));
assignin('base','Sresult',Sresult);
% Sresult.N=abs(handles.stripListVal2-handles.stripListVal1)+1;
% Sresult.minSimu=min(Temp_simu(:,16));
% Sresult.maxSimu=max(Temp_simu(:,16));
% Sresult.meanSimu=mean(Temp_simu(:,16));
% Sresult.stdSimu=std(Temp_simu(:,16));
%
% Sresult.minAct=min(Temp_act(:,16));
% Sresult.maxAct=max(Temp_act(:,16));
% Sresult.meanAct=mean(Temp_act(:,16));
% Sresult.stdAct=std(Temp_act(:,16));
%
% Sresult.maxAbsError=max(abs(Temp_act(:,16)-Temp_simu(:,16)));
% Sresult.maxRelError=100*max(abs(Temp_act(:,16)-Temp_simu(:,16))./Temp_act(:,16));
% Sresult.mse=mse(Temp_act(:,16)-Temp_simu(:,16));
% % Sresult.mse=sqrt((Temp_act(:,16)-Temp_simu(:,16))'*(Temp_act(:,16)-Temp_simu(:,16))/Sresult.N);
% Sresult.mae=mae(Temp_act(:,16)-Temp_simu(:,16));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%计算精轧区温度变化 结束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in btnDeform.
function btnDeform_Callback(hObject, eventdata, handles)
% hObject handle to btnDeform (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%计算变形温升 开始
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 读入已计算的结果
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FM=get(handles.btnFMTempSimu,'userdata');
Temp_deform_inc=FM{1}.Temp_deform_inc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 单条或多条带钢仿真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 判断是否新图显示
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if get(handles.checkboxFigure,'value')
hNewR=figure;
axes('parent',hNewR);
set(gcf,'color','w');
else
axes(handles.axes1);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if get(handles.btnMultiSimu,'value')==0
% 单条带钢仿真 开始
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sign=handles.stripListVal;
%
% if isequal(get(handles.UIMenuModel1,'checked'),'on')
% % 进行非差分模型仿真
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% [Temp_simu,Temp_act,Temp_pre,Temp_deform_inc,Temp_heat_trans,Temp_radiat,...
% Temp_cooling]=TempSimuCalc(sign,Mparam,Eparam,data);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% elseif isequal(get(handles.UIMenuModel2,'checked'),'on')
% path_pwd=handles.PathDefault;
% path=strcat(handles.PathDefault,'\DiffModel');
% cd(path);
% % 进行差分模型仿真
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% [Temp_simu,Temp_act,Temp_pre,Temp_deform_inc,Temp_heat_trans,Temp_radiat,Temp_cooling]=TempDiffSimul(sign,data);
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% cd(path_pwd);
% end
bar(Temp_deform_inc(1,:));
ylabel('温度(`C)','FontSize',9);
if get(handles.checkboxGrid,'value')
grid on;
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -