awlsim


Nameawlsim JSON
Version 0.77.1 PyPI version JSON
download
home_pagehttps://bues.ch/a/awlsim
SummaryS7 compatible Programmable Logic Controller PLC/SPS (AWL, STL, FUP, FBD)
upload_time2024-04-17 17:34:13
maintainerNone
docs_urlNone
authorMichael Buesch
requires_python!=3.0.*,!=3.1.*,!=3.2.*,>=2.7
licenseGNU General Public License v2 or later
keywords awl stl fup fbd sps plc emulator simulator step-7 siemens profibus linuxcnc pixtend raspberrypi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Awlsim - S7 compatible Programmable Logic Controller (PLC/SPS)

Awlsim is a free Step 7 compatible Programmable Logic Controller, that supports the automation languages AWL/STL and FUP/FBD. Awlsim itself is written in Python.

The latest version of Awlsim can be downloaded at the [official Awlsim site](https://bues.ch/a/awlsim).

[Main git repository](https://bues.ch/cgit/awlsim.git/)

[Github / issue tracking / pull requests](https://github.com/mbuesch/awlsim)


## Awlsim - Programmable Logic Controller (PLC/SPS)

Awlsim is a free Step 7 compatible Programmable Logic Controller, that supports the automation languages AWL/STL and FUP/FBD. Awlsim itself is written in Python. The speed of execution ranges from several ten thousand AWL/STL instructions per second on slow embedded machines to a couple of million instructions per second on faster computers.

AWL/STL programs on PLCs are used for automation of industrial processes. However Awlsim is very flexible, so it can be used for other purposes beyond industrial applications, too. Awlsim aims to be compatible with the industry standard S7 software on the AWL/STL level.

Awlsim can emulate CPUs with two and four accumulator registers (S7-3xx and S7-4xx). Compatibility to S7 hardware is a task taken seriously by the Awlsim project. We want to be as close as possible to the real PLC hardware with our AWL/STL code execution. For this reason Awlsim ships an extensive selftest suite. Missing features and differences between Awlsim and Step 7 are documented in the [COMPATIBILITY documentation](COMPATIBILITY.md) and [TODO documentation](TODO.md) files.


## Quick start tutorial

See the [quick start tutorial](QUICK-START.md) for a simple example on how to use Awlsim in simulator mode. In simulator mode Awlsim can be run on any desktop PC. No special hardware is required.


## Example project

If you don't know where to start, you can find an example project in the `examples` directory as `EXAMPLE.awlpro`. You can easily run this example in simulation mode without the need for special hardware.


## Git repository

The latest development version of Awlsim can be fetched with git:

<pre>
git clone https://git.bues.ch/git/awlsim.git
cd awlsim
</pre>

After cloning the main repository the git submodules must also be fetched. The following helper script can be used:

<pre>
./maintenance/update-submodules
</pre>


## Dependencies

Awlsim depends on

* [Python](https://python.org) 3.4 or later (or alternatively Python 2.7)
* [PyQT 5](https://www.riverbankcomputing.com/software/pyqt/intro) or alternatively [PySide 2](https://wiki.qt.io/Qt_for_Python)
* [CFFI](http://cffi.readthedocs.org/)

These packages can be installed with pip:

<pre>
pip3 install --upgrade PyQt5
pip3 install --upgrade cffi
</pre>

If building and using Awlsim with Cython acceleration is desired, Cython must also be installed:

<pre>
pip3 install --upgrade Cython
</pre>

On Windows all Awlsim dependencies can be installed by double clicking the shipped installer script: *maintenance\win-install-dependencies.cmd*

For Debian Linux users the script *maintenance/deb-dependencies-install.sh* installs all required and optional runtime and build dependencies.

## Directory structure

The Awlsim Git repository and source archive `awlsim-x.yz.tar.bz2` contain lots of files and directories. Here is an overview of the main files and directories and their purpose:

### Main executables
User interface executables. The main user executable is `awlsim-gui`.
<pre>
.  awlsim-client             : Command line client tool.
.  awlsim-gui                : Graphical user interface. This is the main user frontend.
.  awlsim-linuxcnc-hal       : LinuxCNC HAL module executable.
.  awlsim-proupgrade         : Command line tool to update .awlpro file formats.
.  awlsim-server             : Command line server tool.
.  awlsim-symtab             : Command line tool to parse symbol tables (.ASC).
.  awlsim-test               : Command line tool for unit testing.
.                              See tests/run.sh for execution of unit tests.
.  awlsim-win.cmd            : Windows wrapper for awlsim-gui.
</pre>

### Documentation
These files and directories contain useful information about Awlsim.
<pre>
.  doc/                      : Main documentation.
.  doc/fup/                  : Awlsim FUP language and editor documentation.
.  examples/                 : Various example projects and feature demonstrations.
.  COMPATIBILITY.md|html     : S7 compatibility documentation.
.  COPYING.txt               : Main license.
.  DEVELOPMENT.md|html       : How to enhance and develop Awlsim.
.  QUICK-START.md|html       : Quick start tutorial.
.  README.md|html            : Main README document.
.  TODO.md|html              : TODO list.
</pre>

### Main modules
The main modules implement most of Awlsim's functionality.
<pre>
.  awlsim/                   : Main Awlsim Python-module directory. This is where the magic happens.
.  awlsim/awlcompiler        : AWL compiler.
.  awlsim/awloptimizer       : AWL optimizer.
.  awlsim/common             : Common libraries, modules and helper functions.
.  awlsim/core               : AWL interpreter core. This is where the AWL program is executed.
.  awlsim/core/instructions  : Implementation of AWL instructions.
.  awlsim/core/systemblocks  : Implementation of SFCs and SFBs.
.  awlsim/coreclient         : Client library to connect to coreserver.
.  awlsim/coreserver         : Server library to provide AWL interpreter core access via networking.
.  awlsim/fupcompiler        : FUP compiler.
.  awlsim/gui                : Graphical user interface implementation (Qt).
.  awlsim/library            : AWL block (FC and FB) libraries.
.  awlsim/library/iec        : Implementation of IEC FCs and FBs.
.  awlsim_loader/            : Import wrapper for the main Awlsim Python-module.
.                              This is used to automatically load Cython optimized modules.
.  libs/                     : External libraries used for running or testing Awlsim.
.  progs/                    : External programs used in Awlsim.
.  submodules/               : Git submodules used for running Awlsim.
.                              See  man git-submodule  for general help about Git submodules.
.  submodules/pyprofibus/    : PROFIBUS-DP implementation.
.  tests/                    : Unit test cases.
.  tests/run.sh              : Main interface to run unit tests. Please see --help
</pre>

### Hardware support modules
The hardware modules are the glue between the Awlsim core and the real world. The hardware modules are invoked before and after running the user cycle (OB 1).
<pre>
.  awlsimhw_debug/           : Hardware module for unit tests. Do not use in production.
.  awlsimhw_dummy/           : Dummy no-operation hardware module for testing, debugging or simulation.
.  awlsimhw_linuxcnc/        : LinuxCNC hardware support module.
.  awlsimhw_pixtend/         : PiXtend hardware support module.
.  awlsimhw_pyprofibus/      : PROFIBUS-DP hardware support module.
.  awlsimhw_pyprofibus.conf  : Configuration file for awlsimhw_pyprofibus.
.  awlsimhw_rpigpio/         : Raspberry Pi GPIO hardware support module.
</pre>

### Misc
<pre>
.  awlsim-server.service     : Systemd unit for awlsim-server.
.  debian/                   : Debian packaging support.
.  maintenance/              : Maintainer scripts.
.  misc/                     : Miscellaneous scripts and files.
.  setup.py                  : Python package build script. This also builds the Cython modules.
</pre>


## FUP - Funktionsplan - Function block diagram

Awlsim supports programming in an S7-FUP like language. See [the FUP documentation](doc/fup/FUP.md) for more information about Awlsim's implementation of FUP.


## Environment variables

The following environment variables control Awlsim's basic behavior:

* `AWLSIM_GUI`<br />
  `=auto`    Automatically select the best GUI framework (default)<br />
  `=pyside`  Use PySide as GUI framework.<br />
  `=pyqt`    Use PyQt as GUI framework.<br />

* `AWLSIM_CYTHON`<br />
  `=0`  Do not attempt to use Cython core (default)<br />
  `=1`  Attempt to use Cython core, but fall back to Python<br />
  `=2`  Enforce Cython core<br />

* `AWLSIM_SCHED`<br />
  `=default`   Do not change the scheduling policy. Keep the policy that was assigned to Awlsim by the operating system. (default)<br />
  `=normal`    Use the normal non-realtime OS scheduling.<br />
  `=fifo`      Use FIFO realtime scheduling (`SCHED_FIFO`).<br />
  `=rr`        Use Round-robin realtime scheduling (`SCHED_RR`).<br />
  `=deadline`  Use Deadline realtime scheduling (`SCHED_DEADLINE`).<br />
  `=realtime`  Use a realtime scheduling algorithm that performs best in most situations. The actual algorithm selection might change between Awlsim releases.<br />

  The suffix `-if-multicore` can be appended to the options `fifo`, `rr`, `deadline` and `realtime`. That will trigger a fall back to `normal`, if the system is single-core (has only one CPU).

* `AWLSIM_PRIO`<br />
  `=default`  Do not change the priority (default).<br />
  `=1-99`     Set the scheduling priority. The meaning of the priority depends on the operating system and the selected scheduling algorithm. See `AWLSIM_SCHED`.<br />

* `AWLSIM_AFFINITY`<br />
  `=0,2,...`  Comma separated list of host CPU cores to run on. Default: all cores.<br />

* `AWLSIM_MLOCK`<br />
  `=0`  Do not try to mlockall. See man 2 mlockall. (default).<br />
  `=1`  Try to mlockall all current and future memory. See man 2 mlockall.<br />
  `=2`  mlockall all current and future memory. Abort on failure. See man 2 mlockall.<br />

* `AWLSIM_PROFILE`<br />
  `=0`  Disable profiling (default)<br />
  `=1`  Enable core cycle profiling<br />
  `=2`  Enable full core profiling (including startup)<br />

* `AWLSIM_COVERAGE`<br />
  `=DATAFILE`  Enable code coverage tracing.<br />

* `AWLSIM_GCMODE`<br />
  `=realtime`  Enable manual garbage collection, if realtime scheduling is enabled. (default)<br />
  `=auto`      Always use automatic garbage collection.<br />
  `=manual`    Always use manual garbage collection.<br />

* `AWLSIM_GCTHRES`<br />
  `=700,1,1` <br />
  A comma separated string with up to 3 integers.<br />
  Each integer corresponding to the Python garbage collector generation 0 to 2 thresholds for manual garbage collection.<br />
  A threshold value of 0 disables garbage collection. (not recommended)<br />

* `AWLSIM_GCCYCLE`<br />
  `=64` <br />
  The number of OB1 cycles it takes to trigger a manual garbage collection.<br />


## Environment variables during build (setup.py)

The following environment variables control Awlsim's build (setup.py) behavior:

* `AWLSIM_FULL_BUILD`<br />
  `=0`  Do not include scripts that are not necessary on this platform. (default)<br />
  `=1`  Include all scripts; also those that aren't required on the platform.<br />

* `AWLSIM_CYTHON_BUILD`<br />
  `=0`  Do not build any Cython modules. (default on non-Posix)<br />
  `=1`  Build Cython modules. (default on Posix)<br />

* `AWLSIM_CYTHON_PARALLEL`<br />
  `=0`  Do not use parallel compilation for Cython modules.<br />
  `=1`  Invoke multiple compilers in parallel (faster on multicore). (default)<br />

* `AWLSIM_PROFILE`<br />
  `=0`  Do not enable profiling support in compiled Cython modules. (default)<br />
  `=1`  Enable profiling support in compiled Cython modules.<br />

* `AWLSIM_DEBUG_BUILD`<br />
  `=0`  Do not enable debugging support in compiled Cython modules. (default)<br />
  `=1`  Enable debugging support in compiled Cython modules.<br />


## Building Awlsim

Awlsim can be run from the source directory in interpreted Python mode without building it. Just `cd` into the Awlsim source directory and execute the desired main executable (e.g. `./awlsim-gui` or `./awlsim-server` etc...).

The accelerated Cython libraries can be built with the standard Python `./setup.py build` command.

For convenience there also is a helper script `./maintenance/build.sh`, which will do everything right to build Awlsim. That can be used instead of calling setup.py directly.

There also is `./maintenance/build-noopt.sh`. That builds Cython modules without optimization. The build is much faster, but the resulting Cython libraries will be much slower. This is useful for development. Do not use this for production.


## PiLC - The Raspberry Pi PLC

If you want to use PiLC, please also see the [PiLC documentation](https://bues.ch/a/pilc).


## Building Debian / Raspbian / PiLC .deb packages

Installing or upgrading Awlsim on a Debian based system is easy.
The `debuild` can be used to build the .deb packages. Just run the following commands to build all Awlsim .deb packages:

<pre>
cd path/to/awlsim                                 # Go to Awlsim source directory
sudo ./maintenance/deb-dependencies-install.sh    # This installs all dependencies
debuild -uc -us                                   # Build all Awlsim .deb packages
sudo ./maintenance/deb-install.sh ..              # Install or upgrade all Awlsim .deb packages
</pre>

The .deb files will be put into the parent directory of the Awlsim source directory.

If you get the following build failure during build:

`/usr/include/features.h:xxx:xx: fatal error: sys/cdefs.h: No such file or directory`

this can be fixed by re-installing the libc development package:

`sudo apt install --reinstall libc-dev`


## Development

Information about Awlsim development can be found in [the Awlsim development documentation](DEVELOPMENT.md).


## License / Copyright

Copyright (C) Michael Büsch / et al.

Awlsim is Open Source Free Software licensed under the GNU General Public License v2+. That means it's available in full source code and you are encouraged to improve it and contribute your changes back to the community. Awlsim is free of charge, too. 

            

Raw data

            {
    "_id": null,
    "home_page": "https://bues.ch/a/awlsim",
    "name": "awlsim",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7",
    "maintainer_email": null,
    "keywords": "AWL STL FUP FBD SPS PLC emulator simulator Step-7 Siemens PROFIBUS LinuxCNC PiXtend RaspberryPi",
    "author": "Michael Buesch",
    "author_email": "m@bues.ch",
    "download_url": "https://files.pythonhosted.org/packages/b9/be/a9da7fdaa7992332725ee2d21bd3db6315d980531bb228f75a2b5f9f3ef7/awlsim-0.77.1.tar.gz",
    "platform": null,
    "description": "# Awlsim - S7 compatible Programmable Logic Controller (PLC/SPS)\n\nAwlsim is a free Step 7 compatible Programmable Logic Controller, that supports the automation languages AWL/STL and FUP/FBD. Awlsim itself is written in Python.\n\nThe latest version of Awlsim can be downloaded at the [official Awlsim site](https://bues.ch/a/awlsim).\n\n[Main git repository](https://bues.ch/cgit/awlsim.git/)\n\n[Github / issue tracking / pull requests](https://github.com/mbuesch/awlsim)\n\n\n## Awlsim - Programmable Logic Controller (PLC/SPS)\n\nAwlsim is a free Step 7 compatible Programmable Logic Controller, that supports the automation languages AWL/STL and FUP/FBD. Awlsim itself is written in Python. The speed of execution ranges from several ten thousand AWL/STL instructions per second on slow embedded machines to a couple of million instructions per second on faster computers.\n\nAWL/STL programs on PLCs are used for automation of industrial processes. However Awlsim is very flexible, so it can be used for other purposes beyond industrial applications, too. Awlsim aims to be compatible with the industry standard S7 software on the AWL/STL level.\n\nAwlsim can emulate CPUs with two and four accumulator registers (S7-3xx and S7-4xx). Compatibility to S7 hardware is a task taken seriously by the Awlsim project. We want to be as close as possible to the real PLC hardware with our AWL/STL code execution. For this reason Awlsim ships an extensive selftest suite. Missing features and differences between Awlsim and Step 7 are documented in the [COMPATIBILITY documentation](COMPATIBILITY.md) and [TODO documentation](TODO.md) files.\n\n\n## Quick start tutorial\n\nSee the [quick start tutorial](QUICK-START.md) for a simple example on how to use Awlsim in simulator mode. In simulator mode Awlsim can be run on any desktop PC. No special hardware is required.\n\n\n## Example project\n\nIf you don't know where to start, you can find an example project in the `examples` directory as `EXAMPLE.awlpro`. You can easily run this example in simulation mode without the need for special hardware.\n\n\n## Git repository\n\nThe latest development version of Awlsim can be fetched with git:\n\n<pre>\ngit clone https://git.bues.ch/git/awlsim.git\ncd awlsim\n</pre>\n\nAfter cloning the main repository the git submodules must also be fetched. The following helper script can be used:\n\n<pre>\n./maintenance/update-submodules\n</pre>\n\n\n## Dependencies\n\nAwlsim depends on\n\n* [Python](https://python.org) 3.4 or later (or alternatively Python 2.7)\n* [PyQT 5](https://www.riverbankcomputing.com/software/pyqt/intro) or alternatively [PySide 2](https://wiki.qt.io/Qt_for_Python)\n* [CFFI](http://cffi.readthedocs.org/)\n\nThese packages can be installed with pip:\n\n<pre>\npip3 install --upgrade PyQt5\npip3 install --upgrade cffi\n</pre>\n\nIf building and using Awlsim with Cython acceleration is desired, Cython must also be installed:\n\n<pre>\npip3 install --upgrade Cython\n</pre>\n\nOn Windows all Awlsim dependencies can be installed by double clicking the shipped installer script: *maintenance\\win-install-dependencies.cmd*\n\nFor Debian Linux users the script *maintenance/deb-dependencies-install.sh* installs all required and optional runtime and build dependencies.\n\n## Directory structure\n\nThe Awlsim Git repository and source archive `awlsim-x.yz.tar.bz2` contain lots of files and directories. Here is an overview of the main files and directories and their purpose:\n\n### Main executables\nUser interface executables. The main user executable is `awlsim-gui`.\n<pre>\n.  awlsim-client             : Command line client tool.\n.  awlsim-gui                : Graphical user interface. This is the main user frontend.\n.  awlsim-linuxcnc-hal       : LinuxCNC HAL module executable.\n.  awlsim-proupgrade         : Command line tool to update .awlpro file formats.\n.  awlsim-server             : Command line server tool.\n.  awlsim-symtab             : Command line tool to parse symbol tables (.ASC).\n.  awlsim-test               : Command line tool for unit testing.\n.                              See tests/run.sh for execution of unit tests.\n.  awlsim-win.cmd            : Windows wrapper for awlsim-gui.\n</pre>\n\n### Documentation\nThese files and directories contain useful information about Awlsim.\n<pre>\n.  doc/                      : Main documentation.\n.  doc/fup/                  : Awlsim FUP language and editor documentation.\n.  examples/                 : Various example projects and feature demonstrations.\n.  COMPATIBILITY.md|html     : S7 compatibility documentation.\n.  COPYING.txt               : Main license.\n.  DEVELOPMENT.md|html       : How to enhance and develop Awlsim.\n.  QUICK-START.md|html       : Quick start tutorial.\n.  README.md|html            : Main README document.\n.  TODO.md|html              : TODO list.\n</pre>\n\n### Main modules\nThe main modules implement most of Awlsim's functionality.\n<pre>\n.  awlsim/                   : Main Awlsim Python-module directory. This is where the magic happens.\n.  awlsim/awlcompiler        : AWL compiler.\n.  awlsim/awloptimizer       : AWL optimizer.\n.  awlsim/common             : Common libraries, modules and helper functions.\n.  awlsim/core               : AWL interpreter core. This is where the AWL program is executed.\n.  awlsim/core/instructions  : Implementation of AWL instructions.\n.  awlsim/core/systemblocks  : Implementation of SFCs and SFBs.\n.  awlsim/coreclient         : Client library to connect to coreserver.\n.  awlsim/coreserver         : Server library to provide AWL interpreter core access via networking.\n.  awlsim/fupcompiler        : FUP compiler.\n.  awlsim/gui                : Graphical user interface implementation (Qt).\n.  awlsim/library            : AWL block (FC and FB) libraries.\n.  awlsim/library/iec        : Implementation of IEC FCs and FBs.\n.  awlsim_loader/            : Import wrapper for the main Awlsim Python-module.\n.                              This is used to automatically load Cython optimized modules.\n.  libs/                     : External libraries used for running or testing Awlsim.\n.  progs/                    : External programs used in Awlsim.\n.  submodules/               : Git submodules used for running Awlsim.\n.                              See  man git-submodule  for general help about Git submodules.\n.  submodules/pyprofibus/    : PROFIBUS-DP implementation.\n.  tests/                    : Unit test cases.\n.  tests/run.sh              : Main interface to run unit tests. Please see --help\n</pre>\n\n### Hardware support modules\nThe hardware modules are the glue between the Awlsim core and the real world. The hardware modules are invoked before and after running the user cycle (OB 1).\n<pre>\n.  awlsimhw_debug/           : Hardware module for unit tests. Do not use in production.\n.  awlsimhw_dummy/           : Dummy no-operation hardware module for testing, debugging or simulation.\n.  awlsimhw_linuxcnc/        : LinuxCNC hardware support module.\n.  awlsimhw_pixtend/         : PiXtend hardware support module.\n.  awlsimhw_pyprofibus/      : PROFIBUS-DP hardware support module.\n.  awlsimhw_pyprofibus.conf  : Configuration file for awlsimhw_pyprofibus.\n.  awlsimhw_rpigpio/         : Raspberry Pi GPIO hardware support module.\n</pre>\n\n### Misc\n<pre>\n.  awlsim-server.service     : Systemd unit for awlsim-server.\n.  debian/                   : Debian packaging support.\n.  maintenance/              : Maintainer scripts.\n.  misc/                     : Miscellaneous scripts and files.\n.  setup.py                  : Python package build script. This also builds the Cython modules.\n</pre>\n\n\n## FUP - Funktionsplan - Function block diagram\n\nAwlsim supports programming in an S7-FUP like language. See [the FUP documentation](doc/fup/FUP.md) for more information about Awlsim's implementation of FUP.\n\n\n## Environment variables\n\nThe following environment variables control Awlsim's basic behavior:\n\n* `AWLSIM_GUI`<br />\n  `=auto`    Automatically select the best GUI framework (default)<br />\n  `=pyside`  Use PySide as GUI framework.<br />\n  `=pyqt`    Use PyQt as GUI framework.<br />\n\n* `AWLSIM_CYTHON`<br />\n  `=0`  Do not attempt to use Cython core (default)<br />\n  `=1`  Attempt to use Cython core, but fall back to Python<br />\n  `=2`  Enforce Cython core<br />\n\n* `AWLSIM_SCHED`<br />\n  `=default`   Do not change the scheduling policy. Keep the policy that was assigned to Awlsim by the operating system. (default)<br />\n  `=normal`    Use the normal non-realtime OS scheduling.<br />\n  `=fifo`      Use FIFO realtime scheduling (`SCHED_FIFO`).<br />\n  `=rr`        Use Round-robin realtime scheduling (`SCHED_RR`).<br />\n  `=deadline`  Use Deadline realtime scheduling (`SCHED_DEADLINE`).<br />\n  `=realtime`  Use a realtime scheduling algorithm that performs best in most situations. The actual algorithm selection might change between Awlsim releases.<br />\n\n  The suffix `-if-multicore` can be appended to the options `fifo`, `rr`, `deadline` and `realtime`. That will trigger a fall back to `normal`, if the system is single-core (has only one CPU).\n\n* `AWLSIM_PRIO`<br />\n  `=default`  Do not change the priority (default).<br />\n  `=1-99`     Set the scheduling priority. The meaning of the priority depends on the operating system and the selected scheduling algorithm. See `AWLSIM_SCHED`.<br />\n\n* `AWLSIM_AFFINITY`<br />\n  `=0,2,...`  Comma separated list of host CPU cores to run on. Default: all cores.<br />\n\n* `AWLSIM_MLOCK`<br />\n  `=0`  Do not try to mlockall. See man 2 mlockall. (default).<br />\n  `=1`  Try to mlockall all current and future memory. See man 2 mlockall.<br />\n  `=2`  mlockall all current and future memory. Abort on failure. See man 2 mlockall.<br />\n\n* `AWLSIM_PROFILE`<br />\n  `=0`  Disable profiling (default)<br />\n  `=1`  Enable core cycle profiling<br />\n  `=2`  Enable full core profiling (including startup)<br />\n\n* `AWLSIM_COVERAGE`<br />\n  `=DATAFILE`  Enable code coverage tracing.<br />\n\n* `AWLSIM_GCMODE`<br />\n  `=realtime`  Enable manual garbage collection, if realtime scheduling is enabled. (default)<br />\n  `=auto`      Always use automatic garbage collection.<br />\n  `=manual`    Always use manual garbage collection.<br />\n\n* `AWLSIM_GCTHRES`<br />\n  `=700,1,1` <br />\n  A comma separated string with up to 3 integers.<br />\n  Each integer corresponding to the Python garbage collector generation 0 to 2 thresholds for manual garbage collection.<br />\n  A threshold value of 0 disables garbage collection. (not recommended)<br />\n\n* `AWLSIM_GCCYCLE`<br />\n  `=64` <br />\n  The number of OB1 cycles it takes to trigger a manual garbage collection.<br />\n\n\n## Environment variables during build (setup.py)\n\nThe following environment variables control Awlsim's build (setup.py) behavior:\n\n* `AWLSIM_FULL_BUILD`<br />\n  `=0`  Do not include scripts that are not necessary on this platform. (default)<br />\n  `=1`  Include all scripts; also those that aren't required on the platform.<br />\n\n* `AWLSIM_CYTHON_BUILD`<br />\n  `=0`  Do not build any Cython modules. (default on non-Posix)<br />\n  `=1`  Build Cython modules. (default on Posix)<br />\n\n* `AWLSIM_CYTHON_PARALLEL`<br />\n  `=0`  Do not use parallel compilation for Cython modules.<br />\n  `=1`  Invoke multiple compilers in parallel (faster on multicore). (default)<br />\n\n* `AWLSIM_PROFILE`<br />\n  `=0`  Do not enable profiling support in compiled Cython modules. (default)<br />\n  `=1`  Enable profiling support in compiled Cython modules.<br />\n\n* `AWLSIM_DEBUG_BUILD`<br />\n  `=0`  Do not enable debugging support in compiled Cython modules. (default)<br />\n  `=1`  Enable debugging support in compiled Cython modules.<br />\n\n\n## Building Awlsim\n\nAwlsim can be run from the source directory in interpreted Python mode without building it. Just `cd` into the Awlsim source directory and execute the desired main executable (e.g. `./awlsim-gui` or `./awlsim-server` etc...).\n\nThe accelerated Cython libraries can be built with the standard Python `./setup.py build` command.\n\nFor convenience there also is a helper script `./maintenance/build.sh`, which will do everything right to build Awlsim. That can be used instead of calling setup.py directly.\n\nThere also is `./maintenance/build-noopt.sh`. That builds Cython modules without optimization. The build is much faster, but the resulting Cython libraries will be much slower. This is useful for development. Do not use this for production.\n\n\n## PiLC - The Raspberry Pi PLC\n\nIf you want to use PiLC, please also see the [PiLC documentation](https://bues.ch/a/pilc).\n\n\n## Building Debian / Raspbian / PiLC .deb packages\n\nInstalling or upgrading Awlsim on a Debian based system is easy.\nThe `debuild` can be used to build the .deb packages. Just run the following commands to build all Awlsim .deb packages:\n\n<pre>\ncd path/to/awlsim                                 # Go to Awlsim source directory\nsudo ./maintenance/deb-dependencies-install.sh    # This installs all dependencies\ndebuild -uc -us                                   # Build all Awlsim .deb packages\nsudo ./maintenance/deb-install.sh ..              # Install or upgrade all Awlsim .deb packages\n</pre>\n\nThe .deb files will be put into the parent directory of the Awlsim source directory.\n\nIf you get the following build failure during build:\n\n`/usr/include/features.h:xxx:xx: fatal error: sys/cdefs.h: No such file or directory`\n\nthis can be fixed by re-installing the libc development package:\n\n`sudo apt install --reinstall libc-dev`\n\n\n## Development\n\nInformation about Awlsim development can be found in [the Awlsim development documentation](DEVELOPMENT.md).\n\n\n## License / Copyright\n\nCopyright (C) Michael B\u00fcsch / et al.\n\nAwlsim is Open Source Free Software licensed under the GNU General Public License v2+. That means it's available in full source code and you are encouraged to improve it and contribute your changes back to the community. Awlsim is free of charge, too. \n",
    "bugtrack_url": null,
    "license": "GNU General Public License v2 or later",
    "summary": "S7 compatible Programmable Logic Controller PLC/SPS (AWL, STL, FUP, FBD)",
    "version": "0.77.1",
    "project_urls": {
        "Homepage": "https://bues.ch/a/awlsim"
    },
    "split_keywords": [
        "awl",
        "stl",
        "fup",
        "fbd",
        "sps",
        "plc",
        "emulator",
        "simulator",
        "step-7",
        "siemens",
        "profibus",
        "linuxcnc",
        "pixtend",
        "raspberrypi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9bea9da7fdaa7992332725ee2d21bd3db6315d980531bb228f75a2b5f9f3ef7",
                "md5": "81cf0da7ce7f554c761a394f2e03a28b",
                "sha256": "931309abdcc2001cabe2e05c7fd4fd32f6e0648ea2b178b8aea49d6e4098ba60"
            },
            "downloads": -1,
            "filename": "awlsim-0.77.1.tar.gz",
            "has_sig": false,
            "md5_digest": "81cf0da7ce7f554c761a394f2e03a28b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7",
            "size": 10154546,
            "upload_time": "2024-04-17T17:34:13",
            "upload_time_iso_8601": "2024-04-17T17:34:13.857864Z",
            "url": "https://files.pythonhosted.org/packages/b9/be/a9da7fdaa7992332725ee2d21bd3db6315d980531bb228f75a2b5f9f3ef7/awlsim-0.77.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 17:34:13",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "awlsim"
}
        
Elapsed time: 0.27038s