CN115686524A - 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 - Google Patents

一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 Download PDF

Info

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
Application number
CN202211054307.0A
Other languages
English (en)
Inventor
李文魁
张煦光
朱天高
徐务农
周铸
肖良芬
楼鉴路
陈浩
李开龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Naval University of Engineering PLA
Original Assignee
Naval University of Engineering PLA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Naval University of Engineering PLA filed Critical Naval University of Engineering PLA
Priority to CN202211054307.0A priority Critical patent/CN115686524A/zh
Publication of CN115686524A publication Critical patent/CN115686524A/zh
Pending legal-status Critical Current

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分析仪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模块名’。
CN202211054307.0A 2022-08-31 2022-08-31 一种Simulink调用动态链接库编写CAN分析仪Sfunction模块的方法 Pending CN115686524A (zh)

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)

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