modbus/tcp到websocket路由器。
modbus2websocket的Python项目详细描述
modbus2websocket
modbus2websocket(进一步说,m2w)是一个基于python的应用程序,它在modbus-tcp协议和websockets之间路由数据。
目的
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 type | Short name | Description |
---|---|---|
Digital Input | DI | Read only, bool, 1-bit |
Input Register | IR | Read only, float/int, 16-bit |
Coil | C | Read/write, bool, 1-bit |
Holding register | HR | Read/write, float/int, 16-bit |