技术文章 - CS333281
服务器从 S7-1200 PLC 返回一个前两个字符丢失的字符串
已修改: 23-Dec-2022
适用于
- 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