Skip to main content

数据一致性与 CODESYS 沟通经理

重要

本页上的信息仅适用于通过以下方式发布的对象、数据和方法 CODESYS 通信管理器编辑器(IEC 符号集、OPC UA 信息模型和符号配置),而不是通常 OPC UA 服务器的编辑。

OPC UA 服务器是一项在 PLC 后台运行的服务。OPC UA 服务器的任务优先级低于 IEC 应用程序的任务。由于多任务和多核系统,OPC UA 服务器的任务可能会被其他任务中断。IEC 任务还可能与 OPC UA 服务器的任务并行运行,这可能导致读取或编辑数据时出现数据不一致的情况。本章旨在概述哪些方面可以保证一致性,哪些地方不能保证。

数据访问(读取、写入和示例)

保证一致的数据

所有大小不超过 8 字节的标量数据类型均一致地从 IEC 数据读取和写入。

无法保证一致性的数据

字符串

字符串是逐个字符读取和写入的。因此,无法保证读取或写入字符串的一致性。

数组

读取或写入数组是逐个元素处理的。使用数组基本数据类型的基本读取或写入逻辑。如果可以一致地处理基本元素,则所有数组元素也将保持一致。但是,不能保证已经处理的数组元素在整个数组的处理过程中没有变化。

结构化数据类型STRUCT 还有 FB)

读取或写入结构或功能块的成员是逐个元素完成的。这使用成员基本数据类型的基本读写逻辑。如果可以一致地处理基本元素,则成员也将保持一致。但是,不能保证在处理功能块的完整结构时已经处理的成员没有发生变化。

组合

如果数组和结构合并,则上述规则适用于结构成员或数组元素。使用数组元素或结构成员的基本数据类型的读写逻辑。这会导致以下一般行为:

  1. 简单数据类型的值(除了 STRING)WSTRING)无论放在何处,都将始终保持一致。

  2. STRINGWSTRING 不能保证一致性。

  3. 不能保证结构和数组的一致性。但是,如果内部的单一值属于简单数据类型,则它们是一致的。

方法调用

输入和输出参数(无论数据类型、数组或结构如何)一致地从 OPC UA 服务器传输到方法调用,或者从方法调用的输出传回到 OPC UA 服务器。这是通过使用执行方法调用的线程的堆栈内存来保证的。但是,不能保证从方法代码到IEC应用程序的数据访问是一致的。由于这些方法与 IEC 应用程序任务同时运行,因此可以使用常规机制来同步对数据的访问(例如互斥锁、信号量或双缓冲区