meaning of "=>" ?
Author Message
meaning of "=>" ?

Hi,
I try to model a three-axis synchronous machine. Actually I found a
two-axis sample modell, which is supposed to help me. There is sth I
can't figure out.

wink => phi0,
y => p * phi0,
omega => n0 * n2om,

i1beta =>  bc2beta * (i1b0 - i1c0),

... to be continued ...

What does the operator "=>" mean? Is it kind of an assignment?
Note: "phi0", "p", "n0", "n2om", "bc2beta", "i1b0" and "i1c0" are
given, "wink", "y", "omega" and "i1beta" has just been defined.

Can anybody explain?

Thanks in advance and best regards,

Stephan Schulte

Appendix:
complete sample file:

LIBRARY IEEE;
USE IEEE.ELECTRICAL_SYSTEMS.ALL;
USE IEEE.MATH_REAL.ALL;

ENTITY SYME_SN IS
GENERIC(
l1d  : real := 0.042;
l1q  : real := 0.042;
le   : real := 0.050;
p    : real := 2.0;
j    : real := 0.075;
i1a0 : real := 0.0;
i1b0 : real := 0.0;
i1c0 : real := 0.0;
ie0  : real := 0.0;
n0   : real := 1500.0;
phi0 : real := 0.0 );

PORT( TERMINAL a, b, c, e1, e2 : ELECTRICAL;

QUANTITY  load : IN REAL := 0.0 ;
QUANTITY  r1 : IN REAL := 0.4 ;
QUANTITY  re : IN REAL := 1.0 ;
QUANTITY  lm1ed: IN real := 0.035;
QUANTITY i1d, i1q: OUT REAL;
QUANTITY n, phi : OUT REAL);

END ENTITY SYME_SN;

ARCHITECTURE behav OF SYME_SN IS

TERMINAL x : ELECTRICAL;

QUANTITY vab ACROSS a to b;
QUANTITY vbc ACROSS b to c;
QUANTITY vca ACROSS c to a;

QUANTITY v1a ACROSS i1a THROUGH a TO x;
QUANTITY v1b ACROSS i1b THROUGH b TO x;
QUANTITY v1c ACROSS i1c THROUGH c TO x;

QUANTITY ved ACROSS ied THROUGH e1 TO e2;

QUANTITY speed, mi, omega,  wink : REAL;
QUANTITY v1d, v1q, psi1d, psi1q : REAL ;
QUANTITY i1beta, v1alpha, v1beta, y, psied: REAL;

CONSTANT bc2beta   : real := sqrt(3.0) / 3.0;
CONSTANT n2om    : real := 2.0 * math_pi / 60.0;
CONSTANT om2n    : real := 60.0 / (2.0 * math_pi);
CONSTANT one_three : real := 1.0 / 3.0;
CONSTANT two_three : real := 2.0 / 3.0;
CONSTANT kmi     : real := 1.5 * p;

BEGIN

BREAK
wink => phi0,
y => p * phi0,
omega => n0 * n2om,

i1beta =>  bc2beta * (i1b0 - i1c0),

i1d => i1a0 * cos(y) + i1beta * sin(y),
i1q => - i1a0 * sin(y) + i1beta * cos(y),

psied => i1d * lm1ed  + ie0 * le,

psi1d => i1d * l1d + ied * lm1ed,
psi1q => i1q * l1q;

i1beta ==  bc2beta * (i1b - i1c);

i1d == i1a * cos(y) + i1beta * sin(y);
i1q == - i1a * sin(y) + i1beta * cos(y);

psied == i1d * lm1ed  + ied * le;

psi1d == i1d * l1d + ied * lm1ed;
psi1q == i1q * l1q;

y == p * wink;

omega'dot == (1.0/j) * (mi - load);

v1a == vbc * one_three + vab * two_three;
v1d == i1d * r1 + psi1d'dot - p * omega * psi1q;
v1q == i1q * r1 + psi1q'dot + p * omega * psi1d;

mi == kmi * (psi1d * i1q - psi1q * i1d);

v1alpha == two_three * v1a - one_three * (v1b + v1c);
v1beta == bc2beta * (v1b - v1c);

v1d == v1alpha * cos(y) + v1beta * sin(y);
v1q == - v1alpha * sin(y) + v1beta * cos(y);

ved == ied * re + psied'dot;

speed == omega * om2n;
wink == omega'integ;

