quote:以下是引用未尽在2014-04-16 17:05:45的发言:
这得从PLC对字符串的识别来说起,西门子规定,字符串(STRING)类型全长为N+2个字节,N为实际字符长度,其中,字节0为允许最大长度值,这就是说,实际字符串的长度如果超过这个值,则非法。字节1为实际字符长度,PLC取数据时为提高效率(减少模糊性,因为字符串不定长,不太好判断字符串的边界),首先读取这两个数据,再按照这两个字节的数据取后面的字节,字节1为0,则表示该字符串为空,至于后面的字节是什么内容,谁知道?也无意义不是,全零或全1不得是一种数据状态,总之通过1字节知道他们无意义就好了。所以,你输出空字符串时,读写执行机制一旦检测到是“0”,就不会多此一举的去管后面的字节了。
刚才又试了一个输入为true时,输出为'abc',输入为false时,输出为'abcd'。
看来是这样的,plc关心字符串实际长度,实际长度以外的就不检查了。