{ "info": { "author": "Igor Kantorski", "author_email": "igor.kantorski@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Home Automation", "Topic :: Scientific/Engineering :: Human Machine Interfaces", "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Modbus Shared Memory - Simpler is Better.\n=========================================\n\n\nIntroduction\n------------\n\nTired of all those excelent, fully featured Modbus libraries? Just want to establish this annoying communication and start doing important stuff? Here you have it.\n\n**Modbus Shared Memory** is a library that allows you to: \n- establish Modbus communication,\n- forget about Modbus communication.\n\n**Modbus Shared Memory** implements well-known concept from field of PLC programming. A programmer: \n- declares *memory block* - variables which will be exchanged via Modbus,\n- declares an *object* responsive for modbus communication,\n- does *something* with those variables - rest of the program.\n\n``` {.sourceCode .python}\nfrom ModbusSharedMemory.client_server import ModbusMasterTCP\nfrom ModbusSharedMemory.memory import MemoryStore, MemoryVariable\n\n# declare 8 Word = 16 Bytes long memory\nmem = MemoryStore(8)\n\n# map some variables to memory addresses, name them as you wish\nmem.STATE = MemoryVariable.word(address=0) # 2 Bytes\nmem.COUNTER = MemoryVariable.uint32(address=1) # 4 Bytes\n\n# declare master worker, will exchange memory\nclient = ModbusMasterTCP(mem, server_ip='localhost', default_slave_id=1)\n\n# start exchanging\nclient.run()\n\n# now play with variables - do your stuff\nmem.COUNTER = 10\nprint(mem.STATE)\n# ...\n\n# at the end, kill client worker\nclient.kill()\n```\n\nMotivation and features\n-----------------------\n\n**Modbus Shared Memory** is a python module, written in pure python, that implements concepts known from PLC programming manner. It greatly simplifies task of using Modbus protocol as a data exchange system. The whole idea born around a concept of using cheap micro-computers (eg. raspbery pi, asus tinkerboard etc.) as a HMI device, communicating with a PLC via modbus protocol. It is widely-used pattern to incorporate Modbus as a data exchange layer between PLC and HMI. Searching for a Modbus protocol implementation for python lead us to two options: uModbus and PyModbus. Those two libraries implements Modbus protocol and expose Modbus functions for programmer use. Those are great libraries, but we noticed one disadvantage: since those two are excelent for low-level manipulation and they gives much flexibility, they lacks a really simple interface known from PLC universe: *declare memory that will be exchanged and forget about modbus*. **Modbus Shared Memory** is our attempt to recreate that interface.\n\n### Features\n\nWe can enumerate current features: \n- MSM depends on standard python modules and a uModbus, which is writen in pure python,\n- MSM is written in pure python too, it does not require any compilation steps during installation,\n- can be used in any enviorment that supports python\n- it is small and simple\n- it does the job\n- it supports abstraction layer for both: slave (PLC side) and master (HMI side)\n\n### Limitations\n\nMSM is great, however it is still under development. Current limitations are: \n- MSM supports only ModbusTCP. ModbusRTU is under development\n- MSM server (slave) is using only memory-based Modbus functions: no. 3, 6 and 16. Rest of standard functions are under development too.\n- Modbus client (master) implements only memory register based mode. Coils and Inputs are under development.\n\n### Documentation\n\n[Modbus Shared Memory](https://modbus-shared-memory.readthedocs.io/en/latest/index.html) readthedocs page.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/igoras1993/modbus_shared_memory", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ModbusSharedMemory", "package_url": "https://pypi.org/project/ModbusSharedMemory/", "platform": "", "project_url": "https://pypi.org/project/ModbusSharedMemory/", "project_urls": { "Homepage": "https://github.com/igoras1993/modbus_shared_memory" }, "release_url": "https://pypi.org/project/ModbusSharedMemory/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Shared memory concept known from PLC manner implemented over uModbus framework.", "version": "0.1.1" }, "last_serial": 5308173, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "67d4bae84e1acc7c0c9fc525906509b1", "sha256": "1256d7363220452055b95115c06744e112210a32e1ab03b062b1d05a8642a4f0" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "67d4bae84e1acc7c0c9fc525906509b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8097, "upload_time": "2019-05-06T19:12:45", "url": "https://files.pythonhosted.org/packages/6c/10/48a3e5c5e24ecb564600adbcbea7810a78d7ecd9beead1c7f48a15c71b08/ModbusSharedMemory-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc48be7c4be4b20e8fb7a90c40d0ac0f", "sha256": "d0250befd789a04287f8a9f2da1d39213a19cf501f6e4e67d63c67a96e9c830c" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.0.tar.gz", "has_sig": false, "md5_digest": "dc48be7c4be4b20e8fb7a90c40d0ac0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6583, "upload_time": "2019-05-06T19:12:48", "url": "https://files.pythonhosted.org/packages/73/2d/c47c7c929d12461627f78aaf838a3873eb1d06e9d09edd9f610d68564a73/ModbusSharedMemory-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "fd780f06429ac25162ffca6488fe0da0", "sha256": "9f52985ae65cd5ed9611c3ba55ea11f97a6f65919b09bc7e2e32c4b58f76bf3b" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fd780f06429ac25162ffca6488fe0da0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8048, "upload_time": "2019-05-23T16:09:21", "url": "https://files.pythonhosted.org/packages/31/34/c9403fa846d952f210d7012d071c21e6002df59ec324fa3b6044331d558a/ModbusSharedMemory-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eef9128a57e07ae8791dab380a83fff1", "sha256": "6d6d9000ad2f2fcb5efa154990721c74c6f44ef74a09e6f91cc1fbcbf803270c" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eef9128a57e07ae8791dab380a83fff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6536, "upload_time": "2019-05-23T16:09:00", "url": "https://files.pythonhosted.org/packages/f8/f5/aadafdd3ce149e62411c58c30f91328a392a29ee3545d9b8575fc5484ed9/ModbusSharedMemory-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fd780f06429ac25162ffca6488fe0da0", "sha256": "9f52985ae65cd5ed9611c3ba55ea11f97a6f65919b09bc7e2e32c4b58f76bf3b" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fd780f06429ac25162ffca6488fe0da0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8048, "upload_time": "2019-05-23T16:09:21", "url": "https://files.pythonhosted.org/packages/31/34/c9403fa846d952f210d7012d071c21e6002df59ec324fa3b6044331d558a/ModbusSharedMemory-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eef9128a57e07ae8791dab380a83fff1", "sha256": "6d6d9000ad2f2fcb5efa154990721c74c6f44ef74a09e6f91cc1fbcbf803270c" }, "downloads": -1, "filename": "ModbusSharedMemory-0.1.1.tar.gz", "has_sig": false, "md5_digest": "eef9128a57e07ae8791dab380a83fff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6536, "upload_time": "2019-05-23T16:09:00", "url": "https://files.pythonhosted.org/packages/f8/f5/aadafdd3ce149e62411c58c30f91328a392a29ee3545d9b8575fc5484ed9/ModbusSharedMemory-0.1.1.tar.gz" } ] }