共享内存的概念是通过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 的内存。modbus共享内存是我们重新创建该接口的尝试。

功能

我们可以列举当前的功能:

  • msm依赖于标准的python模块和一个umodbus,它是用纯python编写的,
  • msm也是用纯python编写的,安装时不需要任何编译步骤,
  • 可用于任何支持python的环境中
  • 它既小又简单
  • 它起作用
  • 它同时支持抽象层:从机(PLC侧)和主机(HMI侧)

限制

MSM是伟大的,但它仍在发展中。当前限制是:

  • MSM仅支持modbustcp。modbusrtu正在开发中
  • MSM服务器(从机)仅使用基于内存的modbus功能:3、6和16号。其他标准功能也在开发中。
  • modbus客户端(主)仅实现基于内存寄存器的模式。线圈和输入正在开发中。

文件

Modbus Shared Memory阅读文档页。

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

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序