SimPyLC


NameSimPyLC JSON
Version 3.10.6 PyPI version JSON
download
home_pagehttp://www.qquick.org/educational
SummarySimPyLC PLC simulator, after its C++ big brother that has controlled industrial installations for more than 25 years now. ARDUINO CODE GENERATION ADDED!
upload_time2023-06-08 09:51:13
maintainer
docs_urlNone
authorJacques de Hooge
requires_python
licenseqQuickLicence
keywords plc arduino simulator simpylc emulator geatec
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            === Use the `SimPyLC forum <http://simpylc.freeforums.net/>`_ to share knowledge and ask questions about SimPyLC. ===

.. figure:: http://www.qquick.org/simpylc/robotvisualisation.jpg
	:alt: Screenshot of SimPyLC
	
	**Simulate your PLC controls and controlled systems to save lots of commissioning time**

PLC?
----

Real world industrial control systems DO NOT consist of a bunch of communicating sequential processes. Semaphores, threads and priority jugling are far too error prone to control anything else but a model railway. Most control systems are surprisingly simple, consisting of only one program loop that nevertheless seems to do many things in parallel and with reliable timing. Such a control system is called a PLC (Programmable Logic Controller) and all major industries rely on it. PLC's control trains, cranes, ships and your washing machine.
		
What SimPyLC is not
-------------------

SimPyLC does not attempt to mimic any particular PLC instruction set or graphical representation like ladder logic or graphcet. There are enough tools that do. Anyone with experience in the field and an IT background knows that such archaic, bulky, hard to edit representations get in the way of clear thinking. By the way, graphcet is stateful per definition, which is the absolute enemy of safety. Though its bigger brother written in C++ according to exactly the same principles has been reliably controlling container cranes, grab unloaders and production lines for more than 20 years now, SimPyLC is FUNDAMENTALLY UNSUITABLE for controlling real world systems and should never be used as a definitive validation of anything. You're only allowed to use SimPyLC under the conditions specified in the qQuickLicence that's part of the distribution.

What it is
----------

SimPyLC functionally behaves like a PLC or a set of interconnected PLC's and controlled systems. It is a very powerful tool to gain insight in the behaviour of real time controls and controlled systems. It allows you to force values, to freeze time, to draw timing charts and to visualize your system. This is all done in a very simple and straightforward way. But make no mistake, simulating systems in this way has a track record of reducing months of commissioning time to mere days. SimPyLC is Form Follows Function at its best, it does what it has to do in a robust no-nonsense way. Its sourcecode is tiny and fully open to understanding. The accompanying document `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_ condenses decenia of practical experience in control systems in a few clear design rules that can save you lots of trouble and prevent accidents. In addition to this SimPyLC can generate C code for the Arduino processor boards.

.. figure:: http://www.qquick.org/simpylc/arduinodue.jpg
	:alt: Picture of Arduino Due
	
	**SimPyLC is able to generate C code for Arduino processor boards, making Arduino development MUCH easier**

So
--

Are you looking for impressive graphics: Look elsewhere. Do you want to gain invaluable insight in real time behaviour of controls and control systems with minimal effort: Use SimPyLC, curse at its anachronistic simplicity and grow to love it more and more.

What's new
----------

- Command line tool *splc* made available
- Parameter attitude added to Thing.__call__ to be able to use rotation matrix rather than Euler angles
- Document simpylc_howto updated and renamed to pothole case
- Boolean circuits can now be switched by pressing the mousewheel
- Registers can now be altered by rotating the mousewheel
- Rocket example added with physically correct moment of inertia to demonstrate e.g. precession
- Some parameters added and some renamed to make Thing.__call__ more consistent
- Function tEva added to evaluate 3D tuples
- Quaternion module added to accurately model rotational movement
- Cones and Ellipsoids added
- Optional moving camera added with synchroneous caching for accurate tracking
- Pure Python controls added, just using the simulator to test without actual controlled hardware

*REMARK: All complete Arduino examples were tested on the Arduino Due, since that's the one I own, but they should run on the One with only slight I/O modifications (PWM instead of true analog output, using a shift register if you run short of I/O pins etc.)*

Bugs fixed
----------

- No known bugs currently

**Bug reports and feature requests are most welcome and will be taken under serious consideration on a non-committal basis**
		
Installation
------------

