用几行代码实现单片机Mdobus-RTU主机通信

96 篇文章 0 订阅
67 篇文章 0 订阅

RS485 Modbus主机教程(简版)

前言

本教程参考 FlexLua 官网 ShineBlink 开发板栏目,FlexLua技术可降低 IoT 硬件开发难度,零门槛开发 IoT 硬件。

69d6e65186dc1d926cd52ab2e3f1f33c.jpeg

一、介绍

ShineBlink 提供如下四个 Modbus-RTU 主机通信(简版)函数,用来简化 Modbus-RTU 主机通信实现的代码量,开发者只需要在函数参数中完成简单的配置即可实现通过 RS485 读取各种 RS485传感器设备的数据:

--四个Modbus-RTU主机通信简版函数的详细说明,这四个函数的详细说明请参看 ShineBlink 的 Api 文档
LIB_ModbusToJsonConfig() --初始化 Modbus-RTU 主机通信实例,并配置结果 Json 字符串长度
LIB_ModbusToJsonAdd() --增加一个要读取的寄存器
LIB_ModbusToJsonSend() --执行RS485发送
LIB_ModbusToJsonFinishCheck() --等待RS485应答数据


目前支持的功能为:01,02,03,04:

功能码 | 功能介绍 |

01 | 读线圈 |
02 | 读离散量输入 |
03 | 读保持寄存器 |
04 | 读输入寄存器 |

二、核心代码片段示例

以下代码示例使用 Modbus-RTU 主机通信(简版)函数读取一个 RS485 温湿度传感器的代码片段。

开发者通过配置相应的参数,构造一个 ModbusToJson() 函数后即可获取到温湿度传感器的数据(以 Json 字符串形式返回),关于该函数的详细使用例程源码请参看《RS485 Modbus主机例程(简版)》文章。

--读取RS485温湿度传感器
--获取到的Json数据形如:{"Humi":79.7,"Temp":26.8}
function ModbusToJson()
--配置RS485 Modbus转Json功能,并设置将要生成的Json字符串最大长度为150字节
LIB_ModbusToJsonConfig(150)--必须小于255
--湿度值寄存器地址0x0000,类型为16bit带符号AB型,小数点个数1个,Json Key名称"Humi"
LIB_ModbusToJsonAdd(0x0000,"S_AB",1,"Humi")
--温度值寄存器地址0x0001,类型为16bit带符号AB型,小数点个数1个,Json Key名称"Temp"
LIB_ModbusToJsonAdd(0x0001,"S_AB",1,"Temp")

--参数设置(波特率4800,无校验,1位停止位,功能码"03",从机地址0x01,应答最长等待1000ms,包与包最短间隔100ms)
LIB_ModbusToJsonSend("BAUDRATE_4800","NoneParity","StopBit_1","03",0x01,1000,100)
end


如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值