网易首页 > 网易号 > 正文 申请入驻

不懂单片机也可实现的RS485 Modbus主机通信Lua编程

0
分享至

RS485 Modbus主机案例(简版)

本教程来源于 FlexLua 官网,基于FlexLua开发可以降低 IoT 硬件开发难度,零门槛 Lua 低代码编程技术开发 IoT 硬件。

前言

本教程以读取一个支持 Modbus-RTU 协议的 RS485 温湿度传感器为例,演示了 RS485 Modbus-RTU 主机通信(简版)实现的几个相关主要函数的使用方法:

LIB_Uart1Rs485Config("BAUDRATE_4800","D6") --RS485初始化,这里的波特率可以任意填,因为后面会再次配置
LIB_ModbusToJsonConfig() --初始化 Modbus-RTU 主机通信实例,并配置结果 Json 字符串长度
LIB_ModbusToJsonAdd() --增加一个要读取的寄存器
LIB_ModbusToJsonSend() --执行RS485发送
LIB_ModbusToJsonFinishCheck() --等待RS485应答数据

一、本例程实现功能

通过 03 功能码(读保持寄存器)每隔1秒读取一个市面上常见的 RS485 温湿度传感器(例如:建大仁科的)的温度值和湿度值:

  1. 传感器从机地址:0x01
  2. 湿度值寄存器地址:0x0000(16bit 整数,扩大十倍)
  3. 温度值寄存器地址:0x0001(16bit 整数,扩大十倍)
  4. 传感器RS485通信参数:4800,N,8,1

最后将读取到的温湿度值在 log.txt 中 print 打印出来。

二、接线图

三、源码
--配置Uart1作为485接口,初始默认波特率4800,并且D6作为自动收发切换引脚
LIB_Uart1Rs485Config("BAUDRATE_4800","D6")
--使能系统10毫秒定时器开始工作
LIB_10msTimerConfig("ENABLE")
--全局变量
WorkMs = 0
temp = 0.0 --温度
humi = 0.0 --湿度
--定义10毫秒定时器的回调函数,函数名字必须是LIB_10msTimerCallback
function LIB_10msTimerCallback()
WorkMs = WorkMs + 10
end
--读取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
--进入大循环
while(GC(1) == true)
do
--每隔1秒(1000ms)读取一次传感器的值
if WorkMs >= 1000 then
WorkMs = 0
print("Start")
--通过RS485 Modbus-RTU读取485温湿度传感器数据
ModbusToJson()
--等待RS485通信结束
while true do
--读取传感器Json结果和错误信息(如果没有错误Err=null)
Finish,Json,Err = LIB_ModbusToJsonFinishCheck()
if Finish == 1 then
if Err == "null" then
--从Json结果中解析出传感器的实际值
Temp_val = LIB_JsonParse(Json, "$.Temp", "Number")
Humi_Val = LIB_JsonParse(Json, "$.Humi", "Number")
print(string.format("humi = %.1f, temp = %.1f", Humi_Val, Temp_val)) --打印温湿度值结果
else
--打印错误信息
print(Err)
end
break --跳出while循环
end
end
end
end

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

四、实验结果

代码运行一段时间后,打开 log.txt 文件可以看到运行过程中 print() 打印输出的日志信息如下图:

(1)485通信正常情况:

(2)485通信异常情况:

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
1100万清洗!前巴萨10号离队:巅峰身价8000万 梅西接班人

1100万清洗!前巴萨10号离队:巅峰身价8000万 梅西接班人

叶青足球世界
2026-06-01 20:06:16
身价被高估!今年夏天,NBA哪些球员会拿到溢价合同?

身价被高估!今年夏天,NBA哪些球员会拿到溢价合同?

篮球扫地僧
2026-06-02 08:59:42
两个儿子先后卧轨自杀,这个女作家为什么还能笑出来?

两个儿子先后卧轨自杀,这个女作家为什么还能笑出来?

脆皮先生
2026-06-01 20:15:53
MG 4X:在十万级纯电的红海中,树立起新的价值标杆

MG 4X:在十万级纯电的红海中,树立起新的价值标杆

autocarweekly
2026-06-01 16:49:40
“崩老头”全链调查:1500元可购全套工具,视频、语音均能伪造身份

“崩老头”全链调查:1500元可购全套工具,视频、语音均能伪造身份

大象新闻
2026-06-01 16:54:53
塞尔电台:恩里克曾告知纳赛尔,有姆巴佩无法掌控球队

塞尔电台:恩里克曾告知纳赛尔,有姆巴佩无法掌控球队

