首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LabVIEW实现Modbus通信

LabVIEW实现Modbus通信

作者头像
不脱发的程序猿
发布2022-05-07 11:11:47
发布2022-05-07 11:11:47
4.9K0
举报

目录

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下载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 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、读取输入寄存器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档