技术文章 - CS333281

服务器从 S7-1200 PLC 返回一个前两个字符丢失的字符串

已修改: 23-Dec-2022   


注意:本文已使用机器翻译软件翻译,以方便非英语客户阅读。但翻译内容可能包含语法错误或不准确之处。请注意, PTC对本文所含信息的翻译准确性及使用后果不承担任何责任。请在 此处 查看本文的英文原始版本以便参考。有关机器翻译的更多详情,请单击 此处
感谢您告诉我们。我们将尽快审阅此译文。

适用于

  • Kepware Server (formerly KEPServerEX) 5.19.467.0 to 6.8
  • ThingWorx Kepware Server (legacy) 8.0 to 8.4

说明

问题:从 Siemens S7-1200 PLC 中的数据块读取字符串时,前两个字符丢失。可能的原因:一个??在 S7-1200 PLC 的数据块中创建的字符串将具有 256 字节的固定长度。它的前两个字节告诉当前字符串数据的长度和字符串的最大长度。为了成为 PLC 数据块中的特定长度,必须将字符串创建为字符数组。在这两种类型的数据块中,字符串的末尾都会用空终止符标记。如果在服务器中将标记创建为字符串,驱动程序将始终将前两个字节视为长度字段。结果,它不会读取它们。例如,在“DB 12”中创建了一个包含 18 个字符的数组,并初始化为“KEPWARE”的值。如果随后在服务器中创建了地址为“DB12,STRING0,18”的标记,则客户端中将显示值“PWARE”。这是因为驱动程序假定前两个字节是长度数据。如果在服务器端创建了一个地址为“DB12,C0,18”的标签,数据类型设置为字符串,则整个字符串将在客户端显示为一个值。解决方案:从数据块中读取真正的字符串时,使用String地址类型。或者,使用字符地址类型来确保不忽略前导字符。
这是文章 333281 的 PDF 版本,可能已过期。最新版本 CS333281