On Tue, 27 Nov 2007, Marc van Doornik wrote: > Date: Tue, 27 Nov 2007 09:22:51 +0100 > From: Marc van Doornik <[EMAIL PROTECTED]> > Reply-To: "Enhanced Machine Controller (EMC)" > <emc-users@lists.sourceforge.net> > To: emc-users@lists.sourceforge.net > Subject: Re: [Emc-users] Paging doctor P.I.D. Guru > > Thanks for your replies, everyone. I've been away from work for the > weekend, hence the somewhat late reply. In response to some of the > comments, though: > > To begin with, the stage is basically a turn-key stage, which is why the > output resolution is so high. IIRC, it's the lowest resolution they had > available. That is, the encoders themselves have a 20 micron resolution, > but stock 200x multipliers/interpolators are connected between the > encoder output and Motenc-Lite input, thus giving 0.1 micron resolution > to deal with. The motor amplifiers etc. all come with the stage, so they > are a proper match. > > Now, I am well aware that running such a monster while not being able to > cope with the encoder counts the table COULD generate at max grunt is > very dangerous, which is exactly why I turned to you. I don't intend to > have it run at the maximum velocity of 2m/s, nor am I trying to overcome > the static friction of the bearings (which closely matches the dynamic > friction) with a large amount of velocity, that just doesn't make sense. > I was just wondering how to get rid of the hysteresis in the system. Let > me explain this here. > > In a spindle stage, there's a fairly rigid relationship between the > motor position and the position of the load. With good quality spindles, > there may be a couple of microns to 0.01 mm backlash, but that's pretty > much it. In the case of a linear motor, this doesn't quite hold true > anymore. The motor position is actually the phase position of the > magnetic field (which is obviously also the case with a standard rotary > motor, but the pole period is a lot smaller), with the only coupling > between 'motor' (field) and load being a magnetic 'spring'. So imagine > your load rolling on a set of bearings with a certain amount of > friction. Your motor is trying to move this load, but it's connected by > a spring instead of a rigid connection. In the case of our stage, the > field position can move approximately 1.2 mm (!) before the load > actually moves. With a max. velocity of 200mm/s, this is quite a long > time in case of a change of direction.
I dont see that there would be much difference between a linear and a rotary motor in this respect. Commonly PMSM's have 4 poles, I wouldn't think a linear motor would have fewer. > > What it boils down to is this question: what is the quickest way to > remove this 1~1.2mm hysteresis/backlash without being limited to 200mm/s > **for the purpose of backlash removal ONLY**. > > Fortunately, I think I've found the answer. Given the fact the motors > are directly commutated (and the field can move 'infinitely' fast) and > the friction and hysteresis are nearly constant (which I've verified by > measurement), it's possible to add backlash compensation to the > three-phase motor driver component. Right now, I am thinking about > applying an offset (0.5 * backlash) to the field phase according to the > commanded velocity/acceleration. This way, it basically gets a preload > in the proper direction, even before the PID loop actually has to worry > about it. Another way of seeing this is the 'motor' (field, actually) > jumping to the correct position for compensating the backlash in an > infinitely short time, after which it will immediately switch to the > commanded velocity, which can be safely limited to, say, 175mm/s. Are the linear motors really driven with a variable pahse relative to the reference phase? I would think its more likely that the drive phase changes abruptly (+-90 degrees from the reference phase) To generate the maximum force per applied current (Maximize IQ and minimize ID). 'Abruptly' of course limited to VBUS/L. Feedforward can help with the friction, but if the acceleration capability of the system is really high (short mechanical time constant) I would think its more important to set your servo period short enough that the PID loop can really control the position. Also I think feedforward makes runaway (if you exceed your encoder counters maximum count rate) more likely. > > Does this make sense or do I really need to get me some coffee now? ;-) > > Marc. > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2005. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users > Peter Wallace Mesa Electronics (\__/) (='.'=) This is Bunny. Copy and paste bunny into your (")_(") signature to help him gain world domination. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users