Matlab/Simulink S-Function: Wie man den vollständigen Block-Pfad der S-Function erhält
In Matlab/Simulink kannst du den vollständigen Block-Pfad einer S-Function mit ssGetPath() erhalten.
ssgetpath_example.c
// Block-Pfad abrufen
const char* blockPath = ssGetPath(S);
// Block-Pfad protokollieren
fprintf(stderr, "The full path of the block is: %s\n", blockPath);Vollständiges Beispiel
Dieses Beispiel verwendet eine S-Function ohne Eingänge oder Ausgänge, die den vollständigen Pfad des Blocks während mdlStart() auf der Kommandozeile ausgibt.
sfunction_full_example.c
#define S_FUNCTION_NAME BlockName
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Funktion: mdlInitializeSizes ==============================================
static void mdlInitializeSizes(SimStruct *S) {
ssSetNumSFcnParams(S, 0); // Keine Parameter
if (!ssSetNumInputPorts(S, 0)) return;
if (!ssSetNumOutputPorts(S, 0)) return;
ssSetNumSampleTimes(S, 1);
ssSetOptions(S, 0);
}
#define MDL_START
static void mdlStart(SimStruct *S) {
// Block-Pfad abrufen
const char* blockPath = ssGetPath(S);
// Block-Pfad protokollieren oder verwenden
fprintf(stderr, "The full path of the block is: %s\n", blockPath);
}
// Funktion: mdlInitializeSampleTimes =========================================
static void mdlInitializeSampleTimes(SimStruct *S) {
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
}
// Funktion: mdlOutputs ======================================================
static void mdlOutputs(SimStruct *S, int_T tid) {
}
// Funktion: mdlTerminate ====================================================
static void mdlTerminate(SimStruct *S) {
// Keine Terminierungsaufgaben erforderlich
}
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // MEX-Datei-Schnittstellenmechanismus
#else
#include "cg_sfun.h" // Codegenerierungs-Registrierungsfunktion
#endifFüge diese wie jede normale S-Function hinzu (denke daran, dass sie keine Eingänge oder Ausgänge hat, also platziere sie einfach irgendwo im Modell)
Beispiel-Ausgabe:
ssgetpath_example_output.txt
The full path of the block is: MySimulinkModel/MySubsystem/TheSFunctionÄhnliche Beiträge nach Kategorie:
Matlab/Simulink, C/C++
Wenn dieser Beitrag dir geholfen hat, erwäge, mir einen Kaffee zu spendieren oder per PayPal zu spenden, um die Recherche und Veröffentlichung neuer Beiträge auf TechOverflow zu unterstützen