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 ...
随机推荐
- class_schedule
#!/usr/bin/python # -*- coding: UTF-8 -*- class Schedule(object): def __init__(self, name=& ...
- js中图片二进制和base64的互转
<html> <head> <meta charset="UTF-8"> <title></title> </he ...
- springcloud(六) - 配置中心
功能介绍 设置和业务代码获取配置 功能实现 <!-- 添加configjar --> <dependency> <groupId>org.springframewo ...
- 批处理命令for循环(cmd命令)
记录一下: https://www.cnblogs.com/Braveliu/p/5081087.html
- python缩小放大浏览器
driver.execute_script("document.body.style.zoom='70%'") driver.execute_script("docume ...
- Outlook网页版怎么设置自动回复?节假日怎么设置邮件自动回复?
在页面顶部,选择 设置> 查看所有 Outlook 设置 选择邮件>撰写和答复. 在答复或全部答复下,选择当您从阅读窗格中答复时的默认响应: 答复: 您的答复仅发送给发件人. 全部答复: ...
- 解析bean封装成BeanDefinition
默认命名空间 1:parseDefaultElement 从代码中可以了解到默认的命名空间的一节节点主要是4种,import,alias,bean,beans private void parseDe ...
- debug 获取mybatis dao 连接的数据库
MapperProxy.invoke MapperMethod.execute 查看sqlSession .
- cv::eigen
void TestEigen() { cv::Mat m = (cv::Mat_<float>(3, 3) << 1, 2, 3, 2, 5, 6, 3, 6, 7); cv: ...
- 运行yarn报错:error C:\liuyan\tools\echarts-5.4.0\node_modules\cwebp-bin: Command failed.
完成warning和报错信息如下. 通过报错信息提示,锁定cwebp-bin,在waring中发现有提示说要更新至7或更高版本. 解决方案:在package.json中,将cwebp-bin设置版本为 ...