C功能& RTLAB

时间:2013-11-21 08:55:04

标签: c matlab real-time simulink

我写了一个C函数并用它作为一个simulink块。没关系。答案还可以,大约10 ^ -14的错误(在matlab环境中)...现在我想连接到RT_LAB,运行我的模特实时。

要在RT_LAB中执行simulink模型,我们有3个步骤:1。编译模型。加载它。 3.执行模型。因此,如果你有一个无效的模型,你应该在第一步中有错误(正如我在完成我的模型之前),我的模型现在编译没有错误,我加载它,但是当我执行它时,答案是无效的(有没有错误,但也没有有效的答案。)

当RT_LAB编译模型时,它会将模型转换为C代码。我想这个部分可能有问题,生成错误的C代码。这里有人使用过RT_LAB吗? 我怎样才能找到问题?

1 个答案:

答案 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,你必须小心选择第二种方法。