Integrate BSW C# into Simulink Model

Here introduce a method to integrate BSW C# function into simulink module. 

方法介绍和实际操作结果,主要参考文章

Simulink代码生成:通过Legacy Code Tool集成C函数-CSDN博客

通过使用代码继承工具集成现有 C/C++ 代码 - MATLAB legacy_code - MathWorks 中国

1.已知 软件底层BSW 给的硬件针脚驱动接口函数如下。需要将该函数做simulink接口模块,实现模型调用开发。

有两个输入参数:硬件通道数和是否打开。 无返回值。

void PSwtDrv_Interface(uint8 idxChanUB,uint8 bOpenUB);

2.主要使用的方法是LCT- Legacy Code Tool

A- 首先需要创建一个.c 文件。因为接口函数已经在底层定义和声明。

我们这里要造一个假的函数,有相同的函数名。

Matlab 脚本如下:

def = legacy_code('initialize');% 初始化一个legacy code类型的的结构体,结构名为def

def.SourceFiles = {'driving.c'};% 定义def的成员中的sourcefile 要指定对应的函数.c
%def.HeaderFiles = {'driving.h'};
def.SFunctionName = 'PSwtDrv_Interface'; % 定义sfunction名称
def.OutputFcnSpec = 'void PSwtDrv_Interface(uint8 u1,uint8 p1)';% 定义OutputFcnSpec成员的函数功能,输入u1 u2 参数用p1 p2 输出y1 y2
% def.IncPaths      = {'sldemo_lct_src'};
% def.SrcPaths      = {'sldemo_lct_src'};

legacy_code('sfcn_cmex_generate',def);      %  生成正式的sfunction的源文件.c
legacy_code('compile', def);                %   编译生成mexw64 文件
legacy_code('slblock_generate',def,'PSwtDrv_Interface_slx');% 生成PSwtDrv_Interface_slx模型中的模块并打开该模型
legacy_code('generate_for_sim',def);% 生成tlc文件    

共需要两个文件足够,如果考虑到数据类型,适当添加 rtwtypes.h 和#include  “rtwtypes.h”

 运行脚本

生成了正式的s-function的.c文件、 mexw64文件、tlc文件。同时生成的模块也对应打开,其实我们只需要 mexw64文件、tlc文件,拷贝两个到正式的模型路径中去

创建lib.slx, 使用s-function 输入文件名和参数,可以进行封装,完成后可以放到空白的lib中,备实际的模型使用

 

 

 现在看一下生成的代码:可见代码正常生成

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值