IEC61131-3 中 STRING 的默认大小是多少
What is the default size of a STRING in IEC61131-3
我继承了一个用 IEC 61131-3 结构化文本编写的 PLC 程序。我只是注意到它混合了 STRING
个变量和一些 STRING(15)
个变量。它表明 IEC61131-3 声明其字符串具有预定义的长度(是吗?)并且可能有默认长度(是吗?)这让我想知道我观察到的一些奇怪的字符串行为是否来自字符串溢出他们的缓冲区并且忽略多余的部分(可能吗?)
理想情况下,请支持任何带有 link(s) 的答案,以方便访问 IEC61131-3 参考,以便可以浏览它以获取 STRING
和其他 IEC 61131 的更多详细信息-3 种数据类型。
如果您在 IEC61131-3 中声明 STRING 变量,则始终必须指定 STRING 的长度。
sExample : STRING(n);
n 确定您的字符串有多少 characters/bytes。
总是附加 \0 字符,因此 STRING(n) 是 n+1 个字节大。
在 Codesys 和 TwinCat 中,有一些供应商特定的特性在 IEC61131-3 (afaik) 中没有定义:
sExample : STRING; //This is the same as STRING(80)
sExample : T_MaxString; //This is the same as STRING(255)
您不应使用大于 T_MaxString 的字符串,因为可用的字符串函数无法处理更大的字符串。
此信息基于 Beckhoff Infosys TC3,因为 CodeSys 文档不容易访问,官方 IEC61131-3 标准也不是免费的。所以我只能提供供应商特定信息。
你应该用你的 plc 系统的文档重新检查一下。
If a size is not defined, then CODESYS allocates 80 characters by default.
https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_datatype_string/
我继承了一个用 IEC 61131-3 结构化文本编写的 PLC 程序。我只是注意到它混合了 STRING
个变量和一些 STRING(15)
个变量。它表明 IEC61131-3 声明其字符串具有预定义的长度(是吗?)并且可能有默认长度(是吗?)这让我想知道我观察到的一些奇怪的字符串行为是否来自字符串溢出他们的缓冲区并且忽略多余的部分(可能吗?)
理想情况下,请支持任何带有 link(s) 的答案,以方便访问 IEC61131-3 参考,以便可以浏览它以获取 STRING
和其他 IEC 61131 的更多详细信息-3 种数据类型。
如果您在 IEC61131-3 中声明 STRING 变量,则始终必须指定 STRING 的长度。
sExample : STRING(n);
n 确定您的字符串有多少 characters/bytes。 总是附加 \0 字符,因此 STRING(n) 是 n+1 个字节大。
在 Codesys 和 TwinCat 中,有一些供应商特定的特性在 IEC61131-3 (afaik) 中没有定义:
sExample : STRING; //This is the same as STRING(80)
sExample : T_MaxString; //This is the same as STRING(255)
您不应使用大于 T_MaxString 的字符串,因为可用的字符串函数无法处理更大的字符串。
此信息基于 Beckhoff Infosys TC3,因为 CodeSys 文档不容易访问,官方 IEC61131-3 标准也不是免费的。所以我只能提供供应商特定信息。
你应该用你的 plc 系统的文档重新检查一下。
If a size is not defined, then CODESYS allocates 80 characters by default.
https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_datatype_string/