【MODBUS】libmodbus库从Modbus从站读取值

简介: 【MODBUS】libmodbus库从Modbus从站读取值

libmodbus库提供了许多示例代码,用于演示如何使用该库进行Modbus通信。以下是一个简单的libmodbus库示例,用于从Modbus从站读取保持寄存器(holding registers)的值:

#include <stdio.h>  
#include <stdlib.h>  
#include <modbus.h>  
  
int main(void) {  
    modbus_t *ctx;  
    uint16_t tab_reg[32];  
    int rc;  
    int i;  
  
    ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);  
    if (ctx == NULL) {  
        fprintf(stderr, "Unable to create the libmodbus context\n");  
        return -1;  
    }  
  
    modbus_set_debug(ctx, TRUE);  
    modbus_set_slave(ctx, 1);  
  
    if (modbus_connect(ctx) == -1) {  
        fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));  
        modbus_free(ctx);  
        return -1;  
    }  
  
    rc = modbus_read_registers(ctx, 0, 10, tab_reg);  
    if (rc == -1) {  
        fprintf(stderr, "%s\n", modbus_strerror(errno));  
        return -1;  
    }  
  
    for (i=0; i < rc; i++) {  
        printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);  
    }  
  
    modbus_close(ctx);  
    modbus_free(ctx);  
  
    return 0;  
}


这个示例代码使用libmodbus库创建一个RTU模式的Modbus主站,连接到一个串行端口(/dev/ttyUSB0)。然后,它尝试从从站设备(地址为1)的起始地址为0的保持寄存器中读取10个连续的寄存器值。最后,它将读取到的值打印到控制台。请注意,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。确保在编译和运行此示例之前,已经正确安装了libmodbus库并将其包含在你的项目中。此外,请根据实际情况更改串行端口和其他相关参数。

目录
相关文章
|
传感器 网络协议 Linux
在Linux中使用libmodbus库进行Modbus TCP通信
Modbus TCP是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus TCP通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus TCP通信的示例代码。
4407 0
|
传感器 Linux
在Linux中使用libmodbus库进行Modbus RTU主从机通信
Modbus RTU是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus RTU主从机通信的示例代码。
6605 0
|
关系型数据库 MySQL 数据库连接
修改nacos数据库,并制作镜像
修改nacos数据库,并制作镜像
1534 0
修改nacos数据库,并制作镜像
|
7月前
|
JSON API 开发者
Django集成Swagger全指南:两种实用方案详解
本文介绍了在 Django 项目中集成 Swagger 的两种主流方案 —— drf-yasg 和 drf-spectacular,涵盖安装配置、效果展示及高级用法,助力开发者高效构建交互式 API 文档系统,提升前后端协作效率。
329 5
|
9月前
|
JSON 监控 供应链
深度实操:京东商品详情API接入全流程与技术要点剖析
京东商品详情API接口用于获取商品基础信息(标题、价格、库存状态、用户评价等),支持单个或多个商品查询。适用于商品列表展示、竞品分析、价格监控、库存管理、营销活动和数据分析等场景。通过发送HTTP请求(GET/POST)调用接口,服务器返回JSON格式数据,可使用Python等语言解析处理。示例代码中展示了如何用requests库调用API并获取商品详情。
|
监控
GIGE 协议摘录 —— GVCP 协议(二)(上)
GIGE 协议摘录 —— GVCP 协议(二)
1313 2
|
XML 存储 网络安全
GIGE 协议摘录 —— GVCP 协议(二)(下)
GIGE 协议摘录 —— GVCP 协议(二)
1067 3
|
传感器 网络协议 Unix
Modbus驱动库—libmodbus的使用
Modbus驱动库—libmodbus的使用
6014 0
Modbus驱动库—libmodbus的使用
|
开发框架 网络协议 前端开发
Modbus协议和应用开发介绍
Modbus协议和应用开发介绍
|
JSON 数据格式 C++
C++ JSON库 nlohmann::basic_json::array 的用法
C++ JSON库 nlohmann::basic_json::array 的用法
1506 1

热门文章

最新文章