如何在LabVIEW中使用Modbus通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在LabVIEW中使用Modbus通信相关的知识,希望对你有一定的参考价值。

参考技术A 关于Modbus概念及在LabVIEW中建立Modbus通信的详细信息可以参考一下NI官网的说明,查看这里 理解LabVIEW中的Modbus通信(DSC模块、Real-Time模块)http://zone.ni.com/reference/zhs-XX/help/370622M-0118/lvmve/understand_modbus_communication_in_labview/本回答被提问者和网友采纳

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博客 

以上是关于如何在LabVIEW中使用Modbus通信的主要内容,如果未能解决你的问题,请参考以下文章

如何在LabVIEW中使用Modbus通信

如何在LabVIEW中使用Modbus通信

如何在LabVIEW中使用Modbus通信

如何在LabVIEW中使用Modbus通信

请教如何在LabVIEW中使用Modbus通信

怎么在LabVIEW中使用Modbus通信