ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于 modbustcp python 借鉴别人的码

2022-02-20 23:30:37  阅读:290  来源: 互联网

标签:cst execute READ 借鉴 master 关于 寄存器 别人 logger


代码自用

 demo1 = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 9)

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", port=502)
        master.set_timeout(5.0)
        logger.info("connected")
        # 读保持寄存器 
        demo1 = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 9)
        print(demo1)
        # 读输入寄存器
        # logger.info(master.execute(3, cst.READ_INPUT_REGISTERS, 0, 9, output_value=1))
        # # 读线圈寄存器
        # logger.info(master.execute(2, cst.READ_COILS, 0, 8))
        # logger.info(master.execute(2, cst.WRITE_SINGLE_COIL, 1, output_value=2))
        # # 读离散输入寄存器
        # logger.info(master.execute(4, cst.READ_DISCRETE_INPUTS, 0, 8))
        # 单个读写寄存器操作
        # 写寄存器地址为0的保持寄存器
        logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=25))
        logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 8))
        demo1 = master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 9)
        print("demo1=",demo1)
        # 写寄存器地址为0的线圈寄存器,写入内容为0(位操作)
        logger.info(master.execute(2, cst.WRITE_SINGLE_COIL, 0, output_value=2))
        logger.info(master.execute(2, 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(2, cst.WRITE_MULTIPLE_COILS, 0, output_value=[0, 0, 0, 1]))
        logger.info(master.execute(2, cst.READ_COILS, 0, 4))
    except modbus_tk.modbus.ModbusError as e:
        logger.error("%s- Code=%d" % (e, e.get_exception_code()))

# import modbus_tk.defines
#
# #modbus exception codes  异常代码
# # 代码功能不合法
# ILLEGAL_FUNCTION = 1
# # 数据地址不合法
# ILLEGAL_DATA_ADDRESS = 2
# # 数据值不合法
# ILLEGAL_DATA_VALUE = 3
# # slave设备失败
# SLAVE_DEVICE_FAILURE = 4
# # 命令已收到
# COMMAND_ACKNOWLEDGE = 5
# # slave设备忙
# SLAVE_DEVICE_BUSY = 6
# # 内存奇偶校验差
# MEMORY_PARITY_ERROR = 8
#
# # supported modbus functions 功能代码
# # 读线圈
# READ_COILS = 1
# # 离散读输入
# READ_DISCRETE_INPUTS = 2
# # 读保持寄存器
# READ_HOLDING_REGISTERS = 3
# # 读输入寄存器
# READ_INPUT_REGISTERS = 4
# # 写单一线圈
# WRITE_SINGLE_COIL = 5
# # 写单一寄存器
# WRITE_SINGLE_REGISTER = 6
# # *读例外状态
# READ_EXCEPTION_STATUS = 7
# DIAGNOSTIC = 8
# # *报告slave的id
# REPORT_SLAVE_ID = 17
# # 写多个线圈
# WRITE_MULTIPLE_COILS = 15
# # 写多寄存器
# WRITE_MULTIPLE_REGISTERS = 16
# # *读写多个寄存器
# READ_WRITE_MULTIPLE_REGISTERS = 23
# # *设备信息
# DEVICE_INFO = 43
#
# # supported block types 支持的块类型
# # 线圈
# COILS = 1
# # 离散输入
# DISCRETE_INPUTS = 2
# # 保持寄存器
# HOLDING_REGISTERS = 3
# # 模拟量输入
# ANALOG_INPUTS = 4

标签:cst,execute,READ,借鉴,master,关于,寄存器,别人,logger
来源: https://blog.csdn.net/anjizfj/article/details/123038091

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有