当前位置: 首页 > news >正文

ModbusTcp获取数据

ModbusTcp获取数据


记录一个用 pymodbus 库来获取数据的代码。

  • 注意:
    • 1.读取寄存器地址是16进制的。
    • 2.大小端转换通过代码知道原理。
    • 读取数据时,切记频率别太高,否则会出现连接被关闭问题。
from pymodbus.client.sync import ModbusTcpClient
import struct
from datetime import datetime 
import time
def read_coordinate(host, port, register_address, unit_id,coordinate):"""通过Modbus TCP读取机械臂的X坐标值。参数:host (str): Modbus TCP服务器的IP地址。port (int): Modbus TCP服务器的端口号。register_address (int): 存储X坐标值的第一个寄存器地址。unit_id (int): Modbus设备的单元ID,默认为1。返回:float: 机械臂的X坐标值,如果读取失败则返回 None。"""start_time = datetime.now()client = ModbusTcpClient(host, port)try:if client.connect():# 读取两个连续的寄存器response = client.read_holding_registers(address=register_address, count=6, unit=unit_id)if response.isError():print(f"Modbus error: {response}")return Noneelse:# 获取两个寄存器的值registers = response.registerscoordinates = []for i in range(0,6,2):#小端模式combined_value = (registers[i + 1] << 16) | registers[i]#大端模式# combined_value = (registers[i] << 16) | registers[i + 1]# 将两个寄存器的值组合成一个32位整数coordinate_value = struct.unpack('!f', struct.pack('!I', combined_value))[0]coordinates.append(coordinate_value)coordinate.extend(coordinates)return coordinateselse:print("Failed to connect to Modbus server")return Nonefinally:client.close()if __name__ == "__main__":
# 示例使用host = '192.168.2.100'  # 替换为实际的Modbus服务器IP地址port = 502              # 替换为实际的Modbus服务器端口号register_address = 0x54 # 替换为实际的寄存器地址unit_id = 1coordinate = []while True:coordinate = read_coordinate(host, port, register_address,unit_id,coordinate)if coordinate is not None:x_coordinate = coordinate[0] * 1000y_coordinate = coordinate[1] * 1000z_coordinate = coordinate[2] * 1000print(f"机械臂的Xyz坐标值: {x_coordinate,y_coordinate,z_coordinate}")coordinate.clear()else:print("无法读取机械臂的X坐标值")time.sleep(0.2)

相关文章:

ModbusTcp获取数据

ModbusTcp获取数据 记录一个用 pymodbus 库来获取数据的代码。 注意&#xff1a; 1.读取寄存器地址是16进制的。2.大小端转换通过代码知道原理。读取数据时&#xff0c;切记频率别太高&#xff0c;否则会出现连接被关闭问题。 from pymodbus.client.sync import ModbusTcpCli…...

java 知识点:注解及使用

注解 大多数时候&#xff0c;我们会使用注解&#xff0c;而不是自定义注解。注解给谁用&#xff1f;编译器 、给解析程序用注解不是程序的一部分&#xff0c;可以理解为注解就是一个标签 主要的作用有以下四方面&#xff1a; 生成文档&#xff0c;通过代码里标识的元数据生成…...

AI预测体彩排3采取888=3策略+和值012路+胆码+通杀1码测试12月13日升级新模型预测第156弹

经过100多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;已到达90%的命中率&#xff0c;这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了&#xff0c;大…...

faiss数据库检索不稳定

faiss数据检索不稳定 def build_faiss_index(embeddings_vector):dim np.shape(embeddings_vector)[-1]index faiss.index_factory(dim, HNSW64, faiss.METRIC_INNER_PRODUCT)index.add(embeddings_vector)return index这个代码不稳定&#xff0c;构建的索引召回结果可能会不…...

Vue技术中参数传递:Props与事件的实践指南

在Vue.js中&#xff0c;组件间的参数传递是构建动态和交互式应用的核心。本文将深入探讨如何通过Props和事件&#xff08;$emit&#xff09;在Vue组件间进行参数传递&#xff0c;并提供代码示例。 Props传递数据 Props是Vue中组件间传递数据的一种方式&#xff0c;它允许父组…...

C++【基础】 ---- 快速入门 C++

文章目录 前言一、有关 const 区分二、有关命名空间三、有关输入和输出四、有关缺省参数四、函数重载总结 前言 本篇文章笔者将会对 C 这么语言中必须的基础部分进行简单讲解 , 同时也作为笔者自我复习使用, 这部分是初学C 的学者不可绕过的部分 , 希望学者认真理解 ,认真领会…...

Neo4j+Neovis+Vue3:前端连接数据库渲染

