返回顶部
首页 > 资讯 > 后端开发 > Python >python 实现Modebus 通信(pyModbusTCP )
  • 249
分享到

python 实现Modebus 通信(pyModbusTCP )

pythonModbus 2023-08-30 23:08:25 249人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

        尽管python 并不适合实时控制,但是它编写程序实在是太方便了。至少在程序快速成型和验证过程中可以使用Python 来实现,另一方面,Python 强大的数值计算和图形显示能力也能够实现modbus 设备的远程监控,数据采

        尽管python 并不适合实时控制,但是它编写程序实在是太方便了。至少在程序快速成型和验证过程中可以使用Python 来实现,另一方面,Python 强大的数值计算和图形显示能力也能够实现modbus 设备的远程监控,数据采集,甚至ai 训练。Python 在算法开法,仿真等场景是高效率的编程工具

   这里我们介绍Python 实现Modbustcp的例子:

客户端(Client)

from pyModbusTCP.client import ModbusClient # Modbus TCP Clientimport  timefrom pyModbusTCP import utils import numpy as np import matplotlib.pyplot as plt# TCP auto connect on modbus request, close after itModbusBMS = ModbusClient(host="localhost", port=502, unit_id=1, auto_open=True, auto_close=False) #time.sleep(5)  vaw=1x = np.arange(0,1000,1,dtype=np.int16)y=np.arange(-10,10,0.02,dtype=np.float32)if __name__ == '__main__':    while True:        reg_l=ModbusBMS.read_input_reGISters(0,2)        val=utils.Word_list_to_long(reg_l)        print(utils.decode_ieee(val[0],False))                y=np.append(y,utils.decode_ieee(val[0],False))        y=np.delete(y, 0, axis=0)              plt.clf()        plt.plot(x, y, ls="-", lw=2, label="plot figure")        plt.legend()        plt.show()        plt.pause(0.01)

         注意的是 auto_open和auto_close两个标记,它指明每次请求modbusTCP 时是否会自动打开和关闭TCP/IP 连接。如果auto_close=True 表示每次都会自动关闭连接,经测试,它会引起2秒中的延时。

上述例子中使用plt 显示实时数据,在这里是一sin 曲线。是np.append 和np.delete 维持一个实时数据队列。

ModbusBMS具有下列几种读取modbus 的方法:

  • ModbusBMS.read_holding_registers
  • ModbusBMS.read_input_registers
  • ModbusBMS.read_coils
  •  ModbusBMS.read_discrete_inputs
  • ModbusBMS.write_single_register
  • ModbusBMS.write_single_coil
  • ModbusBMS.write_multiple_registers
  • ModbusBMS.write_multiple_coils

服务器端(Server)

 import argparsefrom pyModbusTCP.server import ModbusServer, DataBankfrom pyModbusTCP import utilsfrom datetime import datetimeimport numpy as np Fs = 8000f = 50x=0coil_state=True class MyDataBank(DataBank):    """A custom ModbusServerDataBank for override get_holding_registers method."""    def __init__(self):        # turn off allocation of memory for standard modbus object types        # only "holding registers" space will be replaced by dynamic build values.        super().__init__(virtual_mode=True)    def get_coils(self, address, number=1, srv_info=None):        global coil_state        coil_state=not coil_state        return coil_state                def get_holding_registers(self, address, number=1, srv_info=None):        """Get virtual holding registers."""        # populate virtual registers dict with current datetime values        now = datetime.now()        return now.second           def get_input_registers(self, address, number=1, srv_info=None):        global x        wave=np.sin(2 * np.pi * f * x / Fs)*10        x=x+1        b32_l=[utils.encode_ieee(wave,False)]        b16_l = utils.long_list_to_word(b32_l)        print(b16_l)                      return  b16_l if __name__ == '__main__':    # parse args    parser = argparse.ArgumentParser()    parser.add_argument('-H', '--host', type=str, default='localhost', help='Host (default: localhost)')    parser.add_argument('-p', '--port', type=int, default=502, help='TCP port (default: 502)')    args = parser.parse_args()    # init modbus server and start it    server = ModbusServer(host=args.host, port=args.port, data_bank=MyDataBank())    server.start()

 上面的程序都经过测试。

来源地址:https://blog.csdn.net/yaojiawan/article/details/131445159

--结束END--

本文标题: python 实现Modebus 通信(pyModbusTCP )

