*ControlSISO()
Defines a single-input, single-output, transfer function as a ratio of two polynomials in the Laplace domain when used with the associated ARRAY statements.
Syntax
*ControlSISO(siso_name,"siso_label")
Arguments
- siso_name
- The variable name for the ControlSISO.
- siso_label
- The descriptive label for the ControlSISO.
Example
*BeginMdl(model5, "MBD Model" )
*ControlSISO(siso_0, "ControlSISO 0" )
*SolverVariable(sv_0, "Reference Speed" )
*ActionReactionForce(frc_0, "Force 0", ROT, MODEL.b_0,
MODEL.B_Ground, MODEL.p_0,
Global_Frame )
*SetSolverVariable(sv_0, 3)
*SetForce(frc_0, 0, 0, '{MODEL.siso_0.OUTPUT}')
*SetControlSISOCoeffs(siso_0, NUMER, 2, 10.00, 1.00,
DENOM, 2, 0.00, 1.00)
*SetControlSISOInput(siso_0, '-WZ({MODEL.b_0.cm.idstring})
+{sv_0.value}')
*EndMdl()
Context
Properties
Property | Returns Data Type | Description |
---|---|---|
varname | string | The variable name of the ControlSISO. |
state | boolean | Control state (true or false). |
id | long integer | The ID of the entity when exported to the solver input deck. |
label | string | The descriptive label of the ControlSISO. |
input | real | The input of the ControlSISO. |
output | real | The output of the ControlSISO. |
u_var | The implicit solver variable. |
Comments
The *ControlSISO() statement can be used to insert a controller directly within the MDL model, which the solver includes directly. For controllers such as Proportional-Derivative, this prevents the need for co-simulation or for the creation of direct differential equations.