和simulink c代码生成s-function相关的一些心得

工作原因需要将一个一部分的c代码在simulink中运行并进行仿真测试,于是就使用了matlab自带的lct code工具。从中遇到了几个问题记录一下:

1. 首先是输入输出结构体的定义,如果输入和输出都是结构体,那么在c的header里面需要定义这些输入输出的数据类型,在matlab的workspace里面也需要定义相同的bus,同时将该bus的类型设置为imported,来源的header文件就是我们在c代码里定义的文件名。

2. 使用该方法需要定义输出函数为什么,如果定义的输入是结构体指针,那么在这个定义输出函数的输入里面要写成数组的第一个值

比方说我的函数输出是这个

int y = output(aaa *u1);

那我们在matlab里面设置就要把它写成 y=output(aaa u1[0]);

3.在仿真的时候发现在计算微分的时候出现了问题,一直都是0,随后发现在simulink模块的一个仿真周期下,这部分代码走了9次。。我在设置sample time的时候设置的参数和模型的仿真周期一致。后面的解决办法是设置了一个时间同步,即给c代码的输入增加一个接口,这个接口的量simulink chart输出一个随周期+1的值,c代码根据这个值来运行,如果这个值不加,则idle。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值