pyserial和pymodbus

pyserial和pymodubus

pyserial 和 pymodbus 是两个常用的 Python 库,分别用于串行通讯和 Modbus 协议通讯,广泛应用于与硬件设备(如传感器、PLC、RS-485 转串行设备等)进行数据交换。

pyserial

pyserial 是一个用于与串行端口(如 RS-232、RS-485 转 USB 适配器)进行通讯的 Python 库。它支持通过串行端口与硬件设备进行数据传输,适用于大多数基于串行接口的设备。
核心功能
打开串行端口:与指定的串行端口(如 /dev/ttyUSB0)进行连接。
读取/写入数据:可以发送和接收字节数据,支持同步和异步通讯。
配置串行端口:设置波特率、数据位、停止位、校验位等。
数据流控制:支持流控制(如 XON/XOFF、RTS/CTS)。

安装 pyserial
你可以通过 pip 安装 pyserial:

pip install pyserial

示例代码
以下是一个简单的 pyserial 示例,展示如何通过串行端口发送和接收数据:

import serial
import time

打开串行端口(比如 /dev/ttyUSB0)

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)  # 设置波特率为 9600,超时为 1 秒

向串行端口写数据

ser.write(b'Hello, RS-485!\n')  # 向设备发送字节数据

读取串行端口接收到的数据

while True:if ser.in_waiting > 0:  # 如果有数据可读data = ser.readline()  # 读取一行数据print("Received:", data.decode())  # 解码并打印接收到的数据breakser.close()  # 关闭串行端口

常见配置项
baudrate:波特率,例如 9600, 115200 等。
timeout:读取数据的超时时间(秒)。
parity:校验位,常用选项:serial.PARITY_NONE(无校验)、serial.PARITY_EVEN(偶校验)等。
stopbits:停止位,常用值是 1 或 2。

pymodbus

pymodbus 是一个用于 Modbus 协议通讯的 Python 库。Modbus 是一种广泛使用的通讯协议,尤其在工业自动化、PLC 控制系统、传感器和智能电表等领域中被广泛应用。pymodbus 支持 Modbus RTU 和 Modbus TCP 协议,能够让你方便地与支持 Modbus 协议的设备进行通讯。

核心功能
支持 Modbus RTU 和 TCP:可以通过串行(RS-485)或以太网(TCP/IP)与设备通讯。
功能码支持:支持 Modbus 主要的功能码(如读取和写入离散输入、保持寄存器等)。
支持客户端和服务器模式:可以创建 Modbus 客户端和服务器应用。
数据类型支持:支持 Modbus 寄存器类型(如 16 位寄存器、离散输入、线圈等)。
安装 pymodbus
你可以通过 pip 安装 pymodbus:
pip install pymodbus
示例代码(Modbus RTU)
以下是一个使用 pymodbus 进行 Modbus RTU 通讯的简单示例,展示如何使用串行接口通过 Modbus 协议与设备交换数据:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient

创建 Modbus RTU 客户端(串行通讯)

client = ModbusClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600)
client.connect()

读取保持寄存器(假设设备地址为 1,读取从寄存器 0 开始的 2 个寄存器)

result = client.read_holding_registers(0, 2, unit=1)if result.isError():print("Error reading registers:", result)
else:print("Registers:", result.registers)  # 输出读取到的寄存器值

关闭连接

client.close()
示例代码(Modbus TCP)
如果你使用的是 Modbus TCP(即通过以太网连接设备),可以像这样配置客户端:
from pymodbus.client.sync import ModbusTcpClient

创建 Modbus TCP 客户端(通过 IP 地址连接)

client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

读取保持寄存器

result = client.read_holding_registers(0, 2, unit=1)if result.isError():print("Error reading registers:", result)
else:print("Registers:", result.registers)client.close()

常用功能
read_coils:读取线圈(数字输出)。
read_discrete_inputs:读取离散输入(数字输入)。
read_holding_registers:读取保持寄存器(通常用于存储模拟量数据)。
write_coils:写入线圈。
write_registers:写入保持寄存器。

pyserial 与 pymodbus 的关系

pyserial 主要负责低层的串行通讯,允许你通过 RS-485、RS-232 等串行端口进行数据传输。
pymodbus 是一个应用层协议,专门用于与支持 Modbus 协议的设备进行交互。它可以通过 pyserial 来使用串行端口进行 Modbus RTU 通讯,或者通过 TCP/IP 进行 Modbus TCP 通讯。
因此,如果你要使用 Modbus RTU 通过串行口与设备通讯,你需要先用 pyserial 设置好串行端口,再通过 pymodbus 进行 Modbus 协议的高层通讯。

总结

pyserial:提供与串行设备(如 RS-485 转 USB)进行通讯的基础支持,适合做低层的串行通讯。
pymodbus:提供实现 Modbus 协议的支持,适用于与工业设备和传感器之间的通讯,支持 RTU 和 TCP 两种模式。
你可以根据需求结合这两个库,首先用 pyserial 打开串行端口,然后用 pymodbus 实现与 Modbus 设备的高层通讯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

是否需要显式使用 epoll_ctl ( fd , EPOLL_CTL_DEL , ... ) 来从红黑树里显式删除过期的套接字

(1)关于 epoll 操作的三大系统函数: epoll_create ( … ) 、 epoll_ctl ( … ) 、 epoll_wait(…)。具体的函数原型略。这些函数完成了 epoll 对象的创建、 套接字往 epoll 红黑树中的添加、修改 与 删除 。 本文的整理…

