签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
最近的一个项目用到字符串比较指令,调试时总是出问题,折腾了两天,才算摸索出问题所在。字符串相等指令我以前是经常使用的,还没有出现什么难点这次奇了怪了,就是不能按照预想执行,想着可能是该指令长时间没用过给忘了,好吧那就单独试这个指令,结果还是老样子(在加密的程序块试的),没辙就瞎捣鼓,偶然发现该指令可以用了,这就好办了,那好就慢慢找原因吧,找来找去问题是在程序块加密上。
字符串指令是不常用的指令 这里先说一点Smart 的字符串的基本知识:STRING 数据类型的第一个字节定义字符串的长度,即字符字节数,接下来的字节依次存放单个字符,即一个字节存放一个字符。
字符串比较指令:可以在两个变量或一个常数和一个变量之间进行比较。 如果比较中使用了常数,则它必须为顶部参数(LAD 触点/ FBD 功能框)或第一参数 (STL)。
我的程序的问题是在一个字符串常数和一个字符变量比较时出现的。字符串变量与字符串变量比较没问题。参照上面的指令帮助,下面是程序块(Main)没有加密的运行结果:
M0.0 为 1 M0.1 为 1
程序逻辑部分没有改变,仅将主程序块进行加密后的结果:
测试结果:程序块加密会影响字符串比较指令,第一个数常数时结果会出错。
测试用的软件 :
测试用的硬件:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1527485&b_id=64&s_id=0&num=17
2.3版本不知道是不是有问题,以前遇到过2.3版本与PLC通讯无法连接,换成2.2就正常。楼主可以用2.2再试一次
这个问题有点严重。看看有plc的都试一下。
有硬件的做下测试,看是个例还是普遍的问题,不知道是否对其他指令也会有影响。这可不是个小问题,也是编程人员容易忽略的地方。我用的两个PLC都试过,现象相同。
清空plc,三项要同时清空。
编写程序一条:比较触点,输出Q。
编写数据块:一个字符串。
加密程序块。
下载。
检查结果。
如果确实出错了。直接发邮件到西门子,直接提请官方介入了解。
这是 为民 办的一件事实好事啊。
字符串比较指令可以用于软件与硬件的绑定。做一些逻辑处理让程序只在指定的PLC上运行正常,防止拷贝有效的保护自己开发的程序。设备供应商一般应该将源程序提给客户,随着MES系统推广与慢慢普及,不提供源程序几乎是不可能的,这时就涉及的公司开发的核心代码被复制传播的风险,必须采取一些有效的措施。这时软件硬件绑定是个不错的选择,源程序涉密部分加密客户还是能理解,能接受的。
核心代码并不是使用什么高级语言,特别算法,应该是设备运行跟踪总结出来的一些逻辑,或最优参数等。
确实如楼主所说的一样。
我试验使用的是V2.2, ST30. 不设置保护,字符串比较指令执行正常。 设置保护,字符串比较指令不执行了。
由于国庆节放假,家里只有V2.2软件, ST30(固件V2.4),反复试验多次,就是这样。 等假期结束,使用V2.4软件试试看。 我们这里没有安装V2.3。
你这个发现 亮了!!!!!
奇了个怪了。
真是这样。
我在后面加了两条带常数的比较,都也一样比较不通过。
好像加密了就对带常数的比较就有影响。
软件2.3,固件2.3阵亡了。SR30
软件2.3,固件2.4阵亡了。ST60
这是18年12月的事情???不知道2.4解决没。我也没用2.4软件。
软件v2.2 固件v2.4,程序保护仅影响字符串比较指令,其它比较指令不受影响。
大家说这是plc方面问题还是编程软件方面问题?应该不会是用户程序问题吧?
怎样才能令官方出来说两句?
估计官方正在升级软件。
楼主能发现这个BUG,也确实厉害!!
其他指令有没有这样的问题呢?
我用最新V2.4版本软件和固件测试了下,主程序加密或者子程序加密后仍会出现楼主测试的BUG,看来问题很严重,这么久了官方还不修复这个问题,希望官方人员看到此帖给个解释。
加密谁就谁出问题。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录