外观
Modbus PT100 示例
2025-10-29
本文介绍了如何创建一个 Modbus pt100 示例代码,并将其作为主机与 Modbus slave 设备(PT100 温度变送器)通信,旨在帮助读者进一步熟悉 Modbus 通信流程,掌握主机读取从机的温度数据的方法。
我们这里使用的 PT100 温度变送器型号(KWL-PT100-02A)作为示例。
Modbus 读取 PT100 温度值
硬件连接
连接开发板 RS485 接口

Modbus PT100 接线图

创建工程点击展开
依次点击 “文件” -> “新建” -> "RT-Thread RuiChing App 项目"。

在弹出新建向导中选择 开发版 、BSP: 、示例 、 调试器/下载器。选择好之后点击 “完成”。

点击 “完成” 后,等待工程创建完成。

创建完成。

构建工程点击展开
单击工程使工程进入 Active-Debug 模式。

点击工具栏上的构建按钮进行工程编译。

构建成功后,会显示构建成功的信息。

固件下载点击展开
固化设备树

固化 APP

核心示例代码
applications/modbus_rtu_pt100.c
static int modbus_rtu_pt100(void)
{
modbus_t *ctx;
uint16_t tab_reg[10];
int rc;
int i;
// 创建 modbus rtu 对象
ctx = modbus_new_rtu("/dev/uart5", 115200, 'N', 8, 1);
if (ctx == NULL)
{
rt_kprintf("Unable to create the libmodbus context\n");
return -1;
}
// 配置从站地址为 1、设置响应超时为 1 秒、启用 RS485 模式、设置 RTS 引脚控制方向
modbus_set_slave(ctx, 1);
modbus_set_response_timeout(ctx, 1, 0);
modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485);
modbus_rtu_set_rts(ctx, RS485_RTS_PIN, MODBUS_RTU_RTS_UP);
// 打开串口并连接从站设备
if (modbus_connect(ctx) == -1)
{
rt_kprintf("Connection failed\n");
modbus_free(ctx);
return -1;
}
// 读取 pt100 从站地址从 0 开始的 2 个寄存器
rc = modbus_read_registers(ctx, 0, 2, tab_reg);
if (rc == -1)
{
rt_kprintf("Failed to read registers after write\n");
}
else
{
for (i = 0; i < rc; i++)
{
// 读取到的寄存器值转换为温度值并打印
if (tab_reg[i] != 0xEC78)
{
rt_kprintf("temp %d: %d.%d°C\n", i, tab_reg[i]/10, tab_reg[i]%10);
}
// 打印未连接的通道
else
{
rt_kprintf("temp %d: Not connected\n", i);
}
}
}
// 释放资源
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
MSH_CMD_EXPORT(modbus_rtu_pt100, modbus_rtu_pt100);运行示例
操作步骤
msh 命令行运行 modbus pt100 该温度变送器只接入了一路 PT100,temp 0 的温度为当前 PT100 采样到的温度值。
msh />modbus_rtu_pt100
temp 0: 26.5°C
temp 1: Not connected