n == speed;
phi == wink;

END ARCHITECTURE behav;

Mon, 12 Sep 2005 00:40:03 GMT
meaning of "=>" ?

Quote:
> I try to model a three-axis synchronous machine. Actually I found a
> two-axis sample modell, which is supposed to help me. There is sth I
> can't figure out.

performs miracles. :)

From what I understand, you have managed to find a file in accordance with
the Analog and Mixed-Signal extention of VHDL. You can find more
information at:
http://www.eda.org/vhdl-ams/
http://opensource.ethz.ch/emacs/vhdlams_syntax.html

Regards,

Pieter Hulshoff

Mon, 12 Sep 2005 02:05:55 GMT
meaning of "=>" ?
Initial conditions are specified this way.

For more detail have a look at:
http://www.eda.org/vhdl-ams/ftp_files/documentation/tutdac99.pdf
page 56

Egbert Molenkamp

Quote:
> Hi,
> I try to model a three-axis synchronous machine. Actually I found a
> two-axis sample modell, which is supposed to help me. There is sth I
> can't figure out.
> Please see the following lines:

> wink => phi0,
> y => p * phi0,
> omega => n0 * n2om,

> i1beta =>  bc2beta * (i1b0 - i1c0),

> ... to be continued ...

> What does the operator "=>" mean? Is it kind of an assignment?
> Note: "phi0", "p", "n0", "n2om", "bc2beta", "i1b0" and "i1c0" are
> given, "wink", "y", "omega" and "i1beta" has just been defined.

> Can anybody explain?

> Thanks in advance and best regards,

> Stephan Schulte

> Appendix:
> complete sample file:

> LIBRARY IEEE;
> USE IEEE.ELECTRICAL_SYSTEMS.ALL;
> USE IEEE.MATH_REAL.ALL;

> ENTITY SYME_SN IS
>     GENERIC(
>         l1d  : real := 0.042;
>         l1q  : real := 0.042;
>         le   : real := 0.050;
>         p    : real := 2.0;
>         j    : real := 0.075;
>         i1a0 : real := 0.0;
>         i1b0 : real := 0.0;
>         i1c0 : real := 0.0;
>         ie0  : real := 0.0;
>         n0   : real := 1500.0;
>         phi0 : real := 0.0 );

>     PORT( TERMINAL a, b, c, e1, e2 : ELECTRICAL;

>           QUANTITY  load : IN REAL := 0.0 ;
>           QUANTITY  r1 : IN REAL := 0.4 ;
>           QUANTITY  re : IN REAL := 1.0 ;
>           QUANTITY  lm1ed: IN real := 0.035;
>           QUANTITY i1d, i1q: OUT REAL;
>           QUANTITY n, phi : OUT REAL);

> END ENTITY SYME_SN;

> ARCHITECTURE behav OF SYME_SN IS

> TERMINAL x : ELECTRICAL;

> QUANTITY vab ACROSS a to b;
> QUANTITY vbc ACROSS b to c;
> QUANTITY vca ACROSS c to a;

> QUANTITY v1a ACROSS i1a THROUGH a TO x;
> QUANTITY v1b ACROSS i1b THROUGH b TO x;
> QUANTITY v1c ACROSS i1c THROUGH c TO x;

> QUANTITY ved ACROSS ied THROUGH e1 TO e2;

> QUANTITY speed, mi, omega,  wink : REAL;
> QUANTITY v1d, v1q, psi1d, psi1q : REAL ;
> QUANTITY i1beta, v1alpha, v1beta, y, psied: REAL;

> CONSTANT bc2beta   : real := sqrt(3.0) / 3.0;
> CONSTANT n2om : real := 2.0 * math_pi / 60.0;
> CONSTANT om2n : real := 60.0 / (2.0 * math_pi);
> CONSTANT one_three : real := 1.0 / 3.0;
> CONSTANT two_three : real := 2.0 / 3.0;
> CONSTANT kmi : real := 1.5 * p;

> BEGIN

> BREAK
> wink => phi0,
> y => p * phi0,
> omega => n0 * n2om,

> i1beta =>  bc2beta * (i1b0 - i1c0),

> i1d => i1a0 * cos(y) + i1beta * sin(y),
> i1q => - i1a0 * sin(y) + i1beta * cos(y),

> psied => i1d * lm1ed  + ie0 * le,

> psi1d => i1d * l1d + ied * lm1ed,
> psi1q => i1q * l1q;

> i1beta ==  bc2beta * (i1b - i1c);

> i1d == i1a * cos(y) + i1beta * sin(y);
> i1q == - i1a * sin(y) + i1beta * cos(y);

> psied == i1d * lm1ed  + ied * le;

> psi1d == i1d * l1d + ied * lm1ed;
> psi1q == i1q * l1q;

> y == p * wink;

> omega'dot == (1.0/j) * (mi - load);

> v1a == vbc * one_three + vab * two_three;
> v1d == i1d * r1 + psi1d'dot - p * omega * psi1q;
> v1q == i1q * r1 + psi1q'dot + p * omega * psi1d;

> mi == kmi * (psi1d * i1q - psi1q * i1d);

> v1alpha == two_three * v1a - one_three * (v1b + v1c);
> v1beta == bc2beta * (v1b - v1c);

> v1d == v1alpha * cos(y) + v1beta * sin(y);
> v1q == - v1alpha * sin(y) + v1beta * cos(y);

> ved == ied * re + psied'dot;

> speed == omega * om2n;
> wink == omega'integ;

> n == speed;
> phi == wink;

> END ARCHITECTURE behav;

Mon, 12 Sep 2005 21:44:22 GMT
meaning of "=>" ?

Quote:

> Initial conditions are specified this way.

> For more detail have a look at:
> http://www.eda.org/vhdl-ams/ftp_files/documentation/tutdac99.pdf
> page 56

> Egbert Molenkamp

OK, I see that initial conditions are defined that way.
Does this mean, that these lines are executed once and are not subject
to simulation relevant contents for all further cycles of the
simulation (since more recent values have been calculated afterwards)?

Another item: I guess that the operator "==" indicates an equation.
So does this mean, that I can establish a set of equations as a formal
description for the machine - which means: is this equation system
solved automatically?

Stephan Schulte

Quote:

> "Stephan Schulte" schreef in bericht

> > Hi,
> > I try to model a three-axis synchronous machine. Actually I found a
> > two-axis sample modell, which is supposed to help me. There is sth I
> > can't figure out.
> > Please see the following lines:

> > wink => phi0,
> > y => p * phi0,
> > omega => n0 * n2om,

> > i1beta =>  bc2beta * (i1b0 - i1c0),

> > ... to be continued ...

> > What does the operator "=>" mean? Is it kind of an assignment?
> > Note: "phi0", "p", "n0", "n2om", "bc2beta", "i1b0" and "i1c0" are
> > given, "wink", "y", "omega" and "i1beta" has just been defined.

> > Can anybody explain?

> > Thanks in advance and best regards,

> > Stephan Schulte

> > Appendix:
> > complete sample file:

> > LIBRARY IEEE;
> > USE IEEE.ELECTRICAL_SYSTEMS.ALL;
> > USE IEEE.MATH_REAL.ALL;

> > ENTITY SYME_SN IS
> >     GENERIC(
> >         l1d  : real := 0.042;
> >         l1q  : real := 0.042;
> >         le   : real := 0.050;
> >         p    : real := 2.0;
> >         j    : real := 0.075;
> >         i1a0 : real := 0.0;
> >         i1b0 : real := 0.0;
> >         i1c0 : real := 0.0;
> >         ie0  : real := 0.0;
> >         n0   : real := 1500.0;
> >         phi0 : real := 0.0 );

> >     PORT( TERMINAL a, b, c, e1, e2 : ELECTRICAL;

> >           QUANTITY  load : IN REAL := 0.0 ;
> >           QUANTITY  r1 : IN REAL := 0.4 ;
> >           QUANTITY  re : IN REAL := 1.0 ;
> >           QUANTITY  lm1ed: IN real := 0.035;
> >           QUANTITY i1d, i1q: OUT REAL;
> >           QUANTITY n, phi : OUT REAL);

> > END ENTITY SYME_SN;

> > ARCHITECTURE behav OF SYME_SN IS

> > TERMINAL x : ELECTRICAL;

> > QUANTITY vab ACROSS a to b;
> > QUANTITY vbc ACROSS b to c;
> > QUANTITY vca ACROSS c to a;

> > QUANTITY v1a ACROSS i1a THROUGH a TO x;
> > QUANTITY v1b ACROSS i1b THROUGH b TO x;
> > QUANTITY v1c ACROSS i1c THROUGH c TO x;

> > QUANTITY ved ACROSS ied THROUGH e1 TO e2;

> > QUANTITY speed, mi, omega,  wink : REAL;
> > QUANTITY v1d, v1q, psi1d, psi1q : REAL ;
> > QUANTITY i1beta, v1alpha, v1beta, y, psied: REAL;

> > CONSTANT bc2beta   : real := sqrt(3.0) / 3.0;
> > CONSTANT n2om : real := 2.0 * math_pi / 60.0;
> > CONSTANT om2n : real := 60.0 / (2.0 * math_pi);
> > CONSTANT one_three : real := 1.0 / 3.0;
> > CONSTANT two_three : real := 2.0 / 3.0;
> > CONSTANT kmi : real := 1.5 * p;

> > BEGIN

> > BREAK
> > wink => phi0,
> > y => p * phi0,
> > omega => n0 * n2om,

> > i1beta =>  bc2beta * (i1b0 - i1c0),

> > i1d => i1a0 * cos(y) + i1beta * sin(y),
> > i1q => - i1a0 * sin(y) + i1beta * cos(y),

> > psied => i1d * lm1ed  + ie0 * le,

> > psi1d => i1d * l1d + ied * lm1ed,
> > psi1q => i1q * l1q;

> > i1beta ==  bc2beta * (i1b - i1c);

> > i1d == i1a * cos(y) + i1beta * sin(y);
> > i1q == - i1a * sin(y) + i1beta * cos(y);

> > psied == i1d * lm1ed  + ied * le;

> > psi1d == i1d * l1d + ied * lm1ed;
> > psi1q == i1q * l1q;

> > y == p * wink;

> > omega'dot == (1.0/j) * (mi - load);

> > v1a == vbc * one_three + vab * two_three;
> > v1d == i1d * r1 + psi1d'dot - p * omega * psi1q;
> > v1q == i1q * r1 + psi1q'dot + p * omega * psi1d;

> > mi == kmi * (psi1d * i1q - psi1q * i1d);

> > v1alpha == two_three * v1a - one_three * (v1b + v1c);
> > v1beta == bc2beta * (v1b - v1c);

> > v1d == v1alpha * cos(y) + v1beta * sin(y);
> > v1q == - v1alpha * sin(y) + v1beta * cos(y);

> > ved == ied * re + psied'dot;

> > speed == omega * om2n;
> > wink == omega'integ;

> > n == speed;
> > phi == wink;

> > END ARCHITECTURE behav;

Tue, 13 Sep 2005 15:37:19 GMT
meaning of "=>" ?

Quote:
> > Initial conditions are specified this way.

> > For more detail have a look at:
> > http://www.eda.org/vhdl-ams/ftp_files/documentation/tutdac99.pdf
> > page 56

> > Egbert Molenkamp

> OK, I see that initial conditions are defined that way.
> Does this mean, that these lines are executed once and are not subject
> to simulation relevant contents for all further cycles of the
> simulation (since more recent values have been calculated afterwards)?

The break also can have a condition.
Suppose you write a description of a bouncing ball.
It could have the following form copied from a tutorail from
Kazmierski, University of Southampton.

Notice that the inital high of the ball is 10.0 meters (break statement
is used).
Then the ball will fall, but when it hits the ground the
direction of the ball is changed. The latter is also
written with a break statement.

architecture bouncing of ball is
quantity v: velocity;
quantity s: displacement;
constant G: real  := 9.81; -- G-force
constant AirResistance: real  := 0.1;
begin
-- Specify initial conditions
break v => 0.0, s => 10.0 ;
-- Introduce discontinuity when ball hits ground and reset velocity value:
break v => -v when v'ABOVE(0.0) and not s'ABOVE(0.0);
s'DOT == -v;
if v > 0.0 use
v'DOT == G  - AirResistance*v**2; -- falling
else   v'DOT == G + AirResistance*v**2; -- rising
end if;
end architecture bouncing;

Quote:
> Another item: I guess that the operator "==" indicates an equation.
> So does this mean, that I can establish a set of equations as a formal
> description for the machine - which means: is this equation system
> solved automatically?

Yes.

Egbert Molenkamp

Tue, 13 Sep 2005 17:53:28 GMT

 Page 1 of 1 [ 6 post ]

Relevant Pages