python 与PLC 基于 modbus tcp 协议通讯

这篇具有很好参考价值的文章主要介绍了python 与PLC 基于 modbus tcp 协议通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Modbus是一种串行通信协议,是工业领域通信协议的业界标准,是工业电子设备之间常用的连接方式。最近在工作中需要上位机python程序和PLC做通讯,就测试了下使用modbus tcp 通讯。

        目前实际测试结果是与西门子PLC/信捷PLC都可以正常通讯使用,但是看到网上说可以传输小数、负数,当然也包含整数了,其实在实践后发现只有整数才可以精确传输(有范围限制),由于modbus 本身缺陷,小数传输会存在问题。我测试的python做客户端,PLC作服务端。

1. python安装modbus_tk包

pip install modbus_tk

2. 借助大神的程序运行

import modbus_tk
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp

if __name__ == "__main__":
    try:
        # 实际使用PLC地址
        master = modbus_tcp.TcpMaster(host="192.168.12.15")
        master.set_timeout(5.0)

        # 写整数
        """
        WRITE_MULTIPLE_REGISTERS  写多寄存器
        WRITE_SINGLE_REGISTER    写单个寄存器
        """
        # master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 300, output_value=[1, 2, 3, 4])
        master.execute(1, cst.WRITE_SINGLE_REGISTER, 300, output_value=25)
        # 读整数
        result_int = master.execute(1, cst.READ_HOLDING_REGISTERS, 300, 1)
        print(result_int)

        # 写小数
        # master.execute(1, cst.WRITE_MULTIPLE_REGISTERS, 5, output_value=[3.14, -6.28], data_format='<ff')

        # # 读小数
        # result_float = master.execute(1, cst.READ_HOLDING_REGISTERS, 500, 4, data_format='<ff')
        # print(result_float)
    except modbus_tk.modbus.ModbusError as e:
        print("%s- Code=%d" % (e, e.get_exception_code()))

运行结果如下:

python安装modbus_tk,python

python安装modbus_tk,python

 python安装modbus_tk,python

 大神连接:Python 基于modbus tcp 协议 实现与plc通信

 文章来源地址https://www.toymoban.com/news/detail-584455.html

到了这里,关于python 与PLC 基于 modbus tcp 协议通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 海康Visionmaster-通讯管理:使用 Modbus TCP 通讯 协议与流程交互

    使用 Modbus TCP 通讯协议与视觉通讯,当地址为 0000 的保持型寄存器(4x 寄存器)变为 1 时,触发视觉流程执行一次,同时视觉将地址为 0000 的寄存器复位(也即写为 0),视觉流程执行完成后,将结果数据:特征匹配状态、特征匹配点 X、特征匹配点Y、特征角度分别写入到地址为

    2024年02月04日
    浏览(374)
  • 信捷PLC使用TCP/IP协议通讯

    信捷PLC的以太网机型配备RJ45接口,本文以XDME系列为例讲述信捷PLC通过TCP/IP协议与上位机进行通讯。 需注意,信捷部分机型有RJ45接口但不支持Ethernet功能,其RJ45接口用作EtherCAT与伺服驱动器连接。 优势: 1、由于TCP/IP物理层面采用网线连接,坐好屏蔽情况下网线的抗干扰性、

    2024年02月04日
    浏览(101)
  • Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法。 由于具有TCP/IP栈协议,通常在Modbus TCP通讯的上位机开发中, 上位机是作为客户端,控制器作为服务器 。Modbu

    2024年02月08日
    浏览(179)
  • MODBUS TCP转CCLINK IE协议网关cclink通讯异常的处理方法

    你是否曾经遇到过需要将不同的设备连接到一个统一的网络中?或者你是否曾经遇到过设备之间的通讯协议不兼容的问题?捷米的JM-CCLKIE-TCP通讯网关就是为解决这些问题而设计的。   JM-CCLKIE-TCP通讯网关是一款自主研发的CCLINK IE FIELD BASIC从站功能的通讯网关,它的主要功能是

    2024年02月12日
    浏览(44)
  • 三菱FX5U modbus tcp协议 plc做服务器和客户端案例程序

    三菱FX5U  modbus tcp协议  plc做服务器和客户端案例程序,提供调试工具,程序注解,通讯协议功能的配置。 标题:三菱FX5U PLC在Modbus TCP协议中充当服务器和客户端的案例程序及通信配置详解 摘要:本文主要介绍了如何在三菱FX5U PLC上实现Modbus TCP协议的服务器和客户端功能,并

    2024年04月17日
    浏览(47)
  • 通过Python连接 modbus tcp 和台达PLC通信测试记录

    安装台达梯形图软件 “WPLSoft” http://downloadcenter.delta-china.com.cn/DownloadCenter?v=1q=WPLsort_expr=cdatesort_dir=DESC 2.硬件连接 2.1 电脑网卡 连接PLC以太网, IP设为192.168.1.x网段,PLC默认IP为192.168.1.5. 2.2 PLC 供电24V, S/S输入公共端接GND,UP0/ZP0输出驱动电源的端口接GND / 24V 2.3 在 PLC X0输入触

    2024年01月23日
    浏览(55)
  • Python modbus_tk 库源码分析

    modbus_tcp 协议是工业项目中常见的一种基于 TCP/IP 协议的设备数据交互协议。 作为 TCP/IP 协议的上层协议,modbus_tcp 协议涉及到两个概念:client 和 server。但更标准的叫法应该是 master 和 slave。 Slave:TCP/IP 协议中的 server 方 Master:TCP/IP 协议中的 client 方 而 modbus_tk 库作为 Python

    2024年02月08日
    浏览(48)
  • 用Python采用Modbus-Tcp的方式读取PLC模块数据

    使用计算器得到需要的寄存器地址 这里PLC地址是83,对应的程序16进制读取地址是53 实际上由于PLC地址从1开始,所以这里实际地址应该是52,因为计算机从0开始 使用网络调试助手生成报文 使用Python中的内置函数int()。以下是将人员卡号’b’3b44’\\\'转换为十进制的示例代码: 使

    2024年02月16日
    浏览(58)
  • 汇川小型PLC-MODBUS(485)通讯模式

    MODBUS通讯的底层为RS485信号,采用 双绞线 进行连接就可以了,因此传输距离较远,可达 1000米,抗干扰性能比较好,且成本低,在工业控制设备的通讯中被广泛使用,现在众多厂家的变频器、控制器都采用了该协议。 传送数据格式有HEX码数据和ASCII码两种,分别称为MODBUS-RT

    2023年04月25日
    浏览(106)
  • C++基于开源Modbus Tcp 通讯应用客户端(稳定高效,多线程后台状态读取,不卡顿)

    使用多线程后台批量刷寄存器的状态,在某种程度上保证了上层接口读取的时候,不会卡顿, 整体应用效果比较友好。程序应用简单稳定高效,是一个比较不错的尝试。 代码如下: 代码如下: https://download.csdn.net/download/u013083044/87062401

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包