## Modeling of DC Motor. Problem with DiffEquation...

Hello,

I'm modeling the simple DC motor system in Maple.
The equations describing the system;

eq1:=J*diff(theta(t),t,t)+b*diff(theta(t),t)=K*i(t):
eq2:=L*diff(i(t),t)+R*i(t)=V(t)-K*diff(theta(t),t):
DCMotor:=[eq1,eq2];

First, I create the system using DiffEquation:

Sys:=DiffEquation(DCMotor,[V(t)],[theta(t)]);

And now I have problem. The input var is V(t) (input voltage) and the output var is theta(t) (position of the rotor).

But I wont to have in output var not position of the rotor but speed of the fotor - diff(theta(t),t)

How to set output var for diff(theta(t),t) (the speed of the motor)?

Best

Rariusz

## Excitation-response diagram ...

Hi dear friends. Recently, I am troubled by a question of how to draw an exictation-response diagram in Maplesoft.

I would like to draw an excitation-response diagram with following equation, Ω is greatrer or equal to 0:

(0.1299e-4*(17.1740*Omega^2-1.570200000*10^6))*Omega^2/(-196.1270800*Omega^4+3.954121290*10^7*Omega^2-1.877174100*10^12);

But, when I would like to use Bode diagram in Maple to draw it, it looks very differently.

Maybe I use a wrong function to draw it.

In the book, the diagram takes the form:

Thanks a lot for taking a look.

## Multiple plot with DiscretePlot?...

with(DynamicSystems)

T:= a vector

Iwant to make a single plot of:

DiscretePlot(T,x1,stile=stair); DisdretPlot(T,x2,stile=stair)

The usal way: DiscreePlot(T,[x1,x2]... ain't work

Thansk for helping

## BodePlot function doesn't like inputs with units...

I have been having problems with using the BodePlot function with units:

R1 := 18.2*10^3*Unit('Omega');

R2 := 10^3*Unit('Omega');

C1 := 470*10^(-12)*Unit('F');

C2 := 4.7*10^(-9)*Unit('F');

# wo is in hertz

wo := 1/sqrt(R1*R2*C1*C2);

# Q is unitless

Q := wo*R1*R2*C2/(R1+R2)

with(DynamicSystems);

sys := TransferFunction(wo^2/(s^2+wo*s/Q+wo^2));

This is the error message I got:

Error, (in Units:-Standard:-+) the units `1` and `Hz` have incompatible dimensions

I think the problem is that the BodePlot function doesn't expect 'wo' to have units.

So I tried to work around the issue by using the loglogplot but it doesn't seem to like

complex function even when I used abs to find the magnitude (with or without units).

Any workaround is appreciated.

## Maple does not support symbolic matrix for Grammia...

I am really baffled by this. I was starting to think Maple control system is good, only to find I get an error when I try to obtain the controllability Gammian for a state space system which is time varying.  Maple only seem to support a non-time varying A,B,C,D for this function.  Can someone please confirm this, or may be I am doing something wrong?

I was trying to verify my hand solution for a HW using Maple.

----------------------
restart:
alias(DS=DynamicSystems):
A:=Matrix( [[2,-exp(t)],[exp(-t),1]]);
B:=Matrix([[0],[1]]);
sys:=DS:-StateSpace(A,B);  #created OK
m:=DS:-Grammians(sys);

Error, (in DynamicSystems:-Grammians) symbolic value(s) in model: t, exp(t), exp(-t)
---------------------------------------------------

If the system is time invariant, then it works. Example from help:

-------------------------------------------------
restart:
alias(DS=DynamicSystems):
aSys := DS:-StateSpace( <<-5,3>|<3,-4>>, <<2,3>>, <<1,0>|<0,1>>, <<0,0>> ):
m:=DS:-Grammians(aSys);
---------------------------------

The main advantage of using computer algebra system for control system is to be able to do things using symbolic which is much more powerful than just numerical computation as with Matlab. There is nothing in the above linked to help page that says Maple does not support time varying state space for this function (unless I missed it).

Is it possible to add support for LTV in Maple 19?

ps. note that the ControllabilityMatrix works on LTV:

m:=DS:-ControllabilityMatrix(sys); #OK

But I wanted the Grammian.

## Is there a problem with SSTransformation? How to o...

I am not sure I know what is going on. I expected to obtain the controllable canonical form in this example, but I am not. May be I am not using it correctly.

Given A,B, I wanted to transfer the state space to controllable canonical form

http://www.maplesoft.com/support/help/Maple/view.aspx?path=DynamicSystems%2FSSTransformation

In this form, the A matrix will have 1 on the super diagonal, and the last row will have the coefficients of the charaterestic polynomial in reverse order with a minus sign. The B matrix will have all zeros, except for the last entry.  This is what the example on the above page actually shows.

But when I tried it on my A,B, I do not get this form for the new B matrix. Here is a MWE

restart;
with(DynamicSystems):
A:=Matrix([[0,0,1,0],[0,0,0,1],[-2,-1,0,0],[1,-1,0,0]]);
B:=Matrix([[0],[0],[1],[0]]);
C:=Matrix([[0,0,0,0]]):
D0:=Matrix([[0]]):
sys:=StateSpace(A,B,C,D0): #just to see the polynomial
CharacteristicPolynomial(sys, s);

SSTransformation(A,B,C,D0,form=ControlCanon,output=['A','B']);

The above should be

I am sure I am doing something wrong, but what?

Maple 18.01, windows 7

## why Maple control system do not allow one to creat...

If the differential equation has second derivative in the RHS (i.e. in the input), then `StateSpace` gives an error.

I might not be entering it correctly? But if I first create a `TransferFunction` from the ODE, then it works.

Why?

Here is the code:

------------------
restart;
alias(DS=DynamicSystems):
ode2:=diff(y(t),t\$2)+2*diff(y(t),t)+3*y(t)=diff(u(t),t)+u(t);
sys:=DS:-StateSpace(ode2,'outputvariable'=[y(t)],'inputvariable'=[u(t)]):
-------------------------
Error, (in DynamicSystems:-StateSpace) unable to convert the differential equation system:  invalid form of derivative in differential equation

But now if I do this, it works:

---------------------------------------------
restart;
alias(DS=DynamicSystems):
ode2:=diff(y(t),t\$2)+2*diff(y(t),t)+3*y(t)=diff(u(t),t)+u(t);
sys:=DS:-TransferFunction(ode2,'outputvariable'=[y(t)],'inputvariable'=[u(t)]):
sys:=DS:-StateSpace(sys);
-----------------------------------------------

Maple 18.01 on windows 7.

## How to plot response of more than one system in sa...

This is a typical problem of what I find when learning DynamicSystems. Basically, I create number of systems by changing one paramter (the damping ratio in this case) and want to plot the unit step of all of them on the same plot to compare the effect of the damping ratio.

I setup the TransferFunction, used Simulate to obtain the response of each to the same input. The problem comes when I want to plot the respones.  I have to use plot[odeplot] it seems. But this only like to take one response at a time.

I can't use plot() since I do not have the actual function of the response in time. Unless I try to extract the differential equation from the sytem object, solve that and get a solution then use plot(). But if I do all of this, what do I need DynamicSystems in first place?

I will show what I tried. I am sure there is some way to do this in Maple I just do not know yet the correct function or setup.

restart;
alias(DS=DynamicSystems);
H:=(w,zeta)->w^2/(s^2+2*zeta*w*s+w^2);
sys:= (w,zeta)->DS:-TransferFunction(H(w,zeta)):
sol:=seq(DS:-Simulate(sys(1,zeta),Heaviside(t)),zeta=0.1..1.2,.2):

Now I want to plot all the solutions in sol. I wanted to use plot(...) only to be able to obtain the automatic coloring of each solution.

If I try to use plots[odeplot], it works, but only on one at a time:

plots[odeplot](sol[1],t=0..10);

If I try this, it fails:

plots[odeplot]([sol],t=0..10);

I can get each plot separatly and then use display() but then lose the automatic coloring of the lines:

plots:-display(seq(plots[odeplot](sol[i],t=0..10),i=1..nops([sol])));

I am looking for the above plot, but have the lines each colors differently. I also need to figure how to add legend later. But one step at a time. I can't hard code the color in the plots[odeplot] call itself, since I do not know what color to give each line. plot([....],t=0..) allready does this automatically. But I can't use it!

Just to give an idea of the kind of plot I am trying to obtain, here it is in Mathematica:

sys = TransferFunctionModel[w^2/(s^2 + 2 z*w*s + w^2), s];
zValues = Range[.2, 1.2, .2];
fun = OutputResponse[sys /. {w -> 1, z -> #}, UnitStep[t], {t, 0, 12}] & /@ zValues;
Plot[Evaluate@Flatten@Table[fun[[i]], {i, 1, Length[fun]}], {t, 0, 12}, Frame -> True, PlotRange -> {{0, 12}, {-.1, 1.7}}]

## how to make bodeplot small without having the oute...

When I do

restart:
alias(DS=DynamicSystems):
sys:=DS:-TransferFunction(5*s/(s^2+4*s+25)):
DS:-BodePlot(sys,output=dualaxis);

I get nice small plot.  with no outer frame filling the whole window

But if I just do

DS:-BodePlot(sys);

The plot is too large. So I tried the size option, but all what this did is reduce the plot size, but left the outer frame filling the whole window:

DS:-BodePlot(sys,size=[400,300]);

Is there a way to get the above plot, but either without the outer frame, or have the outerframe fit correctly around the plots?

Maple 18 on window 7

## how to extract items from transfer function and ot...

Here is one example:

restart;
alias(DS=DynamicSystems):
zeros :=[-1,-2]:
poles :=[0,-4,-6]:
gain  :=5:
sys   :=DS:-TransferFunction(zeros,poles,gain):

now sys above is a transfer function "object". But how would one go about extracting its properties? For example, I'd like to read the actual rational polynomial in s that represents the transfer function, which is embedded inside this oject, but I am not able to find an API to read it. I can only print it to the screen :

DS:-PrintSystem(sys);

But I'd like to assign the  "tf" printed above (the rational polynomial) into a seaprate variable, so I can extract the numerator and denominator if I want to. I have looked and not able to see a way to read this out. I just started learning this package.

Any idea how to look into these system objects? This does nothing:

o:=DS:-PrintSystem(sys);
whattype(o);
o[1];

Using Maple 18. I am looking for a programmable approach, using code. Not a click and point and menu based solution.

## how to add legend to display?...

According to help here  on display, it says "The options parameter can include plot options as described in the plot/option "  and when  I go to the plots/option I see legend there. But when I try to use it, I get an error that plots:-display does not accept the legened option.

I am generating 2 plots, and use display() to show them on one axes. But need to add a legend as well. Is there a correct way to do this?

restart:
with(DynamicSystems):
with(plots):
sys := TransferFunction(1/(s^2+0.2*s+1)):
p1:=ResponsePlot(sys, Step(),duration=50,color=red):
p2:=ImpulseResponsePlot(sys,50);
display([p1,p2],axes=boxed, title=`step and impulse reponses`,legend=["step","impulse"]);

Now if I add legend, it fail

display([p1,p2],axes=boxed, title=`step and impulse reponses`,legend=["step","impulse"]);

I am sure I am doing something wrong. How to add legend to display? I can't use plot([...]) since the plots are allready generated by other Maple functions.

## How to scroll context menu...

Can anyone tell me how to scroll the context menus in Maple 17?

I'm using the DynamicSystems pkg and would like to use its context menu but it's cut off at bottom of screen.

When I right click on an expression in a Maple document, I get the context menu,but it goes off the screen at the bottom, and I can't find any way to scroll down to see what is cut off.   I tried the Zoom feature on the menu to make things smaller, and it made the print in my document smaller, but the context menu is the same size, and still gets cut off.

Any help appreciated.

## Using DynamicSystems:-Simulate to simulate an Alge...

Hi Everybody,

I'm having some problems simulating an algebraic system in Maple.  I want to do this for a larger system of equation (~20 equations/20 variables, with 3 inputs), but I'd like to get an idea of the form this should be in.

So, using an example out of Maple help:

with(DynamicSystems);

sys1:=AlgEquation([y=sin(x)],[x],[y],discrete=true,sampletime=0.001);

inp1:=Vector[column]([1,2,3,4,5,6,7]) * 0.1;

res:=Simulate(sys1,[inp1]);

Error, (in DynamicSystems:-Simulate) should never be here

I don't understand what this error means.  Reading the example in the help files, says the second argument should be a vector of input values.  What I would assume this would do is plugin x = 0.1, then solve y=sin(0.1), and output y.

Am I missing some syntax, or is my inputs wrong?  There are examples of how to set up an algebraic system in the help files, but no examples of how to simulate them.

Thanks in advance for any help!

## How to use simple substitutions to do the same on ...

Example

Diff(x1,t) = x2^2,
Diff(x2,t) = u,
y = x1

result in

Diff(y,t\$2)-4*u^2*Diff(y,t) = 0
2*u*x2 - Diff(y,t^2) = 0
x1 - y = 0

is it possible a general and generic method to apply some steps on system below

Diff(u1, t) = u1*u2-u1*u3,
Diff(u2, t) = -u1*u2+u2*u3-(1/2)*(conjugate(u2-u3)*(u1*u2-u1*u3)+conjugate(u1)*(-u1*u2+u2*u3)-conjugate(u1)*(u1*u3-u2*u3))/conjugate(u1),
Diff(u3, t) = u1*u3-u2*u3+(1/2)*(conjugate(u2-u3)*(u1*u2-u1*u3)+conjugate(u1)*(-u1*u2+u2*u3)-conjugate(u1)*(u1*u3-u2*u3))/conjugate(u1),
y = u1

## Non-autonomous system of DE to autonomous one...

Hi,

I'm searching for the third differential equation that will transform the following two equations non-autonomous system into a three equations autonomous one:

diff(x(t),t)=-x(t)+2*(m*t+n)*y(t)-2*k*(m*t+n)2

diff(y(t),t)=-y(t)+k*m-(m*t+n)*((x(t)/2)-1)

diff(z(t),t)= ...

Regards,

Johnny

 1 2 Page 1 of 2
﻿