modbus_tk模块 通过modbus-RTU 读取地址,调用后返回反馈数值和故障信息。

modbus_tk模块安装

pip install pymodbus_tk

下面代码功能;读取地址为0x42700 长度为43个数值。

 # -*- coding: utf_8 -*-

 import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu def mod(PORT="com10"):
#print("加载modbus_tk 完成")
red = []
alarm = ""
try:
#设定串口为从站
master = modbus_rtu.RtuMaster(serial.Serial(port=PORT,
baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0))
master.set_timeout(5.0)
master.set_verbose(True) #读保持寄存器 03H 1站号 地址2700 长度0-42
red = master.execute(1, cst.READ_HOLDING_REGISTERS, 2700, 43) #这里可以修改需要读取的功能码
#print(red)
alarm="正常"
return list(red),alarm except Exception as exc:
#print(str(exc))
alarm = (str(exc)) return red, alarm ##如果异常就返回[],故障信息 if __name__ == "__main__":
mod()

读取其它数值的功能码,带反馈报文。

功能码:

READ_COILS                                            H01  读线圈
READ_DISCRETE_INPUTS                      H02  读离散输入
READ_HOLDING_REGISTERS                H03  读寄存器
READ_INPUT_REGISTERS                      H04  读输入寄存器
WRITE_SINGLE_COIL                               H05  写单一线圈
WRITE_SINGLE_REGISTER                     H06  写单一寄存器
WRITE_MULTIPLE_COILS                        H15  写多个线圈 
WRITE_MULTIPLE_REGISTERS              H16  写多寄存器

        #读保持寄存器 03H 1站号 0地址 长度2
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 2))
#01 03 00 00 00 02 C4 0B # 读输入寄存器 04H
logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 0, 8))
#反馈:01 04 00 00 00 08 F1 CC # 读线圈寄存器 01H
logger.info(master.execute(1, cst.READ_COILS, 0, 6))
#反馈:01 01 00 00 00 06 BC 08 # 读离散输入寄存器 02H
logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 16))
#反馈:01 02 00 00 00 10 79 C6 # 单个读写寄存器操作 06H
# 写寄存器地址为0的保持寄存器 06H
logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=6))
#反馈:01 06 00 00 00 06 09 C8
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1))
#反馈:01 03 00 00 00 01 84 0A # 写寄存器地址为0的线圈寄存器,写入内容为0(位操作) 05H
logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=0))
#反馈:01 05 00 00 00 00 CD CA
logger.info(master.execute(1, cst.READ_COILS, 0, 1))
#反馈:01 01 00 00 00 01 FD CA # 多个寄存器读写操作 10H
# 写寄存器起始地址为0的保持寄存器,操作寄存器个数为4
logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 11, output_value=[20,21,22,23]))
#反馈:01 10 00 0B 00 04 08 00 14 00 15 00 16 00 17 AB A9
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4))
#反馈:01 03 00 00 00 04 44 09

modbus_tk模块的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

随机推荐

  1. python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫

    用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...

  2. ACM-求质因数

    求输入数字的所有质因数,并将所有质因数进行排序,并以质因数+空格的形式输出 #include <iostream> #include <string> #include < ...

  3. scrapy爬虫具体案例详细分析

    scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...

  4. Loadrunner Controller运行不了,提示cannot create Vusers

    执行场景时显示: Loadrunner Controller cannot create Vusers.Ensure that your load generators are available a ...

  5. win10 + 3ds Max 2014 问题记录

    3ds Max 下载: https://zixue.3d66.com/popsoft_201.html VRay 下载: https://zixue.3d66.com/softhtml/showsof ...

  6. Hbase 多条件查询

    /** * 获得相等过滤器.相当于SQL的 [字段] = [值] * @param cf 列族名 * @param col 列名 * @param val 值 * @return 过滤器 */ pub ...

  7. git commit 提交失败

    git commit -m 'xxx' 报错 报错信息 当前分支:master 远程分支:gitlib.xxx error: cannot spawn .git/hooks/commit-msg: N ...

  8. 专栏《Elasticsearch 7.x从入门到精通》的相关源代码

    新版Elasticsearch 7.3 和 Spring Boot 2.1.7 集成演示项目       第一个项目:演示Elasticsearch 6.4.3 和Spring Boot 2.1.7集 ...

  9. VMware+windbg时快照功能的使用

    VMware+windbg时快照功能的使用 一.快照功能的使用 我们在编写与调试驱动文件时经常会面临死机蓝屏情况,如果像平常一样重启,再重新配置环境,肯定会占用大量时间. Vmware虚拟机给我们提供 ...

  10. 在Visual Studio 2019中开启预览功能

    在Visual Studio 2019 菜单 [工具] > [选项] > [环境] 下的预览功能页面焕然一新!我们介绍了预览功能页面,以便您可以轻松找到这些功能并能够控制其启用.新布局提供 ...