Installation for Windows, Linux and OSX is described in `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_.

Usage
-----

1. Go to directory SimPyLC/simulations/oneArmedRobot
2. Click on world.py or run world.py from the command line

GUI Operation
-------------

- [LEFT CLICK] on a field or [ENTER] gets you into edit mode.
- [LEFT CLICK] or [ENTER] again gets you out of edit mode and into forced mode, values coloured orange are frozen.
- [RIGHT CLICK] or [ESC] gets you into released mode, values are thawed again.
- [PGUP] and [PGDN] change the currently viewed control page.
- [WHEEL PRESSED] on a marker field makes it 1, release makes it 0 again, both without freezing it.
- [WHEEL ROTATION] changes the value of a register field, without freezing it.


For a test run of oneArmedRobot
-------------------------------

1. Enter setpoints in degrees for the joint angles (e.g. torAngSet for the torso of the robot) on the movement control page.
2. After that set 'go' to 1 and watch what happens.

If you want to experiment yourself, read `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_

	.. figure:: http://www.qquick.org/simpylc/robotsimulationsource.jpg
		:alt: A sample SimPyLC program
		
		**Coding is text oriented, enabling simple and fast editing, but functional behaviour resembles circuit logic, with elements like markers, timers, oneshots, latches and registers**

Other packages you might like
-----------------------------

- Lean and mean Python to JavaScript transpiler featuring multiple inheritance https://pypi.python.org/pypi/Transcrypt
- Multi-module Python source code obfuscator https://pypi.python.org/pypi/Opy
- Event driven evaluation nodes https://pypi.python.org/pypi/Eden
- A lightweight Python course taking beginners seriously (under construction): https://pypi.python.org/pypi/LightOn


qQuickLicence
=============

This license governs use of the accompanying software ("Software"), and your use of 
the Software constitutes acceptance of this license.

You may use the Software for any commercial or noncommercial purpose, including 
distributing derivative works.

In return, it is required that you agree:

1.  Not to remove any copyright or other notices from the Software. 
2.  That if you distribute the Software in source code form you do so only under
    this license (i.e. you must include a complete copy of this license with your
    distribution in a plain text file named QQuickLicence.txt),
    and if you distribute the Software solely in object form
    you only do so under a license that complies with this license. 
3.  That the Software comes "as is", with no warranties. None whatsoever. This 
    means no express, implied or statutory warranty, including without limitation, 
    warranties of merchantability or fitness for a particular purpose or any 
    warranty of title or non-infringement. Also, you must pass this disclaimer on 
    whenever you distribute the Software or derivative works. 
4.  That neither Geatec Engineering nor any contributor to the Software will be liable for any 
    of those types of damages known as indirect, special, consequential, or 
    incidental related to the Software or this license, to the maximum extent the law 
    permits, no matter what legal theory it's based on. Also, you must pass this 
    limitation of liability on whenever you distribute the Software or derivative 
    works.
5.  That you will not use or cause usage of the Software in safety-critical situations
    under any circumstances.
6.  That if you sue anyone over patents that you think may apply to the Software for a 
    person's use of the Software, your license to the Software ends automatically. 
7.  That your rights under this License end automatically if you breach it in any way.
8.  That all rights not expressly granted to you in this license are reserved.





            

