Mercurial > hg > ltpda
diff m-toolbox/html_help/help/ug/ssm_assemble.html @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/html_help/help/ug/ssm_assemble.html Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,197 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> + +<html lang="en"> +<head> + <meta name="generator" content= + "HTML Tidy for Mac OS X (vers 1st December 2004), see www.w3.org"> + <meta http-equiv="Content-Type" content= + "text/html; charset=us-ascii"> + + <title>Assembling systems (LTPDA Toolbox)</title> + <link rel="stylesheet" href="docstyle.css" type="text/css"> + <meta name="generator" content="DocBook XSL Stylesheets V1.52.2"> + <meta name="description" content= + "Presents an overview of the features, system requirements, and starting the toolbox."> + </head> + +<body> + <a name="top_of_page" id="top_of_page"></a> + + <p style="font-size:1px;"> </p> + + <table class="nav" summary="Navigation aid" border="0" width= + "100%" cellpadding="0" cellspacing="0"> + <tr> + <td valign="baseline"><b>LTPDA Toolbox</b></td><td><a href="../helptoc.html">contents</a></td> + + <td valign="baseline" align="right"><a href= + "ssm_modify.html"><img src="b_prev.gif" border="0" align= + "bottom" alt="Modifying systems"></a> <a href= + "ssm_simulation.html"><img src="b_next.gif" border="0" align= + "bottom" alt="Simulations"></a></td> + </tr> + </table> + + <h1 class="title"><a name="f3-12899" id="f3-12899"></a>Assembling systems</h1> + <hr> + + <p> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML> +<HEAD> + <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> + <TITLE></TITLE> + <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.1 (Win32)"> + <META NAME="CREATED" CONTENT="0;0"> + <META NAME="CHANGEDBY" CONTENT="Adrien G"> + <META NAME="CHANGED" CONTENT="20090827;17255200"> +</HEAD> +<BODY LANG="de-DE" DIR="LTR"> +<P>A collection of ssm arrays can be assembled into one ssm using the +assemble function.</P> +<H2>Managing inputs/outputs when assembling</H2> +<P>The order of the systems does not modify the output of . +The function assemble work by matching inputs and outputs of the same +name. Of course, they must have the same dimensionality, same +time-step. However, the check for units is not implemented yet.</P> +<P>In terms of time-step it is important to assemble all continuously +linked models together when the system is continuous, and discretize +it later on. Time discrete models (typically digital systems, and the +dynamical branch from the actuator input to the sensor output) should +be assembled together when they are time-discrete. The discretization +includes a zero hold which models correctly the A/D filter behavior.</P> +<P>Moreover, a system can be assembled in multiple steps. In this +case there is a risk of “closing a loop” multiple times. +To avoid this, the method “assemble” suppresses the +inputs once they are assembled. May the user need the input for a +simulation later on, he must duplicate it using the function +“inputDuplicate”. Built-in models should also have +built-in duplicated inputs to insert signals.</P> +<H2>Example using an existing built-in models</H2> +<DIV CLASS="fragment"><PRE STYLE="margin-bottom: 0.5cm">>> <FONT COLOR="#000000"><FONT FACE="Courier New, monospace">sys = ssm(plist(</FONT></FONT><FONT COLOR="#a020f0"><FONT FACE="Courier New, monospace"><FONT SIZE=2>'built-in'</FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>, </FONT></FONT></FONT><FONT COLOR="#a020f0"><FONT FACE="Courier New, monospace">'standard_system_params'</FONT></FONT><FONT COLOR="#000000"><FONT FACE="Courier New, monospace">, </FONT></FONT><FONT COLOR="#a020f0"><FONT FACE="Courier New, monospace">'setnames'</FONT></FONT><FONT COLOR="#000000"><FONT FACE="Courier New, monospace">, {</FONT></FONT><FONT COLOR="#a020f0"><FONT FACE="Courier New, monospace"><FONT SIZE=2>'W'</FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>}, </FONT></FONT></FONT><FONT COLOR="#a020f0"><FONT FACE="Courier New, monospace"><FONT SIZE=2>'setvalues'</FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>, 0.2*i ));</FONT></FONT></FONT></PRE></DIV><P> +Trying sys.isStable with the first and the third system shows a +different result, the negative stiffness making the latter unstable. +The system can be made time discrete using the function +“modifTimeStep”. +The input is then duplicated to be used for a controller feedback.</P> +<DIV CLASS="fragment"><PRE>>> sys = ssm(plist(<FONT COLOR="#a020f0">'built-in'</FONT>, <FONT COLOR="#a020f0">'standard_system_params'</FONT>, <FONT COLOR="#a020f0">'setnames'</FONT>, {<FONT COLOR="#a020f0">'W'</FONT> <FONT COLOR="#a020f0">'C'</FONT>}, <FONT COLOR="#a020f0">'setvalues'</FONT>, [-0.2 -0.5])); +>> sys.modifTimeStep(0.01); +>> sys.duplicateInput(<FONT COLOR="#a020f0">'U'</FONT>,<FONT COLOR="#a020f0">'Negative Bias'</FONT>) +------ ssm/1 ------- + amats: { [2x2] } [1x1] + mmats: { [2x2] } [1x1] + bmats: { [2x1] [2x2] [2x1] } [1x3] + cmats: { [1x2] } [1x1] + dmats: { [] [1x2] [] } [1x3] + timestep: 0.01 + inputs: [1x3 ssmblock] + 1 : U | Fu [kg m s^(-2)] + 2 : N | Fn [kg m s^(-2)], On [m] + 3 : Negative Bias | Fu [kg m s^(-2)] + states: [1x1 ssmblock] + 1 : standard test system | x [m], xdot [m s^(-1)] + outputs: [1x1 ssmblock] + 1 : Y | y [m] + params: (empty-plist) [1x1 plist] + version: $Id: ssm_assemble_content.html,v 1.4 2009/08/28 15:11:53 adrien Exp $-->$Id: ssm_assemble_content.html,v 1.4 2009/08/28 15:11:53 adrien Exp $ + Ninputs: 3 + inputsizes: [1 2 1] + Noutputs: 1 +outputsizes: 1 + Nstates: 1 + statesizes: 2 + Nparams: 0 +isnumerical: true + hist: ssm.hist [1x1 history] + procinfo: (empty-plist) [1x1 plist] + plotinfo: (empty-plist) [1x1 plist] + name: standard_system_params +description: standard spring-mass-dashpot test system + mdlfile: + UUID: 284b0ae3-947d-430a-802e-d9c3738ebb14 +-------------------- +M: running isStable +ans = + 2.05114794494015 +warning, system named "standard_system_params" is not stable +ans = + 0</PRE></DIV><P> +Then a controller can be created to make the system stable.</P> +<DIV CLASS="fragment"><PRE>>> <FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>controller = ssm(plist( </FONT></FONT></FONT><FONT COLOR="#0000ff"><FONT FACE="Courier New, monospace"><FONT SIZE=2>...</FONT></FONT></FONT> +<FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'amats'</FONT><FONT COLOR="#000000">,cell(0,0), </FONT><FONT COLOR="#a020f0">'bmats'</FONT><FONT COLOR="#000000">,cell(0,1), </FONT><FONT COLOR="#a020f0">'cmats'</FONT><FONT COLOR="#000000">,cell(1,0), </FONT><FONT COLOR="#a020f0">'dmats'</FONT><FONT COLOR="#000000">,{-1}, </FONT><FONT COLOR="#0000ff">...</FONT> +<FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'timestep'</FONT><FONT COLOR="#000000">,0.01, </FONT><FONT COLOR="#a020f0">'name'</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#a020f0">'controller'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'params'</FONT><FONT COLOR="#000000">,plist, </FONT><FONT COLOR="#0000ff">...</FONT> +<FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'statenames'</FONT><FONT COLOR="#000000">,{}, </FONT><FONT COLOR="#a020f0">'inputnames'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'Y'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'outputnames'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'U'</FONT><FONT COLOR="#000000">} ));</FONT> +>> sysCL = assemble(sys, controller); +>> sysCL.isStable + +------ ssm/1 ------- + amats: { [2x2] } [1x1] + mmats: { [2x2] } [1x1] + bmats: { [2x2] [2x1] } [1x2] + cmats: { [1x2] + [1x2] } [2x1] + dmats: { [1x2] [] + [1x2] [] } [2x2] + timestep: 0.01 + inputs: [1x2 ssmblock] + 1 : N | Fn [kg m s^(-2)], On [m] + 2 : Negative Bias | Fu [kg m s^(-2)] + states: [1x1 ssmblock] + 1 : standard test system | x [m], xdot [m s^(-1)] + outputs: [1x2 ssmblock] + 1 : Y | y [m] + 2 : U | U > 1 [] + params: (empty-plist) [1x1 plist] + version: $Id: ssm_assemble_content.html,v 1.4 2009/08/28 15:11:53 adrien Exp $ + Ninputs: 2 + inputsizes: [2 1] + Noutputs: 2 +outputsizes: [1 1] + Nstates: 1 + statesizes: 2 + Nparams: 0 +isnumerical: true + hist: ssm.hist [1x1 history] + procinfo: (empty-plist) [1x1 plist] + plotinfo: (empty-plist) [1x1 plist] + name: assembled( standard_system_params + controller)) +description: + mdlfile: + UUID: c6f7397e-add7-4f4c-8eb0-fd0a4841e3cf +-------------------- +M: running isStable +System named "assembled( standard_system_params + controller))" is stable +ans = + 1</PRE></DIV><P> +We can then use the system to produce a simulation.</P> +<P><BR><BR> +</P> +</BODY> +</HTML> + </p> + + <br> + <br> + <table class="nav" summary="Navigation aid" border="0" width= + "100%" cellpadding="0" cellspacing="0"> + <tr valign="top"> + <td align="left" width="20"><a href="ssm_modify.html"><img src= + "b_prev.gif" border="0" align="bottom" alt= + "Modifying systems"></a> </td> + + <td align="left">Modifying systems</td> + + <td> </td> + + <td align="right">Simulations</td> + + <td align="right" width="20"><a href= + "ssm_simulation.html"><img src="b_next.gif" border="0" align= + "bottom" alt="Simulations"></a></td> + </tr> + </table><br> + + <p class="copy">©LTP Team</p> +</body> +</html>