modbus_tk与Modubs Slave结合使用
下载两个软件:
Modbus Slave/Poll
Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模拟服务端(主))
Modbus Poll是非常流行的Modbus Master模拟器,用于测试和调试从设备。支持Modbus RTU/ASCII和Modbus TCP/IP。
一、模拟器的使用
1.1 配置Modbus Poll
配置Modbus Poll的连接
配置Modbus Poll的参数
参数说明
Tx:向主站发送数据帧的次数
Err:通讯错误次数
ID:模拟Modbus子设备的设备地址
F:使用的Modbus功能码
SR:扫描周期Slave ID:Modbus从站地址
Function:寄存器的功能码
Address:寄存器起始地址,默认从0开始
Quantity:寄存器连续个数,默认为10个
Scan Rate:读取数据的周期,单位毫秒,默认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
function:寄存器功能码
寄存器功能码
代码 | 中文名称 | 寄存器PLC地址 | 位操作/字操作 | 操作数量 |
---|---|---|---|---|
01 | 读线圈状态 | 00001-09999 | 位操作 | 单个或多个 |
02 | 读离散输入状态 | 10001-19999 | 位操作 | 单个或多个 |
03 | 读保持寄存器 | 40001-49999 | 字操作 | 单个或多个 |
04 | 读输入寄存器 | 30001-39999 | 字操作 | 单个或多个 |
二、模拟器的测试连接
==两端模拟器的配置,直接按照上面的介绍时配置的。==
两个窗口都打开Communication-Traffic界面(在Display->Communication...)。用来查看记录。
方式一:
设置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作对照:
转载于:https://blog.51cto.com/feature09/2150079
modbus_tk与Modubs Slave结合使用相关推荐
- python tk protocol_Python Modbus_tk在树莓派上实现rtu master
利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: modbus_tk:完整modbus协议栈的实现,支持modbus ...
- python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)
GIT地址:https://github.com/ljean/modbus-tk 找到modbus rtu slaver 例程 用宝塔将例程复制到centos目录 #!/usr/bin/env pyt ...
- 利用Python(pyserial、minimalmodbus、modbus_tk)进行单片机通信
背景 最近利用Python语言设计串口和单片机进行通信的程序,现总结pyserial. minimalmodbus.modbus_tk各模块使用步骤和注意事项. 系统环境 Win7.python 3. ...
- python中使用modbus_tk操作浮点数
前言: 自己学习python的过程中,偶然接触到 modbus_tk 这个库,以前学习过modbus,在新的python语言环境下学习,权当复习了,记录下过程,感谢各位道友的分享,让我也少走了很多弯路 ...
- PYTHON3 Modbus_tk
pip install modbus_tk 无法安装,去官网下载在 PIP Modbus Slave / Poll Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模 ...
- python modbus tk 库_python modbus_tk库 学习记录
注:目前的开发只涉及 modbus master即 client端的开发,未涉及 slave端服务器的开发,slave服务器的设计,一般开发嵌入式设备作为数据采集器的时候用到,市面上有现成的slave ...
- python modbus tk 库_Python Modbus_tk在树莓派上实现rtu master
利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: pymodbus MinimalModbus Modbus-tk ...
- 使用python制作MODBUS RTU主站调试工具(二)—— modbus_tk配置
本文是使用python制作MODBUS RTU主站调试工具(一)-- GUI编程 的后续. OS:win10 x64 1909 开发工具:VS Code Python 库:modbus_tk/seri ...
- 为反对种族歧视,GitHub正在把master/slave等术语替换掉
大数据文摘出品 来源:zdnet 编译:牛婉杨.笪洁琼 随着美国"弗洛伊德"事件的持续发酵,战火烧到了技术圈. 像IBM.亚马逊这样的科技巨头都暂停了警方对其面部识别技术的使用,近 ...
最新文章
- layui遍历json数组_Python列表边遍历边删除,怎么用才不报越界错误呢?
- LeetCode(69):x 的平方根
- Boost:具有bind和weak_ptr的function_equal扥测试程序
- SQL基础【一、SQL简介】
- kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
- Microsoft BizTalk ESB Toolkit 2.0
- 二维分类教案_二维分类大班教案
- 重拾React: React 16.0
- 数据结构c语言版第4版答案,严蔚敏版数据结构(C语言版)参考答案第四、五章
- 常用DB9外设接口定义
- 《美国职业橄榄球大联盟》:NFL·橄榄1号位
- 关卡 动画 蓝图 运行_虚幻4 UE4 蓝图之关卡蓝图实现自动开关门
- UopenCryptionKit4Java:一个好用的轻量开源加解密器工具包
- 精选1000个机械原理动图
- 一、区块链技术与应用-密码学原理
- 推荐一个 Github 上最全的C语言教学
- 怎样在CSDN博客挂广告
- log4j日志文件的使用及log4j日志文件失效原因分析
- AI训练环境-CUDA/cuDNN/paddle ——‘CUBLAS_STATUS_INVALID_VALUE‘.
- 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...
热门文章
- 全站仪和手机连接软件_不懂全站仪?看这篇就够用了
- android 绘图流程,Android View绘制流程
- python上机实验报告读取文件_Python程序设计实验八:文件
- linux 发生变更的文件夹,【Linux常识篇(3)】文件及文件夹的ctimeatimemtime的含义详解...
- 20220227:力扣第282场周赛(上)
- php sql注入审计,php审计基础一:sql注入
- 网络近端串扰测试软件,干货 如何使用DSP技术进行网线近端串扰测试
- VB 更换设置桌面背景图片函数
- shell取得文件行数6法
- 腾讯无人车开进硅谷!建团队、招人才,国内放出商务岗位