我写了一个C函数并用它作为一个simulink块。没关系。答案还可以,大约10 ^ -14的错误(在matlab环境中)...现在我想连接到RT_LAB,运行我的模特实时。
要在RT_LAB中执行simulink模型,我们有3个步骤:1。编译模型。加载它。 3.执行模型。因此,如果你有一个无效的模型,你应该在第一步中有错误(正如我在完成我的模型之前),我的模型现在编译没有错误,我加载它,但是当我执行它时,答案是无效的(有没有错误,但也没有有效的答案。)
当RT_LAB编译模型时,它会将模型转换为C代码。我想这个部分可能有问题,生成错误的C代码。这里有人使用过RT_LAB吗? 我怎样才能找到问题?
答案 0 :(得分:0)
我定义了这样的函数:
void my_fun (int input1,float *input2,....,long double *output1,....)
{
/*
my codes....
*/
return;
}
在C Sfunnction中,我们的输入和输出是一种指针,它们在"simstruc.h"
中定义,而不是int Sfuntion使用int_T或代替float或double或long double它使用real_T,我注意到Sfunction中的所有默认函数都是static void
,而且它们没有return
,所以我改变了编写代码的方式:
static void my_fun (int_T input1,real_T *input2,....,real_T *output1,....)
{
/*
my codes....
*/
}
这就是我的案例的答案。作为结论,如果您只是编写Sfuntions以便在MATLAB环境中使用,那么如果您选择第一种或第二种类型的书写函数,则没有区别,但如果您想要要编译它RTLAB
,你必须小心选择第二种方法。