On 04/24/2012 08:55 PM, Dewey Garrett wrote:
> To expand on Peter's remarks:
>
> The open loop gain of a system is the product (GH) of the forward
> (G) and feedback (H) transfer functions.
>
> You can alter static scaling terms without changing the
> P,I,D values as long as the loop gain (GH) _product_ is the same.
>
> The encoder_scale (units/encoder_counts) is a reciprocal term in
> the feedack transfer function, e.g., H is proportional to
> (1/encoder_scale).
>
> Similarly, there is usually an amplifier scale factor that is
> a reciprocal term in the forward gain, e.g., G is proportional to
> 1/amplifier_scale.
>
> For a position loop with an interior velocity loop (or something
> as common as a voltage-controlled permanent magnet dc motor where
> no-load speed is approximately proportional to the input voltage),
> it is convenient to make the amplifier_scale equal to the maximum
> system output velocity in units/second.  This scaling makes the
> derivative feed forward term (FF1) nominally equal to one.
>
> For example, if you have the following position servo system
> with an 800 count encoder mounted on the motor, a 6000rpm=36000
> degs/sec maximum motor speed, and choose to scale in units of
> motor degrees:
>
>            units: degree
>    encoder_scale: 800/360 = 2.222 (counts/degree)
> amplifier_scale: 36000           (degrees/sec)
>          product: (1/2.222) * (1/36000)  = 1/80000
>
> The same P,I,D gain terms would apply for the system re-scaled
> with engineering units==revolutions with new encoder and
> amplifier scalings:
>
>            units: revolutions
>    encoder_scale: 800/1 = 800  (counts/revolution)
> amplifier_scale: 100          (revolutions/sec)
>          product: (1/800) * (1/100) = 1/80000
>
> Similarly, if there were a belt drive of 1:4 and a screw with
> 0.2 lead and you wanted the output scaled in inches traveled
> by a nut on the screw:
>
>            units: inches
>    encoder_scale: 800 counts/motorturn * 4 motorturns/screwturn * 1 
> screwturn/0.2 in
>                   =  800 * 4 / 0.2 = 16000 counts/inch
> amplifier_scale: 5 (in/sec)
>          product: (1/16000) * (1/5) = 1/80000
>
> When rescaling, deadband (in the engineering units) would
> typically also be re-adjusted as a few counts * (1/encoder_scale).
>
> Note also that the equivalence of P,I,D terms for different scalings
> assumes that the system dynamic characteristics (inertia and damping)
> are _not_ modified.
Dewey,

Thanks for the detailed reply (and Peter and Jon). I understand the 
theory, where in Linuxcnc do I set the amplifier_scale? I do not off 
hand see it as an ini file parameter or component pin / parameter.

Thanks,
Eric

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to