Raw data

            {
    "_id": null,
    "home_page": "http://www.qquick.org/educational",
    "name": "SimPyLC",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "PLC,Arduino,simulator,SimPyLC,emulator,GEATEC",
    "author": "Jacques de Hooge",
    "author_email": "jacques.de.hooge@qquick.org",
    "download_url": "https://files.pythonhosted.org/packages/33/13/f03349f6fbbbcf172f13efa9452353e8ac8b4f2b0ff98c6ba2da06e56d98/SimPyLC-3.10.6.linux-x86_64.tar.gz",
    "platform": null,
    "description": "=== Use the `SimPyLC forum <http://simpylc.freeforums.net/>`_ to share knowledge and ask questions about SimPyLC. ===\n\n.. figure:: http://www.qquick.org/simpylc/robotvisualisation.jpg\n\t:alt: Screenshot of SimPyLC\n\t\n\t**Simulate your PLC controls and controlled systems to save lots of commissioning time**\n\nPLC?\n----\n\nReal world industrial control systems DO NOT consist of a bunch of communicating sequential processes. Semaphores, threads and priority jugling are far too error prone to control anything else but a model railway. Most control systems are surprisingly simple, consisting of only one program loop that nevertheless seems to do many things in parallel and with reliable timing. Such a control system is called a PLC (Programmable Logic Controller) and all major industries rely on it. PLC's control trains, cranes, ships and your washing machine.\n\t\t\nWhat SimPyLC is not\n-------------------\n\nSimPyLC does not attempt to mimic any particular PLC instruction set or graphical representation like ladder logic or graphcet. There are enough tools that do. Anyone with experience in the field and an IT background knows that such archaic, bulky, hard to edit representations get in the way of clear thinking. By the way, graphcet is stateful per definition, which is the absolute enemy of safety. Though its bigger brother written in C++ according to exactly the same principles has been reliably controlling container cranes, grab unloaders and production lines for more than 20 years now, SimPyLC is FUNDAMENTALLY UNSUITABLE for controlling real world systems and should never be used as a definitive validation of anything. You're only allowed to use SimPyLC under the conditions specified in the qQuickLicence that's part of the distribution.\n\nWhat it is\n----------\n\nSimPyLC functionally behaves like a PLC or a set of interconnected PLC's and controlled systems. It is a very powerful tool to gain insight in the behaviour of real time controls and controlled systems. It allows you to force values, to freeze time, to draw timing charts and to visualize your system. This is all done in a very simple and straightforward way. But make no mistake, simulating systems in this way has a track record of reducing months of commissioning time to mere days. SimPyLC is Form Follows Function at its best, it does what it has to do in a robust no-nonsense way. Its sourcecode is tiny and fully open to understanding. The accompanying document `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_ condenses decenia of practical experience in control systems in a few clear design rules that can save you lots of trouble and prevent accidents. In addition to this SimPyLC can generate C code for the Arduino processor boards.\n\n.. figure:: http://www.qquick.org/simpylc/arduinodue.jpg\n\t:alt: Picture of Arduino Due\n\t\n\t**SimPyLC is able to generate C code for Arduino processor boards, making Arduino development MUCH easier**\n\nSo\n--\n\nAre you looking for impressive graphics: Look elsewhere. Do you want to gain invaluable insight in real time behaviour of controls and control systems with minimal effort: Use SimPyLC, curse at its anachronistic simplicity and grow to love it more and more.\n\nWhat's new\n----------\n\n- Command line tool *splc* made available\n- Parameter attitude added to Thing.__call__ to be able to use rotation matrix rather than Euler angles\n- Document simpylc_howto updated and renamed to pothole case\n- Boolean circuits can now be switched by pressing the mousewheel\n- Registers can now be altered by rotating the mousewheel\n- Rocket example added with physically correct moment of inertia to demonstrate e.g. precession\n- Some parameters added and some renamed to make Thing.__call__ more consistent\n- Function tEva added to evaluate 3D tuples\n- Quaternion module added to accurately model rotational movement\n- Cones and Ellipsoids added\n- Optional moving camera added with synchroneous caching for accurate tracking\n- Pure Python controls added, just using the simulator to test without actual controlled hardware\n\n*REMARK: All complete Arduino examples were tested on the Arduino Due, since that's the one I own, but they should run on the One with only slight I/O modifications (PWM instead of true analog output, using a shift register if you run short of I/O pins etc.)*\n\nBugs fixed\n----------\n\n- No known bugs currently\n\n**Bug reports and feature requests are most welcome and will be taken under serious consideration on a non-committal basis**\n\t\t\nInstallation\n------------\n\nInstallation for Windows, Linux and OSX is described in `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_.\n\nUsage\n-----\n\n1. Go to directory SimPyLC/simulations/oneArmedRobot\n2. Click on world.py or run world.py from the command line\n\nGUI Operation\n-------------\n\n- [LEFT CLICK] on a field or [ENTER] gets you into edit mode.\n- [LEFT CLICK] or [ENTER] again gets you out of edit mode and into forced mode, values coloured orange are frozen.\n- [RIGHT CLICK] or [ESC] gets you into released mode, values are thawed again.\n- [PGUP] and [PGDN] change the currently viewed control page.\n- [WHEEL PRESSED] on a marker field makes it 1, release makes it 0 again, both without freezing it.\n- [WHEEL ROTATION] changes the value of a register field, without freezing it.\n\n\nFor a test run of oneArmedRobot\n-------------------------------\n\n1. Enter setpoints in degrees for the joint angles (e.g. torAngSet for the torso of the robot) on the movement control page.\n2. After that set 'go' to 1 and watch what happens.\n\nIf you want to experiment yourself, read `SimPyLCHowTo <http://www.qquick.org/simpylc/simpylc_howto.pdf>`_\n\n\t.. figure:: http://www.qquick.org/simpylc/robotsimulationsource.jpg\n\t\t:alt: A sample SimPyLC program\n\t\t\n\t\t**Coding is text oriented, enabling simple and fast editing, but functional behaviour resembles circuit logic, with elements like markers, timers, oneshots, latches and registers**\n\nOther packages you might like\n-----------------------------\n\n- Lean and mean Python to JavaScript transpiler featuring multiple inheritance https://pypi.python.org/pypi/Transcrypt\n- Multi-module Python source code obfuscator https://pypi.python.org/pypi/Opy\n- Event driven evaluation nodes https://pypi.python.org/pypi/Eden\n- A lightweight Python course taking beginners seriously (under construction): https://pypi.python.org/pypi/LightOn\n\n\nqQuickLicence\n=============\n\nThis license governs use of the accompanying software (\"Software\"), and your use of \nthe Software constitutes acceptance of this license.\n\nYou may use the Software for any commercial or noncommercial purpose, including \ndistributing derivative works.\n\nIn return, it is required that you agree:\n\n1.  Not to remove any copyright or other notices from the Software. \n2.  That if you distribute the Software in source code form you do so only under\n    this license (i.e. you must include a complete copy of this license with your\n    distribution in a plain text file named QQuickLicence.txt),\n    and if you distribute the Software solely in object form\n    you only do so under a license that complies with this license. \n3.  That the Software comes \"as is\", with no warranties. None whatsoever. This \n    means no express, implied or statutory warranty, including without limitation, \n    warranties of merchantability or fitness for a particular purpose or any \n    warranty of title or non-infringement. Also, you must pass this disclaimer on \n    whenever you distribute the Software or derivative works. \n4.  That neither Geatec Engineering nor any contributor to the Software will be liable for any \n    of those types of damages known as indirect, special, consequential, or \n    incidental related to the Software or this license, to the maximum extent the law \n    permits, no matter what legal theory it's based on. Also, you must pass this \n    limitation of liability on whenever you distribute the Software or derivative \n    works.\n5.  That you will not use or cause usage of the Software in safety-critical situations\n    under any circumstances.\n6.  That if you sue anyone over patents that you think may apply to the Software for a \n    person's use of the Software, your license to the Software ends automatically. \n7.  That your rights under this License end automatically if you breach it in any way.\n8.  That all rights not expressly granted to you in this license are reserved.\n\n\n\n\n",
    "bugtrack_url": null,
    "license": "qQuickLicence",
    "summary": "SimPyLC PLC simulator, after its C++ big brother that has controlled industrial installations for more than 25 years now. ARDUINO CODE GENERATION ADDED!",
    "version": "3.10.6",
    "project_urls": {
        "Homepage": "http://www.qquick.org/educational"
    },
    "split_keywords": [
        "plc",
        "arduino",
        "simulator",
        "simpylc",
        "emulator",
        "geatec"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3313f03349f6fbbbcf172f13efa9452353e8ac8b4f2b0ff98c6ba2da06e56d98",
                "md5": "7e7e8d2d29c4ddc1d729e1727c2a4620",
                "sha256": "b4b2b5d9fed67557d99bbcec5c4923a583f4e68481f99a4e8f827bebaae25092"
            },
            "downloads": -1,
            "filename": "SimPyLC-3.10.6.linux-x86_64.tar.gz",
            "has_sig": false,
            "md5_digest": "7e7e8d2d29c4ddc1d729e1727c2a4620",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 5006935,
            "upload_time": "2023-06-08T09:51:13",
            "upload_time_iso_8601": "2023-06-08T09:51:13.540652Z",
            "url": "https://files.pythonhosted.org/packages/33/13/f03349f6fbbbcf172f13efa9452353e8ac8b4f2b0ff98c6ba2da06e56d98/SimPyLC-3.10.6.linux-x86_64.tar.gz",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f5e1e10d6540699df31bcd85d3e77f5a059fa58ef1c990539ae028e81d5b2ae6",
                "md5": "121c197e76d5b20fa3d65979ffa8a76a",
                "sha256": "922407f8b505d25d0b74718474836caaadd50c2cb3af02e396a471830c103758"
            },
            "downloads": -1,
            "filename": "SimPyLC-3.10.6-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "121c197e76d5b20fa3d65979ffa8a76a",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 4970468,
            "upload_time": "2023-06-08T09:51:09",
            "upload_time_iso_8601": "2023-06-08T09:51:09.966292Z",
            "url": "https://files.pythonhosted.org/packages/f5/e1/e10d6540699df31bcd85d3e77f5a059fa58ef1c990539ae028e81d5b2ae6/SimPyLC-3.10.6-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-08 09:51:13",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "simpylc"
}
        
Elapsed time: 5.86250s