How to i extract transfer function an unknown nonlinear system

control systempid controllertransfer function

I am trying to do PID control for my electroservo motor system by using nichols ziegler tuning method. My system has SSI encoder output for motor feedback mechanism. I will use this knowledge for control. According to nichols ziegler method i must know transfer function of my system. But i can not find its equation exactly. So how can i extract its transfer function? I need a methodology for this. Can i extract T.F. by using Matlab/Simulink or LAbview?

Best Answer

The concept of Transfer Function is only defined for linear time invariant systems. Nonlinear system models rather stick to time domain descriptions as nonlinear differential equations rather than frequency domain descriptions.

But in terms of current-in, speed out, your motor-encoder system is close enough to a linear system that you really don't need to concern yourself with nonlinear aspects (unless you are trying to control shaft angle to micro-radian precision!).

Perhaps the easiest way to obtain a linear model is to apply a simple proportional feedback control tuned to get the loop stable, then record input-output data to a step response. Then fit the data to the closed loop transfer function. From the closed loop transfer function you can calculate the open loop transfer function, factor out the proportional gain and voila - your motor model! A simple linear DC motor model looks like: $$\frac{\omega}{i}=\frac{K_T}{Js+B}$$ where $$K_T$$ is the torque constant of the motor, $$J$$ is the motro shaft and load inertia and $$B$$ is the linear viscous damping of the motor bearings

Perhaps your motor supplier already specifies these parameters in which case you don't have to test - you can write the model directly.

Note that even if you are using a permanent magnet synchronous motor, in feedback with a stiff current controller, the model approaches the model of the DC (brush) motor.