Skip to main content

对象:符号配置

您可以使用符号配置为项目变量创建符号描述。点击 项目 → 添加对象 向设备树中添加符号配置对象,然后定义特定的默认设置。

提示

为了向 OPC UA 服务器提供符号,我们建议使用新的配置编辑器 IEC 符号组配置 为了 CODESYS 3.5 SP18 和更高。

双击 符号配置 对象打开符号配置编辑器。

对话框:添加符号配置

功能:此对话框用于定义默认值 符号配置 目的。

称呼: 项目→添加对象→符号配置 菜单;应用程序对象的上下文菜单

在 XML 中包含注释

导出带有分配给变量的注释的符号文件

支持 OPC UA 功能

注意:此选项的可用性和可编辑性取决于设备。

_cds_icon_checked.png:下载符号配置时,附加信息也会下载到控制器。以下信息对于操作 OPC UA 服务器是必需的:

  • 继承功能块的基本类型

  • 通过编译器编译指示分配的属性的内容

  • 范围(例如: VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT

6. 客户端数据布局

有关布局选项的更多信息和示例,请参阅下一节“符号配置编辑器”。

兼容布局

此设置用于旧项目的兼容性。为客户端创建的数据布局尽可能与编译器内部创建的布局匹配。

优化布局

推荐用于新项目

以与内部编译器布局分离的优化形式计算输出布局

不会为未发布的元素生成任何间隙,并严格满足数据类型的内存对齐要求需要编译器版本 3.5.7.0 或更高版本。



符号配置编辑器

该编辑器包括一个包含选定变量的表格和一个用于编辑的菜单栏。

7. 菜单栏

_cds_icon_symbolconfiguration_view

看法

您可以使用此按钮激活和停用配置编辑器中使用的以下类别的变量:

_cds_icon_view_from_project.png 从项目中取消配置:尚未添加到符号配置中,但在项目中提供的变量

_cds_icon_library_manager.png 从库中取消配置:尚未添加到符号配置中,但在项目中提供的变量

_cds_icon_view_from_attribute.png 通过属性导出的符号:

此过滤器还列出了已通过以下方式在符号文件中标记为导出的变量: {attribute 'symbol' := 'read'} 杂注。这些符号显示为灰色。

属性 列显示了编译指示设置了哪些访问权限。

_cds_icon_symbolconfiguration_build.png

建造

编译项目 当前在配置编辑器中准备变量的要求

未对齐的数据仅适用于未对齐的内存访问

如果符号配置包含未对齐的值或设备的符号 才不是 支持所需的(未对齐的)内存访问,则设置错误。

将显示以下消息:

组件 <名字> 符号类型的 <符号类型名称> 没有内存对齐就无法发布

这可以防止潜在的错误代码下载到控制器,从而导致控制器发生不可预测的崩溃。

下载

如果您使用的设备支持其自己的应用程序文件进行符号配置,则工具栏中也可以使用此按钮。

当您在在线模式下更改符号配置时,您可以下载新的 <application name>._symbols 立即将文件传送至 PLC。

_cds_icon_symbolconfiguration_settings

设置

  • 支持OPC UA功能:

    注意:此选项的可用性和可编辑性取决于设备。

    为了向 OPC UA 服务器提供符号,我们建议使用新的配置编辑器(IEC 符号组配置) 为了 CODESYS 3.5 SP18 和更高。

    _cds_icon_checked.png:下载符号配置时,附加数据也会下载到控制器。以下信息是操作 OPC UA 服务器所必需的。目前包括以下信息:

    • 继承功能块的基本类型

    • 通过编译器编译指示分配的属性的内容

    • 范围(例如: VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT

  • 在 XML 中包含注释

    导出带有分配给变量的注释的符号文件

  • 在 XML 中包含节点标志

    _cds_icon_checked.png:命名空间节点标志提供有关命名空间中节点起源的附加信息。激活 OPC UA 时,节点标志始终位于符号表中。

    但是,可以禁用在 XML 文件中的嵌入。一些解析器在这方面存在问题。

  • 配置注释和属性

    打开对话框 评论和属性

    您可以在此处配置符号配置和 XML 文件中应包含的注释和属性的详细信息。

  • 配置与 IEC 任务的同步:

    打开 属性 – <设备名称> 对话, 选项 标签

    此设置允许符号客户端(例如,基于 PLC 处理程序的可视化或数据库连接)具有与 IEC 任务同步的一致读取或写入访问权限。

    此设置的详细描述可以在下面的部分中找到 设置:配置与 IEC 任务的同步

    注意:与 IEC 任务同步的变量访问可能会增加该设备上所有 IEC 应用程序的抖动。同步一致访问会中断实时能力。

  • 用于定义符号配置客户端的数据布局类型的列表框:

    注意:另请参阅本节 数据布局类型的示例

    • 优化的布局: 推荐用于新项目以与内部编译器布局分离的优化形式计算输出布局不会为未发布的元素产生任何间隙,并且严格满足数据类型的内存对齐要求需要编译器版本 3.5.7.0 或更高版本。

    • 兼容布局:此设置用于旧项目的兼容性。为客户端创建的数据布局尽可能与编译器内部创建的布局匹配。

      由于符号配置的配置可能性随着时间的推移而增长,仍然可能导致有问题的偏移。

      产生偏移的原因:

      由于功能块和结构组件中的内部指针或引用未释放用于符号配置而导致的内存间隙

      根据数据类型的不同,在 32 位和 64 位系统中出现的内存间隙有所不同,例如 __XINT / __XWORD

      地址不均匀的字段 有些客户端没有为此设置。

      使用属性时发生的意外内存错位 'pack_mode' 或者 'relative_offset'

  • 默认使用空命名空间(V2 兼容性):使用时需要 CODESYS V2兼容的OPC服务器配置

    _cds_icon_checked.png:行为与 CODESYS V2.3

    • 导出程序变量时不带应用程序名称:

      Application.PLC_PRG.MyVarPLC_PRG.MyVar

    • 另外导出全局变量时不带 GVL 名称。

  • 启用直接 I/O 访问:

    警告

    此功能有潜在危险并且 不适用于生产操作

    仅在错误检查和测试或调试机器时启用(例如,检查电缆连接)。

    _cds_icon_checked.png:在符号配置中,您还可以使用对与 IEC 语法相对应的直接 I/O 地址的访问(例如,%IX0.0)。

    对输入地址 (I) 的访问是只读的*。对输出地址(Q)和存储器地址(M)的访问可以是读写的。

    * 信息:在模拟模式下,对于输入地址也可以对符号进行写访问。

    由于 OPC 或 OPC UA 等协议的外部客户端并不总是支持直接地址的 IEC 语法,因此还可以使用隐式代码的命名空间 __MIO 中的数组语法提供访问。例如,您还可以访问 __MIO.MIO_IX[2].x3 而不是 %IX2.3。

    然而,数组访问的符号隐藏在浏览器中,因为某些客户端无法处理大量节点(数千个,具体取决于 I/O 范围的大小)。

  • 支持函数、FB、方法和程序的调用:

    注意:此选项的可用性和可编辑性取决于设备。

    _cds_icon_checked.png:访问权限 执行 可以在符号表中为函数、功能块、方法或程序类型的 POU 符号进行设置。这 支持OPC UA功能 还必须在选项中选择 设置

  • 在 XML 中包含呼叫信息:

    _cds_icon_checked.png:有关被调用函数、功能块、方法或程序的信息也列在符号配置的 XML 文件中。

    仅当满足以下条件时才启用该选项 支持函数、FB、方法、程序的调用 设备支持选项。

  • 启用符号集:

    _cds_icon_checked.png:带有按钮和选择字段的栏出现在符号表上方。这允许您为控制器上的客户端特定访问权限分配配置符号组。

    请参阅下面的“符号集配置工具栏”。

工具

保存 XSD 方案文件:此命令打开用于在文件系统中保存文件的标准对话框。使用此命令,您可以准备符号文件的 XSD 格式,例如用于外部程序。



8. 符号表

访问权

您可以通过单击符号中的符号来更改符号的访问权限 访问权 柱子。

. 访问权限图标(按升序排列)
  • symbol_read.png: 只读

  • symbol_write.png: 只写

  • symbol_read_write.png: 读和写

  • _cds_icon_access_right_execute.png: 执行

    此权限允许对功能、功能块、方法和程序执行权限。

    任务要求:设备提供 支持函数、FB、方法、程序的调用支持OPC UA功能 选项。这两个选项均在 设置

注意:如果控制器具有用户管理功能,您可以使用符号集来定义对相同符号的特定于客户端的访问权限。

最大

该符号的最大访问权限

属性

如果访问权限是按属性分配的,则此处会显示相应的图标。

类型

离开 CODESYS V3.5 SP6 还显示别名数据类型。

例子: MY_INT : INT 对于用数据类型声明的变量 MY_INT (类型 INT)。

会员

您还可以通过在列中激活结构化数据类型的变量来激活它们 符号 添加到符号配置。这最初会导致: CODESYS 为所有“成员”变量导出符号。通过按钮 _cds_icon_three_dots.png 在专栏中 成员变量 但是,您只能专门选择结构的某些组件。

注意:此选择适用于导出符号的该数据类型的所有实例。

如果无法选择结构化类型的成员,则星号 (_cds_icon_symbolconfig_checkbox_wildcard.png) 显示在成员的复选框中,表示该类型的所有可导出成员均已导出。



9. 符号集配置工具栏

列表框

已定义的符号集

_cds_icon_add_symbol_group.png 添加新符号集

打开 添加新符号集 用于指定该集合的名称的对话框

_cds_icon_copy_symbol_group.png 从选定的符号集中添加重复项

打开对话框 添加所选符号组的副本

为列表框中选定的集创建一个副本。您可以更改默认名称(<group name>_duplicate)。

_cds_icon_rename_symbol_group.png 重命名选定的符号集

打开 重命名选定的符号集 用于为列表框中选定的集指定另一个名称的对话框

_cds_icon_delete_symbol_group.png 删除选定的符号集

打开一个对话框,提示是否应删除列表框中选定的符号集

配置符号权限

打开 符号权利 设备编辑器的选项卡 登录后,您可以为每个用户组(客户端)分配对列表框中所选符号集的不同访问权限。



有关更多信息,请参阅: 选项卡:符号权限

对话框:注释和属性

10. 符号表内容

启用扩展 OPC UA 信息

注意:此选项的可用性和可编辑性取决于设备。

_cds_icon_checked.png:符号表包含可由 OPC UA 服务器评估的扩展信息。例如,这包括用户定义的数据类型的继承信息和命名空间节点标志。

如果 OPC UA 设置处于活动状态,还可以包含注释和属性等附加信息。

. 启用 OPC UA 设置后,属性将根据以下规则包含在符号表中:
  • 在编译器版本V3.5.5.0至V3.5.7.X中,所有属性均根据 匹配简单标识符 环境。

  • 在编译器版本V3.5.8.X中,根据设置包含所有属性 包括所有属性

  • 在编译器版本 V3.5.9.0 及更高版本中,您可以自定义包含的属性。

包含评论

要求: 启用扩展 OPC UA 信息 被激活。

_cds_icon_checked.png:注释和属性也保存在符号表中。

包含属性

还包括类型节点的注释和属性

要求: 包含评论 被激活。

_cds_icon_checked.png:还包括类型节点的信息(用户定义的类型,例如 STRUCTENUM 元素)。

_cds_icon_option_deactivated.png:只有直接导出的变量才有注释和属性。



11. XML 符号文件内容

包含命名空间节点标志

_cds_icon_checked.png:命名空间节点标志提供有关命名空间中节点起源的附加信息。激活 OPC UA 时,节点标志始终位于符号表中。然而,它在 XML 文件中的包含可以被停用,因为一些有缺陷的解析器有问题。

包含评论

_cds_icon_checked.png:注释也可以保存在 XML 文件中。

在编译器版本 V3.5.5.x 至 V3.5.8.0 中,这包括设置 更喜欢文档注释

包含属性

_cds_icon_checked.png:属性也可以保存在符号文件中。

还包括类型节点的注释和属性

_cds_icon_checked.png:类型节点的信息(用户定义的类型,例如 STRUCT-元素和 ENUM元素)也包括在内。

_cds_icon_option_deactivated.png:只有直接导出的变量才有注释和属性。



12. 选择评论

要求: 包含评论 被激活。

包括文档评论

包括正常评论

始终包含两种类型的评论

更喜欢文档评论,回退到普通评论

更喜欢普通评论,回退到文档评论

这些选项确定保存在符号配置中的注释。



13. 过滤器属性(不区分大小写)

要求: 包含属性 被激活。

包括所有属性

包括以以下开头的属性

使用正则表达式过滤属性

定义保存在符号配置中的属性

匹配简单标识符

存在主要是因为向后兼容旧版本以模拟旧行为



设置:配置与 IEC 任务的同步

对于同步一致访问,符号客户端在处理读或写请求时在运行时等待,直到找到没有执行 IEC 任务的时间。当检测到此间隙时,将阻止重新启动 IEC 任务,直到复制了变量列表的所有值。然后,IEC 任务再次照常进行。同步访问可能会导致 IEC 任务延迟启动,表现为抖动增加。由于运行时中的所有应用程序均由通用调度程序管理,因此实时行为的这种潜在损害会影响设备上的所有应用程序。设备的所有应用程序都会受到影响,无论它们是否包含符号配置或是否已从一个或多个下载到控制器 CODESYS 项目。因此,仅当运行时允许在访问时下载到控制器的所有应用程序时,运行时才允许同步一致性访问。

提示

该设置位于符号配置的编辑器中 设置 菜单。此外,当您单击 特性 命令,然后选择 选项 打开的对话框中的选项卡。

对于没有符号配置的应用程序,只能在属性对话框中找到该设置。

重要

更改设置后,必须重新加载通过下载或在线更改下载到设备的所有应用程序,并更新所有启动应用程序。

在什么情况下需要同步一致访问?

通常,显示值不需要一致的值,因为更改值源自哪个 IEC 任务周期基本上无关。它与很少改变的值完全无关。即使在写入时也几乎没有硬一致性要求,因为通常机器必须处于一种待机模式(例如在写入配方时),在这种模式下无法直接访问作为配方写入的值。

相比之下,对于数据库链接保存生产数据来说,一致的值尤为必要。然而,对于时钟机器,这些值必须与生产计时同步(每个生产的产品设置一个值),并且与一项或多项 IEC 任务的参考不一致。就机器时钟而言,IEC 应用程序必须已确保一致性。为此,生产周期中出现的值通常收集在全局变量列表中。在循环结束时,符号客户端通过附加变量(BOOL 或计数器)表示机器周期已结束且值有效。现在,客户有机会归档生产周期中的值。根据需要,还可以通过释放变量以相反的方向显示成功读取,以便在生产数据无法归档时也可以停止生产。同步一致访问对于此用例来说不是必需的,也没有帮助,因为同步是在应用程序级别执行的。

相比之下,符号客户端的同步一致访问通常应用于流程工业中,系统连续运行而无需生产时钟,例如在 60 秒的固定时间范围内一致且循环地写入过程值时。这可以通过类似于时钟机器(见上文)的应用程序级别上的同步或通过同步一致符号访问的同步来完成。后者的优点是 IEC 程序中无需实现任何逻辑,并且访问完全由客户端控制。

小心

由于抖动增加,同步一致监控不适合运动或实时关键应用。由于这些原因,只有在绝对必要时才应该释放和使用同步一致访问。

如果客户端使用此设置启用的同步一致访问,该客户端也会受到影响。一方面,根据运行时系统的调度程序,读/写访问的响应时间可能会更加不稳定,因为您可能仍然需要等待 IEC 任务执行的间隙。此外,如果 IEC 任务运行很长时间(在几百毫秒的范围内),或者一个或多个 IEC 任务在较长一段时间内(在几100 毫秒),几乎是 100%。因此,这些值的可用性还取决于 IEC 应用程序对控制的利用。

此外,如果客户端在要读取或写入的变量列表的定义中遵守以下规定,则可以最大限度地减少对自身和运行时的影响:

  • 仅对那些绝对一致需要的变量进行同步一致访问

  • 必须一致的变量和可能不一致的变量的单独变量列表

  • 将具有多个一致变量的变量列表分成几个较小的列表

  • 选择尽可能大的循环读取值的读取间隔

支持当前配置和可能的纠正措施

符号表中标记为红色的条目显示它们配置为导出到符号文件但当前在应用程序中无效的变量。造成这种情况的原因可能是声明已从块中删除。

在版本 3.5.8.0 及更高版本中,如果 IEC 代码中未使用已配置符号的变量,或者在 I/O 变量的情况下未映射,则编辑器中会出现警告。此外,编译器还会在符号配置中指示从过时的库版本引用的变量。

重要

默认情况下,程序代码中未使用的对象变量保持未编译状态,因此在符号配置中不可用。

. 然而, CODESYS 当满足以下条件之一时,仍然在符号配置中提供来自未编译对象的变量:
  • 始终链接 POU 属性已选择。

  • {attribute 'linkalways'} 使用了编译指示。

有关更多信息,请参阅: 对话框:属性:构建对话框:属性:选项:控制器

数据布局类型的示例

10. 大型结构

未发布所有成员的大型结构示例:

STRUCT
{attribute 'symbol':='readwrite'}
PublicNumber : INT;	

{attribute 'symbol':='none'}
InternalData : ARRAY[0..100] OF BYTE;

{attribute 'symbol':='readwrite'}
SecondNumber : INT;

{attribute 'symbol':='none'}
MoreData : ARRAY[0..100] OF BYTE;
END_STRUCT
END_TYPE


符号文件中的结果条目(注意“size“ 和 ”byteoffset”):

11. 符号文件、大结构、兼容性布局选项
<TypeUserDef name="T_GrosseStruktur" size="208" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur">
<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" />
<UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="104" vartype="VAR" />
</TypeUserDef&gt>


12. 符号文件、大结构、优化布局选项
<TypeUserDef name="T_GrosseStruktur" size="4" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur">
<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /&lt;UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" />
<UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="2" vartype="VAR" />
</TypeUserDef>


13. 地址不均匀的结构

以下机制可能会导致成员内存错位:

{attribute 'relative_offset':='…'} 给会员

{attribute 'pack_mode':='…'} 在结构声明中

Target setting 'memory-layout\pack-mode' 在设备描述中

{attribute 'pack_mode':='1'} 
TYPE UngeradeAdressen :
STRUCT
   {attribute 'relative_offset':='3'}
   {attribute 'symbol':='readwrite'}
   PublicNumber : INT;

   {attribute 'symbol':='readwrite'}
   PublicValue : LREAL;
END_STRUCT
EMDTYPE
   


符号文件中的结果条目; (注意“size“ 和 ”byteoffset”):

14. 符号文件、地址不均匀的结构、兼容性布局选项
<TypeUserDef name="T_UngeradeAdressen" size="13" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen">
<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="3" vartype="VAR">
<UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="5" vartype="VAR" />
</TypeUserDef>


15. 符号文件、地址不均匀的结构、优化布局选项
<TypeUserDef name="T_UngeradeAdressen" size="16" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen">
<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" />
<UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="8" vartype="VAR" />
</TypeUserDef>


16. 功能块
// Each POU contains some implicit variables, which do not get published. Depending on the data type these might cause memory gaps of different sizes.
FUNCTION_BLOCK POUx IMPLEMENTS SomeInterface
VAR_INPUT
  in : INT;
END_VAR
VAR_OUTPUT
  out : INT;
END_VAR
VAR
END_VAR

每个 POU 都包含一些隐式变量,这些变量不会被发布。如果它是这样的数据类型 __XWORD,则不同大小的内存间隙会导致客户端数据布局,具体取决于系统是 64 位还是 32 位。

64 位和 32 位符号文件中的结果条目; (注意“size“ 和 ”byteoffset”):

符号文件、功能块、兼容性布局选项、64 位

<TypeUserDef name="T_Baustein" size="24" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein">
<UserDefElement iecname="in" type="T_INT" byteoffset="16" vartype="VAR_INPUT" />
<UserDefElement iecname="out" type="T_INT" byteoffset="18" vartype="VAR_OUTPUT" />
</TypeUserDef>

符号文件、功能块、优化布局选项、64 位

<TypeUserDef name="T_Baustein" size="4" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"&gt;>
<UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" />
<UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" />
</TypeUserDef>

符号文件、功能块、兼容性布局选项、32 位

<TypeUserDef name="T_Baustein" size="12" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein">
<UserDefElement iecname="in" type="T_INT" byteoffset="8" vartype="VAR_INPUT" />
<UserDefElement iecname="out" type="T_INT" byteoffset="10" vartype="VAR_OUTPUT" />
</TypeUserDef>

符号文件、功能块、优化布局选项、32 位

<TypeUserDef name="T_Baustein" size="4" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein">
<UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" />
<UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" />
</TypeUserDef>


有关更多信息,请参阅: 符号配置