I feel dumb, like this is something I should be answering, not asking, and on top of that I don't even trust myself to ask it properly. But I am stumped.
I have two 3ph motors controlled by VFDs. Both have encoders feeding back to the VFDs, and to a PLC high speed input card. The PLC controls the VFDs via analog output. I want "Motor B" to turn some ratio to "Motor A." Not sure how to word that, but note that I didn't say "some ratio of speed." It's more like some ratio of position, even though this is a speed control application.
Right now I have both motors in a speed control loop and it's not good enough. Let's say for example I want Motor A to spin 342RPM, and motor B should spin 88.5% as fast, or 302.67RPM. I can get nearly that level of performance, but nearly isn't good enough. If motor B instead spins 304 RPM, that's 88.89%, which is entirely different than 88.5%. I can tolerate periodic +/- speed errors but I can't tolerate a steady state error. It's cumulative error that's a problem for this process, so I need cumulative/totalized error correction. I need Motor B to "catch up" to where it's supposed to be relative to Motor A.
The way I envision it, motor A would be the master, running in a simple speed control mode, while motor B would be a slave, and operating in more of a position control mode. Or maybe Motor B is a hybrid speed/position control, with 90% of reference a constant and 10% a trim from calculated error.
I have an idea how I would go about this if I wanted both motors spinning the exact same speed, but they don't go the exact same speed. Half my brain says "it's still the exact same concept" but the other half just can't see it. If they were going the exact same speed, I would have Motor A add pulses to a register, and have Motor B subtract them, and the remainder is the error and the offset to add to the scaling for Motor B's analog output. But I can't make the ol noodle see how that works for motors that aren't going the same speed.
Any ideas?
I have two 3ph motors controlled by VFDs. Both have encoders feeding back to the VFDs, and to a PLC high speed input card. The PLC controls the VFDs via analog output. I want "Motor B" to turn some ratio to "Motor A." Not sure how to word that, but note that I didn't say "some ratio of speed." It's more like some ratio of position, even though this is a speed control application.
Right now I have both motors in a speed control loop and it's not good enough. Let's say for example I want Motor A to spin 342RPM, and motor B should spin 88.5% as fast, or 302.67RPM. I can get nearly that level of performance, but nearly isn't good enough. If motor B instead spins 304 RPM, that's 88.89%, which is entirely different than 88.5%. I can tolerate periodic +/- speed errors but I can't tolerate a steady state error. It's cumulative error that's a problem for this process, so I need cumulative/totalized error correction. I need Motor B to "catch up" to where it's supposed to be relative to Motor A.
The way I envision it, motor A would be the master, running in a simple speed control mode, while motor B would be a slave, and operating in more of a position control mode. Or maybe Motor B is a hybrid speed/position control, with 90% of reference a constant and 10% a trim from calculated error.
I have an idea how I would go about this if I wanted both motors spinning the exact same speed, but they don't go the exact same speed. Half my brain says "it's still the exact same concept" but the other half just can't see it. If they were going the exact same speed, I would have Motor A add pulses to a register, and have Motor B subtract them, and the remainder is the error and the offset to add to the scaling for Motor B's analog output. But I can't make the ol noodle see how that works for motors that aren't going the same speed.
Any ideas?