PYTHON3 Modbus_tk
pip install modbus_tk 无法安装,去官网下载在 PIP
Modbus Slave / Poll
Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模拟服务端(主))
Modbus Poll是非常流行的Modbus Master模拟器,用于测试和调试从设备。支持Modbus RTU / ASCII和Modbus TCP / IP。
一,模拟器的使用
1.1配置Modbus民意调查
配置Modbus Poll的连接
配置Modbus Poll的参数
参数说明
TX:向主站发送数据帧的次数
错误:通讯错误次数
ID:模拟的Modbus子设备的设备地址
F:使用的的Modbus功能码
SR:扫描周期从站ID:Modbus从站地址
功能:
寄存器的功能码 地址:寄存器起始地址,默认从0开始
数量:寄存器连续个数,默认为10个
扫描速率:读取数据的周期,单位毫秒,默认1000ms
寄存器功能码
代码 | 中文名称 | 寄存器PLC地址 | 位操作/字操作 | 操作数量 |
---|---|---|---|---|
01 | 读线圈状态 | 00001-09999 | 位操作 | 单个或多个 |
02 | 读离散输入状态 | 10001-19999 | 位操作 | 单个或多个 |
03 | 读保持寄存器 | 40001-49999 | 字操作 | 单个或多个 |
04 | 读输入寄存器 | 30001-39999 | 字操作 | 单个或多个 |
05 | 写单个线圈 | 00001-09999 | 位操作 | 单个 |
06 | 写单个保持寄存器 | 40001-49999 | 字操作 | 单个 |
15 | 写多个线圈 | 00001-09999 | 位操作 | 单个 |
16 | 写多个保持寄存器 | 40001-49999 | 字操作 | 单个 |
1.2配置Modbus Slave
配置Modbus Slave的连接
选择的TCP / IP协议。IP配置地址(只能是本地),端口号。
配置Modbus Slave的参数
参数说明
Slave ID:Modbus从站地址,默认为1
功能:寄存器功能码
寄存器功能码
代码 | 中文名称 | 寄存器PLC地址 | 位操作/字操作 | 操作数量 |
---|---|---|---|---|
01 | 读线圈状态 | 00001-09999 | 位操作 | 单个或多个 |
02 | 读离散输入状态 | 10001-19999 | 位操作 | 单个或多个 |
03 | 读保持寄存器 | 40001-49999 | 字操作 | 单个或多个 |
04 | 读输入寄存器 | 30001-39999 | 字操作 | 单个或多个 |
二,模拟器的测试连接
==两端模拟器的配置,直接按照上面的介绍时配置的。==
两个窗口都打开的通信业务量界面(在显示 - >通信...)。用来查看记录。
方式一:
设置Modbus Slave的数值
- 让2号寄存器每秒增加数值1
如上图,点击OK,就可以在两个窗口中查看到数据信息了。
如下图所示:
数据信息的内容:
- 前6个字节:序号
- 第7个字节:地址
- 第8个字节:功能码
方式二:
设置Modbus Poll的数值
- 让第一个寄存器的数值变为9
如上图,可以看到对应位置的寄存器数值已经改为9。
数据信息的内容
与上一种方式返回出来的数据格式不同
- 前6个字节:序号
- 第7个字节:地址
- 第8个字节:功能码
- 后4个字节:数值
三,Modbus的Python模块包 - modbus_tk
环境python3.6.2
模拟Modbus Master,编写操控Modbus Slave的Python文件
需要先导入modbus_tk模块
pip install modubs_tk
非常简单的代码,只是连接+执行
import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as md# 远程连接到slave端(从)
master = mt.TcpMaster("127.0.0.1", 502)
master.set_timeout(5.0)# @slave=1 : identifier of the slave. from 1 to 247. 0为广播所有的slave
# @function_code=READ_HOLDING_REGISTERS:功能码
# @starting_address=1:开始地址
# @quantity_of_x=3:寄存器/线圈的数量
# @output_value:一个整数或可迭代的值:1/[1,1,1,0,0,1]/xrange(12)
# @data_format
# @expected_length
aa = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
print(aa) # 取到的所有寄存器的值
print(aa[0]) # 获取第一个寄存器的值
得到的结果:
(11, 753, 18)
11
与Modbus Slave作对照:
PYTHON3 Modbus_tk相关推荐
- PMCAFF微课17期 - 教你如何用数据玩转移动互联网APP运营(笔记下载)
先来看一下我们的课程大纲,首先是自我介绍.由于我们是做数据运营,那么需要先进行App的数据概览,接着了解一下数据的组织(是如何运用这些组织来用起App的).然后,谈谈这些数据怎么落地,讲述一些具体的实 ...
- modbus_tk与Modubs Slave结合使用
下载两个软件: Modbus Slave/Poll Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模拟服务端(主)) Modbus Poll是非常流行的Modbus M ...
- modbus_tk 读取浮点数的处理
modbus_tk 读取浮点数的处理 前言: 用modbus_tk读取实物PLC(信捷)的浮点数值,发现数据不正常.经分析后发现modbus_tk只是把PLC的返回值的两个字存储器按低位在前,高位在后 ...
- pip 无法卸载 pillow 解决方案 Not uninstalling pillow at /usr/lib/python3/dist-packages
1. 问题现象 使用 pip 卸载 pillow 时无法卸载,报如下错误: $ sudo pip3 uninstall pillow Not uninstalling pillow at /usr/l ...
- Python2 与 Python3 区别
Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...
- Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建
Anaconda3+python3.7.10+TensorFlow2.3.0+PyQt5环境搭建 一.Anaconda 创建 python3.7环境 1.进入 C:\Users\用户名 目录下,找到 ...
- python2转python3文件
python37 -m 2to3.py -w C:\Users\Administrator\Desktop\搜狗细胞词库处理.py 命令 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA ...
- Python3:ImportError: No module named 'compiler.ast'
from compiler.ast import flatten 上面这条语句好像在python3 以后就废除了,如果使用的话就会报错. Traceback (most recent call las ...
- 安装win下的Anaconda ----针对python3.6.4版本
我的python版本是3.6.4, Anaconda下载地址: Anaconda官网:https://repo.anaconda.com/archive/ 清华大学镜像站:https://mirror ...
最新文章
- Pycharm中导入requests模块详解
- 理解学习率以及如何提升深度学习的性能
- python绘制3维图-Python 绘制 3 维以上的高维图
- tcp http https
- android java广播,[原]Android应用程序发送广播(sendBroadcast)的过程分析
- Windows之node.js安装
- 云计算创业在美国真是如火如荼。
- SpringCloudAlibabaSentinel入门教程
- java double 初始化_java语言程序员之正确的初始化
- 将RP文件导出为HTML文件
- python垃圾分类程序_如何利用Python进行垃圾分类
- IOS神器-fastlane工具实战-IOS自动化接入应用
- C++程序设计:税费计算
- 成都1008 hdu4038
- 批量修改计算机用户名,域环境下批量修改计算机名
- CSP-J1 CSP-S1 第1轮 初赛 考前强化训练
- vivo联手京东,打通线上线下营销生态
- ipv6审核被拒绝的解决方案
- [渝粤教育] 天水师范学院 地球科学概论 参考 资料
- 创建桌面快捷方式及锁定到任务栏