modbus_tk Rru
import serial
import struct
import logging
import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus_rtu as modbus_rtu
logger = modbus_tk.utils.create_logger("console")
if __name__ == '__main__':
try:
serial = serial.Serial(port="COM2",baudrate=9600,bytesize=8,parity='N',stopbits=1)
master = modbus_rtu.RtuMaster(serial)
master.set_timeout(5.0)
master.set_verbose(True)
logger.info("connected!")
# 写单个寄存器
logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=99))
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1))
# 写单个寄存器 负数
logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 1, output_value=-123))
logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 1, 1))
# 写多个寄存器 起始地址为4的保持寄存器,操作寄存器个数为4 ,根据列表长度来判断写入个数
logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 4, output_value=[3,-13, 6,24]))
# 读也读4个寄存器
read_data = master.execute(1, cst.READ_HOLDING_REGISTERS, 4, 4)
# 写寄存器 起始地址为8的保持寄存器,操作寄存器个数为 4 ,一个浮点数float 占两个寄存器;
# 写浮点数时一定要加 data_format 参数,两个ff 表示要写入两个浮点数,以此类推
# 我这里模拟的是小端模式,具体可参考 struct 用法。和数据源保持一致即可。
logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 8, output_value=[3.3,-6.4],data_format='<ff'))
# 读对应的 4个寄存器,指定数据格式
read_data = master.execute(1, cst.READ_HOLDING_REGISTERS, 8, 4,data_format='<ff')
logger.info(read_data)
# 写入 双精度 数据到寄存器
logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 16, output_value=[3.313, -6.414], data_format='<dd'))
read_data = master.execute(1, cst.READ_HOLDING_REGISTERS, 16, 8, data_format='<dd')
# 写单个线圈,写寄存器地址为0的线圈寄存器,写入内容为1 位操作)
logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value= 1))
logger.info(master.execute(1,cst.READ_COILS,0,1))
# 写多个线圈 写寄存器地址为1的线圈寄存器,写入内容为列表内容 位操作)
logger.info(master.execute(1, cst.WRITE_MULTIPLE_COILS,1,output_value=[0,1,1,0]))
logger.info(master.execute(1,cst.READ_COILS,1,4))
# 读保持寄存器,从 8 开始读 8 个,元组形式返回
data = master.execute(1, cst.READ_HOLDING_REGISTERS, 8, 8)
logger.info(data)
# 读输入寄存器,从 2 开始读 5 个,元组形式返回
logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 2, 5))
# 读线圈寄存器
logger.info(master.execute(1, cst.READ_COILS, 8, 8))
# 读离散输入寄存器
logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 8, 8))
# 同时读写多个寄存器
# ??
except modbus_tk.modbus.ModbusError as e:
logger.error("%s-ErrCode=%d" % (e, e.get_exception_code()))
参考链接:https://blog.csdn.net/evenio/article/details/105156457
modbus_tk Rru的更多相关文章
- BBU和RRU具体区别是 什么?
RRU是Remote Radio Unit 远端射频模块,BBU是Building Baseband Unit 室内基带处理单元.基带BBU集中放置在机房,RRU可安装至楼层,BBU与RRU之间采用光 ...
- (转)RRU交织冗余在LTE-R组网中的应用研究
RRU交织冗余在LTE-R组网中的应用研究 王 芳1,2 庞萌萌1,2 (1.北京全路通信信号研究设计院集团有限公司,北京 100070; 2.北京市高速铁路运行控制系统工程技术研究中心,北京 100 ...
- BBU+RRU基本介绍
现代移动通信网络中的数模转化架构:RRU+BBU: 因为学习需要了解RRU+BBU.特此网上查找了一番,找到了一些还不错的解释,分享给大家! BBU与RRU的区别: 通常大型建筑物内部的层间有楼板,房 ...
- 问题:modbus_tk开发中遇到[Errno 98] Address already in use (已解决)
案例: from modbus_tk import modbus_tcp,defines import time s = modbus_tcp.TcpServer(port=5300) def mai ...
- modbus_tk模块
modbus_tk模块 通过modbus-RTU 读取地址,调用后返回反馈数值和故障信息. modbus_tk模块安装 pip install pymodbus_tk 下面代码功能:读取地址为0x42 ...
- 5G系统架构
原文标题:迈向5G之路,颠覆性的5G系统架构? 本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...
- 从2G到5G, 基站天线过去与未来
在蜂窝移动通信系统中,天线是电路信号与空间辐射电磁波的转换器,是移动通信系统的末梢关键组成部分. 从2G到4G,移动基站天线经历了全向天线.定向单极化天线.定向双极化天线.电调单极化天线.电调双极化天 ...
- css随笔1
1.简单清除浏览器样式 *{ padding: 0px; margin: 0px; } 2.得到屏幕范围的div html,body{ width: 1 ...
- 【POJ2104】K-th Number
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABToAAAJ2CAIAAADwi6oDAAAgAElEQVR4nOy9a5Pj1nnvi0/Q71Llj3
- CSS字体记录
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAACnCAIAAADVOG9FAAAgAElEQVR4nOy9eXwcxZk/vL/9ve8eb7 ...
随机推荐
- Django项目创建应用(二)
四.创建应用 一个项目里可以创建多个应用,每个应用进行一种业务处理 (1)激活当前项目的环境 D:\pythonProject2023\djangoProject>activate python ...
- while循环内使用for循环
一个基础问题,while循环内使用for循环,且当for循环内有控制while循环条件时. 如下所示: bool flag = true; while(flag) { for(i=0;i<10; ...
- 国产低功耗Soc蓝牙语音遥控器芯片HS6621 /OM6621
随着物联网技术不断发展,家用电器往智能化方向持续迭代,使用红外遥控器这种传统的互动方式已经满足不了实际的使用需求,蓝牙语音遥控器作为人机交互新载体,逐渐取代传统红外遥控器成为家居设备的标配.相比于传统 ...
- 浅析Winform的可视样式
每一个C#的Winform项目的Main方法里,都有这么一行代码,那么它究竟是用来做什么的呢? Application.EnableVisualStyles(); 从注释来看,这是一行用作设置样式的代 ...
- matlab数操作
随循环填充(更新)矩阵 不断更新矩阵,填充矩阵,可用cat函数: C = cat(dim,A,B); 向量重复扩充矩阵 将相同的向量或矩阵进行重复扩充时,matlab有两种方法:(第二种方法的效率更高 ...
- vue 安装脚手架后配置自动打开浏览器
打开config目录下的index.js文件,将autoOpenBrowser: false,改为autoOpenBrowser: true,即可 autoOpenBrowser: true
- 互联网公司IT系统架构进化之路
一日,与一高手在茶馆聊天.他问道:在鞋厂剑派这两年,可习的什么高深的剑法?我不由一愣,细细想来,这两年每日练习的都是简单的劈砍动作和一些简练的套路.并没有去练什么高深的剑法.不过鞋厂剑派在江湖上也算小 ...
- JDBC之Connection
Connection 目录 Connection Java连接MySQL Connection必备知识点 利用JDBC使用Connection 问题一:为什么Java操作数据库的连接不是越多越好 问题 ...
- SQLSERVER 存储过程里 执行sql字符串 并返回结果
-- Author: <Author,,Name>-- Create date: <Create Date,,>-- Description: 停用/启用12个月销售目标--e ...
- 32.自定义Java异常捕获处理类及其使用
自定义异常捕获处理类 /** * <h1>异常捕捉</h1> * */ public class ExceptionHandler implements Thread.Unca ...