最近做个程序,比较二个字符串是否相同,我新建一个共享DB1数据块里面有两个变量
1: Name_1 初始地址 0.0 类型string[32],
2; Name_2 初始地址 34.0 类型string[32],
现在我在ob1中调用fc10如下
CALL "EQ_STRNG"
S1 :=DB1.Name_1 // P#DB1.DBX0.0
S2 :=DB1.Name_2 //P#DB1.DBX34.0
RET_VAL:=M0.0
然后我在wincc中做两个字符串变量,在 WINCC里把这两个变量改变为一样和不一样M0.0都没有变化,是什么原因呢?我查了下fc10的功能帮助,显示在调用fc之前,必须在string数据类型的临时变量的管理字节“maximum string lenght”输入定义的字符串长度,和这个有关系吗?如果有应该怎样改,另外,在step7的变量表里面怎样监视字符串变量呢,请大侠们指点。
最佳答案
1、先回答后面的问题,如果是STEP7 V5.5 以前的版本,只能在变量表中一个字节一个字节的显示,头两个字节用十进制,后边用字符,这样就一目了然了;
2、前面的问题涉及到字符串头两个字节,他们有特定含义,第一个表示您的字符串总长度,例如您的程序中定义的,应该是32,而第二个字节是根据您的需要可以调整,在这可以叫需要比较的有效长度,比如你需要比较32个字符中前8个的异同,那就把它赋值为8,就可以了。如果通过WINCC给过来两个字符串的前8个字符都一样,那么返回值M0.0会置1。
3、收工!
提问者对于答案的评价:
非常感谢,我在wincc里面的字符串把前两个字节也算进去了,所以怎么都不行,太感谢了
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc251445.html