【MODBUS】libmodbus库写一个Modbus TCP客户端

简介: 【MODBUS】libmodbus库写一个Modbus TCP客户端

libmodbus 是一个用于 Modbus 通信协议的 C 语言库,可以用来创建 Modbus TCP 客户端。以下是一个简单的示例代码,演示如何使用 libmodbus 创建一个 Modbus TCP 客户端。


首先,确保你已经安装了 libmodbus 库。你可以从 libmodbus 的官方网站(https://libmodbus.org/)下载并按照安装说明进行安装。


然后,你可以使用以下代码创建一个简单的 Modbus TCP 客户端:

#include <stdio.h>
#include <stdlib.h>
#include <modbus/modbus.h>
 
int main() {
    modbus_t *ctx;
    uint16_t tab_reg[32];  // 用于保存读取到的寄存器的数据
 
    // 创建 Modbus 上下文
    ctx = modbus_new_tcp("127.0.0.1", 502);  // 服务器的 IP 地址和端口号
 
    if (ctx == NULL) {
        fprintf(stderr, "Unable to create the libmodbus context\n");
        return -1;
    }
 
    // 连接到 Modbus 服务器
    if (modbus_connect(ctx) == -1) {
        fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
        modbus_free(ctx);
        return -1;
    }
 
    // 读取保持寄存器的数据(示例:从地址0开始读取10个寄存器)
    int rc = modbus_read_registers(ctx, 0, 10, tab_reg);
 
    if (rc == -1) {
        fprintf(stderr, "Read registers failed: %s\n", modbus_strerror(errno));
        modbus_close(ctx);
        modbus_free(ctx);
        return -1;
    }
 
    // 打印读取到的寄存器数据
    for (int i = 0; i < 10; i++) {
        printf("Register %d: %d\n", i, tab_reg[i]);
    }
 
    // 关闭连接并释放资源
    modbus_close(ctx);
    modbus_free(ctx);
 
    return 0;
}


这个例子创建了一个 Modbus TCP 客户端,连接到 IP 地址为 127.0.0.1、端口号为 502 的 Modbus TCP 服务器,并读取从地址 0 开始的 10 个保持寄存器的数据。


请注意,你需要根据实际情况修改 IP 地址、端口号、寄存器的地址和数量等参数。此外,错误处理也是必不可少的,你可能需要根据具体情况进行更复杂的错误处理。

目录
相关文章
|
传感器 网络协议 Linux
在Linux中使用libmodbus库进行Modbus TCP通信
Modbus TCP是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus TCP通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus TCP通信的示例代码。
2335 0
EMQ
|
传感器 监控 网络协议
使用 Neuron 接入 Modbus TCP 及 Modbus RTU 协议设备
作为一款支持数十种工业协议转换的物联网边缘工业协议网关软件,Neuron也已经实现了基于Modbus RTU协议TCP传输的功能。本文将在Ubuntu 20.04.3、X86_64的环境下,介绍如何使用Neuron接入Modbus TCP及Modbus RTU协议设备。
EMQ
749 0
使用 Neuron 接入 Modbus TCP 及 Modbus RTU 协议设备
|
3月前
|
网络协议
socket编程(2) -- TCP通信
socket编程(2) -- TCP通信
41 0
|
6月前
Modbus-TCP数据帧
Modbus-TCP数据帧
109 0
|
网络协议
LabVIEW实现Modbus-TCP通信
Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议,按其格式可分为Modbus-RTU、Modbus-ASCII和Modbus-TCP。其中,前两者适用于串行通信控制网络中,例如RS485、RS232等,而Modbus-TCP主要应用于基于以太网TCP/IP通信的控制网络中。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。
LabVIEW实现Modbus-TCP通信
|
网络协议 Java
UDP发送数据、接收数据及UDP通信程序练习
UDP发送数据、接收数据及UDP通信程序练习
293 0
|
网络协议 数据库 Android开发
基于TCP协议的Socket通信
上节中我们给大家接触了Socket的一些基本概念以及使用方法,相信大家对Socket已经有了初步的掌握。本节我们学习使用Socket来实现大文件的断点续传!在这里我们以他人的案例进行讲解,这是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用就好!
117 0
|
传感器 网络协议 算法
一文看懂Modbus协议
一文看懂Modbus协议
5245 0
一文看懂Modbus协议
|
网络协议
【QT】TCP、UDP通信
【QT】TCP、UDP通信
【QT】TCP、UDP通信
|
网络协议
嵌入式系统之Modbus TCP to Modbus Rtu协议转换器开发
嵌入式系统之Modbus TCP to Modbus Rtu协议转换器开发
1019 0