'PID Interactive Control 'For the Stamp-In-Class Industrial Control Text 'SelmaWare Solutions INIT: ' Disable New Plot Macro Startup !RSET !NPSU OFF ' Start a new plot !NEWP 'Set TCP Port !PORT TCP,131.230.190.181,9001 !MACR .OBJECTS ' Set Queue size !QSIZ 4971 ' Set analog span !SPAN 70, 120 ' Set max time !TMAX 1800 ' Set X label !XLBL Time ' Set number of samples !PNTS 2500 ' Title plot !TITL Interactive PID ' Flush old data !FLSH ON ' Show real time !RTIM ON ' snapshot/print whole form !FORM ON ' Set display information !DISP D9 G2 A0 S0 B15 R !PLOT ON !FORM ON !MACR .DCONST ENDMAC OBJECTS: !POBJ Clear !PPER 62,45 !POBJ oBack=7 ' Obj3 -- OLABEL ***** !POBJ oLabel.Obj3=77.,96.,8.,3.,Set Point,,0,9,0 ' txtT -- OLABEL ***** !POBJ oLabel.txtT=78.,88.,8.,4.,100 +/-,14,0,10,1 ' sldP -- OHSLIDER ***** !POBJ oHSlider.sldP=69.,40.,9.,3.,0,15,5 ' sldI -- OHSLIDER ***** !POBJ oHSlider.sldI=69.,22.,9.,3.,0,15,0 ' sldD -- OHSLIDER ***** !POBJ oHSlider.sldD=69.,4.,9.,3.,0,15,0 ' txtP -- OLABEL ***** !POBJ oLabel.txtP=62.,22.,7.,3.,%Integ.,14,0,8,1 ' txtxD -- OLABEL ***** !POBJ oLabel.txtxD=62.,4.,7.,3.,%Deriv.,14,0,8,1 ' txtDrv -- OLABEL ***** !POBJ oLabel.txtDrv=62.,62.,7.,3.,%Drive,14,0,8,1 ' txtE -- OLABEL ***** !POBJ oLabel.txtE=62.,81.,7.,3.,% Error,14,0,8,1 ' txtErr -- OLABEL ***** !POBJ oLabel.txtErr=62.,40.,7.,3.,%Prop,14,0,8,1 ' drpIntT -- ODROP ***** !POBJ oDrop.drpIntT=88.,32.,5.,3.8,8,0.5,1,2,3,4,5,10 ' lblIntT -- OLABEL ***** !POBJ oLabel.lblIntT=78.,33.,10.,8.,Integral Reset Time (min):,,0,9,0 ' lblBias -- OLABEL ***** !POBJ oLabel.lblBias=78.,74.,8.,4.,Bias Drive:,,0,9,0 ' drpBias -- ODROP ***** !POBJ oDrop.drpBias=86.,74.,5.,3.8,8,0,10,20,30,40,50,60,70,80,90,100,50 ' Obj23 -- OLABEL ***** !POBJ oLabel.Obj23=64.,58.,10.,3.,PID Settings,,0,10,0 ' DA_Hidden -- OBUTTON ***** !POBJ oButton.DA_Hidden=89.,8.,10.,5.,Obj26,13 !POBJ DA_Hidden.V=0 '-- Event Code !POBJ DA_Hidden.C=^DMOD 9(CR)^FREC L9,0A,T9,[(DATAVAL5),/,2.5]A,10(CR)^FREC L7,[(DATAVAL0),-,(drpR)],T7,[(DATAVAL0),+,(drpR)],14(CR) ^DMOD 13(CR)^ACHN 1,(DATAVAL0),12(CR)!POBJ Update ' swHeat -- OIMGBUT ***** !POBJ oImgBut.swHeat=83.,63.,3.,6.,\comp\switch_0.jpg,1,\comp\switch_1.jpg,1 '-- Event Code !POBJ swHeat.C=~IWAV stapler.wav ' swFan -- OIMGBUT ***** !POBJ oImgBut.swFan=90.,63.,3.,6.,\comp\switch_0.jpg,1,\comp\switch_1.jpg,0 '-- Event Code !POBJ swFan.C=~IWAV stapler.wav ' Obj29 -- OLABEL ***** !POBJ oLabel.Obj29=81.5,56.,6.,4.,Heater,,0,10,0 ' Obj30 -- OLABEL ***** !POBJ oLabel.Obj30=88.5,56.,6.,4.,Fan,,0,10,0 ' ButMark -- OBUTTON ***** !POBJ oButton.ButMark=80.,7.,10.,5.,Mark Plot,10 !POBJ ButMark.tip=Mark plot with current settings '-- Event Code !POBJ ButMark.C=^TEXT T8,38a,.8,0,P:(sldP)\nI:(sldI)\nD:(sldD)\nT:(drpIntT)\nB:(drpBias) ' SldT -- OHSLIDER ***** !POBJ oHSlider.SldT=77.,93.,15.,5.,70,120,100 '-- Event Code !POBJ SldT.C=!POBJ TxtT=(sldT) +/- ' drpR -- ODROP ***** !POBJ oDrop.drpR=86.,88.,5.,4.1,9,.5,1,2,3,4,5,2 ' Settings -- OCHECK ***** !POBJ oCheck.Settings=80.,18.,30.,4.8,Update Settings,0,,0,12 !POBJ Settings.tip=Check to update Stamp with settings '-- Event Code !POBJ Settings.C=!IFTH (Settings),=,0,!BELL(CR)!IFTH (drpAM),=,1,!POBJ butMark.Run ' plotP -- OPLOT ***** !POBJ oPlot.plotP=0.,55.,62.,18.,-100,100,A,A,2,1,1,Seconds, !POBJ plotP.U=(DATAVAL2) !POBJ plotP.tip=Proportional Drive !POBJ plotP.F=Arial,8,1,0 ' PlotI -- OPLOT ***** !POBJ oPlot.PlotI=0.,37.,62.,18.,-100,100,A,A,3,1,1,Seconds, !POBJ PlotI.U=(DATAVAL3) !POBJ PlotI.tip=Integral Drive !POBJ PlotI.F=Arial,8,1,0 ' PlotD -- OPLOT ***** !POBJ oPlot.PlotD=0.,19.,62.,18.,-100,100,A,A,4,1,1,Seconds, !POBJ PlotD.U=(DATAVAL4) !POBJ PlotD.tip=Derivative Drive !POBJ PlotD.F=Arial,8,1,0 ' GAUP -- OMETER ***** !POBJ oMeter.GAUP=62.,55.,15.,15.,-100,100,-100,100 !POBJ GAUP.U=(DATAVAL2) ' GAUI -- OMETER ***** !POBJ oMeter.GAUI=62.,37.,15.,15.,-100,100,-100,100 !POBJ GAUI.U=(DATAVAL3) ' GAUD -- OMETER ***** !POBJ oMeter.GAUD=62.,19.,15.,15.,-100,100,-100,100 !POBJ GAUD.U=(DATAVAL4) ' GAUDR -- OMETER ***** !POBJ oMeter.GAUDR=62.,77.,15.,15.,0,100,0,100 !POBJ GAUDR.U=(DATAVAL5) ' GAUE -- OMETER ***** !POBJ oMeter.GAUE=62.,96.,15.,15.,-100,100,-100,100 !POBJ GAUE.U=(DATAVAL1) ' drpAM -- OCHECK ***** !POBJ oCheck.drpAM=80.,12.,15.,5.,Auto Mark Plot,0,,0,8 !POBJ drpAM.tip=Check to indicate updated settings on plot ENDMAC DCONST: !CLRC @RECT 0A,0A,100A,40A, 2 @TEXT 102A,0A,1,2,0% @TEXT 101A,20A,1,2,Drive @TEXT 101A,40A,1,2,100% @TEXT 72A,105A,1,10,Drive @TEXT 80A,105A,1,9,Fan @TEXT 93A,105A,1,12,Set Point @TEXT 86A,105A,1,0,Actual ENDMAC 'PID Interactive Control 'For the Stamp-In-Class Industrial Control Text 'SelmaWare Solutions