pymodbus使用介绍

点击上方蓝字可直接关注哦,方便下次阅读~

 

上次介绍的是Modbus调试助手的使用,这次我们自己使用第三方库实现一些功能。

 

当我们写程序写的多一些时,自然就会使用第三方库,在使用过程中注意规避掉一些坑即可。

 

接下来我们使用python的pymodbus库来实现modbus 功能。

运行环境:Ubuntu 14.04、Python2.7

 

1.下载pymodbus库

我使用的是2.2.0版本,并没有使用最新的。下载完成后并无法直接使用,需要改动一下,不知道其他小伙伴是否也是这样,在网上查的时候资料还很少,最后是看了以前的版本才搞定的。忧桑。。。

640?wx_fmt=png

 

下载好后是pymodbus-2.2.0,我们使用时是pymodbus这个文件夹。

640?wx_fmt=png

 

2. 客户端简单例子

pymodbus下载好后,里面有很多例子,更多的功能可以参考例子后进行修改。这次和大家分享的是比较简单的例子,很容易上手。

 

①文件结构

将pymodbus文件夹与新建的测试文件放到同一目录下

640?wx_fmt=png

 

②测试文件内容

#! /usr/bin/env python	
# coding=utf-8	

	
from pymodbus.client.sync import ModbusTcpClient	
import time	

	

	
UNIT = 0x1	

	
client = ModbusTcpClient('192.168.1.99', port = 502, timeout = 1)	

	
while True:	
 request = client.read_holding_registers(0, 3)	
 result = request.registers	
 #print(result.bits[0])	
 print(result)	
 print(result[0])	
 time.sleep(1)	

	

	
client.close()

 

新建客户端去连接服务器,填充服务器IP与端口号。pymodbus库已经为我们封装好了寄存器的种类,例子中是读取保持寄存器的状态。read_holding_registers(0, 3),从地址0开始,读取3位。之后我们将结果打印出来观察。

 

③服务器配置

使用之前介绍的modbus调试助手ModSim32作为服务器,配置如下图:

地址为1,为方便观察Length设置为10

将40002设置为111,40003设置为222,以检查客户端读取的结果

640?wx_fmt=png

 

④python 客户端运行结果

我是直接使用ubuntu终端下运行的,连接成功后打印结果如下:

程序中我们读取3位,分别是0、111、222

640?wx_fmt=png

 

⑤客户端与服务器地址不匹配运行报错

如果客户端与服务器配置的地址不匹配,那么在运行的时候就会报错,错误信息如下:

服务器地址还是像之前的配置,但是客户端读取使是从11开始读取的,然鹅这个地址服务器端并没有配置,所以客户端这边对应的进行报错。

640?wx_fmt=png

 

后记小结:

python的modbus库还有其他的,感兴趣的老铁可以去查一查。libmodbus库是另一个c 的库,也是很常用的一个库。

 

往期Modbus相关:

 

 

 

 

欢迎大家关注公众号: Pou光明

 

640?wx_fmt=png

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pymodbus是一个基于PythonModbus通信库,用于实现Modbus通信协议在计算机和设备之间的数据交换。Modbus是一种常用的通信协议,被广泛应用于工业自动化领域。 使用pymodbus库,我们可以很方便地实现Modbus主站(Master)和从站(Slave)的通信。下面是一个简单的pymodbus实例。 首先,我们需要安装pymodbus库。可以使用pip命令在命令行中输入以下命令进行安装: pip install pymodbus 然后,在Python环境中导入所需的模块和类: from pymodbus.client.sync import ModbusTcpClient from pymodbus.exceptions import ModbusException from pymodbus.payload import BinaryPayloadBuilder, BinaryPayloadDecoder from pymodbus.constants import Endian 接下来,我们可以创建一个ModbusTcpClient对象实例,并连接到目标从站设备: client = ModbusTcpClient('localhost', 502) # 连接到本地主机,端口号为502 client.connect() # 连接到从站设备 接下来,我们可以使用该客户端对象来执行Modbus操作,例如读取从站设备的寄存器值: result = client.read_holding_registers(0, 2, unit=1) # 读取从站设备的寄存器0和寄存器1的值,从站设备地址为1 if isinstance(result, ModbusException): print("Modbus读取失败:", result) else: print("寄存器值:", result.registers) 最后,不要忘记关闭连接: client.close() # 关闭连接 通过以上步骤,我们可以成功实现使用pymodbus库进行Modbus通信的实例。此示例仅涵盖了最基本的读取寄存器值操作,实际应用中还可以实现写入寄存器值、读写其他类型的Modbus数据等操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值