基于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 相关文章推荐
python数据结构之链表详解
Sep 12 Python
Django中Forms的使用代码解析
Feb 10 Python
python贪吃蛇游戏代码
Apr 18 Python
pandas去除重复列的实现方法
Jan 29 Python
Python中@property的理解和使用示例
Jun 11 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Python input函数使用实例解析
Nov 22 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
python将音频进行变速的操作方法
Apr 08 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
用pip给python安装matplotlib库的详细教程
Feb 24 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
php 无限分类的树类代码
2009/12/03 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
VBScript版代码高亮
2006/06/26 Javascript
Use Word to Search for Files
2007/06/15 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
javascript常用的方法整理
2015/08/20 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
原生js开发的日历插件
2017/02/04 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
PyQt5实现下载进度条效果
2018/04/19 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
如何用python处理excel表格
2020/06/09 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
2014年三八妇女节活动方案
2014/02/28 职场文书
电子信息工程自荐信
2014/05/26 职场文书
升职自我推荐信范文
2015/03/25 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书