基本信息
源码名称:python实现modbus主站 代码
源码大小:1.55KB
文件格式:.py
开发语言:Python
更新时间:2020-01-01
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

#!/usr/bin/env python
# -*- coding: utf_8 -*-
'''
作者:weizy
时间:2017/3/10
简介:modbus协议主机测试脚本
'''
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:
        #连接从机地址,这里要注意端口号和IP与从机一致
        MASTER = modbus_tcp.TcpMaster(host="192.168.1.20", port=11100)
        MASTER.set_timeout(5.0)
        LOGGER.info("connected")
        #读取从机1的0-4保持寄存器
        LOGGER.info(MASTER.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4))
        #读取从机1的4-14保持寄存器,因为寄存器独立分块了,所以不能直接连通读取,强行结果是会出现数据越界
        LOGGER.info(MASTER.execute(1, cst.READ_HOLDING_REGISTERS, 4, 14))
        # 需要按照execute格式
        LOGGER.info(MASTER.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 0, output_value=[0, 1, 2]))
        LOGGER.info(MASTER.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4))

        LOGGER.info(MASTER.execute(2, cst.READ_COILS, 0, 8))
        LOGGER.info(MASTER.execute(2, cst.WRITE_MULTIPLE_COILS, 0, output_value=[1, 0, 0, 0, 1]))
        LOGGER.info(MASTER.execute(2, cst.READ_COILS, 0, 8))
        LOGGER.info(MASTER.execute(2, cst.READ_HOLDING_REGISTERS, 0, 4))
        # 线圈和寄存器地址不是同一区块的
    except modbus_tk.modbus.ModbusError as err:
        LOGGER.error("%s- Code=%d" % (err, err.get_exception_code()))