Matlab - s-functions en C de Matlab

 
Vista:

s-functions en C de Matlab

Publicado por jaime (1 intervención) el 17/11/2004 10:33:12
Es realizando un modelo de simulink con dos s-functions programadas en C y quiero que una calcule unos ciertos parámetros y la otra utilize estos mismos en sus cálculos. No querria utilizar entradas y salidas. Como se puede trabajar con parametros globales o algo así ?
He intentado utilizar los parámetros, pero no se muy bien como se trabaja con ellos y me da un error de 'segmentation violation' al realizar una operación entre una entrada y el parámetro, luego no se si el parámetro es el pasado por la primera s-function.
Alguien me podría dar alguna sugerencia?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Uso de parámetros globales en S-Functions en C

Publicado por Alejandro (145 intervenciones) el 06/10/2023 16:15:07
¡Entendido, Jaime! Para trabajar con parámetros globales entre dos S-Functions en C en Simulink, puedes seguir estos pasos:

1. Declaración de parámetros globales:
- En tu archivo de código C, declara tus parámetros globales como variables globales. Puedes hacerlo fuera de las funciones específicas para que sean accesibles en todo el archivo.

1
2
3
4
5
// Archivo de código C
 
// Declaración de parámetros globales
double globalParam1;
double globalParam2;

2. Inicialización de parámetros:
- En la función `mdlStart`, inicializa tus parámetros globales con los valores necesarios.

1
2
3
4
5
6
7
// Función mdlStart
static void mdlStart(SimStruct *S)
{
    // Inicialización de parámetros globales
    globalParam1 = 10.0;
    globalParam2 = 20.0;
}

3. Uso de parámetros en otras funciones:
- Puedes acceder a estos parámetros globales desde otras funciones dentro del mismo archivo de código.

1
2
3
4
5
6
7
// Otras funciones que utilizan los parámetros globales
static void someFunction(SimStruct *S)
{
    // Uso de globalParam1 y globalParam2
    double result = globalParam1 * globalParam2;
    // Resto del código...
}

4. Sincronización entre S-Functions:
- Asegúrate de que ambas S-Functions estén en el mismo modelo de Simulink y que el orden de ejecución sea apropiado para que la S-Function que calcula los parámetros se ejecute antes de la que los utiliza.

5. Manejo de errores de segmentación (segfault):
- Si estás experimentando errores de segmentación, revisa cuidadosamente tu código para garantizar que no haya accesos a memoria no válidos o desreferenciación de punteros sin asignar.

Recuerda que el manejo de parámetros globales puede ser propenso a errores, así que asegúrate de seguir prácticas seguras de programación. Si el problema persiste, verifica los detalles específicos del error de segmentación para identificar la causa exacta. ¡Espero que esto te sea útil!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar