首页 热点资讯 义务教育 高等教育 出国留学 考研考公

Modbus通讯模块哪里有

发布网友 发布时间:2022-04-25 12:57

我来回答

3个回答

懂视网 时间:2022-04-10 20:25

下面代码功能;读取地址为0x42700 长度为43个数值。

 1 # -*- coding: utf_8 -*-
 2 
 3 
 4 import serial
 5 import modbus_tk
 6 import modbus_tk.defines as cst
 7 from modbus_tk import modbus_rtu
 8 
 9 def mod(PORT="com10"):
10 #print("加载modbus_tk 完成")
11 red = []
12 alarm = ""
13 try:
14  #设定串口为从站
15  master = modbus_rtu.RtuMaster(serial.Serial(port=PORT,
16  baudrate=9600, bytesize=8, parity=‘N‘, stopbits=1, xonxoff=0)) 
17  master.set_timeout(5.0)
18  master.set_verbose(True)
19  
20  #读保持寄存器 03H 1站号 地址2700 长度0-42 
21  red = master.execute(1, cst.READ_HOLDING_REGISTERS, 2700, 43) #这里可以修改需要读取的功能码
22  #print(red)
23  alarm="正常"
24  return list(red),alarm 
25 
26 except Exception as exc:
27  #print(str(exc))
28  alarm = (str(exc))
29  
30 return red, alarm ##如果异常就返回[],故障信息
31 
32 if __name__ == "__main__": 
33 mod()

读取其它数值的功能码,带反馈报文。

功能码:

READ_COILS                                            H01  读线圈
READ_DISCRETE_INPUTS                      H02  读离散输入
READ_HOLDING_REGISTERS                H03  读寄存器
READ_INPUT_REGISTERS                      H04  读输入寄存器
WRITE_SINGLE_COIL                               H05  写单一线圈
WRITE_SINGLE_REGISTER                     H06  写单一寄存器
WRITE_MULTIPLE_COILS                        H15  写多个线圈 
WRITE_MULTIPLE_REGISTERS              H16  写多寄存器 

 #读保持寄存器 03H 1站号 0地址 长度2 
 logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 2))
 #01 03 00 00 00 02 C4 0B


 # 读输入寄存器 04H 
 logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 0, 8))
 #反馈:01 04 00 00 00 08 F1 CC

 
 # 读线圈寄存器 01H 
 logger.info(master.execute(1, cst.READ_COILS, 0, 6))
 #反馈:01 01 00 00 00 06 BC 08


 
 # 读离散输入寄存器 02H
 logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 16))
 #反馈:01 02 00 00 00 10 79 C6 



 # 单个读写寄存器操作 06H
 # 写寄存器地址为0的保持寄存器 06H 
 logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 0, output_value=6))
 #反馈:01 06 00 00 00 06 09 C8 
 logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 1))
 #反馈:01 03 00 00 00 01 84 0A


 
 # 写寄存器地址为0的线圈寄存器,写入内容为0(位操作) 05H
 logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 0, output_value=0))
 #反馈:01 05 00 00 00 00 CD CA 
 logger.info(master.execute(1, cst.READ_COILS, 0, 1))
 #反馈:01 01 00 00 00 01 FD CA


 
 # 多个寄存器读写操作 10H
 # 写寄存器起始地址为0的保持寄存器,操作寄存器个数为4
 logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 11, output_value=[20,21,22,23]))
 #反馈:01 10 00 0B 00 04 08 00 14 00 15 00 16 00 17 AB A9
 logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 0, 4))
 #反馈:01 03 00 00 00 04 44 09

 

modbus_tk模块

标签:stop   define   code   ret   nes   time   修改   模块安装   位操作   

热心网友 时间:2022-04-10 17:33

Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议,通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。在英唐众创的模块商城里,就有modbus通讯模块,其模块还有电源模块,网线模块,光模块,WiFi模块,蓝牙模块等无线通讯模块。

热心网友 时间:2022-04-10 18:51

modbus通讯模块,透明传输,0-20KM,速率kpbs,433MHz串口工业通讯模块.异地实时,双向收发一体, ISM频点,RS485/232,TTL,USB接口可选,低功耗,体积小,应用广泛

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com