利用 python modbus工具实现modbus从站的数据采集,很方便简单。Python Modbus 协议工具目前有下面三种:

modbus_tk:完整modbus协议栈的实现,支持modbus tcp/rtu{1.提供slave模拟器,即模拟modbus server:502),  web-based hmi master支持}

pymodbus:使用twisted实现的modbus完整协议(支持异步通讯)

MinimalModbus:只支持modbusrtu

Modbsu_tk库使用

execute(slave,功能代码,开始地址,quantity_of_x=0,output_value=0,data_format="",指定长度=-1)

实现数据读与写,用功能码很容易实现。

READ_COILS = 1读线圈READ_DISCRETE_INPUTS = 2读离散输入READ_HOLDING_REGISTERS = 3【读保持寄存器】READ_INPUT_REGISTERS = 4读输入寄存器WRITE_SINGLE_COIL = 5写单一线圈WRITE_SINGLE_REGISTER = 6写单一寄存器WRITE_MULTIPLE_COILS = 15写多个线圈 【强制多点线圈】WRITE_MULTIPLE_REGISTERS = 16写多寄存器 【写乘法寄存器】

master.execute(1,cst.READ_HOLDING_REGISTERS, 0, 3)

1—从设备地址

cst.READ_HOLDING_REGISTERS—读保持寄存器

0—开始地址

3—读三个字节

下面来一个简单的例子。

#!/usr/bin/env python

# -*- coding: utf_8 -*-

"""

Modbus TestKit: Implementation of Modbus protocol in python

(C)2009 - Luc Jean - luc.jean@gmail.com

(C)2009 - Apidev - http://www.apidev.fr

This is distributed under GNU LGPL license, see license.txt

"""

import serial

import modbus_tk

import modbus_tk.defines as cst

from modbus_tk import modbus_rtu

#PORT = 1

PORT = "/dev/ttyUSB0"

def main():

"""main"""

logger = modbus_tk.utils.create_logger("console")

try:

#Connect to the slave

master = modbus_rtu.RtuMaster(

serial.Serial(port=PORT, baudrate=9600, bytesize=8, parity='N', stopbits=1, xonxoff=0)

)

master.set_timeout(5.0)

master.set_verbose(True)

logger.info("connected")

logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 1, 1))

#send some queries

#logger.info(master.execute(1, cst.READ_COILS, 0, 10))

#logger.info(master.execute(1, cst.READ_DISCRETE_INPUTS, 0, 8))

#logger.info(master.execute(1, cst.READ_INPUT_REGISTERS, 100, 3))

#logger.info(master.execute(1, cst.READ_HOLDING_REGISTERS, 100, 12))

#logger.info(master.execute(1, cst.WRITE_SINGLE_COIL, 7, output_value=1))

#logger.info(master.execute(1, cst.WRITE_SINGLE_REGISTER, 100, output_value=54))

#logger.info(master.execute(1, cst.WRITE_MULTIPLE_COILS, 0, output_value=[1, 1, 0, 1, 1, 0, 1, 1]))

#logger.info(master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 100, output_value=xrange(12)))

except modbus_tk.modbus.ModbusError as exc:

logger.error("%s- Code=%d", exc, exc.get_exception_code())

if __name__ == "__main__":

main()

用modsim在window下充当slave设置如下:

在树莓派下运行结果如下:

python tk protocol_Python Modbus_tk在树莓派上实现rtu master相关推荐

  1. python modbus tk 库_Python Modbus_tk在树莓派上实现rtu master

    利用 python modbus工具实现modbus从站的数据采集,很方便简单.Python Modbus 协议工具目前有下面三种: pymodbus MinimalModbus Modbus-tk ...

  2. 树莓派实验室python人脸识别_在树莓派上实现人脸识别

    原标题:在树莓派上实现人脸识别 本文为 AI 研习社编译的技术博客,原标题 Facial Recognition & Identification On Raspberry Pi,作者为 Ad ...

  3. python oled库_在树莓派上使用 SSD1306 OLED 屏幕

    树莓派在许多使用场景下并不需要接一台专用显示器,如需要查看树莓派上的一些信息可以通过手机.电脑登录到树莓派上操作,但总归不够便利. 下面介绍两款 OLED 小屏(均为 SSD1306 芯片驱动)可以直 ...

  4. python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报

    #encoding: utf-8 importpygameimporttimeimportweatherAPIimportSystemInfofrom datetime importdatetime# ...

  5. 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)

    Python部落(www.freelycode.com)组织翻译, 禁止转载 关键字 条件关键字 下表列出了和条件语句有关的关键字和它们的简要描述 if用来决定将要执行哪条语句 else 可选,条件为 ...

  6. 在树莓派上用python控制LED

    初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装 所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x ...

  7. 树莓派运行python import os未找到命令_通过pip指令在树莓派上基于Python3安装OpenCV...

    前言 Python是现如今在人工智能领域较为热门的编程语言,因其简洁的语言风格.丰富的类库支持以及具有活跃的交流社区,受到广大开发者的喜爱.起初,python是一门辅助科学研究的一门语言,但因其在当今 ...

  8. 如何在树莓派上进行python编程_《树莓派Python编程指南》怎么样_目录_pdf在线阅读 - 课课家教育...

    计算机已经不再只是用来工作的方盒子.任何拥有一个可编程处理中心的东西都可以称作计算机.游戏终端.智能手机.全球卫星定位系统(GPS)单元.平板电脑以及其他许多令人难以置信的设备都说明了这一点.它们都是 ...

  9. 树莓派python开发工具哪个好_Thonny——树莓派上Python的最新IDE

    Thonny是最新的Raspbian系统中直接自带的Python IDE,支持Python3.6,更新到最新的Raspbian之后无需安装其他,就能打开使用. 在Menu>Programming ...

最新文章

  1. python编写脚本方法_【Python】教你一步步编写banner获取脚本
  2. 如何有效落地企业目标管理方法论?
  3. 马斯克的星际飞船SN10又炸了,但技术却向前迈出一大步!
  4. AFNetworking 2.0使用(持续更新)
  5. 2021-06-11 pytorch基本语法
  6. html编辑器kindeditor我的使用方法 (转载)
  7. VTK:PolyData之ProcrustesAlignmentFilter
  8. HTTP之get post
  9. 简易 Vue 构建--篇四
  10. ambari安装中常见的问题
  11. Django media 配置
  12. 苹果:我们从未向中国政府透露源代码
  13. ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
  14. java将Word转换成PDF三种方法
  15. 显示硬件发展与视频开发系列(4)----移动时代
  16. sci一区二区 SCI、EI、ISTP分别指什么
  17. 9.1 Python 绝对路径与相对路径
  18. ecshop常见漏洞
  19. cassandra cqlsh 使用实际IP或者locahost都可以进入命令行
  20. 入网许可证_入网许可证怎么查询方法 入网许可证查询方法【图文演示】

热门文章

  1. android 获取系统时间的时间戳 ,时间戳日期互转,计算日期时间差,获取明天日期,比较时间大小
  2. C# XML格式化显示
  3. 中南大学王斌计算机学院,中南大学 信息科学与工程学院,长沙 410083
  4. 计算机科学与技术班级口号八字,班级的八字口号
  5. 创建线程的第二种方法(实现Runnable接口)
  6. py学习,列表,判断,循环
  7. java面向对象封装之有参无返与有参有返
  8. python之各种装饰器的使用
  9. Python网络编程(1)-socket
  10. jstl c:choose、c:when和c:otherwise标签的简单使用介绍