Labview中的VISA问题:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Labview中的VISA问题:相关的知识,希望对你有一定的参考价值。

我要用Labview写一个程序和下位机通信,要收发好多命令, 我现在是收发一个信息就开开和关闭VISA各一次..... 有什么方法能只打开和关闭一次就能实现?
我直接把关闭去掉不行,会提示超时之类的错误!

把VISA的打开和关闭放到while循环外,换句话说你用程序控制他执行的次数,你把关闭去掉会反复的打开串口 参考技术A 程序运行初始时 打开VISA,程序退出时,关闭VISA。中间过程需要用到资源时,使用对应的VISA资源名称 即可。如果你要问初始、结束在哪里加等等,就建议你先看看状态机、事件结构、生产者消费者。追问

这程序用的是while循环... 在里面收发信息,我是做成一个个子VI, 但我发现老是打开关闭VISA,会使程序反应时间变慢,不能及时显示了......但一去掉就会出现一些错误,延时已超时之类的.. 348918169加这Q,帮我解决一下,给你分...谢谢

LabVIEW实现Modbus通信

目录

1、Modbus库

1.1、线圈操作

1.1.1、读取线圈

1.1.2、写入单线圈 

1.1.3、写入多线圈 

1.2、保持寄存器操作

1.2.1、读取保持寄存器

1.2.2、 写入单个保持寄存器

1.2.3、写入多个保持寄存器

1.3、读取离散输入

1.4、 读取输入寄存器

2、VISA串口

2.1、线圈操作

2.1.1、读取线圈

2.1.2、 写入单线圈 

2.1.3、 写入多线圈 

2.2、保持寄存器操作

2.2.1、读取保持寄存器

2.2.2、 写入单个保持寄存器

2.2.3、写入多个保持寄存器

2.3、读取离散输入

2.4、读取输入寄存器


Modbus通信协议是仪器控制中常用的通信协议之一,基于Modbus协议可实现数据的读、写操作。

关于Modbus通信协议基础知识可先通过以下文章进行了解:

一文看懂Modbus协议_不脱发的程序猿的博客-CSDN博客_modbus是哪层协议

Modbus协议在串行链路上的实现_不脱发的程序猿的博客-CSDN博客

Modbus协议完整中文版-硬件开发文档类资源-CSDN下载

Modbus只是工业控制中常用的一种协议方式,本篇博文依旧是通过串口通信的方式实现基本的Mosbus操作。

Modbus协议常用功能主要包括四部分:读写线圈、读取离散输入、读取输入寄存器和读写保持寄存器,具体基础知识可参见上文发的基础知识链接。

使用LabVIEW实现Modbus协议通信有两种方式:Modbus库函数实现和VISA串口实现。下面分别介绍这两种方式。

1、Modbus库

Modbus库主要是依托封装好的LabVIEW VI库,直接调用就可以实现Modbus通信。使用Modbus库之前需要使用NI Package Manager进行安装。

最简单的方式就是直接搜索Modbus,这里我们选择:LabVIEW NXG GModBus Over SerialLine工具包,串行通信就可以,如下图所示:

还有一种方式安装Modbus库,搜索下载:LabVIEW数据记录与监控模块,如下图所示:

这两种方式下载的ModBus库均位于:函数数据通信,如下图所示:

本篇博文将以LabVIEW数据记录与监控模块下载方式的库为例进行讲解,主要原因是使用范围广泛,而且说明文档详实。

下面分享一下ModBus库的使用代码。 

1.1、线圈操作

1.1.1、读取线圈

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址0读取8个数量长度的寄存器数值。

1.1.2、写入单线圈 

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址2写入1个数量线圈寄存器(数值为:TRUE)。

 1.1.3、写入多线圈 

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址0写入5个数量线圈寄存器(数值均为:TRUE)。

1.2、保持寄存器操作

1.2.1、读取保持寄存器

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址0读取4个数量长度的寄存器数值。

1.2.2、 写入单个保持寄存器

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,将保持寄存器地址0写入数值33。

1.2.3、写入多个保持寄存器

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址0写入4个数量保持寄存器(数值为:1、4、6和8)。

1.3、读取离散输入

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址0读取10个数量长度的寄存器数值。

1.4、 读取输入寄存器

以下示例打开COM3端口,通信速率115200/bps,串口模式为RTU模式,ID号为1,从起始地址1读取4个数量长度的寄存器数值。

项目代码下载:LabVIEW实现Modbus通信:Modbus库函数实现-嵌入式文档类资源-CSDN下载

2、VISA串口

VISA串口方式实现Modbus协议,本质上就是自己手写协议帧,每一类帧格式都需要自己来编写。

这里可以再回顾一下LabVIEW串口通信的基础知识:LabVIEW串口通信_不脱发的程序猿的博客-CSDN博客_labview 串口通信

2.1、线圈操作

2.1.1、读取线圈

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为01,ID号为1,从起始地址0读取8个数量长度的寄存器数值。

2.1.2、 写入单线圈 

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为05,ID号为1,从起始地址0写入数值0。

2.1.3、 写入多线圈 

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为0F,ID号为1,从起始地址0写入8个数量线圈寄存器,字节数为1,数值为0。

2.2、保持寄存器操作

2.2.1、读取保持寄存器

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为03,ID号为1,从起始地址0读取4个数量寄存器。

2.2.2、 写入单个保持寄存器

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为06,ID号为1,从起始地址1写入数值0X0099。

2.2.3、写入多个保持寄存器

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为10,ID号为1,从起始地址0写入4个寄存器,字节数为8,数值分别为:0X00、0X11、0X00、0X22、0X00、0X33、0X00、0X44。

2.3、读取离散输入

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为02,ID号为1,从起始地址0读取8个数量长度的寄存器数值。

2.4、读取输入寄存器

以下示例打开COM3端口,通信速率115200/bps,Modbus功能码为04,ID号为1,从起始地址1读取4个数量长度的寄存器数值。 

项目资源下载:LabVIEW实现Modbus通信:VISA串口实现-嵌入式文档类资源-CSDN下载


拓展学习:

1、LabVIEW串口调试助手_不脱发的程序猿的博客-CSDN博客 

2、LabVIEW仪器控制:智能显示屏(数码管显示屏)_不脱发的程序猿的博客-CSDN博客 

3、LabVIEW仪器控制:智能直流电源(科睿源KA3003)_不脱发的程序猿的博客-CSDN博客 

4、LabVIEW仪器控制:智能示波器(普源DS1000E)_不脱发的程序猿的博客-CSDN博客 

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于Labview中的VISA问题:的主要内容,如果未能解决你的问题,请参考以下文章

小草手把手教你 LabVIEW 串口仪器控制——初识VISA串口

labview与单片机串口通信

labview 中调用WebBrowser, postdata这里的数据要怎么处理, 求指教

LabVIEW实现Modbus通信

LabVIEW实现Modbus通信

LabVIEW实现Modbus通信