脚本语言

IronPython的脚本文件

Python是一种动态语言,用于各种广泛的用途,是一种强调清洁和表达性的代码。它能够为开发人员提供最大的灵活性,同时又保持代码的可读性。 IronPython 促使 Python 转到.NET,并允许本地访问 .NET 架构和类。实施 IronPyhon 的解释是基于Python 版本 2.7。

在网络上有很多免费的教程和帮助。以下链接会给你一个有关 IronPython的详细介绍及说明:

版本不兼容的 Python V3.x文件

目前,Python语言过渡到一个新的版本3,删除一些旧的,过时的语言结构。3S-Smart Software Solutions GmbH计划升级到新的语言版本。脚本作者应该在头脑中,并且以向前兼容的方式编写自己的脚本,例如通过使用“from __future__ import print_function”声明。更多相关信息请参阅http://wiki.python.org/moin/Python2orPython3或者http://docs.python.org/release/3.1.2/whatsnew/3.0.html.

脚本执行

脚本文件(文件名.py),包含不同的脚本命令,可以通过CoDeSys的用户接口或者使用 Windows 命令行实现。

从CoDeSys用户接口运行脚本

命令行中运行脚本

脚本命令

依据广泛的 Python 命令库大约有150 多个特殊的脚本命令在CoDeSys命令中进行处理。

有关脚本命令的帮助文档没有完成,并且没有放在CoDeSys在线帮助文件中。更多相关信息请参阅CoDeSys的“在线帮助”中的“ScriptEngine.chm”详细说明。

读 .NET API 文档理解 python 编程

目前初步版本的脚本文件是依靠 .NET / C# 代码自动生成的。因此它包含了一些 Python 程序员不常见的语法结构。下面的列表中给出了如何将它们转化成 python化的语言。

  • .NET 中的接口是关于类(方法,属性)中必须包含执行接口的定义,在 IronPython中,一个接口可以通过派生它们作为一个基类的方式实现一个或者多个 .NET接口。当一个接口的成员没有定义时,一个异常将会在运行系统中被抛出。(DeviceImportFromSvn.py示例表示一个类实现了ImportReporter接口。)
  • 在.NET中,所有的参数,属性和函数的返回值都是静态类型。在参数之前允许使用一些类型。对于函数来说,返回值的类型定义在函数名的前方。子类的实例允许被父类(或者接口)进行调用。
  • 方法可以被重载,一个类中可以包含相同名称的多个方法,但是他们必须具有不同数量的参数类型和/或者数量。IronPython 将会自动调用最匹配的函数。
  • 一个int型的变量可以包含一个 -2 147 483 6482 147 483 647之间的数,bool变量等同于 python类型的 bool (True 和 False),类型string等同于python中的类型strunicode(等同于 IronPython中的类型)。IDictionary<Object, Object>表示一个通常的python路径。IronPython会自动在 Python 和 .NET 类型间进行转化。
  • 如果一个类型T来自IBaseObject<T>,该类型可以通过其他插件扩展更多的成员。在参数或者返回值中该类型T将会被标记为IExtendedObject<T>
  • 接口IEnumerable<T>描述了任意序列(列表,数组),这些类型序列都是类型T的对象(子对象)。当序列产生不兼容的对象,在运行系统中会抛出一个异常。
  • 接口IList<T>描述了一个包含对象类型T(或者子对象)的列表。当添加一个不匹配的对象时,一个异常将会抛出。
  • 语法params T [] name等同于 python 中的语法 *name中的可变参数列表,但是对输入参数T(或者子类)有限制。
  • 枚举变量 (enum) 在 python中不是作为一种语言结构。他们用于定义一定数量的常量,例如,一周的天数。定义在 .NET中的枚举变量可以在 IronPython 中通过名称.Member 的语法结构进行调用(类似于类成员的调用)例如 OnlineChangeOption.Try。 在 python中有多种枚举形式,比如http://pypi.python.org/pypi/enum/或者http://www.ironpython.info/index.php/Enumerations
  • 标记在{ get; set; }中的属性是读写变量,标记在{ get; }中的属性是只读类型。类似于python中@property的定义。

对于脚本文件以下切入点是可以允许的:

  • system:在CoDeSys系统中整合的函数。这个对象提供了所有描述在 "ISystem Interface"下的函数,例如,CoDeSys的退出,消息窗口的访问或者通过使用ui-present命令运行的 --noUI 模式。
  • projects:工程管理的基本函数。这些对象提供了多有在 "IScriptProjects Interface"中描述的函数,例如,加载项目及项目档案。此外,它也是个别项目的入口点。
  • online:在线连接设备的基本函数。通过使用"create_online_application" 对一个应用对象的在线对象进行管理。这个在线对象允许登录到控制器,启动应用程序并且初始化变量的值。
 接口点的相信说明
 脚本示例1:读取变量
 脚本示例2: 从配方中读取值并发送邮件
 脚本示例 3: 确定工程中的设备树中打开项目
 脚本示例 4: 从子版本中导入设备 PLCOpenXML 文件