How to work with transfer functions that are challenging to reduce to standard form?
    14 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I am trying to model a DC motor driving a load in Simulink by implementing a transfer function block.
I model the system as follows:
From the electrical perspective, I consider a simple equivalent series circuit consisting of input voltage 
, resistance 
, inductance 
, and motor back-emf 
.
        Applying KVL around this loop, I obtain the equation   
.
From the mechanical perspective, I consider a motor torque 
, motor moment of inertia 
, damping term 
 (due to bearings), and angular displacement 
. The motor is connected to a load with moment of inertia 
 by a shaft of stiffness 
, resulting in displacement of the load by 
.
        Applying Newton's second law to 
, I obtain the equation   
        Applying Newton's second law to 
, I obtain the equation   
To couple the electrical and mechanical elements, I use 2 relations:
        1. 
    for some back-emf constant 
        2.  
     for some motor torque constant 
Eliminating 
 and 
 and solving for the transfer function 
, I obtain 

To manipulate this transfer function into a form usable in Simulink (i.e., with unity leading coefficient) will be analytically tedious. Is there an easy workaround for cases like this that I am unaware of?
I know that I can create a state-space model by substituting the coupling relations directly into the differential equations. This is usally my preferred method, but I am hoping to expand my skillset by solving the problem a different way. 
Thanks!
Edit: Figured it out! I'll leave the (really obvious) answer here in case someone searches for a similar issue.
s = tf('s')
can be used to define a transfer function as a rational expression.
Ex:
Jm = 3E-6; %% kg.m^2
Bm = 3.5E-6; %% N.m.s
J1 = 5; %% kg.m^2
R = 4; %% ohms
L = 2.75E-6; %% Henries
K1 = 1; %% N.m/rad
K = 0.0275; %% V/rad/sec OR N.m/A
s = tf('s');
sys = K/((J1*s^2+K1)/K1*(Jm*s^2 + Bm*s + K1 + (K^2/(s*L+R)))-K1)
0 Commenti
Risposte (1)
  Sabin
    
      
 il 9 Gen 2023
        As already pointed out s = tf('s') creates special variable s that you can use in a rational expression to create a continuous-time transfer function model. Using a rational expression can sometimes be easier and more intuitive than specifying polynomial coefficients.
Similar we can do it for discrete systems: z = tf('z',ts) creates special variable z that you can use in a rational expression to create a discrete-time transfer function model. To leave the sample time unspecified, set ts input argument to -1.
0 Commenti
Vedere anche
Categorie
				Scopri di più su Get Started with Control System Toolbox in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!