This is a model of a 2nd order plant with a 1st order controller. The input to the system is a step function with a delay of .02 seconds.
Use Simulate, Go.. to look at the normal run of the simulation.
Optimization setup in VisSim requires parametrUnknown and cost blocks. The objective function is generated by the user.
For this daigram, the parameterUnknown blocks are inside the controller for this diagram. Use the Simulate/Optimization Setup to optimze the gains to get a faster response and mimize overshoot.
Deselect the \"Perform Optimization \" option in Optimization setup to run the simulation without optimization."
N.17="variable"*32x56<M>
n="a1"
N.18="variable"*80x56<M>
n="a0"
N.19="variable"*32x60<M>
n="b1"
N.20="variable"*80x60<M>
n="b0"
N.21="const"(200)*47x60<M>
N.22="const"(200)*47x56<M>
N.23="const"(4)*5x56<M>
N.24="const"(1)*5x60<M>
N.25="/"*44x25<M>
N.26="variable"*35x28<M>
n="b1"
N.27="variable"*68x30<M>
n="a0"
N.28="*"*82x24<M>
N.29="variable"*69x24<M>
n="a1"
N.30="variable"*20x40<MR>
n="b0"
N.31="wireLabel"*35x51<M>
n="(4s + 200)/( s + 200)"
N.32="wireLabel"*50x0<M>
n="1st order transfer function"
N.33="summingJunction"*11x17#3,1<M>
N.34="integrator"(0,3)*80x35<M>
N.35="*"*93x32<M>
N.36="summingJunction"*108x30#3,1<M>
N.37="*"*8x38<MR>
N.38="variable"*38x55<M>
n=":a1"
N.39="variable"*56x55<M>
n=":a0"
N.40="variable"*38x58<M>
n=":b1"
N.41="variable"*56x58<M>
n=":b0"
N.42="const"(1)*50x58<M>
N.43="const"(1)*50x55<M>
N.44="const"(0)*30x55<M>
N.45="const"(0.2)*30x58<M>
N.46="/"*40x20<M>
N.47="variable"*27x22<M>
n=":b2"
N.48="variable"*80x32<M>
n=":a0"
N.49="*"*95x18<M>
N.50="variable"*78x18<M>
n=":a2"
N.51="variable"*22x41<MR>
n=":b0"
N.52="wireLabel"*25x50<M>
n="1 / ( .0114285s^2 + .2s + 1)"
N.53="wireLabel"*51x0<M>
n="2nd order transfer function"
N.54="integrator"(0,2)*62x27<M>
N.55="variable"*20x55<M>
n=":a2"
N.56="variable"*20x58<M>
n=":b2"
N.57="const"(0.0114285)*5x58<M>
N.58="const"(0)*5x55<M>
N.59="*"*41x30<MR>
N.60="variable"*51x33<MR>
n=":b1"
N.61="*"*92x25<M>
N.62="variable"*78x25<M>
n=":a1"
N.63="gain"(1)*58x20<M>
N.64="Compound"*22x30#1,1<MC>
n="2nd order xfer func"
Ms=1600,0,0,1120,0,0
N.65="summingJunction"*27x30<M>
N.66="integrator"(0,0)*62x32<M>
N.67="*"*77x30<M>
N.68="summingJunction"*103x30<M>
N.69="*"*41x38<MR>
N.70="variable"*25x56<M>
n=":a1"
N.71="variable"*50x56<M>
n=":a0"
N.72="variable"*25x61<M>
n=":b1"
N.73="variable"*50x61<M>
n=":b0"
N.74="const"(1)*38x61<M>
N.75="const"(1)*38x56<M>
N.76="const"(0)*15x56<M>
N.77="const"(0.002)*15x61<M>
N.78="/"*47x31<M>
N.79="variable"*37x33<M>
n=":b1"
N.80="variable"*62x30<M>
n=":a0"
N.81="*"*62x25<M>
N.82="variable"*47x25<M>
n=":a1"
N.83="variable"*52x40<MR>
n=":b0"
N.84="wireLabel"*28x53<M>
n="1 / ( .002s + 1)"
N.85="wireLabel"*41x0<M>
n="1st order transfer function"
N.86="integrator"(0,4)*100x32<M>
N.87="*"*90x30#3,1<M>
N.88="variable"*1x52
n="a1"
N.89="variable"*1x56
n="a0"
N.90="variable"*1x54
n="b1"
N.91="variable"*1x58
n="b0"
N.92="display"(4)*12x52
N.93="display"(1)*12x54
N.94="display"(200)*12x56
N.95="display"(200)*12x58
N.96="limit"(-10,10)*35x30<M>
N.97="display"(0.70130588409593)*44x13
N.98="merge"*46x40<M>
N.99="<"*35x35<M>
N.100="const"(0)*27x37<M>
N.101="Compound"*23x17#1,1<C>
n="objectiveFunction"
Ms=1600,0,0,1200,0,0
N.102="const"(1)*36x45<M>
N.103="const"(100)*36x42<M>
N.104="comment"*27x2*55x16<M>
C="PID Tuning objective function
Note use of overshoot penalty to minimize overshoot in final solution.