modbus/tcp到websocket路由器。

modbus2websocket的Python项目详细描述


modbus2websocket

modbus2websocket(进一步说,m2w)是一个基于python的应用程序,它在modbus-tcp协议和websockets之间路由数据。

m2w logo

目的

m2w路由器的主要目标是在工业系统和web应用之间传输数据。modbus tcp-工业协议,用于在工业设备和hmi之间交换信息。通常,为了使数据可视化,工程师必须使用昂贵的重型scada或hmi。另一方面,web技术为您自己的web浏览器中的数据可视化提供了简单而强大的工具,而无需任何厚客户端。这就是为什么m2w首先被创建的原因——它使简单的webhmi服务器能够与工业系统一起工作。

部件

  • 异步modbus tcp服务器async_modbus_server.py
  • 异步modbus tcp客户端async_modbus_client.py
  • 异步WebSocket服务器async_websocket_server.py
  • 路由器router.py

它支持什么

  • 读取输入寄存器、数字输入、线圈和保持寄存器$
  • 发送到WebSocket客户端。

未来发展:

  • [X]异步modbus服务器
  • [X]异步modbus客户端
  • [X]异步WebSocket服务器
  • [X]路由器
  • [X]HTML示例页
  • []数据库连接

安装步骤

安装

模块安装

modbus2websocket库与pip一起安装:

pip install modbus2websocket

详细信息

在创建应用程序之前,必须指定以下内容:

  • WebSocket服务器IP,例如192.168.220.10
  • WebSocket端口,默认为8888
  • modbus/tcp服务器的ip,例如192.168.220.5

modbus服务器

如果您没有运行modbus/tcp服务器,可以使用服务器模拟器。

创建应用程序

类路由器将管理在浏览器中运行的modbus/tcp和websockets客户端之间的数据

frommodbus2websocket.routerimportRouter

路由器有两种公共方法:

  • Router.add_modbus_reg()-添加要读取的寄存器
  • Router.run()-运行路由器。

您应该将要读取的寄存器添加为字典列表。 单寄存器的结构如下:

Input_register_1={'ir':{'adr':0,'num':1,'name':'Input Register 1',},},

其中:

  • ir-寄存器类型。(见Modbus details)。
  • adr-regsiter的地址。从0到65535。
  • num-要读取的寄存器数。限制在1到2000之间。
  • name-寄存器的唯一名称。

示例

frommodbus2websocket.routerimportRouterif__name__=='__main__':ws_ip='192.168.220.10'# websocket ip addressws_port=8888# websocket portmodbus_ip='192.168.220.5'# Modbus ip addressrouter=Router(ws_ip,ws_port,modbus_ip)# Modbus registers to readregs=[{'ir':{'adr':0,'num':1,'name':'Reg1',},},{'hr':{'adr':1,'num':1,'name':'Reg2',},},{'ir':{'adr':2,'num':1,'name':'Reg3',},},]router.add_modbus_reg(regs)router.run()

modbus详细信息

Registers typeShort nameDescription
Digital InputDIRead only, bool, 1-bit
Input RegisterIRRead only, float/int, 16-bit
CoilCRead/write, bool, 1-bit
Holding registerHRRead/write, float/int, 16-bit

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理