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 ...
随机推荐
- uniapp打包小程序运行到微信开发工具
1.在manifest.json文件中配置AppID 2.在HBuilderX中配置微信开发者工具的安装路径. 工具->设置->运行设置 3. 在微信开发者工具中配置 设置->安全 ...
- 用telnet远程连接linux系统
环境,centos7.6 通过telnet进行远程登录的方法如下: 1.安装telnet,telnet-server,xinetd 检测是否安装telnet rpm -qa | grep telnet ...
- oracle abs ap 银行账号 组织层 新增api
DECLARE l_return_status VARCHAR2(1); l_msg_count NUMBER; l_msg_data VARCHAR2(1000); x_acct_use_id nu ...
- RepOpt-VGG:梯度参数化的开创
本文来自公众号"AI大道理" YOLov6的量化问题: yolov6在结构中大量使用了重参数结构,导致数据分布过差,PTQ精度急剧下降.另外,重参数化结构网络无法直接使用Q ...
- EXCEL函数总结
------------------截取"号"之前的字符 =MID(A45,1,FIND("号",A45,1)-1)
- jeecgboot <j-popup
<a-col :span="24"> <a-form-item label=" 规格" :labelCol="labelCol&qu ...
- python读取文本中的字典
首先得明确文本的每行是存的json或者用python的write(str(一个字典))写入的,那么不用借助json模块就能读取为字典,使用eval函数就行,json只能处理带双引号的字符串,但很多时候 ...
- 如何把高德地图搜索商家电话资料导出成excel里?
有很多人问我地图商家结果采集怎么做? 怎么样能够快速的把高德地图左边的搜索列表里的商家地图,电话,导出到EXCEL里. 如何快速地将高德地图里的商家电话资料导出EXCEL? 操作步骤: 1. 选择你要 ...
- re的finditer()
在前面学习了findall()函数,它可以一次性找到多个匹配的字符串,但是不能提供所在的位置,并且是一起返回的,如果有数万个一起返回来,就不太好处理了,因此要使用finditer()函数来实现每次只返 ...
- AIIE21th003: 2021年第二届国际工业工程和人工智能大会(IEAI 2021)
会议亮点: 1.IEAI2021由ACM新加坡分会赞助举办,它是MSIE 2021的分会. 2.被接收的文章会被发表在ACM国际论文集上,并被EI Compendex, Scopus, Thomson ...