Bonjour je commence juste à travail sur des S-Function, je n’arrive pas à réaliser une fonction très simple je voudrais recopier le résultat de l’entrée en sortie. Pouvez vous me dire ou se trouve mon erreur.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
#define S_FUNCTION_NAME  test2
#define S_FUNCTION_LEVEL 2
 
#include "simstruc.h"
 
 
/*
   %%%-MATLAB_Construction_Commands_Start
   def = legacy_code('initialize');
   def.SFunctionName = 'test2';
   legacy_code('compile', def);
   %%%-MATLAB_Construction_Commands_End
 */
 
 
static void mdlInitializeSizes(SimStruct *S)
{
 
    // Sorties
    ssSetNumOutputPorts(S,1);
 
    ssSetOutputPortWidth(S,0,1);
 
    ssSetOutputPortDataType(S,0,SS_DOUBLE);
 
    //Entrees
 
   ssSetNumInputPorts(S,2);
 
   ssSetInputPortWidth(S,0,1);
   ssSetInputPortDataType(S,0, SS_DOUBLE);
 
//   ssSetInputPortWidth(S,1,1);
 //  ssSetInputPortDataType(S,1, SS_SINGLE);
 
}
 
static void mdlInitializeSampleTimes(SimStruct *S)
{
    ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME);
    ssSetOffsetTime(S, 0, 0.0);
}
 
 
static void mdlOutputs(SimStruct *S, int_T tid)
{
//    real32_T *p1 = (real32_T *) ssGetRunTimeParamInfo(S, 0);
    real32_T *u1 = (real32_T *) ssGetInputPortSignal(S, 0);
    real32_T *y1 = (real32_T *) ssGetOutputPortSignal(S, 0);
 
    *y1 = *u1;
}
 
static void mdlTerminate(SimStruct *S)
{
}
 
#ifdef MATLAB_MEX_FILE
# include "simulink.c"
#else
# include "cg_sfun.h"
#endif

Merci