【技术实现步骤摘要】
一种利用LabVIEW设计MSCAN通讯的方法
本专利技术属于CAN通信领域
,具体涉及一种利用LabVIEW设计MSCAN通讯的方法。
技术介绍
美国国家仪器有限公司自1976年成立以来就非常注重编程技术的发展,公司的代表产品LabVIEW以图形化编程环境取代了传统的文本表达形式,受到了广大用户的青睐,使LabVIEW语言迅速发展成为全球热门编程语言之一,并迅速占领了测控系统开发的市场。但是LabVIEW语言的通用性远不及C语言,使其难以移植到微处理器中,虽然LabVIEW也注重语言间的相互转换问题,它的“Cgenerator模块”可以使LabVIEW语言直接向C语言进行转换,但从实际使用情况来看,转换的结果并不理想,生成的C语言质量不好,不能够与微处理器直接对接。
技术实现思路
针对上述问题,本专利技术提供了一种利用LabVIEW设计MSCAN通讯的方法,该方法能够充分利用许多微处理器的程序已基本实现模块化的特点,利用LabVIEW字符串相连生成C语言程序的方法,显著提高C语言程序的生成质量,使 ...
【技术保护点】
1.一种利用LabVIEW设计MSCAN通讯的方法,包括:设计前面板和程序框图;其特征在于,所述前面板用于与用户进行交流,以获取MSCAN基本设置信息和发送报文信息的界面;所述程序框图为后台运行部分,它从前面板获取MSCAN通讯的基本设置信息和发送报文信息,经过信息的处理和代码的拼接,生成可供配置了MSCAN模块的微处理器所使用的C语言程序。/n
【技术特征摘要】
1.一种利用LabVIEW设计MSCAN通讯的方法,包括:设计前面板和程序框图;其特征在于,所述前面板用于与用户进行交流,以获取MSCAN基本设置信息和发送报文信息的界面;所述程序框图为后台运行部分,它从前面板获取MSCAN通讯的基本设置信息和发送报文信息,经过信息的处理和代码的拼接,生成可供配置了MSCAN模块的微处理器所使用的C语言程序。
2.根据权利要求1所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,所述前面板包括MSCAN初始化信息设置区、MSCAN滤波器信息设置区、CAN总线发送报文信息设置区、以及软件控制区。
3.根据权利要求2所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,所述MSCAN初始化信息设置采用枚举型输入控件,其包含的枚举型输入控件有:CAN模块、晶振频率、同步跳转宽度、接收中断、CAN时钟源、波特率、采样数量和标识符类型控件。
4.根据权利要求2所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,所述MSCAN滤波器信息设置区包括验收码字符串输入控件、屏蔽码字符串输入控件和输入格式单选按钮,并将它们一起捆绑成簇变量。
5.根据权利要求4所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,利用所述簇变量获取MSCAN滤波器的设置信息的步骤如下:
步骤1:将验收码与屏蔽码这两个字符串输入控件和1个输入格式单选按钮捆绑成簇变量;
步骤2:设计一个名为滤波器设置的子函数,将簇变量输入到该子函数中,在子函数中将输入的簇变量用“按名称解除捆绑”函数读取簇变量的内容;
步骤3:将读取到的输入格式与一个项为“十进制”的枚举型常量进行“等于”比较,以判断用户的输入格式为是否为十进制,若是则进入步骤4,若否则直接进入步骤5;
步骤4:将验收码与屏蔽码这两个字符串输入控件的值分别输入到两个“十进制数字符串至数值转换”函数中,通过函数将它们转换为十六进制字符串;
步骤5:将验收码与屏蔽码这两个字符串输入控件的值或经步骤4转换后的值分别输入到验收码与屏蔽码这两个字符串显示控件中,以获取十六进制格式的验收码与屏蔽码。
6.根据权利要求4所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,利用所述簇变量获取CAN总线发送报文信息的步骤如下:
步骤1:将报文ID、报文长度、报文优先级与报文内容这4个字符串输入控件和1个帧类型枚举型输入控件捆绑成簇变量;
步骤2:通过“按名称解除捆绑”函数读取簇变量的内容,将读取到的报文ID、报文长度、报文优先级与报文内容分别输入到对应的显示控件中以获取它们的值;
步骤3:将读取到的帧类型与一个项为“数据帧”的枚举型常量进行比较,以判断用户是否选择发送数据帧,若是,则选择发送数据帧,若否,则选择发送远程帧。
7.根据权利要求1所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,所述程序框图的设计包括设计主vi函数;
所述主vi函数的步骤如下:
步骤1:判断前面板中的“生成代码”按钮是否被按下,若是则进入步骤2;
步骤2:检测某路径下的“自动代码”文件夹是否存在,若否,则在该路径中新建名为“自动代码”的文件夹,然后进入步骤3,若是,则直接进入步骤3;
步骤3:在“自动代码”文件夹中创建名为“完整代码”的文本文件;
步骤4:在“完整代码”文件中写入包含头文件的C代码;
步骤5:在“完整代码”文件中写入滤波器设置C代码;
步骤6:在“完整代码”文件中写入结构体声明C代码;
步骤7:在“完整代码”文件中写入主函数C代码;
步骤8:在“完整代码”文件中写入CAN初始化子函数C代码;
步骤9:在“完整代码”文件中写入CAN发送子函数C代码;
步骤10:在“完整代码”文件中写入CAN接收子函数C代码;
步骤11:在“完整代码”文件中写入延时子函数C代码;
步骤12:判断前面板中接收中断枚举型输入控件的项是否选择“使能”,若是,则在“完整代码”文件中写入接收中断子函数C代码,然后进入步骤13,若否,则直接进入步骤13;
步骤13:判断前面板中CAN模块枚举型输入控件的项是否选择“CAN0”,若是,则进入步骤14,若否,则进入步骤23;
步骤14:将字符串“CAN”和CAN模块控件的值连接成字符串作为“替换字符串”;
步骤15:打开“自动代码”文件夹的各文本文件;
步骤16:读取各文件的内容;
步骤17:搜索各文本文件中的“CAN0”字符串;
步骤18:将所有的“CAN0”字符串替换为“替换字符串”;
步骤19:替换结果保存到相应的显示控件中;
步骤20:删除“自动代码”文件夹的各文本文件;
步骤21:在原路径重新创建各文本文件;
步骤22:将相应的显示控件值写入到各文本文件;
步骤23:判断前面板中的“退出”按钮是否被按下,若是,则进入步骤24,若否,则进入步骤1;
步骤24:输出提示例如“谢谢使用!”;
步骤25:退出软件。
8.根据权利要求1所述的一种利用LabVIEW设计MSCAN通讯的方法,其特征在于,所述程序框图的设计还包括设计若干子vi函数;
其中,滤波器设置的子vi函数设计方法如下:
步骤1:将滤波器设置簇变量用“按名称解除捆绑”函数解除簇捆绑,读取簇变量中包含的验收码、屏蔽码和输入格式的内容;
步骤2:将读取到的输入格式的内容与一个项为“十进制”的枚举型常量进行“等于”比较,以判断用户的输入格式为是否为十进制,若是,则进入步骤3,若否,则直接进入步骤4;
步骤3:将验收码与屏蔽码这两个字符串输入控件的值分别输入到两个“十进制数字符串至数值转换”函数中,通过函数将它们转换为十六进制字符串;
步骤4:将验收码与屏蔽码这两个字符串输入控件的值或经步骤3转换后的值分别输入到验收码与屏蔽码这两个字符串显示控件中,以获取十六进制格式的验收码与屏蔽码;
步骤5:用一个“连接字符串”函数将C代码、验收码和屏蔽码按C语言的格式连接起来,连接的字符串保存到一个名为“滤波器代码”的字符串显示控件当中;
步骤6:通过“滤波器代码”字符串显示控件输出滤波器设置的C代码;
波特率设置的子vi函数设计方法如下:
步骤1:CAN时钟源和晶振频率枚举型输入控件的项,将这两个枚举型输入控件分别跟相应的枚举型常量进行“等于”比较,以获取用户对CAN时钟源和晶振频率的选择;
步骤2:若CAN时钟频率为8MHz则进入步骤3,若CAN时钟频率为16MHz则进入步骤4,若CAN时钟频率为32MHz则进入步骤5;
步骤3:将波特率枚举型输入控件的项与相应的枚举型常量进行“等于”比较,以获取用户对波特率的选择,根据用户对波特率的选择,计算出预分频数、时间段1和时间段2的值,进而获取MSCAN模块的CAN0BTR0_BRP和CAN0BTR1寄存器的值,如果用户选择的波特率不在设定范围内,则输出提示“警告:CAN时钟频率低,不能达到该波特率设置要求!”,根据设定的范围用C代码指令配置寄存器的值,并以字符串的形式输出给名为“波特率代码”的字符串显示控件,然后进入步骤6;
步骤4:将波特率枚举型输入控件的项与相应的枚举型常量进行“等于”比较,以获取用户对波特率的选择,根据用户对波特率的选择,计算出预分频数、时间段1和时间段2的值,进而获取MSCAN模块的CAN0BTR0_BRP和CAN0BTR1寄存器的值,如果用户选择的波特率不在设定的范围内,则输出提示“警告:CAN时钟频率高,不能达到该波特率...
【专利技术属性】
技术研发人员:王权,冀春明,卢思源,左宇,
申请(专利权)人:江苏大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。