📄 autogui.html
字号:
0461
0462 <span class="comment">% time field</span>
0463 set(ud.TimeField,<span class="keyword">...</span>
0464 <span class="string">'String'</span>,num2str(time));
0465 <span class="comment">% process value & setpoint</span>
0466 set(ud.PV,<span class="keyword">...</span>
0467 <span class="string">'YData'</span>,[0 PVValue PVValue 0]);
0468 set(ud.PVField,<span class="keyword">...</span>
0469 <span class="string">'String'</span>,num2str(PVValue,<span class="string">'%1.4f'</span>));
0470 set(ud.RefMark,<span class="keyword">...</span>
0471 <span class="string">'YData'</span>,[SPValue+0.25 SPValue SPValue-0.25]);
0472 set(ud.SlideSP,<span class="keyword">...</span>
0473 <span class="string">'Value'</span>,SPValue);
0474 set(ud.EditSP,<span class="keyword">...</span>
0475 <span class="string">'String'</span>,num2str(SPValue,<span class="string">'%1.4f'</span>));
0476 <span class="comment">% process value & setpoint</span>
0477 set(ud.CV,<span class="keyword">...</span>
0478 <span class="string">'YData'</span>,[0 CVValue CVValue 0]);
0479 <span class="keyword">if</span> ~AUTOTUNE
0480 set(ud.SlideCV,<span class="keyword">...</span>
0481 <span class="string">'Value'</span>,CVValue);
0482 set(ud.EditCV,<span class="keyword">...</span>
0483 <span class="string">'String'</span>,num2str(CVValue,<span class="string">'%1.4f'</span>));
0484 <span class="keyword">end</span>
0485 <span class="keyword">if</span> ~AUTOTUNE & INACTIVE
0486 <span class="comment">% Autotuning process completed (update parameters and set the GUI</span>
0487 <span class="comment">% active)</span>
0488 <span class="comment">% PID parameters</span>
0489 set(ud.SlideSP,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0490 set(ud.EditSP,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0491 <span class="keyword">if</span> ~AUTOMAN
0492 set(ud.SlideCV,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0493 set(ud.EditCV,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0494 <span class="keyword">end</span>
0495 set(ud.Man,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0496 set(ud.Auto,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0497 set(ud.EditK,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0498 set(ud.EditTi,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0499 set(ud.EditTd,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0500 set(ud.Editb,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0501 set(ud.EditN,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0502 set(ud.Ident,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0503 set(ud.Tuning,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0504 set(ud.TuningParam,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0505 set(ud.Structure,<span class="string">'Enable'</span>,<span class="string">'on'</span>);
0506 set(ud.EditK,<span class="keyword">...</span>
0507 <span class="string">'String'</span>,num2str(PIDPARAMETERS(1)));
0508 set(ud.EditTi,<span class="keyword">...</span>
0509 <span class="string">'String'</span>,num2str(PIDPARAMETERS(2)));
0510 set(ud.EditTd,<span class="keyword">...</span>
0511 <span class="string">'String'</span>,num2str(PIDPARAMETERS(3)));
0512 set(ud.EditN,<span class="keyword">...</span>
0513 <span class="string">'String'</span>,num2str(PIDPARAMETERS(4)));
0514 set(ud.Editb,<span class="keyword">...</span>
0515 <span class="string">'String'</span>,num2str(PIDPARAMETERS(5)));
0516 INACTIVE = 0;
0517 <span class="keyword">end</span>
0518
0519 <span class="comment">% Force plot to be drawn</span>
0520 pause(0), drawnow
0521 <span class="comment">% end LocalPIDSets</span>
0522
0523
0524 <span class="comment">%=============================================================================</span>
0525 <span class="comment">% LocalPIDInit</span>
0526 <span class="comment">% Local function to initialize the PID GUI animation. If the animation</span>
0527 <span class="comment">% window already exists, it is brought to the front. Otherwise, a new</span>
0528 <span class="comment">% figure window is created.</span>
0529 <span class="comment">%=============================================================================</span>
0530 <a name="_sub23" href="#_subfunctions" class="code">function LocalPIDInit(RefBlock)</a>
0531 <span class="comment">% The name of the reference is derived from the name of the</span>
0532 <span class="comment">% subsystem block that owns the PID animation S-function block.</span>
0533 <span class="comment">% This subsystem is the current system and is assumed to be the same</span>
0534 <span class="comment">% layer at which the reference block resides.</span>
0535 sys = get_param(gcs,<span class="string">'Parent'</span>);
0536
0537 <span class="keyword">global</span> AUTOTUNE
0538 <span class="keyword">global</span> AUTOMAN
0539 <span class="keyword">global</span> PIDPARAMETERS
0540 <span class="keyword">global</span> IDENTIFICATION_METHOD
0541 <span class="keyword">global</span> TUNING_METHOD
0542 <span class="keyword">global</span> TUNING_PARAM
0543 <span class="keyword">global</span> TUNING_STRUCTURE
0544 <span class="keyword">global</span> INACTIVE
0545
0546 INACTIVE = 1;
0547
0548 IDENTIFICATION_METHOD = <span class="string">'STEP'</span>;
0549 TUNING_METHOD = <span class="string">'KT'</span>;
0550 TUNING_PARAM = 1.4;
0551 TUNING_STRUCTURE =<span class="string">'PID'</span>;
0552
0553 AUTOTUNE = 0;
0554 AUTOMAN = 1;
0555
0556 TimeClock = 0;
0557 PVValue = 0;
0558 SPValue = str2num(get_param([sys <span class="string">'/'</span> RefBlock],<span class="string">'Value'</span>));
0559 CVValue = 0;
0560
0561 <span class="comment">% The animation figure handle is stored in the PID block's UserData.</span>
0562 <span class="comment">% If it exists, initialize all the fields</span>
0563 Fig = get_param(gcbh,<span class="string">'UserData'</span>);
0564 <span class="keyword">if</span> ishandle(Fig),
0565 FigUD = get(Fig,<span class="string">'UserData'</span>);
0566
0567 <span class="comment">% time field</span>
0568 set(FigUD.TimeField,<span class="keyword">...</span>
0569 <span class="string">'String'</span>,num2str(TimeClock));
0570 <span class="comment">% process value & set point</span>
0571 set(FigUD.PV,<span class="keyword">...</span>
0572 <span class="string">'YData'</span>,[0 PVValue PVValue 0]);
0573 set(FigUD.PVField,<span class="keyword">...</span>
0574 <span class="string">'String'</span>,num2str(PVValue));
0575 set(FigUD.RefMark,<span class="keyword">...</span>
0576 <span class="string">'YData'</span>,[SPValue+0.25 SPValue SPValue-0.25]);
0577 set(FigUD.SlideSP,<span class="keyword">...</span>
0578 <span class="string">'Value'</span>,0);
0579 set(FigUD.EditSP,<span class="keyword">...</span>
0580 <span class="string">'String'</span>,num2str(PVValue));
0581 <span class="comment">% control variable</span>
0582 set(FigUD.CV,<span class="keyword">...</span>
0583 <span class="string">'YData'</span>,[0 CVValue CVValue 0]);
0584 set(FigUD.EditCV,<span class="keyword">...</span>
0585 <span class="string">'String'</span>,num2str(CVValue),<span class="keyword">...</span>
0586 <span class="string">'Enable'</span>,<span class="string">'off'</span>);
0587 set(FigUD.SlideCV,<span class="keyword">...</span>
0588 <span class="string">'Value'</span>,CVValue,<span class="keyword">...</span>
0589 <span class="string">'Enable'</span>,<span class="string">'inactive'</span>);
0590 <span class="comment">% auto/man selector</span>
0591 set(FigUD.Man,<span class="keyword">...</span>
0592 <span class="string">'Value'</span>,0);
0593 set(FigUD.Auto,<span class="keyword">...</span>
0594 <span class="string">'Value'</span>,1);
0595 <span class="comment">% PID parameters</span>
0596 set(FigUD.EditK,<span class="keyword">...</span>
0597 <span class="string">'String'</span>,num2str(PIDPARAMETERS(1)),<span class="keyword">...</span>
0598 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0599 set(FigUD.EditTi,<span class="keyword">...</span>
0600 <span class="string">'String'</span>,num2str(PIDPARAMETERS(2)),<span class="keyword">...</span>
0601 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0602 set(FigUD.EditTd,<span class="keyword">...</span>
0603 <span class="string">'String'</span>,num2str(PIDPARAMETERS(3)),<span class="keyword">...</span>
0604 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0605 set(FigUD.EditN,<span class="keyword">...</span>
0606 <span class="string">'String'</span>,num2str(PIDPARAMETERS(4)),<span class="keyword">...</span>
0607 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0608 set(FigUD.Editb,<span class="keyword">...</span>
0609 <span class="string">'String'</span>,num2str(PIDPARAMETERS(5)),<span class="keyword">...</span>
0610 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0611 <span class="comment">% autotuning</span>
0612 set(FigUD.Ident,<span class="keyword">...</span>
0613 <span class="string">'Value'</span>,1,<span class="keyword">...</span>
0614 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0615 set(FigUD.Tuning,<span class="keyword">...</span>
0616 <span class="string">'Value'</span>,2,<span class="keyword">...</span>
0617 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0618 set(FigUD.Structure,<span class="keyword">...</span>
0619 <span class="string">'Value'</span>,1,<span class="keyword">...</span>
0620 <span class="string">'Enable'</span>,<span class="string">'on'</span>);
0621 set(FigUD.TunParText,<span class="keyword">...</span>
0622 <span class="string">'String'</span>,<span class="string">'Ms '</span>);
0623 set(FigUD.TuningParam,<span class="keyword">...</span>
0624 <span class="string">'Style'</span>,<span class="string">'popupmenu'</span>,<span class="keyword">...</span>
0625 <span class="string">'String'</span>,[<span class="string">'1.4'</span>;<span class="string">'2.0'</span>],<span class="keyword">...</span>
0626 <span class="string">'Value'</span>,1,<span class="keyword">...</span>
0627 <span class="string">'Enable'</span>,<span class="string">'on'</span>,<span class="keyword">...</span>
0628 <span class="string">'Visible'</span>,<span class="string">'on'</span>);
0629
0630 <span class="comment">% bring it to the front</span>
0631 figure(Fig);
0632 <span class="keyword">return</span>
0633 <span class="keyword">end</span>
0634
0635 <span class="comment">% the animation figure doesn't exist, create a new one and store its</span>
0636 <span class="comment">% handle in the animation block's UserData</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -