python实现对modbusSIM的数据读取

一、modbusSIM软件介绍

  1.界面

  2.参数设置

    链接设置,选择链接设置/Modbus/TCP服务器

二、python 代码编写

  1.python程序编写  Modbus_read.py

# -*- coding: utf-8 -*-

import  modbus_tk.modbus_tcp as mt
import  modbus_tk.defines as md
import time
#创建TCPMASTER对象

master = mt.TcpMaster('192.168.6.24',502)
# master = mt.TcpMaster('127.0.0.1',502)

#设置超时时间

master.set_timeout(5.5)
#读取寄存器数值
while True:
    db2 = master.execute(slave=1,function_code=md.READ_HOLDING_REGISTERS,starting_address=0,quantity_of_x=30)
    print(db2)
    time.sleep(2)

  打印结果如下图:

  2.更改数据,查看打印结果

  3.读写整数及布尔代码如下,原理相同,modbus_02.py

import  modbus_tk.modbus_tcp as mt
import  modbus_tk.defines as md
#创建TCPMASTER对象
master = mt.TcpMaster('127.0.0.1',502)
#设置超时时间
master.set_timeout(5.5)
#写入保持寄存地址1-10,值对应时
# values = (100,200,300,400,500,600,700,800,900,1000,1100)

# master.execute(slave=1,function_code=md.WRITE_MULTIPLE_REGISTERS,starting_address=0,quantity_of_x=20,output_value=value)
#写入单个寄存器

# master.execute(slave=1,function_code=md.WRITE_SINGLE_REGISTER,starting_address=0,output_value=888)
# 读取线圈
# data = master.execute(slave=1,function_code=md.READ_COILS,starting_address=0,quantity_of_x=20)
# print(data)
#写入一个线圈
# master.execute(slave=1,function_code=md.WRITE_SINGLE_COIL,starting_address=0,output_value= True)
#写入多个线圈

values = (True,False,True,False,True,False,True,False,True,False)
master.execute(slave=1,function_code=md.WRITE_MULTIPLE_COILS,starting_address=0,output_value= values)

 

posted @ 2020-09-28 17:48  刘文华  阅读(2258)  评论(0编辑  收藏  举报