【Hadoop】Hadoop 概述

Hadoop 概述 Hadoop 是什么Hadoop 发展历史Hadoop 三大发行版本Hadoop 优势(4 高)Hadoop 组成(面试重点)HDFS 架构概述YARN 架构概述MapReduce 架构概述HDFS、YARN、MapReduce 三者关系 大数据技术生态体系 Hadoop 是什么 Hadoop…

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜…

week08_文本匹配任务

1、文本匹配任务概述 狭义: 给定一组文本,判断其是否语义相似 今天天气不错 match 今儿个天不错呀 √ 今天天气不错 match 你的代码有bug 以分值形式给出相似度 今天天气不错 match 今儿个天不错呀 0.9 今天天气不错 match…

Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)

文章目录 Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)1. 副本的基本概念2. 副本同步和一致性2.1 AR(Assigned Replicas)2.2 ISR(In-Sync Replicas)2.3 OSR(Out-of-Sync Replicas&#xf…

【JavaEE】_MVC架构与三层架构

目录 1. MVC架构 2. 三层架构 3. MVC架构与三层架构的对比 3.1 MVC与三层架构的对比 3.2 MVC与三层架构的共性 1. MVC架构 在前文已介绍关于SpringMAC的设计模式,详见下文: 【JavaEE】_Spring Web MVC简介-CSDN博客文章浏览阅读967次,点…

【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)

1. 简介 柱状图作为科研论文中常用的实验结果对比图,本文采用了3组实验对比的效果展示图,代码已调试好,只需替换数据即可生成相关柱状图,为科研加分。通过获得Nature配色的柱状图,让你的论文看起来档次更高&#xff0…

【QT】 控件 -- 显示类

🔥 目录 [TOC]( 🔥 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 🔥 1. 前言 之前我在上一篇文章【QT】…

前端-Rollup

Rollup 是一个用于 JavaScript 的模块打包工具,它将小的代码片段编译成更大、更复杂的代码,例如库或应用程序。它使用 JavaScript 的 ES6 版本中包含的新标准化代码模块格式,而不是以前的 CommonJS 和 AMD 等特殊解决方案。ES 模块允许你自由…

网络直播时代的营销新策略:基于受众分析与开源AI智能名片2+1链动模式S2B2C商城小程序源码的探索

摘要:随着互联网技术的飞速发展,网络直播作为一种新兴的、极具影响力的媒体形式,正逐渐改变着人们的娱乐方式、消费习惯乃至社交模式。据中国互联网络信息中心数据显示,网络直播用户规模已达到3.25亿,占网民总数的45.8…

STM32调试手段:重定向printf串口

引言 C语言中经常使用printf来输出调试信息,打印到屏幕。由于在单片机中没有屏幕,但是我们可以重定向printf,把数据打印到串口,从而在电脑端接收调试信息。这是除了debug外,另外一个非常有效的调试手段。 一、什么是pr…

利用飞书机器人进行 - ArXiv自动化检索推荐

相关作者的Github仓库 ArXivToday-Lark 使用教程 Step1 新建机器人 根据飞书官方机器人使用手册,新建自定义机器人,并记录好webhook地址,后续将在配置文件中更新该地址。 可以先完成到后续步骤之前,后续的步骤与安全相关&…

混合专家模型MoE的全面详解

什么是混合专家(MoE)? 混合专家(MoE)是一种利用多个不同的子模型(或称为“专家”)来提升LLM质量的技术。 MoE的两个主要组成部分是: 专家:每个前馈神经网络&#xff08…

基于Arcsoft的人脸识别

目录 一、前言 二、使用方法 三、获取SDK 四、人脸检测/人脸识别 五、代码实现 一、前言 face++,百度ai,虹软,face_recognition,其中除了face_recognition是python免费的一个库安装好响应的库直接运行就好,另外三个需要填入相关申请的信息id和key。 分别对应着相应的人…

电梯系统的UML文档13

5.2.6 CarPositionControl 的状态图 图 24: CarPositionControl 的状态图 5.2.7 Dispatcher 的状态图 图 25: Dispatcher 的状态图 5.3 填补从需求到状态图鸿沟的实用方法 状态图能对类的行为,一个用例,或系统整体建模。在本文中,状态图…

Ollama windows安装

Ollama 是一个开源项目,专注于帮助用户本地化运行大型语言模型(LLMs)。它提供了一个简单易用的框架,让开发者和个人用户能够在自己的设备上部署和运行 LLMs,而无需依赖云服务或外部 API。这对于需要数据隐私、离线使用…

C++二叉树进阶

1.二叉搜索树 1.1二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者具有以下性质的二叉树 若它的左子树不为空,则左子树上所有结点的值小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值…

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal,选择版本后点击“install”执行安装

2. Java-MarkDown文件解析-工具类

2. Java-MarkDown文件解析-工具类 1. 思路 读取markdown文件的内容&#xff0c;根据markdown的语法进行各个类型语法的解析。引入工具类 commonmark 和 commonmark-ext-gfm-tables进行markdown语法解析。 2. 工具类 pom.xml <!-- commonmark 解析markdown --> <d…

U盘打开提示格式化:深度解析与数据恢复全攻略

在数字化时代&#xff0c;U盘作为便捷的数据存储和传输工具&#xff0c;广泛应用于各个领域。然而&#xff0c;当我们满怀期待地插入U盘&#xff0c;却遭遇“U盘打开提示格式化”的尴尬局面时&#xff0c;那份焦虑与无助感油然而生。本文将全面剖析U盘打开提示格式化的原因、应…