技术源于生活,服务生活
demo.py
# demo:modbus_tcp应答机制
import modbus_tk.defines as md
import modbus_tk.modbus_tcp as mt
from xlwt.compat import xrange
class ConfigModbus(object):
host = "127.0.0.1"
port = 502
# 创建连接对象
master = mt.TcpMaster(ConfigModbus.host, ConfigModbus.port)
master.set_timeout(5.0)
print('连接成功')
try:
# master.execute 远程连接到服务器端
# 判断是否链接正常
START_POS = 0 # 起始位置
MAX_LENGTH = 10 # 取值的位数
# md.READ_HOLDING_REGISTERS # modbus读取保持寄存器 3
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=START_POS,
quantity_of_x=MAX_LENGTH)# 写操作output_value = 1/[1,2,2,2]一个或多个值
print(Hold_value)
# 写寄存器起始地址为0的保持寄存器,操作寄存器个数为68
START_POS = 0 # 起始位置
MAX_LENGTH = 10 # 取值的位数
# md.READ_HOLDING_REGISTERS # modbus读取保持寄存器 3
output_value_2 = [257]
# output_value_2 = [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1]
data = master.execute(slave=1, function_code=md.WRITE_MULTIPLE_REGISTERS, starting_address=START_POS,
quantity_of_x=MAX_LENGTH, output_value=output_value_2)
print(data)
Hold_value = master.execute(slave=1, function_code=md.READ_HOLDING_REGISTERS, starting_address=START_POS,
quantity_of_x=MAX_LENGTH, output_value=5)
print(Hold_value, '程序结束')
except Exception as e:
print("error:", e)
pass
运行结果:
连接成功
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
(0, 10)
(1, 1, 1, 1, 1, 1, 1, 1, 1, 1) 程序结束
配合mod_RSsim.exe软件使用
软件下载地址:mod_RSsim.exe