Labview实现VBA通信PPT

Download Report

Transcript Labview实现VBA通信PPT

Labview实现VBA通信
Labview实现VBA报文的收发,是通过labview调
用vba的动态链接库(dll),对VBA进行配置和操
作来实现的。从以下两方面来讲解。
一、VBA介绍
二、labview实现
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
1.VBA
 VBA是一款多用途高性能CAN总线
适配器,可广泛应用于汽车、工业自
动化、军工、航空航天等行业。
 符合CAN 2.0A/B规范,支持USB2.0
规范。可以通过PC控制,实现和
CAN总线之间报文的收发
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
2、Vc-demo程序梳理
 从右图还有源代码中,可以发现,
demo的实现,是以事件和按钮
相关联的形式实现的
 通道设置,在打开通道的函数执
行过程中,由用户设定,通过函
数参数设置。包括波特率,总线
时间值样本,总线时间值样本跳
宽等
 发送帧的设置,通过发送报文函
数执行过程中,由用户设定,通
过函数参数设置,包括报文信息
等
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
3、动态链接库dll
DLL是Dynamic Link Library的缩写,意为动态链接
库。
在Windows中,许多应用程序并不是一个完整的课执
行文件,它们被分割成一些相对独立的动态链接库,
即DLL文件,放置于系统中。
当我们执行某一个程序时,相应的DLL文件就会被调
用。一个应用程序可有多个DLL文件,一个DLL文件也
可能被几个应用程序所共用,这样的DLL文件被称为
共享DLL文件。
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
4、VBA头文件vbac.h(1/3)
可以看到调用的dll内部函数的定义
函数参数返回值
结构体包含的数据信息
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
4、VBA头文件vbac.h(2/3)
通道设置结构体
如右图所示,通道设置包括波特
率(brp),总线时间样本(smpl),
总线时间值样本跳宽(sjw),总线
时间值1、2(tseg1、2),是否使
用终端电阻(use_tr),通道的工
作模式(mode),总线恢复
(recovery),过滤器(filters)
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
一、VBA介绍
4、VBA头文件vbac.h(3/3)
PDU设置结构体
如右图所示,PDU设置包括,
标签位(tag),通道(channel),
保留(reserved),时间戳
(timestamp),报文信息
(msg),通道状态
(channel_state)和IGN状态
(ign_status)
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
1 labview介绍
 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和
BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言
都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程
序,产生的程序是框图的形式。
 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。
 LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在
帮助工程师和科学家解决问题、提高生产力和不断创新。
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
2 VI介绍
 VI,virtual instrument,虚拟仪器的简称,是基于计算机的仪器。实际上是一个按
照仪器需求组织的数据采集系统。
 VI,也是Labview的一个程序。其扩展名为.vi 这类似C语言中的.C或者C++的.cpp。
 一个VI可以实现一个函数或某项功能,可以被其它的VI调用。LabVIEW通过这样的
方式,实现模块化编程。
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(1/6)
 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。
 在实际的工程项目中,用户可以用C和C++语言实现软件的运算
部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW
编写程序的界面部分,并通过调用编写好的DLL来调用运算部分
的功能
 LabVIEW 中是通过Call Library Function Node(CLN)节点
来完成DLL文件调用的。
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(2/6)
 创建一个新的VI
 右击程序框图,在函数中依
次选中互连接口-库和可执行
程序工具栏找到调用库函数
节点
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(3/6)
 将节点放置在程序框图中,双击会出现
调用库函数的配置对话框,共有四页。
 第一页用于填写被调用函数的信息,包
括库名/路径,函数名,线程和调用规
范
 选中程序框图中指定路径,则在程序框
图中添加路径作为输入连接在相应位置
 选定路径后,dll中的所有暴露出来的函
数都将列出
 本程序用规范选择stdcall(WINAPI)
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(4/6)
 第二页是函数参数的配置
 DLL和LabVIEW之间传递参数,最
常用的三种数据类型是数值、数值
型数组和字符串
 对照VBA头文件中函数的参数设置,
复杂的结构体采用自定义类型,和
已做好的簇相连接
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(5/6)

第三页用于为DLL设置一些回调函
数
 使用这些回调函数在特定的情形下
完成初始化、清理资源等工作
 如果使用的DLL不是专为LabVIEW
设计的,一般不会包含这样的回调
函数。
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
3 labview调用dll(6/6)
 第四页是错误处理方式
 根据需要选择相应的错误检查
级别
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
4 labview事件结构
 结合对demo程序的分析,采用事件结构来实现功能最为合适
 事件驱动的编程允许用户通过前面板的操作,或是其他的异步事件来驱动LabVIEW
程序的运行
 事件是一种异步的信号,告知PC有事情发生。用户界面、外部I/O或是程序的一部
分代码都有可能导致事件的发生
 使用事件结构可以实现仅当事件发生时,程序才需要响应,别的时候程序可以处理
其他进程或是其他的事件,事件结构相当于一种“中断”
 通过设置前面板按键,来触发事件的执行
 因为接收数据是循环接收,所以采用生产者消费者循环
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
5 labview程序图
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
6 labview前面板
 使用步骤:
 1、安装VBA驱动后,插上VBA,等待VBA
的power灯变绿
 2、点击labview运行按钮运行程序
 3、点击打开设备按钮打开设备
 4、选择通道,配置通道设置(默认通道配
置如图所示)点击打开通道
 5、配置发送设置,点击发送报文以发送一
次报文
 6、或者点击接收报文循环接收,接收的数
据信息在接收显示处实时显示,完成后点击
停止接收按钮
 7、点击关闭设备以关闭设备
 8、点击停止程序使程序停止
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
二、labview实现
7 labview使用技巧总结
 1、前面板用来添加控件,程序面板用来添加程序和对控件的操作
 2、簇内部包含数组会导致数组的值无法读出,可以将数组用多个数值代替
 3、事件结构三条黄金准则
 1、不要将事件结构放置在while循环之外
 2、不要在事件结构中直接使用循环处理事件,使用生产者消费者循环
 3、在事件结构中添加“停止”按钮的处理分支
 4、调用dll时,若使用的参数需要显示出来,应当把参数转换为显示模式,显示参数
为值,连到右方输出端
 5、点击工具导入可以批量导入dll内的函数,好处是基本上不用编辑参数和返回值,
但是复杂的函数还是要自己手动添加
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn
Add:重庆市江北区南桥人家花园6单元1-2室 Email : [email protected]
Tel/Fax:023-86839022 www.sumarte.com www.sumarte.cn