Hyowinner的MBD技术论坛

 找回密码
 立即注册
搜索
查看: 132|回复: 7

原子子系统生成代码的输入输出参数类型为void

[复制链接]

3

主题

15

帖子

73

积分

MBD初级工程师

Rank: 2

积分
73
发表于 2026-4-28 16:24:32 | 显示全部楼层 |阅读模式
本帖最后由 lh_404 于 2026-4-28 16:26 编辑

现有一个模型,将其打包为原子子系统atomic unit并在代码生成设置中设置为可复用函数reusable function。在生成代码之后,发现生成的函数输入输出参数均为void类型,中间的运算也是直接用定义的全局变量去进行运算。但是这个原子子系统是有输入输出端口的。
如何使得生成的函数的输入输出参数,和这个子系统的输入输出端口相匹配?比如输入参数为ualpha, ubeta, Ialpha, Ibeta……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

79

主题

139

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051
发表于 2026-4-28 19:36:22 | 显示全部楼层
原子子系统的代码生成里面,函数接口不要选void_void,而是选arguments,就可以生成匹配的形参列表了。其中模型输入参数可以匹配C函数的参数列表,当模型输出端口多于1个的时候,C语言无法返回多个值,所以一般输出值也生成到输入参数列表里,以指针形式存在。
回复

使用道具 举报

3

主题

15

帖子

73

积分

MBD初级工程师

Rank: 2

积分
73
 楼主| 发表于 2026-4-29 09:54:48 | 显示全部楼层
本帖最后由 lh_404 于 2026-4-29 10:06 编辑
admin 发表于 2026-4-28 19:36
原子子系统的代码生成里面,函数接口不要选void_void,而是选arguments,就可以生成匹配的形参列表了。其中 ...

校长,我在原子子系统的设置里,发现只有非可复用函数才有这个选项,但是我希望使用可复用函数,应该怎么设置?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

79

主题

139

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051
发表于 2026-4-29 13:24:03 | 显示全部楼层
lh_404 发表于 2026-4-29 09:54
校长,我在原子子系统的设置里,发现只有非可复用函数才有这个选项,但是我希望使用可复用函数,应该怎么 ...

可重用函数,生成的就是输入输出端口对应到C函数的参数列表的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

3

主题

15

帖子

73

积分

MBD初级工程师

Rank: 2

积分
73
 楼主| 发表于 2026-4-29 15:17:46 | 显示全部楼层
admin 发表于 2026-4-29 13:24
可重用函数,生成的就是输入输出端口对应到C函数的参数列表的。

校长,如果我配置成不可重用函数,SIMULINK也能生成出带参数列表的函数,那和可重用函数有什么区别呢?
回复

使用道具 举报

99

主题

247

帖子

4216

积分

管理员

校长

Rank: 9Rank: 9Rank: 9

积分
4216
QQ
发表于 2026-4-29 15:47:11 | 显示全部楼层
lh_404 发表于 2026-4-29 15:17
校长,如果我配置成不可重用函数,SIMULINK也能生成出带参数列表的函数,那和可重用函数有什么区别呢? ...

你可以对比一下这两份生成的代码。
或者贴出来,校长帮你对比一下。
持续学习 未来有你
基于场景 解决问题
项目合作联系微信:Hyo_Matlab
回复

使用道具 举报

3

主题

15

帖子

73

积分

MBD初级工程师

Rank: 2

积分
73
 楼主| 发表于 2026-4-29 16:39:02 | 显示全部楼层
hyowinner 发表于 2026-4-29 15:47
你可以对比一下这两份生成的代码。
或者贴出来,校长帮你对比一下。

对比了下发现,不可重用函数里的中间变量还是用的全局变量,可重用函数里的中间变量是局部变量。
但是我这边有一个模型里的原子子系统,即使选了可重用函数,生成的函数输入参数也还是void类型,没有参数列表,还有可能是什么原因呢?其他模型都没这个问题。
回复

使用道具 举报

79

主题

139

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051
发表于 2026-4-29 21:49:14 | 显示全部楼层
lh_404 发表于 2026-4-29 16:39
对比了下发现,不可重用函数里的中间变量还是用的全局变量,可重用函数里的中间变量是局部变量。
但是我 ...

检查下,如果模型中多个相同功能的原子子系统实例的输入/输出端口数据类型不完全一致,代码生成器会因无法统一函数接口而生成 void-void 函数或放弃代码复用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|MBD全栈技术学校|苏ICP备2025212294号-1|Hyowinner校长B站首页|手机版|小黑屋|Hyowinner的MBD技术论坛

GMT+8, 2026-5-7 12:01 , Processed in 0.094344 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表