C="Acts as digital angle encoder that produces pulses every time a \"slit\" is crossed. Set resolution of quantizer to spacing of two slits; set crossDetect to spacing of one slit...Klesov Systems Science ...MzF ...1/29/92"
N.15="wireLabel"*2x33<M>
n="Angle in Radians"
N.16="wireLabel"*86x47<M>
n="Set to 2x slit spacing"
N.17="wireLabel"*130x22<M>
n="Set level to slit spacing"
N.18="wireLabel"*136x58<M>
n="Angle modulo Quant resolution"
N.19="pulseTrain"(0,0.0008)*3x20
N.20="integrator"(0,1)*170x17
N.21="wireLabel"*177x10
n="theta: rad"
N.22="plot"*53x42*141x30
pt="Motor Speed Control Responses"
px="Time (sec)"
pax=0
pf=H
pc=8000
pm=10
pL.0="LPF output"
pL.1="ServoError"
pL.2="Motor Speed (rpm)"
pL.3="PD output"
N.23="gain"(9.54)*33x62
N.24="Compound"*32x52#1,1<C>
n="Offset-8"
Ms=1560,0,0,1065,0,0
N.25="summingJunction"*136x35<M>
N.26="const"(-8)*106x38<M>
N.27="date"*150x0
N.28="Compound"*46x52#1,1<MC>
n="Filter 2pole C"
Ms=1560,0,0,1065,0,0
N.29="wireLabel"*40x3<M>
n="Modified to actual values:3/22/92 MzF"
N.30="or"*35x25<M>
N.31="gain"(1)*8x25<M>
N.32="gain"(1)*11x55<M>
N.33="summingJunction"*33x46<M>
N.34="sampleHold"(0)*60x20<M>
N.35="summingJunction"*56x41<MR>
N.36="limit"(0,3)*95x21<M>
N.37=">"*142x21<M>
N.38="const"(1.5)*128x25<M>
N.39="Compound"*17x20#2,2<C>
n="PD4035"
Ms=1560,0,0,1065,0,0
N.40="unitDelay"(0)*71x40<MR>
N.41="wireLabel"*55x0<M>
n="Modified to actual values:3/22/92 MzF"
N.42="wireLabel"*27x5<M>
n="Modified to actual values:3/22/92 MzF"
N.43="variable"*73x11
n=":LPF out"
N.44="variable"*29x44
n=":LPF out"
N.45="variable"*10x62
n=":w"
N.46="variable"*53x20
n=":PD-out"
N.47="variable"*12x71<R>
n=":PD-out"
N.48="variable"*53x25
n=":PD-state"
N.49="Compound"*54x16#1,1<C>
n="LPFilter"
Ms=490,0,0,367,0,0
N.50="gain"(5)*165x22<M>
N.51="wireLabel"*160x26<M>
n="Gain=5 for 0-5 output"
N.52="summingJunction"*88x16
N.53="const"(-2.5)*76x21
N.54="gain"(0.2)*9x68
N.55="wireLabel"*26x43<M>
n="Factor: 5000 line Encdr"
N.56="gain"(397.89)*35x37<M>
N.57="wireLabel"*80x15<M>
n="Set levels (0,3): for 3 shift registers"
N.58="wireLabel"*0x15
n="Reference Source"
N.59="comment"*28x53*53x15<M>
C="Factor selected according to lines per encoder disc. Factor=Lines/(4*Pi) when quantizer set to 1 and crossDetect set to 0.5"
N.60="wireLabel"*165x20<M>
n="output pulses"
N.61="wireLabel"*142x62<M>
n="mainly for test purposes"
N.62="wireLabel"*1x15<M>
n="Reference Pulses"
N.63="wireLabel"*1x58<M>
n="Return Pulses"
N.64="wireLabel"*115x20<M>
n="state#"
N.65="gain"(1)*140x60<M>
N.66="wireLabel"*178x20<M>
n="PFD output"
N.67="wireLabel"*133x55<M>
n="PFD state# output"
N.68="wireLabel"*158x62<M>
n="used mainly for testing"
N.69="comment"*36x53*81x21<M>
C="KLESOV SYSTEMS SCIENCE (301) 593-6837Phase/Frequency Detector based on CD4035 chipLimiter determines number of register stages: set min=0, max= #stagesConstant to \">\" Block determines register used for output."
N.70="wireLabel"*128x38<M>
n="selects output register"
N.71="wireLabel"*117x5<M>
n="Klesov Systems Science: MzF 1992"
N.72="wireLabel"*77x78<M>
n="denominator constant coeff: b"
N.73="comment"*3x10*61x17<M>
C="Two Pole Active Low Pass Filter model: cG(s)= --------------------------------- s2 + a s + bwherea=16911890b=16911890c=567.225"
N.74="comment"*16x8*72x17<M>
C="Three Pole Active Low Pass Filter Model aG(s)= ------------------------------ s3 + bs2 + cs + dwhere a=6227736000b=2406.652c=8114120d=6227736000"
N.75="wireLabel"*131x0<M>
n="Klesov Systems Science: MzF 1992"
N.76="comment"*93x7*89x22<M>
C="LeadLag Network
(s + z1)(s+z2)
G(s)= k -------------------------
s(s+pl)
s2 + as + b
= k ------------------
s2 + pls
where a=130, b=1300, pl=10000, k=2 "
N.77="gain"(2.75)*133x52<M>
N.78="variable"*163x11
n=":w"
N.79="variable"*122x10
n=":SERVOERROR"
N.80="variable"*1x52
n=":SERVOERROR"
N.81="Compound"*126x17#1,1<C>
n="Motor "
Ms=1566,0,0,1090,0,0
N.82="wireLabel"*1x55<M>
n="SERVOERROR"
N.83="wireLabel"*175x55<M>
n="TORQUE"
N.84="wireLabel"*133x46<M>
n="TorqueConstant (oz in/amp)"
N.85="gain"(1)*65x52<M>
N.86="comment"*60x28*66x18<M>
C="The gain below represents conversion of SERVOERROR (volts) to Motor Current (amps) through the operation of a motor. Motor controlled via a constant current loop resulting in simple gain below. More details...Klesov Systems Science (301) 593-6837"
N.87="Compound"*2x41<C>
n="PRESS FOR INFO"
Ms=1566,0,0,1090,0,0
N.88="comment"*55x20*68x15<M>
C="KLESOV SYSTEMS SCIENCE: 19925 pole active Low pass filter used to remove reference frequency of phase detector. Use VisSim ANALYZE to see frequency response and cutoff points."
N.89="comment"*17x7*156x37<M>
C="KLESOV SYSTEM SCIENCE: (301) 593-6837 ...June 1992
Model of simple motor speed control using phase locked loop servo.System uses digital pulses and components for loop control.
This VisSim model illustrates use in modeling hybrid continuous/pulse/digital control system.Components above are simplified versions of more complex models; especially of motor.
Reference Source determines speed of motor. Nominal pulse spacing =0.0008 secPD4035: digital phase detector, see RCA manual (for example)LPFilter: 5 pole filter used to remove effects of pulses & harmonics from loopLeadLag: compensation network for phase locked loop
Motor: motor model with no dynamics and operating in constant current modeLOAD: simple inertial load. For interest, add friction or viscous damping
Digital Encoder: converts continuous motion of motor to sequence of pulse used for feed back in speed control
.IMPORTANT NOTE: Please use Euler integrator and time step of 0.00001 or less !!!NOTE: Plot set for plot max points to 8000 points. This helps prevent aliasing and allows time axis magnification so that details of loop operation can observed