懂球帝
2026-06-01 21:47:21
奚梦瑶何猷君在法国大婚,刚刚二人晒婚礼现场图,王嘉尔担任伴郎

奚梦瑶何猷君在法国大婚,刚刚二人晒婚礼现场图,王嘉尔担任伴郎

极目新闻
2026-06-02 08:29:17
21次精准命中!CNN曝AI接管战争,俄军“百公里安全区”一夜崩塌

21次精准命中!CNN曝AI接管战争,俄军“百公里安全区”一夜崩塌

小小科普员
2026-06-01 16:20:46
网友称山姆鹌鹑蛋两个装很尴尬,特别是分享男同事的时候

网友称山姆鹌鹑蛋两个装很尴尬,特别是分享男同事的时候

映射生活的身影
2026-06-01 22:00:15
“民警猥亵女子事件”苦主发声:我遇到了一匹贪得无厌的色狼!

“民警猥亵女子事件”苦主发声:我遇到了一匹贪得无厌的色狼!

兵叔评说
2026-06-01 15:23:37
香会闹崩,多国代表遗憾离场,崔天凯回国前,留下极具分量一番话

香会闹崩,多国代表遗憾离场,崔天凯回国前,留下极具分量一番话

影孖看世界
2026-06-01 15:52:35
库里官宣签约李宁,终结“乱穿鞋”时代

库里官宣签约李宁,终结“乱穿鞋”时代

每日经济新闻
2026-06-02 08:55:08
成人网红邦妮自曝恶心计划:6月办尿淋派对,粉丝可尿她发生关系

成人网红邦妮自曝恶心计划:6月办尿淋派对,粉丝可尿她发生关系

赴一场山海啊
2026-06-01 00:27:25
湖北襄阳“割四赔五”事件后续:主播翻车,官方发声网上争执不断

湖北襄阳“割四赔五”事件后续:主播翻车,官方发声网上争执不断

Mr王的饭后茶
2026-05-31 23:17:57
柯文哲现身台北监狱探视,民众党干部爆:蔡正元头发已全白

柯文哲现身台北监狱探视,民众党干部爆:蔡正元头发已全白

海峡导报社
2026-06-01 21:14:03
“小心!右边女儿是鸳鸯眼!”家长晒两个女儿的不同面相,引热议

“小心!右边女儿是鸳鸯眼!”家长晒两个女儿的不同面相,引热议

妍妍教育日记
2026-06-01 20:02:17
美军宣布:对伊朗实施打击,摧毁其防空系统、控制站等,报复其击落美军无人机等“侵略行为”!国际油价大涨!科威特:正拦截导弹和无人机

美军宣布:对伊朗实施打击,摧毁其防空系统、控制站等,报复其击落美军无人机等“侵略行为”!国际油价大涨!科威特:正拦截导弹和无人机

每日经济新闻
2026-06-01 12:29:55
拔出萝卜带出泥!释永信24年只是开始,亲弟诡异失联牵出更多大鱼

拔出萝卜带出泥!释永信24年只是开始,亲弟诡异失联牵出更多大鱼

青梅侃史啊
2026-06-01 17:11:24
距世界杯仅11天,名记:欧冠决赛加重萨利巴伤势,球员或伤缺数周

距世界杯仅11天,名记:欧冠决赛加重萨利巴伤势,球员或伤缺数周

懂球帝
2026-06-01 18:48:25
马斯克亲口承认,要不是自己儿子做了变性手术,现在美国总统也不会是特朗普

马斯克亲口承认,要不是自己儿子做了变性手术,现在美国总统也不会是特朗普

不掉线电波
2026-06-01 20:02:08
2026-06-02 09:16:49
FlexLua
FlexLua
用 Lua 编程语言开发 IoT 物联网硬件
108文章数 1关注度
往期回顾 全部

科技要闻

英伟达RTX Spark 很猛,但首批机型不便宜

头条要闻

牛弹琴:伊朗突然发飙 特朗普急了被迫打了一个电话

头条要闻

牛弹琴:伊朗突然发飙 特朗普急了被迫打了一个电话

体育要闻

杰威:如果我没受伤,我们能击败马刺

娱乐要闻

奚梦瑶婚礼现场图!一双儿女当花童

财经要闻

宇树过会,杭州赢麻了

汽车要闻

奇瑞集团5月销量24.8万辆 同比增长20.5% 出口18.2万辆再创新高

态度原创

健康
房产
家居
公开课
军事航空

干细胞临床研究向患者收费?别踩坑

房产要闻

100亿!1371亩!海口城市更新,再爆超级项目!

家居要闻

自信舒展 高背座椅

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

韩国最大军工企业爆炸 已造成5人死亡

无障碍浏览 进入关怀版