I am trying to identify a plant model for a motor position control using MATLAB System identification toolbox.

If it is a speed control example the data set can be generated easily. In this a case it will be a set of pwm values and the corresponding speed values.

But what will be the input and output parameters for a motor position control? If I have a motor with an encoder and use different pwm values for generating data set, it will start to rotate continuously (or saturate if there is a mechanical stopper) after certain pwm values. Since my aim is to implement something similar to a hobby servo which has single rotation, this method is not useful.

The closest solution I found so far is given below


But I don’t know how to modify this setup for a DC geared motor with encoder because it doesn’t have a mechanical stopper and motor will start to rotate continuously after certain PWM limits indata acquisition phase.


System identification is used to model the system. A hobby servo has a built-in position regulator.

If the system you are using does not have a position regulator, then you can't expect the system identification to tell you how to make a position regulator, or how a position regulator works, or what inputs are needed to achieve a particular position. That's not what your system does.

It sounds like your system is a motor. Motors turn. You can use system identification to try to determine parameters of your motor like rotating inertia, response bandwidth/time constants, etc., but you're not going to get anything out of it relating to position or position regulation.

You can use the results of your motor identification to build a better position regulator, or you can try to build a position regulator first and include that in your system when you perform the system identification, but again that's not what your system currently does.

  • $\begingroup$ I was working on your inputs. You mentioned that we can use system identification to try to determine parameters of your motor like rotating inertia, response bandwidth/time constants, etc. So is it possible to use a set of pwm values and corresponding speed values to come up with a plant model and build an external PID controller to implement position control on that model. $\endgroup$ – Supreeth Nov 5 '18 at 3:24
  • $\begingroup$ Does it mean that a model for motor position control and motor speed control is exactly same (because it was generated from physical parameters of the motor) and only the controller part determines what kind of action to perform(position control, speed control, torque control etc.)? $\endgroup$ – Supreeth Nov 5 '18 at 3:33
  • $\begingroup$ @Supreeth - Regarding your first comment, yes! That's exactly what system identification is for. You perform the system identification "in the field," to identify the behavior and response of the thing you'd like to control. With that data, you can go back "to the lab" and try to develop a model whose behavior mimics that of the system you've identified. With a model, you can then develop a controller. You test the controller + system model in simulation, and once you've got a controller you're satisfied with then you go "back to the field" to implement your controller on the real system. $\endgroup$ – Chuck Nov 5 '18 at 14:05
  • $\begingroup$ Regarding your second comment, yes also! If you're using a motor, that motor's rotor inertia doesn't change because you're using it for speed control instead of position control. Its armature resistance doesn't change, the friction in the bearings doesn't change based on the control mode, etc. The only thing that changes with differing control modes is the controller itself! Your controller will have new inputs- a speed reference or a position reference, and should have new feedbacks as well (speed or position feedback). Your control gains will (almost certainly) be different, too. $\endgroup$ – Chuck Nov 5 '18 at 14:09

Your Answer

