Hi all, I have been managing with a work-around, but am now getting back to this. I am working from the below response from Dewey from a few months back.
It looks to me from the below response that encoder_scale maps to INPUT_SCALE and amplifier_scale to OUTPUT_SCALE under the axis parameters in the ini file. My encoder gives me 428 counts per degree or 157680 counts per revolution, so I changed INPUT_SCALE to 157680 and OUTPUT_SCALE to 1/360 or 0.002777. In the event I had OUTPUT_SCALE inverted, I also tried setting it to 360. Both result in actual movement much larger than that commanded. My question is, am I adjusting the correct parameters, or is it something else that I should be adjusting. Thanks, Eric 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 Garrett ---------------------------------------------------------------------------- -- 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 Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users ------------------------------------------------------------------------------ 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 Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users