共享内存的概念是通过umodbus框架上实现的plc方式知道的。
ModbusSharedMemor的Python项目详细描述
modbus共享内存-更简单更好。
简介
厌倦了那些优秀的、功能齐全的modbus库?只是想建立这种烦人的沟通,开始做重要的事情?给你。
modbus共享内存是一个允许您:
- 建立modbus通信,
- 忘记modbus通信。
modbus共享内存实现了plc编程领域的众所周知的概念。程序员:
- 声明内存块-将通过modbus交换的变量,
- 声明一个object响应modbus通信,
- 使用这些变量做一些的事情-程序的其余部分。
from ModbusSharedMemory.client_server import ModbusMasterTCP from ModbusSharedMemory.memory import MemoryStore, MemoryVariable # declare 8 Word = 16 Bytes long memory mem = MemoryStore(8) # map some variables to memory addresses, name them as you wish mem.STATE = MemoryVariable.word(address=0) # 2 Bytes mem.COUNTER = MemoryVariable.uint32(address=1) # 4 Bytes # declare master worker, will exchange memory client = ModbusMasterTCP(mem, server_ip='localhost', default_slave_id=1) # start exchanging client.run() # now play with variables - do your stuff mem.COUNTER = 10 print(mem.STATE) # ... # at the end, kill client worker client.kill()
动机和特点
modbus共享内存是一个python模块,用纯python编写,它实现了从plc编程方式知道的概念。它大大简化了使用modbus协议作为数据交换系统的任务。整个想法产生于使用廉价微型计算机(如Raspbery PI、华硕Tinkboard等)作为HMI设备,通过Modbus协议与PLC通信的概念。将modbus作为plc与hmi之间的数据交换层是一种广泛应用的模式。搜索python的modbus协议实现,我们可以找到两个选项:umodbus和pymodbus。这两个库实现modbus协议并公开modbus函数供程序员使用。这些都是很好的库,但是我们注意到一个缺点:因为这两个都是低级操作的高手,并且它们提供了很大的灵活性,它们缺少一个从PLC宇宙知道的非常简单的接口:^ {EM1}$声明将被交换并忘记MODBUS
功能
我们可以列举当前的功能:
- msm依赖于标准的python模块和一个umodbus,它是用纯python编写的,
- msm也是用纯python编写的,安装时不需要任何编译步骤,
- 可用于任何支持python的环境中
- 它既小又简单
- 它起作用
- 它同时支持抽象层:从机(PLC侧)和主机(HMI侧)
限制
MSM是伟大的,但它仍在发展中。当前限制是:
- MSM仅支持modbustcp。modbusrtu正在开发中
- MSM服务器(从机)仅使用基于内存的modbus功能:3、6和16号。其他标准功能也在开发中。
- modbus客户端(主)仅实现基于内存寄存器的模式。线圈和输入正在开发中。
文件
Modbus Shared Memory阅读文档页。