传递 STRING 或WSTRING 数据类型的变量 说明 可以将 STRING 或 WSTRING 数据类型的变量作为参数进行传递下表列出了不同 CPU系列中 (W)STRING 的传递规则: CPU 系列 数据类型 块调用中的传递规则 S7-300/400 STRING声明的形参和实参长度必须相同。 S7-1200/15 00 STRING WSTRING声明的形参和实参长度可以不同。在运行过程中,如果目标参数的声明长度小于接 收的 (W)STRING 参数长度,则截断(W)STRING 参数并将使能输出 ENO 设置为 FALSE。 在程序编辑器中,参数处的灰色矩形表示 (W)STRING在运行过程中可能被截断。 例外: 调用 STL 块时,形参和实参的声明长度必须始终相同。PLC 数据类型 (UDT) 的基本知识 说明PLC 数据类型 (UDT) 是一种复杂的用户自定义数据类型,用于声明一个变量。这种数据类型是一个由多个不同数据类型元素组成的数据结构。其中,各元素可源自其它 PLC 数据类型、 ARRAY,也可直接使用关键字 STRUCT声明为一个结构。嵌套深度限制为 8 级。 PLC 数据类型 (UDT)可在程序代码中统一更改和重复使用。系统自动更新该数据类型的所用 使用位置。 PLC 数据类型的优势: •通过块接口,在多个块中进行数据快速交换 • 根据过程控制对数据进行分组 • 将参数作为一个数据单元进行传送 使用 PLC 数据类型创建数据块时,可将 PLC 数据类型声明为一种类型。基于该类型,可以创建多个数据结构相同的数据块。并根据具体任务,通过输入不同的实际值对这些数据块进行调整。 例如,为颜料混合配方创建一个 PLC数据类型的实例。之后,再将该数据类型分配给多个数 据块。这样,每个块中包含不同的数量信息。下图显示了该应用中具体的数据类型分配:PLC 数据类型可应用于以下应用中: • PLC数据类型可用作逻辑块的变量声明或数据块中变量的数据类型。 • PLC 数据类型可用作模板,创建数据结构相同的全局数据块。 • PLC数据类型在 S7-1200 和 S7-1500 中可用作模板,创建结构化的 PLC 变量。 PLC 数据类型的嵌套深度 PLC数据类型 (UDT) 的嵌套层级深度为 8 级。 匿名结构的缺陷 在这种结构化变量中,元素的寻址方式都相同,而不考虑该元素采用 PLC数据类型声明,还 是采用匿名结构声明。 使用匿名结构具有以下缺点: • 通过复制进行重用时,结构都相同。这将导致结构更改困难。 •匿名结构与 PLC 数据类型 (UDT) 的相同结构不兼容。 • 由于在运行过程会检查结构元素的类型是否匹配,可导致系统性能下降。• 由于所有元素必须单独评估,在使用匿名结构时,很容易超出上限。
系统生成的 PLC数据类型 某些指令在实例派生过程中会生成其自己的 PLC 数据类型(保存在“PLC 数据类型”(PLC data types)项目文件夹中)。在库中请勿使用这些由系统生成的 PLC 数据类型,否则可能会导致 系统特性异常。必要时,这些由系统创建的 PLC数据类型不得存储在库中。从块生成外部源 从块生成外部源时,在块接口中直接对 PLC 数据类型的默认值进行的更改不会导出到源。也就是说在重新导入源时,这些值将不可用。此时,将使用默认值。为防止丢失已修改默认值 的数据,必须直接在 PLC数据类型中而不是在块接口中进行更改。在这种情况下,生成外部 源时也会导出这些更改。传递一个 PLC 数据类型 (UDT) 的变量 说明声明为 PLC 数据类型 (UDT) 的变量也可作为实参进行传递。如果形参在变量声明中声明为 PLC 数据类型(UDT),则待传递变量的 PLC 数据类型 (UDT) 必须与实参的相同。 在块调用时,声明为 PLC 数据类型 (UDT)的变量元素也可作为实参进行传递,但前提是该变 量元素的数据类型与形参数据类型相匹配。 如果结构和用户自定义 PLC数据类型的结构相同,则可相互分配。即,所有结构元素的数据类型和顺序都必须相同。在嵌套结构中,低层级的结构及其元素的数据类型和顺序也必须相 匹配。如果所有结构元素(包括低层级结构)的数据类型和顺序均相同,两个不同的 PLC 数据类型 也可相互分配。PLC 数据类型的名称不必相同。用户自定义的 PLC 数据类型和结构不能分配给系统数据类型。 参见 块参数的使用规则调用和寻址命名空间中的块在程序代码中,命名空间中的程序元素使用 IEC 格式进行表示: • 块名称不使用引号括起。 •名称空间位于块名称之前,使用点分进行分隔。 有关命名空间格式的详细信息,请参见“对命名空间中的程序元素进行分类(页 9503)” 参见 寻址全局数据块中的变量 命名值数据类型 (S7-1500)名值数据类型的基础知识(S7-1500) 简介 “命名值”为具有唯一名称的值。命名值在整个程序中引用非常方便,并且可以提高程序的 可读性和可维护性。 在TIA Portal 中,通过“命名值数据类型”声明命名值。其中一组值与一组唯一的名称相关 联。寻址 PLC 数据类型 (UDT)寻址 PLC 数据类型的数据元素 PLC 数据类型可用作模板,创建各种程序元素。例如,可从 PLC 数据类型生成 PLC 变量或数据块。无法直接访问 PLC 数据类型。但可以访问基于某个 PLC 数据类型创建的程序元素。命名值数据类型基于对命名值数据类型中的所有元素均有效的基本数据类型。基于命名值数据类型的变量,假定所有值均位于基本数据类型的值范围内,包含声明中未显示指定的 值。 命名值的数据类型仅在软件单元中可用,且支持以下SIMATIC 编程语言: • LAD • FBD • STL • SCL • GRAPH 命名值数据类型的应用示例如下:应用示例:命名值数据类型 (页 313) 说明 创建命名值数据类型 命名值数据类型在项目树的“PLC 数据类型”(PLCdata types) 文件夹中创建。 另请参见“创建命名值数据类型 (页 9773)” 文档化编程可在文本文档中声明命名值数据类型。文档的文件扩展名为 *.nvt。 另请参见“文档化编程(页 9771)”下表对各个语法元素进行了说明: 语法元素 说明 NAMESPACE END_NAMESPACE 可选指定一个或多个命名值数据类型的命名空间。可为每个命名值数 据类型定义一个命名空间,也可在一个命名空间中放置多个数据 类型。如果未定义命名空间,则数据类型不处于命名空间中。 {PUBLISHED : = 'TRUE|FALSE'} 可选指定是否发布命名值数据类型。其它软件单元的程序元素可访问 已发布的数据类型。 Pragma的值可以为“TRUE”或“FALSE”。如果 pragma 未指定为 “已发布”(PUBLISHED),则系统默认不发布该数据类型。TYPE END_TYPE 围绕一个或多个命名值数据类型的声明。:命名值数据类型的名称和基本数据类型。 遵循 IEC 61131-3命名规则。 支持以下基本数据类型: • 整数:SINT、USINT、INT、UINT、DINT、UDINT、LINT 和 ULINT• 位字符串:BYTE、WORD、DWORD、LWORD:=,:=,:=各个命名值的列表命名值数据类型可以是声明值之一。可采用与基本数据类 型对应的其它值。 遵循 IEC 61131-3 命名规则。名称的Zui大长度为128 个字符。 各个命名值的名称不是多语言的。 :=可选 指定命名值数据类型的默认值。可从声明列表中指定一个值,也可指定与基本数据类型匹配的任 何其它值。如果未输入显式默认值,则使用声明列表中的第一个值作为默认值。在本示例中,“NAMED_VALUE_1”的值为默认值。使用命名值数据类型命名值数据类型可用作模板,用于创建各种程序元素。可按以下方式进行更换: • 可在块接口中基于命名值数据类型声明参数。 •可在全局数据块中基于命名值数据类型声明元素。 • 可在 PLC 数据类型 (UDT) 中基于命名值数据类型声明元素。 说明不自动更新参考位置 由于命名值数据类型采用文档化编程,参考位置不自动更新。例如,如果对命名值数据 类型进行重命名,则不会自动修改PLC 程序中的参考位置。而是会在编译期间报告语法错误。 此时需要手动更新参考位置。 唯一寻址命名值可在运算中使用命名值,方法与基本数据类型的其它常量相同。其也可用于声明 ARRAY 边 界或 STRING长度。应用示例:命名值数据类型 (S7-1500) 应用示例的目标 此应用示例演示了如何在自动化项目中使用命名值数据类型。在项目中控制一个定位轴。命名值数据类型用于在整个程序中为特定轴参数分配唯一名称。这样,即可在程序中轻松引用,从而显著提高程序的可读性和可维护性。 示例程序 下图显示了命名值数据类型"nvtMoveAbsoluteDirection"。其包含轴的可能运动方向的定义:下图显示了工艺对象"TO_PositioningAxis" 的调用。 • 轴具有输入参数"Direction",其控制轴的运动方向。调用轴时,参数的实际值由 "nvtMoveAbsoluteDirection" 传送。 •轴具有不同的输出参数,这些参数将轴的状态信息返回给调用块。状态值通过 IF 指令传 送到"nvtPositionerStatus"。应用示例:使用命名值数据类型创建状态机 (S7-1500) 应用示例的目标此应用示例显示了如何使用命名值数据类型来实现状态机。 在项目中,定义了受控过程支持的不同状态。命名值数据类型用于在整个程序中为状态分配唯一名称。以便于在整个程序中引用状态。 示例程序 下图显示了命名值数据类型"nvtOperationStates"。其中包含过程状态的定义。