modbus_tk模块
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模块的更多相关文章
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
- 理解nodejs模块的scope
描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
随机推荐
- 修改Tooltip 文字提示 的背景色 箭头颜色
3==>vue 鼠标右击<div @contextmenu.prevent="mouseRightClick">prevent是阻止鼠标的默认事件 4==> ...
- 学习51cto中美团中的小知识点--组件实现按需求加载
1====>vue.20脚手架的创建 cnpm install --global vue-cli 全局安装脚手架 vue init webpack my-project 创建项目 Use ESL ...
- 【西北师大-2108Java】第三次作业成绩汇总
[西北师大-2108Java]第三次作业成绩汇总 熟悉PTA平台线上测试环境: 理解用户自定义类的定义: 掌握对象的声明: 学会使用构造函数初始化对象: 使用类属性与方法的使用掌握使用: 掌握pack ...
- DHCP服务基本搭建
DHCP原理 DHCP租约四部曲: A:客户端进行IP请求 当一个DHCP客户机启动时,会自动将自己的IP地址配置成0.0.0.0,由于使用0.0.0.0不能进行正常通信,所以客户机就必须通过DHCP ...
- centos7虚拟机端口命令
cat /etc/redhat-release # 查看centos 版本 Centos7端口常见命令 虚拟机新开了5005端口,系统内部是显示开了的,但是外部不能访问端口. 一些需要用到的命令: ...
- Python paramiko 报错 paramiko.ssh_exception.SSHException: not a valid RSA private key file
报错的原因是选择的文件不是一个有效的 RSA 密钥文件 现在通过 ssh-keygen 默认生成的密钥文件是新的格式,并非 RSA 格式.打开文件可以看到是以 -----BEGIN OPENSSH P ...
- ln -s 文件夹变成文件(txt) / linux 链接出错
问题: 平时没有注意过这这个问题,当我使用ln -s xxx yyy 将xxx 移动到yyy 路径时,文件夹就变成了txt文件, 解决: 找了半天,在stackoverflow上找到了答案,很简单, ...
- 基于Apache和tomcat实现负载均衡
1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...
- c# lock 锁
lock语句 lock 语句获取给定对象的互斥 lock,执行语句块,然后释放 lock. 持有 lock 时,持有 lock 的线程可以再次获取并释放 lock. 阻止任何其他线程获取 lock 并 ...
- php中in_array函数的坑
由于PHP是弱类型语言,所以有自动类型转换 例子 $array = [0, 1, 2, '3']; var_dump(in_array('abc', $array)); //true var_dump ...