There is a rotating object (object A) that rotates at about 50 rpm. Its rotational speed may change slowly. I need to control another object B via a variable frequency motor, so that the objects' rotational speed and angle could match.

A controller is needed for this problem. The inputs of the controller are both objects' rotational speed and angle. The output of the controller is the motor's torque, say 0~100%. There are 2 variables that needs to be controled: the rotational speed $\omega_b$ and angle $\theta_b$ of object B. The variables should meet these requirements: $|\omega_b-\omega_a|\lt 1\mathrm{rpm}$, $|\theta_b-\theta_a|\lt 30 \mathrm{deg}$

I don't know how to design the control loop. Should there be 2 PID controllers? Should the PID controllers be cascaded (picture1) or parallel (picture2)? Or should a state-space controller be used? Materials about related theories are appreciated.

  • $\begingroup$ Start with specifications such as allowable maximum of $\theta_B - \theta_A$, response time, overshoot etc. Then see if you can meet them with single PID (placed after the summing junction). Generally one starts with the simplest scheme and adds complexity only if some specifications are not met. $\endgroup$
    – AJN
    Commented Mar 2 at 3:29
  • $\begingroup$ Either one could work. In the second case, the block producing o1 might be just an integrator. In the first case, it might be just a proportional gain, since o1 is going to get integrated later anyway. But then the diff gains applied to it wouldn't be quite right. I'd lean to the second approach $\endgroup$
    – Pete W
    Commented Mar 2 at 14:54
  • $\begingroup$ As long as superposition principle applies, you should be able to tune the control blocks independently! The caveat on that statement is going to be saturation / ARW logic. As for state space, you can always use state space, but you don't have to here. There aren't any cross terms in the dynamics of the two objects. $\endgroup$
    – Pete W
    Commented Mar 2 at 14:56
  • 1
    $\begingroup$ This sounds like homework. Have you tried it with just one PID controller taking the angular difference as an error? How does that work out? You really do not want to put two integrators in parallel -- they can easily get into a fight, in which cases their outputs will diverge without limit (i.e., one tends to $-\infty$ and the other one tends to $+\infty$). $\endgroup$
    – TimWescott
    Commented Mar 3 at 0:05
  • $\begingroup$ replace $\omega_A - \omega_B$ with $\omega_A + \omega_B$ in the top input in the second image ... I didn't notice that earlier. That way two superimposed loops, one for the sum of the motions (i.e. controls the actual motion) and one for the difference of the motions (i.e. synchronizes them). And on the output side, split it back out into $T_A$ and $T_B$, accordingly. Then it won't be overdetermined, which should address TimWescott's important point. If this doesn't make sense I can draw the whole thing up. $\endgroup$
    – Pete W
    Commented Mar 3 at 18:20


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.