西门子字符串访问以及地址分配-爱代码爱编程
起因
一般情况下字符串访问可以直接进行符号访问,但在SCADA系统通讯时可能需要用到地址访问。因此要了解PLC字符串的地址分配。
结论
以西门子37-1200为例。
- 不定义长度默认254个字符。
- 字符串第一个字节是字符串定义长度。
- 字符串第二个字节是字符串实际长度。
- SCADA系统读取字符串可以先获取第二个字节的长度来决定读取的字符个数。
实际测试
由于要看到具体地址的值,将西门子的优化DB转换成标准DB。
定义3个用于测试的字符串。
- ID:未定义长度字符串,可以看到占用空间256。
- ID[10]:10个字符长度的字符串,可以看到占用空间12。
- ID[20]:20个字符长度的字符串,这里看不到空间大小,但是可以知道是22。
第一个“ID”,可以清晰看到第一个字节是254即字符设定长度。
第二个字符是实际长度6.
后续才是真正的字符实际内容。
第个个“ID[10]”,可以清晰看到第一个字节是10即字符设定长度。
第二个字符是实际长度3.
后续才是真正的字符实际内容。
> 第三个“ID[20]”,可以清晰看到第一个字节是20即字符设定长度。
第二个字符是实际长度5.
后续才是真正的字符实际内容。
注意:西门子自带的转换指令是不会传输前两位字节的。
红框区域可以看到只有字符串的实际内容。