最近的一个项目用到字符串比较指令,调试时总是出问题,折腾了两天,才算摸索出问题所在。字符串相等指令我以前是经常使用的,还没有出现什么难点这次奇了怪了,就是不能按照预想执行,想着可能是该指令长时间没用过给忘了,好吧那就单独试这个指令,结果还是老样子(在加密的程序块试的),没辙就瞎捣鼓,偶然发现该指令可以用了,这就好办了,那好就慢慢找原因吧,找来找去问题是在程序块加密上。
字符串指令是不常用的指令 这里先说一点Smart 的字符串的基本知识:STRING 数据类型的第一个字节定义字符串的长度,即字符字节数,接下来的字节依次存放单个字符,即一个字节存放一个字符。
字符串比较指令:可以在两个变量或一个常数和一个变量之间进行比较。 如果比较中使用了常数,则它必须为顶部参数(LAD 触点/ FBD 功能框)或第一参数
(STL)。
我的程序的问题是在一个字符串常数和一个字符变量比较时出现的。字符串变量与字符串变量比较没问题。参照上面的指令帮助,下面是程序块(Main)没有加密的运行结果:
M0.0 为 1 M0.1 为 1
程序逻辑部分没有改变,仅将主程序块进行加密后的结果:
M0.0 为 1 M0.1 为 1
测试结果:程序块加密会影响字符串比较指令,第一个数常数时结果会出错。
测试用的软件 :
测试用的硬件: