------------------------------------------------------------------------------- -- Copyright (c) 2001 Mentor Graphics Corporation -- -- This model is a component of the Mentor Graphics VHDL-AMS educational open -- source model library, and is covered by this license agreement. This model, -- including any updates, modifications, revisions, copies, and documentation -- are copyrighted works of Mentor Graphics. USE OF THIS MODEL INDICATES YOUR -- COMPLETE AND UNCONDITIONAL ACCEPTANCE OF THE TERMS AND CONDITIONS SET FORTH -- IN THIS LICENSE AGREEMENT. Mentor Graphics grants you a non-exclusive -- license to use, reproduce, modify and distribute this model, provided that: -- (a) no fee or other consideration is charged for any distribution except -- compilations distributed in accordance with Section (d) of this license -- agreement; (b) the comment text embedded in this model is included verbatim -- in each copy of this model made or distributed by you, whether or not such -- version is modified; (c) any modified version must include a conspicuous -- notice that this model has been modified and the date of modification; and -- (d) any compilations sold by you that include this model must include a -- conspicuous notice that this model is available from Mentor Graphics in its -- original form at no charge. -- -- THIS MODEL IS LICENSED TO YOU "AS IS" AND WITH NO WARRANTIES, EXPRESS OR -- IMPLIED. MENTOR GRAPHICS SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF -- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. MENTOR GRAPHICS SHALL -- HAVE NO RESPONSIBILITY FOR ANY DAMAGES WHATSOEVER. ------------------------------------------------------------------------------- -- File : StepperMotor_2ppm.vhd -- Author : Mentor Graphics -- Created : 2001/06/16 -- Last update: 2003-05-13 ------------------------------------------------------------------------------- -- Description: Simple 2-Phase, Permanent Magnet Stepper Motor with Rotational -- (angle) shaft connection ------------------------------------------------------------------------------- -- Revisions : -- Date Version Author Description -- 2001/06/16 1.0 Mentor Graphics Created ------------------------------------------------------------------------------- library IEEE; use IEEE.MATH_REAL.all; use IEEE.mechanical_systems.all; use IEEE.electrical_systems.all; entity StepperMotor_2ppm is generic ( rs : resistance := 0.1; -- Stator winding Res. (phase a and b) [Ohm] lss : inductance := 0.001; -- Self ind of each stator winding [Henrys] lambda_m : flux := 0.1; -- Flux linkages (maximum) from permanent -- magnet to stator windings [Weber-turns] np : real := 2.0; -- Number of poles (Must be an even integer, -- expressed as a real) theta0 : angle := 0.0; -- Initial angle of shaft -- (NOTE: Set theta0 = real'low to allow -- external system to set initial angle) d : real := 0.0; -- Mechanical damping coeff [N*m/(rad/s)] j : moment_inertia := 0.0); -- Moment of inertia [kg*meter**2] port (terminal as1, as2, bs1, bs2 : electrical; terminal shaft_rot : rotational); end entity StepperMotor_2ppm; ------------------------------------------------------------------------------- -- Linear Architecture -- Assumptions: -- Linear magnetics -- Zero cross-coupling between stator windings -- No detent or reluctance force ------------------------------------------------------------------------------- architecture linear of StepperMotor_2ppm is quantity vas across ias through as1 to as2; quantity vbs across ibs through bs1 to bs2; quantity theta across torq through shaft_rot to rotational_ref; quantity w : angular_velocity; -- Rotational velocity of shaft [rad/sec] quantity lambda_as : flux; -- Flux coupling to stator "a" winding -- [Weber-turns] quantity lambda_bs : flux; -- Flux coupling to stator "b" winding -- [Weber-turns] begin if domain = quiescent_domain and theta0 /= real'low use theta == theta0; else w == theta'dot; end use; lambda_as == lss*ias + lambda_m*cos((np/2.0)*theta); lambda_bs == lss*ibs + lambda_m*sin((np/2.0)*theta); vas == rs*ias + lambda_as'dot; vbs == rs*ibs + lambda_bs'dot; torq == -1.0*(np/2.0)*lambda_m*(ibs*cos((np/2.0)*theta) - ias*sin((np/2.0)*theta)) + d*w + j*w'dot; end architecture linear; ------------------------------------------------------------------------------- -- Copyright (c) 2001 Mentor Graphics Corporation -------------------------------------------------------------------------------