Neovis&#xff08;github&#xff09;&#xff1a;https://github.com/neo4j-contrib/neovis.js Neovis配置文档&#xff1a;neovis.js (neo4j-contrib.github.io) 一、安装Neo4j 参考文章&#xff1a;neo4j下载安装配置步骤-CSDN博客 二、Neovis使用 1.npm引入 ?npm ins…...

React 18

文章目录 React 18自动批处理并发特性Suspense 组件增强新 HookscreateRoot API 替代 ReactDOM.renderStrict Mode严格模式服务器端渲染改进性能优化 React 18 React 18 引入了一系列新特性和改进&#xff0c;旨在提升性能、改善用户体验&#xff0c;并简化开发流程。以下是 R…...

Java:集合(List、Map、Set)

文章目录 1. Collection集合1-1. 迭代器遍历方式1-2. 通过for循环进行遍历1-3. forEach遍历 2. List集合2-1. ArrayList底层实现原理2-2. LinkedList底层实现原理 3. Set集合3-1. HashSet 底层实现3-2. LinkedHashSet 底层实现3-3. TreeSet 4. Collection集合->总结5. Map集…...

使用秘钥登录服务器

在我们测试或生产环境中&#xff0c;为了服务器安全性&#xff0c;有时可能需要以 SSH 密钥的方式登录服务器&#xff0c;接下来&#xff0c;将演示如何通过 SSH 私钥的方式来远程服务器。 一、远程服务器生成密钥对 1、首先在目标远程服务器下生成 SSH 密钥对 ssh-keygen然…...

BFS算法题

目录 1.BFS 2.树里的宽搜 题目一——429. N 叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目二——103. 二叉树的锯齿形层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目三——662. 二叉树最大宽度 - 力扣&#xff08;LeetCode&#xff09; 题目四——…...

网络应用技术 实验八:防火墙实现访问控制(华为ensp)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验步骤 1、设计全网 IP 地址 2、设计防火墙安全策略 3、在 eNSP 中部署园区网 4、配置用户主机地址 5、配置网络设备 配置交换机SW-1~SW-5 配置路由交换机RS-1~RS-5 配置路由器R-1~R-3 6、配置仿…...

嵌入式现状、机遇、挑战与展望

在当今数字化浪潮中&#xff0c;嵌入式系统宛如一颗璀璨的明珠&#xff0c;熠熠生辉&#xff0c;深刻地渗透到了我们生活的方方面面&#xff0c;成为推动现代科技进步不可或缺的关键力量。从智能家居的便捷控制&#xff0c;到工业生产的精准运作&#xff0c;再到汽车的智能驾驶…...

天通卫星卡通知短信模板

文章目录 引言I 阿里云新增短信模板短信模板通知短信变量规范计费规则: 短信长度不超过70个字,按照1条短信计费;II 表设计III 实现方案引言 背景:天通卡适用于应急救灾、登山探险、海上通信、野外作业等需要稳定可靠通信的场景。 需求:天通卡充值成功通知 平台基于阿里云给…...

Unity WebGL 编译和打包说明(官方文档翻译校正)

目录 Unity WebGL 编译和打包说明WebGL 简介WebGL 浏览器兼容性 (WebGL Browser Compatibility)平台支持 (Platform Support)多线程支持限制多线程支持的因素安装 Unity Hub 并添加所需模块WebGL 开发WebGL Player 设置Resolution and PresentationResolutionWebGL TemplateSpl…...

题解 - 取数排列

题目描述 取1到N共N个连续的数字&#xff08;1≤N≤9&#xff09;&#xff0c;组成每位数不重复的所有可能的N位数&#xff0c;按从小到大的顺序进行编号。当输入一个编号M时&#xff0c;就能打印出与该编号对应的那个N位数。例如&#xff0c;当N&#xff1d;3时&#xff0c;可…...

JAVA实战:借助阿里云实现短信发送功能

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…...

高阶函数:JavaScript 编程中的魔法棒

在JavaScript的世界里&#xff0c;高阶函数是一种强大的工具&#xff0c;它允许我们将函数作为参数传递或将函数作为返回值。这种特性使得JavaScript代码更加灵活和强大。本文将深入探讨高阶函数的定义、用法以及在实际项目中的最佳实践&#xff0c;帮助大家更好地理解和应用这…...

Android 12.0 Launcher3从首页开始安装app功能实现

1.前言 在12.0的系统rom定制化开发中,在进行Launcher3的某些功能开发实现过程中,在某些项目中,安装的app比较多,要求在launcher3的首页开始安装 app应用,接下来就需要分析下app安装图标排序的流程,然后在实现相关的功能 2. Launcher3从首页开始安装app功能实现的核心…...

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

Python爬虫实战:研究Restkit库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;容器探测是指kubelet对容器执行定期诊断的过程&#xff0c;以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...