1

我继承了一个用 IEC 61131-3 结构化文本编写的 PLC 程序。我只是注意到它混合了STRING变量和一些STRING(15)变量。它表明 IEC61131-3 以预定义的长度声明其字符串(是吗?),并且可能有默认长度(存在吗?)这让我想知道我观察到的一些奇怪的字符串行为是否来自字符串溢出他们的缓冲区并且多余的被忽略(可能吗?)

理想情况下,请支持任何带有指向易于访问的 IEC61131-3 参考的链接的答案,以便人们可以浏览它以获取有关STRING其他 IEC 61131-3 数据类型的更多详细信息。

4

2 回答 2

3

如果您在 IEC61131-3 中声明 STRING 变量,您始终必须指定 STRING 的长度。

sExample : STRING(n);

n 确定您的 String 有多少个字符/字节。总是附加 \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 的 STRING,因为可用的字符串函数无法处理更大的字符串。

此信息基于Beckhoff Infosys TC3,因为 CodeSys 文档无法轻松访问,官方 IEC61131-3 标准也无法免费获得。所以我只能提供供应商的具体信息。

您应该使用您的 plc 系统中的文档重新检查这一点。

于 2016-09-13T20:43:09.727 回答
0

如果未定义大小,则 CODESYS 默认分配 80 个字符。

https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_datatype_string/

于 2019-11-01T10:56:20.630 回答