CN115686524A - 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 - Google Patents
一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 Download PDFInfo
- Publication number
- CN115686524A CN115686524A CN202211054307.0A CN202211054307A CN115686524A CN 115686524 A CN115686524 A CN 115686524A CN 202211054307 A CN202211054307 A CN 202211054307A CN 115686524 A CN115686524 A CN 115686524A
- Authority
- CN
- China
- Prior art keywords
- module
- sfunction
- analyzer
- simulink
- dynamic link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,它涉及仿真软件技术领域。根据动态链接库API函数编写Sfunction模块C语言代码,并且编译C语言为MATLAB可运行的mexw64文件,依据编译出的文件创建Sfunction模块封装界面。本方法实现了MATLAB软件与CAN分析仪的连接,实现了MATLAB仿真软件与真实环境相结合,为算法验证与性能分析提供了一种手段,极大的缩短了研究周期;本方法适用于我国市场上的USB_CAN分析仪,无需掌握Windows底层驱动协议,使用C语言开发,简单快速,安全可靠;本方法开发的CAN分析仪Sfunction能替换Simulink自带的CAN分析仪模块,极大的节约了科研与算法开发成本,并实现了自主可控。
Description
技术领域
本发明涉及的是仿真软件技术领域,具体涉及一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法。
背景技术
Simulink配合CAN通讯进行实时仿真是一种应用广泛的技术,一般都是直接使用Simulink自带的CAN分析模块并且配合官方的CAN分析仪设备进行工程设计与研究,Simulink配合CAN通讯在各个领域,如:汽车***,航空航天***,船舶控制***等,应用广泛。
目前,与Simulink配合CAN通讯进行实时仿真的方法有二中:
使用Simulink提供CAN通讯方案:根据Simulink官方支持的设备和软件进行***的实时仿真;
使用PCI-CAN板卡方案:根据Windows内核驱动方案,编写对应的Simulink驱动,然后在编写Sfunction模块;
上述方法应用比较普遍,但都存在一定的缺陷,主要包括:
使用Simulink提供CAN通讯方案中,设备的采购周期长,价格昂贵,技术支持有限,很多数据及协议需按照指定的格式进行设计,适应***的能力有限。
PCI-CAN板卡方案中依据Windows内核开发需要用户熟悉内核的运行机制,难度大,周期长;在非台式电脑或者工控机的环境无法使用PCI接口的设备。
发明内容
针对现有技术上存在的不足,本发明目的是在于提供一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,开发简单,价格便宜,方便使用及携带,适应能力强。
为了实现上述目的,本发明是通过如下的技术方案来实现:一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,根据动态链接库API函数编写Sfunction模块C语言代码,并且编译C语言为MATLAB可运行的mexw64文件,依据编译出的文件创建Sfunction模块封装界面。
具体包括以下步骤:
1、包含CAN分析仪的头文件ECanVci.h;
2、由头文件提供的API函数编写对应功能的Sfunction模块C语言代码;
3、在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件;
4、创建对应模块的mexw64文件的封装界面:创建对应模块的mexw64文件的封装界面,采用Simulink提供的封装功能进行封装。
作为优选,所述的步骤1包含CAN分析仪的头文件ECanVci.h,并且包含Simulink官方的头文件mex.h;
作为优选,所述的步骤2中由头文件提供的API函数编写对应功能的Sfunction模块C语言代码;不同功能的模块有CAN初始化模块usbcaninit,CAN发送模块usbcantransmit,CAN接收模块usbcanreceive。
作为优选,通过***函数mxGetPr从模块界面获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式;将模块采样时间设为继承其他模块的采样时间ssSetModelReferenceSampleTimelinheritanceRule(S,USE_DEFAULT_FOR_DISCRETE_INHERITANCE);
作为优选,通过***函数ssSetIWorkValue设置全局变量,将CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入全局变量中以便其他模块调用。
作为优选,将CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入CAN分析仪打开设备函数OpenDevice中,CAN分析仪初始化函数InitCAN中,CAN开始设备函数StartCAN中。
作为优选,通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN发送模块usbcantransmit使用。
作为优选,由CAN发送模块调用***函数ssGetInputPortRealSignal获取需要传输的数据,并与CAN设备ID组成完整的发送帧,并将完整发送帧写入CAN分析仪Transmit函数中。
作为优选,通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN接收模块usbcanreceive使用;所述CAN接收模块调用***函数mxGetPr从模块封装界面获取滤波ID,滤波模式,滤波帧类型参数,并将获取的参数写入动态链接库函数SetReference中;写入参数到SetReference后再从动态链接库函数Receive中读取数据。
作为优选,所述的步骤3在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件的格式为 mex‘空格’‘库名’‘空格’‘Sfunction模块名’。
本发明的有益效果:本发明实现了MATLAB软件与CAN分析仪的连接,实现了MATLAB仿真软件与真实环境相结合,为算法验证与性能分析提供了一种手段,极大的缩短了研究周期;本方法适用于我国市场上的USB_CAN分析仪,无需掌握Windows底层驱动协议,使用C语言开发,简单快速,安全可靠;本方法开发的CAN分析仪Sfunction能替换Simulink自带的CAN分析仪模块,极大的节约了科研与算法开发成本,并实现了自主可控。
附图说明
下面结合附图和具体实施方式来详细说明本发明;
图1为本发明实施例的架构图;
图2为本发明实施例所采用的软件流程图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
参照图1-2,本具体实施方式采用以下技术方案:一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,选用市场上普通的USB-CAN分析仪;根据厂商提供的动态链接库进行Simulink的Sfunction模块开发;根据动态链接库API函数编写Sfunction模块C语言代码,并且编译C语言为MATLAB可运行的mexw64文件,依据编译出的文件创建Sfunction模块封装界面。
具体包括以下步骤:
1、包含CAN分析仪的头文件ECanVci.h;
2、由头文件提供的API函数编写对应功能的Sfunction模块C语言代码;
3、在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件;
4、创建对应模块的mexw64文件的封装界面。
值得注意的是,所述步骤1包含CAN分析仪的头文件ECanVci.h,并且包含Simulink官方的头文件mex.h;
本具体实施方式用头文件提供的API函数编写对应功能的Sfunction模块C语言代码。编写的C代码模块有CAN初始化模块usbcaninit,CAN发送模块usbcantransmit,CAN接收模块usbcanreceive。通过***函数mxGetPr从模块界面获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式。通过***函数ssSetIWorkValue设置全局变量,将权利要求5所述CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入全局变量中以便其他模块调用。
本具体实施方式将CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入CAN分析仪打开设备函数OpenDevice中,CAN分析仪初始化函数InitCAN中,CAN开始设备函数StartCAN中。通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN发送模块usbcantransmit使用。
本具体实施方式由CAN发送模块调用***函数ssGetInputPortRealSignal获取需要传输的数据,并与CAN设备ID组成完整的发送帧,并将完整发送帧写入CAN分析仪Transmit函数中。通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN接收模块usbcanreceive使用。所述CAN接收模块调用***函数mxGetPr从模块封装界面获取滤波ID,滤波模式,滤波帧类型参数,并将获取的参数写入动态链接库函数SetReference中。写入参数到SetReference后再从动态链接库函数Receive中读取数据。
本具体实施方式将模块采样时间设为继承其他模块的采样时间ssSetModelReferenceSampleTimelinheritanceRule(S,USE_DEFAULT_FOR_DISCRETE_INHERITANCE);
在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件的格式为 mex‘空格’‘库名’‘空格’‘Sfunction模块名’。
创建对应模块的mexw64文件的封装界面,采用Simulink提供的封装功能进行封装。
本具体实施方式根据动态链接库API函数编写Sfunction模块C语言代码,并且编译C语言为MATLAB可运行的mexw64文件,依据编译出的文件创建Sfunction模块封装界面。本方法实现了MATLAB软件与CAN分析仪的连接,实现了MATLAB仿真软件与真实环境相结合,为算法验证与性能分析提供了一种手段,极大的缩短了研究周期;本方法适用于我国市场上的USB_CAN分析仪,无需掌握Windows底层驱动协议,使用C语言开发,简单快速,安全可靠;本方法开发的CAN分析仪Sfunction能替换Simulink自带的CAN分析仪模块,极大的节约了科研与算法开发成本,并实现了自主可控。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,根据动态链接库API函数编写Sfunction模块C语言代码,并且编译C语言为MATLAB可运行的mexw64文件,依据编译出的文件创建Sfunction模块封装界面。
2.具体包括以下步骤:
(1)、包含CAN分析仪的头文件ECanVci.h;
(2)、由头文件提供的API函数编写对应功能的Sfunction模块C语言代码;
(3)、在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件;
(4)、创建对应模块的mexw64文件的封装界面:创建对应模块的mexw64文件的封装界面,采用Simulink提供的封装功能进行封装。
3.根据权利要求1所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,所述的步骤(1)包含CAN分析仪的头文件ECanVci.h,并且包含Simulink官方的头文件mex.h;
根据权利要求1所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,所述的步骤(2)中由头文件提供的API函数编写对应功能的Sfunction模块C语言代码;不同功能的模块有CAN初始化模块usbcaninit,CAN发送模块usbcantransmit,CAN接收模块usbcanreceive。
4.根据权利要求3所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,通过***函数mxGetPr从模块界面获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式;将模块采样时间设为继承其他模块的采样时间ssSetModelReferenceSampleTimelinheritanceRule(S,USE_DEFAULT_FOR_DISCRETE_INHERITANCE)。
5.根据权利要求4所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,通过***函数ssSetIWorkValue设置全局变量,将CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入全局变量中以便其他模块调用。
6.根据权利要求3所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,将CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式写入CAN分析仪打开设备函数OpenDevice中,CAN分析仪初始化函数InitCAN中,CAN开始设备函数StartCAN中。
7.根据权利要求5所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN发送模块usbcantransmit使用。
8.根据权利要求7所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,由CAN发送模块调用***函数ssGetInputPortRealSignal获取需要传输的数据,并与CAN设备ID组成完整的发送帧,并将完整发送帧写入CAN分析仪Transmit函数中。
9.根据权利要求5所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,通过***函数ssGetIWorkValue从全局变量中获取CAN设备ID,CAN波特率,CAN设备索引,CAN设备模式,供CAN接收模块usbcanreceive使用;所述CAN接收模块调用***函数mxGetPr从模块封装界面获取滤波ID,滤波模式,滤波帧类型参数,并将获取的参数写入动态链接库函数SetReference中;写入参数到SetReference后再从动态链接库函数Receive中读取数据。
10.根据权利要求1所述的一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法,其特征在于,所述的步骤(3)在MATLAB命令对话框中使用mex命令加载动态链接库,并且编译对应模块的Sfunction为可执行的mexw64文件的格式为 mex‘空格’‘库名’‘空格’‘Sfunction模块名’。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211054307.0A CN115686524A (zh) | 2022-08-31 | 2022-08-31 | 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211054307.0A CN115686524A (zh) | 2022-08-31 | 2022-08-31 | 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115686524A true CN115686524A (zh) | 2023-02-03 |
Family
ID=85061614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211054307.0A Pending CN115686524A (zh) | 2022-08-31 | 2022-08-31 | 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686524A (zh) |
-
2022
- 2022-08-31 CN CN202211054307.0A patent/CN115686524A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101414188B (zh) | 基于ccp协议的汽车abs ecu在线标定***和标定方法 | |
CN110674590A (zh) | 一种基于仿真软件Simulink实时扩展RTX的飞行器实时仿真程序的编程方法 | |
CN106371847A (zh) | Windows xp***下CPCI总线RS422通信驱动方法及*** | |
US7469359B2 (en) | Method and apparatus for testing communication software | |
CN101308465A (zh) | 访问本地资源的方法及装置 | |
EP3982268B1 (en) | Chassis simulation method and apparatus, server, storage medium and program product | |
CN115686524A (zh) | 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 | |
CN111443994A (zh) | 一种模拟智能卡驱动程序、信息交互***及其工作方法 | |
CN116521240A (zh) | 一种设备驱动管理方法 | |
CN110990252B (zh) | 一种嵌入式飞控软件测试质量和效率的测试方法 | |
CN115203019A (zh) | Gpu服务器的性能测试方法、装置、设备及存储介质 | |
CN111581817B (zh) | 一种基于opc-ua的仿真软件数据通信方法 | |
WO2004088508A2 (en) | A method of creating software that is portable across different operating systems | |
KR101154380B1 (ko) | 스크립트 언어로 제작된 컨텐츠를 이기종 임베디드 기기에서 실행이 가능하도록 하기 위한 임베디드 기기의 컨텐츠 실행 환경 설정 방법 | |
CN106250120A (zh) | 一种基于高通平台的***的编译方法 | |
Navas et al. | Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework | |
CN117707651B (zh) | 基于嵌入式Linux***的接口资源操作方法及*** | |
CN117408060B (zh) | 整车模型仿真性能优化方法、存储介质和电子设备 | |
CN117408061B (zh) | 整车模型仿真性能优化***及计算机装置 | |
CN117971583B (zh) | 一种存储颗粒的测试方法、***、电子设备及存储介质 | |
TWI637277B (zh) | 標準程式語言腳本架構結合虛擬機的控制方法及程式產品 | |
US20220066911A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
CN116016214A (zh) | 一种基于mqtt的配电智能终端仿真***及方法 | |
CN118276472A (zh) | 车辆的多指令控制方法、装置、车辆控制*** | |
KR20240103665A (ko) | 원자력시설에서 활용되는 plc 인터페이스 접근제어 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |