S7兼容可编程控制器PLC/SPS(AWL、STL、FUP、FBD)

awlsim的Python项目详细描述


#awlsim-s7兼容可编程逻辑控制器(plc/sps)

awlsim是一个自由step 7兼容的可编程逻辑控制器,支持自动化语言awl/stl和fup/fbd。awlsim本身是用python编写的。

最新版本的awlsim可在[官方awlsim网站](https://awlsim.de)。

##awlsim-可编程逻辑控制器(plc/sps)

awlsim是一个自由step 7兼容的可编程逻辑控制器,支持自动化语言awl/stl和fup/fbd。awlsim本身是用python编写的。执行速度从在速度较慢的嵌入式计算机上每秒数万条awl/stl指令到在速度较快的计算机上每秒几百万条指令。

plcs上的awl/stl程序用于工业过程的自动化。然而awlsim是非常灵活的,因此它也可以用于工业应用之外的其他用途。AWLSIM旨在与AWL/STL级的行业标准S7软件兼容。

awlsim可以用两个和四个累加器寄存器(s7-3xx和s7-4xx)模拟cpu。与s7硬件的兼容性是awlsim项目非常重视的任务。我们希望用awl/stl代码执行尽可能接近真实的plc硬件。因此,awlsim提供了一个广泛的自测试套件。awlsim和步骤7之间缺少的特性和差异记录在[兼容性文档](compatibility.html)和[todo文档](todo.html)文件中。

##快速入门教程

有关如何在模拟器模式下使用awlsim的简单示例,请参阅[快速入门教程](quick-start.html)。在模拟器模式下,AWLSIM可以在任何台式机上运行。无需特殊硬件。

##示例项目

如果不知道从哪里开始,可以在examples目录中找到一个示例项目,名为example.awlpro。您可以在模拟模式下轻松运行此示例,而无需特殊硬件。

##皮尔克-覆盆子皮有限公司

如果您想使用pilc,请参阅[pilc文档](pilc.html)。

##Git存储库

最新的awlsim开发版本可以通过git获得:

<;pre>; git克隆https://git.bues.ch/git/awlsim.git 光盘库 <;/pre>;

克隆主存储库之后,还必须获取git子模块。可以使用以下帮助程序脚本:

<;pre>; /维护/更新子模块 <;/pre>;

##依赖关系

AWLSIM取决于

这些软件包可以与pip一起安装:

<;pre>; pip3安装-升级pyqt5 pip3安装-升级cffi <;/pre>;

如果需要建立和使用具有cython加速度的awlsim,还必须安装cython:

<;pre>; pip3安装-升级cython <;/pre>;

在Windows上,双击附带的安装程序脚本可以安装所有AWLSIM依赖项:maintenancewin install dependencies.cmd

对于debian linux用户,脚本maintenance/deb dependencies install.sh安装所有必需和可选的运行时和构建依赖项。

##目录结构

awlsim git存储库和源文件包含许多文件和目录。这是一个overvie主要文件和目录及其用途:

###主要可执行文件 用户界面可执行文件。主要的用户可执行文件是awlsim gui。 前& GT; . awlsim客户端:命令行客户端工具。 . 图形用户界面。这是主要用户前端。 . awlsim linuxcnc hal:linuxcnc hal模块可执行文件。 . awlsim proupgrade:更新.awlpro文件格式的命令行工具。 . awlsim服务器:命令行服务器工具。 . awlsim symtab:用于分析符号表(.asc)的命令行工具。 . awlsim测试:用于单元测试的命令行工具。 是的。有关单元测试的执行,请参见tests/run.sh。 . awlsim-win.cmd:awlsim gui的windows包装器。 <;/pre>;

###文件 这些文件和目录包含有关awlsim的有用信息。 前& GT; . doc/:主要文件。 . doc/fup/:awlsim fup语言和编辑器文档。 . examples/:各种示例项目和功能演示。 . compatibility.md html:s7兼容性文档。 . copying.txt:主许可证。 . md html:如何增强和开发awlsim。 . 快速入门。md html:快速入门教程。 . readme.md html:主自述文件。 . todo.md html:todo列表。 <;/pre>;

###主要模块 主要模块实现了awlsim的大部分功能。 前& GT; . awlsim/:主awlsim python模块目录。这就是魔法发生的地方。 . awlsim/awl compiler:awl编译器。 . awlsim/awl optimizer:awl优化器。 . awlsim/common:公共库、模块和助手函数。 . awlsim/core:awl解释器核心。这是执行awl程序的地方。 . awlsim/core/指令:awl指令的实现。 . awlsim/core/systemblocks:sfcs和sfbs的实现。 . awlsim/coreclient:连接到coreserver的客户端库。 . awlsim/core server:通过网络提供awl解释器核心访问的服务器库。 . AWLSIM/FUP编译器:FUP编译器。 . awlsim/gui:图形用户界面实现(qt)。 . awlsim/库:awl块(fc和fb)库。 . awlsim/library/iec:iec-fcs和fbs的实现。 . awlsim_loader/:导入awlsim python主模块的包装。 是的。这用于自动加载cython优化的模块。 . libs/:用于运行或测试awlsim的外部库。 . progs/:awlsim中使用的外部程序。 . submodules/:用于运行awlsim的git子模块。 是的。有关git子模块的一般帮助,请参阅mangit子模块。 . 子模块/pyprofibus/:profibus-dp实现。 . tests/:单元测试用例。 . tests/run.sh:运行单元测试的主界面。请参阅–帮助 <;/pre>;

###硬件支持模块 硬件模块是awlsim核心与现实世界的粘合剂。在运行用户周期(ob 1)之前和之后调用硬件模块。 前& GT; . awlsimhw_debug/:用于单元测试的硬件模块。不要在生产中使用。 . awlsimhw_dummy/:虚拟无操作硬件模块,用于测试、调试或仿真。 . awlsimhw_linuxcnc/:linuxcnc硬件支持模块。 . awlsimhw_pixtend/:pixtend硬件支持模块。 . awlsimhw_pyprofibus/:profibus-dp硬件支持模块。 . awlsimhw_pyprofibus.conf:awlsimhw_pyprofibus的配置文件。 . awlsimhw_rpigpio/:覆盆子pi gpio硬件支持模块。 <;/pre>;

α-MISC 前& GT; . awlsim-server.service.in中:awlsim服务器的systemd单元模板。 . debian/:debian打包支持。 . 维护/:维护者脚本。 . misc/:其他脚本和文件。 . pilc/:pilc分发构建脚本。 . py:python包构建脚本。这也构建了cython模块。 <;/pre>;

##功能-功能计划-功能框图

awlsim支持用类似s7-fup的语言编程。有关awlsim实现fup的更多信息,请参阅[fup文档](doc/fup/fup.html)。

##环境变量

以下环境变量控制awlsim的基本行为:

  • awlsim_gui`<;br/>; `=auto自动选择最佳gui框架(默认)<;br/>; =pyside使用pyside作为gui框架。<;br/>; =pyqt使用pyqt作为gui框架。<;br/>;

  • awlsim_cython`<;br/>; `=0不要尝试使用cython core(默认设置)<;br/>; =1尝试使用cython core,但返回到python<;br/>; =2强制使用cython core<;br/>;

  • awlsim_sched`<;br/>; `=默认值不更改计划策略。保留操作系统分配给awlsim的策略。(默认)<;br/>; =正常使用正常的非实时操作系统调度。<;br/>; =fifo使用fifo实时调度(sched_fifo)。<;br/>; =rr使用循环实时调度(sched_rr)。<;br/>; =截止日期使用截止日期实时调度(sched_deadline)。<;br/>; =实时使用在大多数情况下性能最佳的实时调度算法。实际的算法选择可能在AWLSIM版本之间发生变化。<;br/>;

    后缀-如果多核可以附加到选项fiforrdeadlinerealtime。如果系统是单核(只有一个CPU),则会触发返回正常值。

  • awlsim_prio`<;br/>; `=默认值不更改优先级(默认值)。<;br/>; =1-99设置调度优先级。优先级的含义取决于操作系统和选定的调度算法。请参见awlsim_sched<;br/>;

  • awlsim_affinity`<;br/>; `=0,2,…要运行的主机CPU核心的逗号分隔列表。默认值:所有核心。<;br/>;

  • awlsim_mlock`<;br/>; `=0不要尝试锁定。见手册2。(默认设置)。<;br/>; =1尝试锁定所有当前和将来的内存。请参见手册2 mlockall。<;br/>; =2mlockall所有当前和将来的内存。失败时中止。请参见手册2 mlockall。<;br/>;

  • awlsim_profile`<;br/>; `=0禁用分析(默认)<;br/>; =1启用堆芯循环分析<;br/>; =2启用全内核分析(包括启动)<;br/>;

  • awlsim_coverage`<;br/>; `=数据文件启用代码覆盖率跟踪。<;br/>;

  • awlsim_gcmode`<;br/>; `=实时如果启用实时调度,则启用手动垃圾收集。(默认)<;br/>; =auto始终使用自动垃圾收集。<;br/>; =手动始终使用手动垃圾收集。<;br/>;

  • awlsim_gcthres`<;br/>; `=700,1,1<;br/>; 逗号分隔的字符串,最多包含3个整数。<;br/>; 与python垃圾收集器生成0到2个手动垃圾收集阈值相对应的每个整数。<;br/>; 阈值为0将禁用垃圾回收离子。(不推荐)<;br/>;

  • awlsim_gccycle`<;br/>; `=64<;br/>; 触发手动垃圾收集所需的OB1周期数。<;br/>;

##生成期间的环境变量(setup.py)

以下环境变量控制awlsim的构建(setup.py)行为:

  • awlsim_full_build`<;br/>; `=0不包括此平台上不需要的脚本。(默认)<;br/>; =1包括所有脚本;也包括平台上不需要的脚本。<;br/>;
  • awlsim_cython_build`<;br/>; `=0不要构建任何cython模块。(非POSIX上的默认值)<;br/>; =1构建cython模块。<;br/>; =2如果setup.py由python 2执行,则仅构建cython模块。<;br/>; =3如果setup.py由python 3执行,则仅构建cython模块。(POSIX上的默认设置)<;br/>;
  • awlsim_cython_parallel`<;br/>; `=0不要对cython模块使用并行编译。<;br/>; =1并行调用多个编译器(在多核上更快)。(默认)<;br/>; =2如果python 2正在执行setup.py,则仅调用多个编译器。<;br/>; =3如果python 3正在执行setup.py,则仅调用多个编译器。<;br/>;
  • awlsim_profile`<;br/>; `=0在编译的cython模块中不启用分析支持。(默认)<;br/>; =1在编译的cython模块中启用分析支持。<;br/>;
  • awlsim_debug_build`<;br/>; `=0在编译的cython模块中不启用调试支持。(默认)<;br/>; =1在编译的cython模块中启用调试支持。<;br/>;

##建立awlsim

awlsim可以在解释python模式下从源目录运行,而无需构建它。只需将cd放入awlsim源目录并执行所需的主可执行文件(例如/awlsim gui/awlsim server等)。

加速cython库可以用标准的python/setup.py build命令构建。

为了方便起见,还有一个helper脚本/maintenance/build.sh,它可以正确地构建awlsim。它可以用来代替直接调用setup.py。

还有/maintenance/build noopt.sh。在没有优化的情况下构建cython模块。构建速度要快得多,但是生成的cython库要慢得多。这对发展很有用。请勿将其用于生产。

##构建debian/raspbian/pilc.deb包

在基于debian的系统上安装或升级awlsim很容易。 defild可用于构建.deb包。只需运行以下命令即可构建所有awlsim.deb包:

<;pre>; cd path/to/awlsim转到awlsim源目录 sudo./maintenance/deb-dependencies-install.sh;这将安装所有依赖项 去毛刺-uc-us构建所有awlsim.deb包 sudo./maintenance/deb-install.sh.。#安装或升级所有awlsim.deb包 <;/pre>;

.deb文件将被放入awlsim源目录的父目录中。

如果在生成过程中遇到以下生成失败:

/usr/include/features.h:xxx:xx:致命错误:sys/cdefs.h:没有此类文件或目录

这可以通过重新安装libc开发包来解决:

sudo apt install–重新安装libc dev

##开发

有关awlsim开发的信息可以在[awlsim开发文档](development.html)中找到。

##许可证/版权

版权所有(c)michael büsch/等。

AWLSIM打开RCE自由软件,根据GNU通用公共许可证v2+授权。这意味着它在完整的源代码中是可用的,我们鼓励您改进它并将您的更改贡献给社区。AWLSIM也是免费的。

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

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储