本文链接: https://lsjlt.com/news/383857.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 实现Modebus 通信(pyModbusTCP )
            尽管python 并不适合实时控制,但是它编写程序实在是太方便了。至少在程序快速成型和验证过程中可以使用Python 来实现,另一方面,Python 强大的数值计算和图形显示能力也能够实现modbus 设备的远程监控,数据采...
    99+
    2023-08-30
    python Modbus
  • python 实现 RPC 通信
     例子: Python RPC Server import SimpleXMLRPCServer class MyObject:      def sayHello(self):          return "hello ZQF,...
    99+
    2023-01-31
    通信 python RPC
  • 【Python】Python实现串口通信(Python+Stm32)
    🎉欢迎来到Python专栏~Python实现串口通信 ...
    99+
    2023-08-31
    python stm32 开发语言 串口通信 嵌入式硬件 Python+Stm32
  • python和JavaScript通信怎么实现
    本文小编为大家详细介绍“python和JavaScript通信怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python和JavaScript通信怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。j...
    99+
    2023-06-30
  • 使用python实现UDP通信方式
    目录python UDP通信对UDP协议的理解Socket简介UDP特点UDP中客户端和服务器端交互 UDP网络通信过程 多线程聊天室服务器端的实现UDP中广播p...
    99+
    2024-04-02
  • python如何实现socket简单通信
    这篇文章将为大家详细讲解有关python如何实现socket简单通信,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先先来简单介绍下socket:(具体更详细介绍的可以在网上找找,都讲得非常详细),这里主...
    99+
    2023-06-14
  • python套接字socket通信在实现
    本文小编为大家详细介绍“python套接字socket通信在实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python套接字socket通信在实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、初步认识s...
    99+
    2023-06-29
  • python websockets实现server和client的通信
    项目地址:https://github.com/aaugustin/websockets 文档地址:https://websockets.readthedocs.io/en/stable/ 1、websockets WebSocket...
    99+
    2023-09-02
    python websocket 服务器 Powered by 金山文档
  • Python实现进程同步和通信
    引例: 如之前创建多进程的例子 # -*- coding:utf-8 -*- from multiprocessing import Process,Pool import os,time def run_proc(name):...
    99+
    2023-01-31
    进程 通信 Python
  • Python怎么实现UDP与TCP通信
    这篇文章主要介绍了Python怎么实现UDP与TCP通信的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现UDP与TCP通信文章都会有所收获,下面我们一起来看看吧。1. UDPUDP是一种无连接...
    99+
    2023-07-05
  • Python通过队列实现进程间通信详情
    目录一、前言二、队列简介三、多进程队列的使用四、使用队列在进程间通信一、前言 在多进程中,每个进程之间是什么关系呢?其实每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行状态...
    99+
    2024-04-02
  • Python如何通过队列实现进程间通信
    本篇内容主要讲解“Python如何通过队列实现进程间通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何通过队列实现进程间通信”吧!一、前言在多进程中,每个进程之间是什么关系呢?其...
    99+
    2023-07-02
  • python实现简单socket通信的方法
    本文实例讲述了python实现简单socket通信的方法。分享给大家供大家参考,具体如下: 刚刚开始接触python,实现了一个helloworld程序---关于udp协议的socket通信demo。 首先...
    99+
    2022-06-04
    通信 简单 方法
  • python中如何实现客户端通信
    这篇文章将为大家详细讲解有关python中如何实现客户端通信,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、实现流程创建一套接字。用connect()函数连接到服务器。使用sendall()向服务器发送...
    99+
    2023-06-15
  • python多进程实现进程间通信实例
    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing,只需要定义一个...
    99+
    2022-06-04
    进程 实例 通信
  • Node与Python 双向通信的实现代码
    目录进程通信进程双向通信存在问题总结第三方数据供应商把数据和Python封装到一起,只能通过调用 Python方法来实现数据查询,如果可以通过Node 简单封装下实现 Python 方法调用可以快速上线并节省开发成本...
    99+
    2022-06-02
    Node Python双向通信 Node Python 通信
  • Python实现socket库网络通信套接字
    目录Socket网络通信套接字什么是套接字?地址簇套接字类型套接字的简单应用gethostbyname_ex()与gethostbyname()getservbyname()与getservbyport()getpr...
    99+
    2022-06-02
    Python socket库 Python socket套接字 Python网络通信
  • Python应用开发之实现串口通信
    目录前言1.环境搭建2.硬件准备3.代码编写与测试3.1 简单测一下串口收发3.2 补充细节3.3 完善整个收发流程前言 在嵌入式开发中我们经常会用到串口,串口通信简单,使用起来方便...
    99+
    2024-04-02
  • Node与Python双向通信的实现方法
    这篇文章主要介绍“Node与Python双向通信的实现方法”,在日常操作中,相信很多人在Node与Python双向通信的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node与Python双向通信的实...
    99+
    2023-06-20
  • WCF实现双向通信
    请求过程中的回调 这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对象(实际上是调用回调服务的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作