下载两个软件:

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结合使用相关推荐

  1. python tk protocol_Python Modbus_tk在树莓派上实现rtu master

    利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: modbus_tk:完整modbus协议栈的实现,支持modbus ...

  2. python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)

    GIT地址:https://github.com/ljean/modbus-tk 找到modbus rtu slaver 例程 用宝塔将例程复制到centos目录 #!/usr/bin/env pyt ...

  3. 利用Python(pyserial、minimalmodbus、modbus_tk)进行单片机通信

    背景 最近利用Python语言设计串口和单片机进行通信的程序,现总结pyserial. minimalmodbus.modbus_tk各模块使用步骤和注意事项. 系统环境 Win7.python 3. ...

  4. python中使用modbus_tk操作浮点数

    前言: 自己学习python的过程中,偶然接触到 modbus_tk 这个库,以前学习过modbus,在新的python语言环境下学习,权当复习了,记录下过程,感谢各位道友的分享,让我也少走了很多弯路 ...

  5. PYTHON3 Modbus_tk

    pip install modbus_tk  无法安装,去官网下载在 PIP  Modbus Slave / Poll Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模 ...

  6. python modbus tk 库_python modbus_tk库 学习记录

    注:目前的开发只涉及 modbus master即 client端的开发,未涉及 slave端服务器的开发,slave服务器的设计,一般开发嵌入式设备作为数据采集器的时候用到,市面上有现成的slave ...

  7. python modbus tk 库_Python Modbus_tk在树莓派上实现rtu master

    利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: pymodbus MinimalModbus Modbus-tk ...

  8. 使用python制作MODBUS RTU主站调试工具(二)—— modbus_tk配置

    本文是使用python制作MODBUS RTU主站调试工具(一)-- GUI编程 的后续. OS:win10 x64 1909 开发工具:VS Code Python 库:modbus_tk/seri ...

  9. 为反对种族歧视,GitHub正在把master/slave等术语替换掉

    大数据文摘出品 来源:zdnet 编译:牛婉杨.笪洁琼 随着美国"弗洛伊德"事件的持续发酵,战火烧到了技术圈. 像IBM.亚马逊这样的科技巨头都暂停了警方对其面部识别技术的使用,近 ...

最新文章

  1. layui遍历json数组_Python列表边遍历边删除,怎么用才不报越界错误呢?
  2. LeetCode(69):x 的平方根
  3. Boost:具有bind和weak_ptr的function_equal扥测试程序
  4. SQL基础【一、SQL简介】
  5. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  6. Microsoft BizTalk ESB Toolkit 2.0
  7. 二维分类教案_二维分类大班教案
  8. 重拾React: React 16.0
  9. 数据结构c语言版第4版答案,严蔚敏版数据结构(C语言版)参考答案第四、五章
  10. 常用DB9外设接口定义
  11. 《美国职业橄榄球大联盟》:NFL·橄榄1号位
  12. 关卡 动画 蓝图 运行_虚幻4 UE4 蓝图之关卡蓝图实现自动开关门
  13. UopenCryptionKit4Java:一个好用的轻量开源加解密器工具包
  14. 精选1000个机械原理动图
  15. 一、区块链技术与应用-密码学原理
  16. 推荐一个 Github 上最全的C语言教学
  17. 怎样在CSDN博客挂广告
  18. log4j日志文件的使用及log4j日志文件失效原因分析
  19. AI训练环境-CUDA/cuDNN/paddle ——‘CUBLAS_STATUS_INVALID_VALUE‘.
  20. 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...

热门文章

  1. 全站仪和手机连接软件_不懂全站仪?看这篇就够用了
  2. android 绘图流程,Android View绘制流程
  3. python上机实验报告读取文件_Python程序设计实验八:文件
  4. linux 发生变更的文件夹,【Linux常识篇(3)】文件及文件夹的ctimeatimemtime的含义详解...
  5. 20220227:力扣第282场周赛(上)
  6. php sql注入审计,php审计基础一:sql注入
  7. 网络近端串扰测试软件,干货 如何使用DSP技术进行网线近端串扰测试
  8. VB 更换设置桌面背景图片函数
  9. shell取得文件行数6法
  10. 腾讯无人车开进硅谷!建团队、招人才,国内放出商务岗位