modbus_tk库的应用

modbus_tk库的应用

import sys
import logging
import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp
logger = modbus_tk.utils.create_logger(“console”)
if name == “main”:
try:
# 连接MODBUS TCP从机
master = modbus_tcp.TcpMaster(host=“127.0.0.1”)
master.set_timeout(5.0)
logger.info(“connected”)
# 读保持寄存器
logger.info(master.execute(2, cst.READ_HOLDING_REGISTERS, 48000, 5))#参数(串口ID,模式,读保持寄存器地址,读几个)
# 读输入寄存器
logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 0, 16))#参数(串口ID,模式,读输入寄存器地址,读几个)
# 读线圈寄存器
logger.info(master.execute(1, cst.READ_COILS, 0, 16))#参数(串口ID,模式,读线圈寄存器地址,读几个)
# 读离散输入寄存器
logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 16))#参数(串口ID,模式,读离散输入寄存器地址,读几个)
# 单个读写寄存器操作
# 写寄存器地址为0的保持寄存器
logger.info(master.execute(2, cst.WRITE_SINGLE_REGISTER, 48001, output_value=43605))#参数(串口ID,模式,写保持寄存器地址,写的值)
# 写寄存器地址为0的线圈寄存器,写入内容为0(位操作)
logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=0))
logger.info(master.execute(1, cst.READ_COILS, 0, 1))
# 多个寄存器读写操作
# 写寄存器起始地址为0的保持寄存器,操作寄存器个数为4
logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 0, output_value=[20,21,22,23]))
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4))
# 写寄存器起始地址为0的线圈寄存器
logger.info(master.execute(1, cst.WRITE_MULTIPLE_COILS, 0, output_value=[0,0,0,0]))
logger.info(master.execute(1, cst.READ_COILS, 0, 4))
except modbus_tk.modbus.ModbusError:
logger.error("%s- Code=%d" % (e, e.get_exception_code()))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值