本教程参考FlexLua官网ShineBlink开发板栏目,FlexLua技术可降低IoT硬件开发难度,零门槛开发IoT硬件。
一、介绍
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温湿度传感器的代码片段。
--读取RS485温湿度传感器--获取到的Json数据形如:{"Humi":79.7,"Temp":26.8}functionModbusToJson()--配置RS485Modbus转Json功能,并设置将要生成的Json字符串最大长度为150字节LIB_ModbusToJsonConfig(150)--必须小于255--湿度值寄存器地址0x0000,类型为16bit带符号AB型,小数点个数1个,JsonKey名称"Humi"LIB_ModbusToJsonAdd(0x0000,"S_AB",1,"Humi")--温度值寄存器地址0x0001,类型为16bit带符号AB型,小数点个数1个,JsonKey名称"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查询。