📄 ex38s1_acc.c
字号:
#if 0
This file is not available for use in any application other than as a
Matlab(R) MEX file for use with the Simulink(R) Accelerator product.
If you do not have the Real-Time Workshop licensed, this file contains
encrypted block names, etc. If you purchase the Real-Time Workshop,
this file will contain full block descriptions and improved variable
names.
#endif
/*
* ex38s1_acc.c
*
* Real-Time Workshop code generation for Simulink model "ex38s1_acc.mdl".
*
* Model Version : 1.55
* Real-Time Workshop file version : 4.0 $Date: 2000/09/19 19:45:27 $
* Real-Time Workshop file generated on : Thu Feb 07 22:04:58 2002
* TLC version : 4.0 (Aug 21 2000)
* C source code generated on : Thu Feb 07 22:04:59 2002
*
* Relevant TLC Options:
* InlineParameters = 0
* RollThreshold = 5
* CodeFormat = S-Function
*
* Simulink model settings:
* Solver : VariableStep
* StartTime : 0.0 s
* StopTime : 140.0 s
* Variable step solver used
*/
#include <math.h>
#include <string.h>
#include "ex38s1_acc.h"
#include "ex38s1_acc_prm.h"
real_T rtInf;
/* Start of Functions in model "ex38s1_acc" */
/* Compute block outputs */
static void mdlOutputs(SimStruct *S, int_T tid)
{
/* simstruct variables */
ex38s1_BlockIO *ex38s1_B = (ex38s1_BlockIO *) _ssGetBlockIO(S);
ex38s1_ContinuousStates *ex38s1_X = (ex38s1_ContinuousStates*) ssGetContStates(S);
ex38s1_D_Work *ex38s1_DWork = (ex38s1_D_Work *) ssGetRootDWork(S);
ex38s1_Parameters *ex38s1_P = (ex38s1_Parameters *) ssGetDefaultParam(S);
/* local block i/o variables */
real_T rtb_s5_White_Noise;
real_T rtb_temp29;
real_T rtb_temp30;
real_T rtb_temp31;
if (ssIsSampleHit(S, 3, tid)) { /* Sample time: [30.0, 0.0] */
/* RandomNumber Block: <S5>/White Noise */
rtb_s5_White_Noise = ex38s1_DWork->s5_White_Noise_RWORK.NextOutput;
/* Gain Block: <S5>/Gain */
ex38s1_B->s5_Gain = rtb_s5_White_Noise * (ex38s1_P->s5_Gain_Gain);
/* Outport Block: <Root>/Out1 */
/* Call into Simulink for root Outports */
ssCallAccelRunBlock(S, 0, 2, SS_CALL_MDL_OUTPUTS);
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* StateSpace Block: <S7>/Internal */
{
ex38s1_B->s7_Internal = (ex38s1_P->s7_Internal_C)*ex38s1_X->s7_Internal[1];
}
/* Outport Block: <Root>/Out2 */
/* Call into Simulink for root Outports */
ssCallAccelRunBlock(S, 0, 4, SS_CALL_MDL_OUTPUTS);
/* Sum Block: <Root>/Sum */
ex38s1_B->root_Sum = ex38s1_B->s5_Gain - ex38s1_B->s7_Internal;
/* Abs Block: <S4>/Abs */
if (ssIsMajorTimeStep(S)) {
ex38s1_DWork->s4_Abs_MODE = ex38s1_B->root_Sum >= 0.0;
}
rtb_temp31 = (ex38s1_DWork->s4_Abs_MODE)? ex38s1_B->root_Sum:-(ex38s1_B->root_Sum);
/* Gain Block: <S4>/Gain */
rtb_temp31 *= (ex38s1_P->s4_Gain_Gain);
/* Clock Block: <Root>/Clock */
ex38s1_B->root_Clock = ssGetT(S);
}
if (ssIsSampleHit(S, 2, tid)) { /* Sample time: [0.01, 0.0] */
/* ZeroOrderHold Block: <Root>/Zero-Order Hold7 */
ex38s1_B->root_Zero_Order_Hold7 = ex38s1_B->root_Clock;
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.0, 1.0] */
/* Constant Block: <S4>/Constant */
rtb_temp29 = (ex38s1_P->s4_Constant_Value);
/* RelationalOperator Block: <S4>/Relational Operator */
rtb_temp29 = (ex38s1_B->root_Zero_Order_Hold7 >= rtb_temp29);
/* Constant Block: <S4>/Constant1 */
rtb_temp30 = (ex38s1_P->s4_Constant1_Value);
/* RelationalOperator Block: <S4>/Relational Operator1 */
rtb_temp30 = (ex38s1_B->root_Zero_Order_Hold7 <= rtb_temp30);
/* Logic Block: <S4>/Logical Operator */
ex38s1_B->s4_Logical_Operator = (real_T) ((rtb_temp29 != 0.0)
&& (rtb_temp30 != 0.0));
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Product Block: <S4>/Product */
rtb_temp31 = rtb_temp31 *
rtb_temp31 *
ex38s1_B->s4_Logical_Operator;
}
if (ssIsSampleHit(S, 2, tid)) { /* Sample time: [0.01, 0.0] */
/* UnitDelay Block: <S4>/Unit Delay Ts=0.1 */
ex38s1_B->s4_Unit_Delay_Ts_0_1 = ex38s1_DWork->s4_Unit_Delay_Ts_0_1_DSTATE;
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Sum Block: <S4>/Sum2 */
ex38s1_B->s4_Sum2 = rtb_temp31 + ex38s1_B->s4_Unit_Delay_Ts_0_1;
/* Abs Block: <S3>/Abs */
if (ssIsMajorTimeStep(S)) {
ex38s1_DWork->s3_Abs_MODE = ex38s1_B->root_Sum >= 0.0;
}
rtb_temp31 = (ex38s1_DWork->s3_Abs_MODE)? ex38s1_B->root_Sum:-(ex38s1_B->root_Sum);
/* Gain Block: <S3>/Gain */
rtb_temp31 *= (ex38s1_P->s3_Gain_Gain);
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.0, 1.0] */
/* Constant Block: <S3>/Constant */
rtb_temp30 = (ex38s1_P->s3_Constant_Value);
/* RelationalOperator Block: <S3>/Relational Operator */
rtb_temp30 = (ex38s1_B->root_Zero_Order_Hold7 >= rtb_temp30);
/* Constant Block: <S3>/Constant1 */
rtb_temp29 = (ex38s1_P->s3_Constant1_Value);
/* RelationalOperator Block: <S3>/Relational Operator1 */
rtb_temp29 = (ex38s1_B->root_Zero_Order_Hold7 <= rtb_temp29);
/* Logic Block: <S3>/Logical Operator */
ex38s1_B->s3_Logical_Operator = (real_T) ((rtb_temp30 != 0.0)
&& (rtb_temp29 != 0.0));
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Product Block: <S3>/Product */
rtb_temp31 = rtb_temp31 *
rtb_temp31 *
ex38s1_B->s3_Logical_Operator;
}
if (ssIsSampleHit(S, 2, tid)) { /* Sample time: [0.01, 0.0] */
/* UnitDelay Block: <S3>/Unit Delay Ts=0.1 */
ex38s1_B->s3_Unit_Delay_Ts_0_1 = ex38s1_DWork->s3_Unit_Delay_Ts_0_1_DSTATE;
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Sum Block: <S3>/Sum2 */
ex38s1_B->s3_Sum2 = rtb_temp31 + ex38s1_B->s3_Unit_Delay_Ts_0_1;
/* Abs Block: <S2>/Abs */
if (ssIsMajorTimeStep(S)) {
ex38s1_DWork->s2_Abs_MODE = ex38s1_B->root_Sum >= 0.0;
}
rtb_temp31 = (ex38s1_DWork->s2_Abs_MODE)? ex38s1_B->root_Sum:-(ex38s1_B->root_Sum);
/* Gain Block: <S2>/Gain */
rtb_temp31 *= (ex38s1_P->s2_Gain_Gain);
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.0, 1.0] */
/* Constant Block: <S2>/Constant */
rtb_temp30 = (ex38s1_P->s2_Constant_Value);
/* RelationalOperator Block: <S2>/Relational Operator */
rtb_temp30 = (ex38s1_B->root_Zero_Order_Hold7 >= rtb_temp30);
/* Constant Block: <S2>/Constant1 */
rtb_temp29 = (ex38s1_P->s2_Constant1_Value);
/* RelationalOperator Block: <S2>/Relational Operator1 */
rtb_temp29 = (ex38s1_B->root_Zero_Order_Hold7 <= rtb_temp29);
/* Logic Block: <S2>/Logical Operator */
ex38s1_B->s2_Logical_Operator = (real_T) ((rtb_temp30 != 0.0)
&& (rtb_temp29 != 0.0));
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Product Block: <S2>/Product */
rtb_temp31 = rtb_temp31 *
rtb_temp31 *
ex38s1_B->s2_Logical_Operator;
}
if (ssIsSampleHit(S, 2, tid)) { /* Sample time: [0.01, 0.0] */
/* UnitDelay Block: <S2>/Unit Delay Ts=0.1 */
ex38s1_B->s2_Unit_Delay_Ts_0_1 = ex38s1_DWork->s2_Unit_Delay_Ts_0_1_DSTATE;
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Sum Block: <S2>/Sum2 */
ex38s1_B->s2_Sum2 = rtb_temp31 + ex38s1_B->s2_Unit_Delay_Ts_0_1;
/* Abs Block: <S1>/Abs */
if (ssIsMajorTimeStep(S)) {
ex38s1_DWork->s1_Abs_MODE = ex38s1_B->root_Sum >= 0.0;
}
rtb_temp31 = (ex38s1_DWork->s1_Abs_MODE)? ex38s1_B->root_Sum:-(ex38s1_B->root_Sum);
/* Gain Block: <S1>/Gain */
rtb_temp31 *= (ex38s1_P->s1_Gain_Gain);
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.0, 1.0] */
/* Constant Block: <S1>/Constant */
rtb_temp30 = (ex38s1_P->s1_Constant_Value);
/* RelationalOperator Block: <S1>/Relational Operator */
rtb_temp30 = (ex38s1_B->root_Zero_Order_Hold7 >= rtb_temp30);
/* Constant Block: <S1>/Constant1 */
rtb_temp29 = (ex38s1_P->s1_Constant1_Value);
/* RelationalOperator Block: <S1>/Relational Operator1 */
rtb_temp29 = (ex38s1_B->root_Zero_Order_Hold7 <= rtb_temp29);
/* Logic Block: <S1>/Logical Operator */
ex38s1_B->s1_Logical_Operator = (real_T) ((rtb_temp30 != 0.0)
&& (rtb_temp29 != 0.0));
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Product Block: <S1>/Product */
rtb_temp31 = rtb_temp31 *
rtb_temp31 *
ex38s1_B->s1_Logical_Operator;
}
if (ssIsSampleHit(S, 2, tid)) { /* Sample time: [0.01, 0.0] */
/* UnitDelay Block: <S1>/Unit Delay Ts=0.1 */
ex38s1_B->s1_Unit_Delay_Ts_0_1 = ex38s1_DWork->s1_Unit_Delay_Ts_0_1_DSTATE;
}
if (ssIsContinuousTask(S, tid)) { /* Sample time: [0.0, 0.0] */
/* Sum Block: <S1>/Sum2 */
ex38s1_B->s1_Sum2 = rtb_temp31 + ex38s1_B->s1_Unit_Delay_Ts_0_1;
/* Sum Block: <Root>/Sum2 */
rtb_temp31 = ex38s1_B->s4_Sum2 + ex38s1_B->s3_Sum2 + ex38s1_B->s2_Sum2
+ ex38s1_B->s1_Sum2;
/* Gain Block: <Root>/Gain */
ex38s1_B->root_Gain = rtb_temp31 * (ex38s1_P->root_Gain_Gain);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -