基于Python的ModbusTCP客户端实现详解


Posted in Python onJuly 13, 2019

前言

Modbus协议是由Modicon公司(现在的施耐德电气Schneider Electric)推出,主要建立在物理串口、以太网TCP/IP层之上,目前已经成为工业领域通信协议的业界标准,广泛应用在工业电子设备之间的互联。

Modbus Poll和Modbus Slave是两款非常流行的Modbus设备仿真软件,支持Modbus RTU/ASCII和Modbus TCP/IP协议 ,经常用于测试和调试Modbus设备,观察Modbus通信过程中的各种报文。

当用于支持Modbus RTU/ASCII协议时,ModbusPoll作为一个主站设备, ModbusSlave作为一个从站设备,从站设备接收主站设备的命令并返回数据。而当用于支持Modbus TCP/IP时,ModbusSlave作为一个服务器, ModbusPoll作为一个客户端,服务器接收客户端的命令并返回数据。客户端需要填写指定连接的远程服务器IP地址和端口号。

基于Python的ModbusTCP客户端实现详解

这里主要介绍下用Python实现ModbusTCP客户端功能,同时使用ModbusSlave模拟一个服务器,用于互联调试。

基于Python的ModbusTCP客户端实现详解

Python中提供了支持Modbus协议的第三方库——modbus_tk,下载地址为:https://pypi.org/project/modbus_tk/。使用时需要先导入modbus_tk库,然后简单地依照Modbus协议配置参数即可。当实现客户端功能时,需要配置如下参数:

slave:Modbus从站ID地址 。

function_code:寄存器的功能码,主要的寄存器功能码如下所示:

基于Python的ModbusTCP客户端实现详解

starting_address:寄存器起始地址,从0开始。

quantity_of_x:寄存器连续个数。

output_value:写命令时的数值。

Scan Rate:读取数据的周期,程序中体现为执行 execute()方法的周期。

如下例程实现了01和03两条命令读取服务器的数据,如下所示:

import modbus_tk.modbus_tcp as mt
import modbus_tk.defines as md
# 远程连接到服务器端
master = mt.TcpMaster("192.168.1.10", 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
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=1, quantity_of_x=3, output_value=5)
Coils_value = master.execute(slave=1, function_code=md.READ_COILS, starting_address=1, quantity_of_x=3, output_value=5)
print(Hold_value) # 取到的寄存器的值格式为元组(55, 12, 44)
print(Hold_value) # 取到的寄存器的值格式为元组(1, 1, 1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pymssql ntext字段调用问题解决方法
Dec 17 Python
详解Python中内置的NotImplemented类型的用法
Mar 31 Python
利用Python中的mock库对Python代码进行模拟测试
Apr 16 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python中查看文件名和文件路径
Mar 31 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
Python多线程原理与用法实例剖析
Jan 22 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
Python Numpy库datetime类型的处理详解
Jul 13 #Python
Python3内置模块random随机方法小结
Jul 13 #Python
简单了解python的一些位运算技巧
Jul 13 #Python
简单了解python PEP的一些知识
Jul 13 #Python
python爬虫神器Pyppeteer入门及使用
Jul 13 #Python
Python 分享10个PyCharm技巧
Jul 13 #Python
简单了解Python3里的一些新特性
Jul 13 #Python
You might like
重置版战役片段
2020/04/09 魔兽争霸
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
详解javascript函数写法大全
2019/03/25 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python中类与对象之间的关系详解
2020/12/16 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
软件测试企业面试试卷
2016/07/13 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
法制宣传实施方案
2014/03/13 职场文书
中国好声音华少广告词
2014/03/17 职场文书