购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4.3 Modbus协议读取温湿度

HaaS100硬件支持一路RS485,硬件接口定义如图1.4.11所示。

我们根据图1.2.22和图1.4.11所示的温湿度模块和HaaS100的RS485接口说明,按图接线,并上电。

● 图1.4.11 HaaS100 RS485接口图

查询相关资料后,获知RS485对应的port为1,在board.json文件中增加如下定义声明:

阿里云HaaS100平台提供了Python轻应用Modbus通信库,不过目前仅支持RTU模式,ASCII和TCP模式暂不支持。

相关接口如下:

(1)modbus.init(port, baud_rate, parity)

初始化modbus协议。

参数

port(int):串口端口号。

baud_rate(int):可选参数,波特率,默认值为9600Baud。

parity(int):可选参数,奇偶校验信息,默认值为0。可选值参考奇偶校验信息(PARITY)。

返回

0:成功,其他:失败。

引发

OSError-EBUSY或EINVAL

(2)modbus.deinit()

释放modbus协议

返回

0:成功,其他:失败。

引发

OSError-EBADF

(3)modbus.write(slave_addr, start_addr, data, timeout)

向从机多个保持寄存器中写入数据。

参数

slave_addr(int):请求的从机地址,0代表广播。

start_addr(int):写寄存器的起始地址。

data(bytearray):写寄存器的数据。

timeout(int):请求超时时间,单位是ms(毫秒),-1表示永久等待。

返回

tuple,4元组中的条目格式为:

status:请求状态,0表示成功,其他表示失败。具体数值参考STATUS。

resp_addr:响应地址。

resp_value:响应数据。

exception_code:异常代码。

引发

OSError-EINVAL

(4)modbus.read(data, slave_addr, start_addr, timeout)

读取多个保持寄存器中的数据。

参数

data(bytearray):读取的保持寄存器数据,data的长度表示期待读取的数量。

slave_addr(int):请求的从机地址,0代表广播。

start_addr(int):保持寄存器的起始地址。

timeout(int):请求超时时间,单位是ms(毫秒),-1表示永久等待。

返回

tuple,2元组中的条目格式为:

status:请求状态,0表示成功,其他表示失败。

respond_count:读取到数据的字节数,该数值不大于data的长度。

引发

OSError-EINVAL

读取YF3610-TH21温湿度模块的值,主要会用到modbus.init、modbus.deinit和modbus.read这三个函数。相关代码如下:

程序部署到设备运行后,输出如下信息(如图1.4.12所示)。

● 图1.4.12 HaaS100 读取温湿度 l27oQ5CdZykzQT2CbHf8KtIJg6Dz/DEdEWtjX/rYxuHB3+3olFc+Tl2GLxdqCOE2

点击中间区域
呼出菜单
上一章
目录
下一章
×