📄 ps_flc3_controla0513_acc.c
字号:
/*
* 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.
*/
/*
* PS_flc3_controlA0513_acc.c
*
* Real-Time Workshop code generation for Simulink model "PS_flc3_controlA0513_acc.mdl".
*
* Model Version : 1.99
* Real-Time Workshop version : 6.1 (R14SP1) 05-Sep-2004
* C source code generated on : Fri May 13 21:53:39 2005
*/
#include <math.h>
#include <string.h>
#include "PS_flc3_controlA0513_acc.h"
#include "PS_flc3_controlA0513_acc_private.h"
#include <stdio.h>
#include "simstruc.h"
#include "fixedpoint.h"
#define CodeFormat S-Function
#define AccDefine1 Accelerator_S-Function
/* Outputs for root system: '<Root>' */
static void mdlOutputs(SimStruct *S, int_T tid)
{
/* simstruct variables */
PS_flc3_controlA0513_BlockIO *PS_flc3_controlA0513_B =
(PS_flc3_controlA0513_BlockIO *) _ssGetBlockIO(S);
PS_flc3_controlA0513_ContinuousStates *PS_flc3_controlA0513_X =
(PS_flc3_controlA0513_ContinuousStates*) ssGetContStates(S);
PS_flc3_controlA0513_D_Work *PS_flc3_controlA0513_DWork =
(PS_flc3_controlA0513_D_Work *) ssGetRootDWork(S);
PS_flc3_controlA0513_Parameters *PS_flc3_controlA0513_P =
(PS_flc3_controlA0513_Parameters *) ssGetDefaultParam(S);
/* local block i/o variables */
real_T rtb_PulseGenerator;
real_T rtb_Sum2;
real_T rtb_Derivative1;
real_T rtb_Product[2];
real_T rtb_Sum_fk;
real_T rtb_Product_d[2];
real_T rtb_Sum_i;
real_T rtb_Product_a[2];
real_T rtb_Sum_c;
real_T rtb_Product_m[2];
real_T rtb_Sum_i5;
real_T rtb_Product_k[2];
real_T rtb_Sum_hj;
real_T rtb_netsum[5];
real_T rtb_Product_b[5];
real_T rtb_Sum_e;
real_T rtb_Derivative1_e;
real_T rtb_Product_be[2];
real_T rtb_Sum_ci;
real_T rtb_Product_a5[2];
real_T rtb_Sum_g;
real_T rtb_Product_e[2];
real_T rtb_Sum_b;
real_T rtb_Product_f[2];
real_T rtb_Sum_m;
real_T rtb_Product_g[2];
real_T rtb_Sum_bv;
real_T rtb_netsum_j[5];
real_T rtb_Product_bi[5];
real_T rtb_Sum_o;
real_T rtb_Derivative1_g;
real_T rtb_Product_dq[2];
real_T rtb_Sum_gt;
real_T rtb_Product_n[2];
real_T rtb_Sum_p;
real_T rtb_Product_dn[2];
real_T rtb_Sum_fc;
real_T rtb_Product_p[2];
real_T rtb_Sum_ba;
real_T rtb_Product_h[2];
real_T rtb_Sum_g3;
real_T rtb_netsum_n[5];
real_T rtb_Product_c[5];
real_T rtb_Sum_dq;
real_T rtb_Derivative1_m;
real_T rtb_Product_b1[2];
real_T rtb_Sum_er;
real_T rtb_Product_mz[2];
real_T rtb_Sum_n;
real_T rtb_Product_ki[2];
real_T rtb_Sum_mz;
real_T rtb_Product_l[2];
real_T rtb_Sum_on;
real_T rtb_Product_gu[2];
real_T rtb_Sum_hd;
real_T rtb_netsum_e[5];
real_T rtb_Product_ar[5];
real_T rtb_Sum_ng;
real_T rtb_Derivative1_f;
real_T rtb_Product_dt[2];
real_T rtb_Sum_hw;
real_T rtb_Product_bt[2];
real_T rtb_Sum_js;
real_T rtb_Product_pc[2];
real_T rtb_Sum_gi;
real_T rtb_Product_ll[2];
real_T rtb_Sum_l;
real_T rtb_Product_e1[2];
real_T rtb_Sum_hg;
real_T rtb_netsum_h[5];
real_T rtb_Product_cz[5];
real_T rtb_Sum_a;
real_T rtb_Derivative;
real_T rtb_Integral;
real_T rtb_Derivative_p;
real_T rtb_Integral_e;
real_T rtb_Derivative_h;
real_T rtb_Integral_c;
real_T rtb_Derivative_o;
real_T rtb_Integral_b;
real_T rtb_Derivative_n;
real_T rtb_Integral_f;
/* Clock: '<Root>/Clock' */
PS_flc3_controlA0513_B->Clock = ssGetT(S);
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
/* ToWorkspace: '<Root>/To Workspace4' */
/* Call into Simulink for To Workspace */
ssCallAccelRunBlock(S, 0, 1, SS_CALL_MDL_OUTPUTS);
/* DiscretePulseGenerator: '<Root>/Pulse Generator' */
rtb_PulseGenerator =
(PS_flc3_controlA0513_DWork->clockTickCounter <
PS_flc3_controlA0513_P->PulseGenerator_Duty &&
PS_flc3_controlA0513_DWork->clockTickCounter >= 0) ?
PS_flc3_controlA0513_P->PulseGenerator_Amp :
0.0;
if (PS_flc3_controlA0513_DWork->clockTickCounter >=
PS_flc3_controlA0513_P->PulseGenerator_Period-1) {
PS_flc3_controlA0513_DWork->clockTickCounter = 0;
} else {
(PS_flc3_controlA0513_DWork->clockTickCounter)++;
}
PS_flc3_controlA0513_B->Constant = PS_flc3_controlA0513_P->Constant_Value;
rtb_Sum2 = rtb_PulseGenerator - PS_flc3_controlA0513_B->Constant;
PS_flc3_controlA0513_B->Gain = rtb_Sum2 * PS_flc3_controlA0513_P->Gain_Gain;
}
/* TransferFcn Block: <Root>/Transfer Fcn2 */
PS_flc3_controlA0513_B->TransferFcn2 =
PS_flc3_controlA0513_P->TransferFcn2_C*PS_flc3_controlA0513_X->TransferFcn2_CSTATE[2];
/* TransferFcn Block: <Root>/Transfer Fcn3 */
PS_flc3_controlA0513_B->TransferFcn3 =
PS_flc3_controlA0513_P->TransferFcn3_C*PS_flc3_controlA0513_X->TransferFcn3_CSTATE[2];
/* TransferFcn Block: <Root>/Transfer Fcn5 */
PS_flc3_controlA0513_B->TransferFcn5 =
PS_flc3_controlA0513_P->TransferFcn5_C*PS_flc3_controlA0513_X->TransferFcn5_CSTATE[2];
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
/* Scope: '<Root>/Scope' */
/* Call into Simulink for Scope */
ssCallAccelRunBlock(S, 0, 9, SS_CALL_MDL_OUTPUTS);
PS_flc3_controlA0513_B->Gain1 = rtb_Sum2 *
PS_flc3_controlA0513_P->Gain1_Gain;
}
/* TransferFcn Block: <Root>/Transfer Fcn1 */
PS_flc3_controlA0513_B->TransferFcn1 =
PS_flc3_controlA0513_P->TransferFcn1_C*PS_flc3_controlA0513_X->TransferFcn1_CSTATE[2];
/* TransferFcn Block: <Root>/Transfer Fcn4 */
PS_flc3_controlA0513_B->TransferFcn4 =
PS_flc3_controlA0513_P->TransferFcn4_C*PS_flc3_controlA0513_X->TransferFcn4_CSTATE[2];
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
/* Scope: '<Root>/Scope1' */
/* Call into Simulink for Scope */
ssCallAccelRunBlock(S, 0, 13, SS_CALL_MDL_OUTPUTS);
PS_flc3_controlA0513_B->Gain2 = rtb_Sum2 *
PS_flc3_controlA0513_P->Gain2_Gain;
PS_flc3_controlA0513_B->Gain3 = rtb_Sum2 *
PS_flc3_controlA0513_P->Gain3_Gain;
PS_flc3_controlA0513_B->Gain4 = rtb_Sum2 *
PS_flc3_controlA0513_P->Gain4_Gain;
}
PS_flc3_controlA0513_B->Sum = PS_flc3_controlA0513_B->Gain -
PS_flc3_controlA0513_B->TransferFcn2;
/* Derivative Block: <S1>/Derivative1 */
{
real_T t = ssGetTaskTime(S,tid);
real_T timeStampA = PS_flc3_controlA0513_DWork->Derivative1_RWORK.TimeStampA;
real_T timeStampB = PS_flc3_controlA0513_DWork->Derivative1_RWORK.TimeStampB;
if (timeStampA >= t && timeStampB >= t) {
rtb_Derivative1 = 0.0;
} else {
real_T deltaT;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK.TimeStampA;
if (timeStampA < timeStampB) {
if (timeStampB < t) {
lastBank += 2;
}
} else if (timeStampA >= t) {
lastBank += 2;
}
deltaT = t - *lastBank++;
rtb_Derivative1 = (PS_flc3_controlA0513_B->Sum - *lastBank++) / deltaT;
}
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
PS_flc3_controlA0513_B->IW111[0] = PS_flc3_controlA0513_P->IW111_Value[0];
PS_flc3_controlA0513_B->IW111[1] = PS_flc3_controlA0513_P->IW111_Value[1];
PS_flc3_controlA0513_B->IW112[0] = PS_flc3_controlA0513_P->IW112_Value[0];
PS_flc3_controlA0513_B->IW112[1] = PS_flc3_controlA0513_P->IW112_Value[1];
PS_flc3_controlA0513_B->IW113[0] = PS_flc3_controlA0513_P->IW113_Value[0];
PS_flc3_controlA0513_B->IW113[1] = PS_flc3_controlA0513_P->IW113_Value[1];
PS_flc3_controlA0513_B->IW114[0] = PS_flc3_controlA0513_P->IW114_Value[0];
PS_flc3_controlA0513_B->IW114[1] = PS_flc3_controlA0513_P->IW114_Value[1];
PS_flc3_controlA0513_B->IW115[0] = PS_flc3_controlA0513_P->IW115_Value[0];
PS_flc3_controlA0513_B->IW115[1] = PS_flc3_controlA0513_P->IW115_Value[1];
}
PS_flc3_controlA0513_B->SE1 = PS_flc3_controlA0513_B->Sum *
PS_flc3_controlA0513_P->SE1_Gain;
PS_flc3_controlA0513_B->SDE001 = rtb_Derivative1 *
PS_flc3_controlA0513_P->SDE001_Gain;
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
rtb_Product[0] = PS_flc3_controlA0513_B->IW111[0] *
PS_flc3_controlA0513_B->SE1;
rtb_Product[1] = PS_flc3_controlA0513_B->IW111[1] *
PS_flc3_controlA0513_B->SDE001;
/* Sum: '<S22>/Sum' */
rtb_Sum_fk = rtb_Product[0];
rtb_Sum_fk += rtb_Product[1];
rtb_Product_d[0] = PS_flc3_controlA0513_B->IW112[0] *
PS_flc3_controlA0513_B->SE1;
rtb_Product_d[1] = PS_flc3_controlA0513_B->IW112[1] *
PS_flc3_controlA0513_B->SDE001;
/* Sum: '<S23>/Sum' */
rtb_Sum_i = rtb_Product_d[0];
rtb_Sum_i += rtb_Product_d[1];
rtb_Product_a[0] = PS_flc3_controlA0513_B->IW113[0] *
PS_flc3_controlA0513_B->SE1;
rtb_Product_a[1] = PS_flc3_controlA0513_B->IW113[1] *
PS_flc3_controlA0513_B->SDE001;
/* Sum: '<S24>/Sum' */
rtb_Sum_c = rtb_Product_a[0];
rtb_Sum_c += rtb_Product_a[1];
rtb_Product_m[0] = PS_flc3_controlA0513_B->IW114[0] *
PS_flc3_controlA0513_B->SE1;
rtb_Product_m[1] = PS_flc3_controlA0513_B->IW114[1] *
PS_flc3_controlA0513_B->SDE001;
/* Sum: '<S25>/Sum' */
rtb_Sum_i5 = rtb_Product_m[0];
rtb_Sum_i5 += rtb_Product_m[1];
rtb_Product_k[0] = PS_flc3_controlA0513_B->IW115[0] *
PS_flc3_controlA0513_B->SE1;
rtb_Product_k[1] = PS_flc3_controlA0513_B->IW115[1] *
PS_flc3_controlA0513_B->SDE001;
/* Sum: '<S26>/Sum' */
rtb_Sum_hj = rtb_Product_k[0];
rtb_Sum_hj += rtb_Product_k[1];
{
real_T cg_in_0_37_0[5];
int32_T i1;
for(i1=0; i1<5; i1++) {
PS_flc3_controlA0513_B->b1[i1] = PS_flc3_controlA0513_P->b1_Value[i1];
}
cg_in_0_37_0[0] = rtb_Sum_fk;
cg_in_0_37_0[1] = rtb_Sum_i;
cg_in_0_37_0[2] = rtb_Sum_c;
cg_in_0_37_0[3] = rtb_Sum_i5;
cg_in_0_37_0[4] = rtb_Sum_hj;
for(i1=0; i1<5; i1++) {
rtb_netsum[i1] = cg_in_0_37_0[i1] + PS_flc3_controlA0513_B->b1[i1];
PS_flc3_controlA0513_B->IW211[i1] =
PS_flc3_controlA0513_P->IW211_Value[i1];
rtb_Product_b[i1] = PS_flc3_controlA0513_B->IW211[i1] *
rt_SATURATE(rtb_netsum[i1],
PS_flc3_controlA0513_P->Saturation_LowerSat,
PS_flc3_controlA0513_P->Saturation_UpperSat);
}
}
/* Sum: '<S31>/Sum' */
rtb_Sum_e = rtb_Product_b[0];
rtb_Sum_e += rtb_Product_b[1];
rtb_Sum_e += rtb_Product_b[2];
rtb_Sum_e += rtb_Product_b[3];
rtb_Sum_e += rtb_Product_b[4];
PS_flc3_controlA0513_B->b2 = PS_flc3_controlA0513_P->b2_Value;
PS_flc3_controlA0513_B->SU1 = (rtb_Sum_e + PS_flc3_controlA0513_B->b2) *
PS_flc3_controlA0513_P->SU1_Gain;
}
PS_flc3_controlA0513_B->Sum3 = PS_flc3_controlA0513_B->Gain1 -
PS_flc3_controlA0513_B->TransferFcn1;
/* Derivative Block: <S2>/Derivative1 */
{
real_T t = ssGetTaskTime(S,tid);
real_T timeStampA =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampA;
real_T timeStampB =
PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampB;
if (timeStampA >= t && timeStampB >= t) {
rtb_Derivative1_e = 0.0;
} else {
real_T deltaT;
real_T *lastBank =
&PS_flc3_controlA0513_DWork->Derivative1_RWORK_b.TimeStampA;
if (timeStampA < timeStampB) {
if (timeStampB < t) {
lastBank += 2;
}
} else if (timeStampA >= t) {
lastBank += 2;
}
deltaT = t - *lastBank++;
rtb_Derivative1_e = (PS_flc3_controlA0513_B->Sum3 - *lastBank++) / deltaT;
}
}
if (ssIsSampleHit(S, 1, tid)) { /* Sample time: [0.001s, 0.0s] */
PS_flc3_controlA0513_B->IW111_n[0] =
PS_flc3_controlA0513_P->IW111_Value_b[0];
PS_flc3_controlA0513_B->IW111_n[1] =
PS_flc3_controlA0513_P->IW111_Value_b[1];
PS_flc3_controlA0513_B->IW112_i[0] =
PS_flc3_controlA0513_P->IW112_Value_j[0];
PS_flc3_controlA0513_B->IW112_i[1] =
PS_flc3_controlA0513_P->IW112_Value_j[1];
PS_flc3_controlA0513_B->IW113_b[0] =
PS_flc3_controlA0513_P->IW113_Value_a[0];
PS_flc3_controlA0513_B->IW113_b[1] =
PS_flc3_controlA0513_P->IW113_Value_a[1];
PS_flc3_controlA0513_B->IW114_e[0] =
PS_flc3_controlA0513_P->IW114_Value_b[0];
PS_flc3_controlA0513_B->IW114_e[1] =
PS_flc3_controlA0513_P->IW114_Value_b[1];
PS_flc3_controlA0513_B->IW115_h[0] =
PS_flc3_controlA0513_P->IW115_Value_h[0];
PS_flc3_controlA0513_B->IW115_h[1] =
PS_flc3_controlA0513_P->IW115_Value_h[1];
}
PS_flc3_controlA0513_B->SE1_p = PS_flc3_controlA0513_B->Sum3 *
PS_flc3_controlA0513_P->SE1_Gain_n;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -