小指令,大影响

已锁定

伊默

西门子1847工业学习平台

  • 帖子

    4266
  • 精华

    119
  • 被关注

    204

论坛等级:至圣

注册时间:2003-10-24

白金 白金 如何晋级?

小指令,大影响

5189

20

2011-09-19 11:31:15

star star
做配方处理的程序,遇到两个有意思的事,跟大家分享。
1、做循环处理后,判断数据是否为0,为零则跳转。
我开始写的:
L #CYC_NUM;
+ -1;
JZ ZERO;
结果当#CYC_NUM=1时,动作不正常。
改程序为
L #CYC_NUM;
DEC 1;
JZ ZERO;
程序动作还是达不到我的期望……

回去翻STL编程手册, 首先JZ指令是没有问题的,即当累加器1的内容为0时,跳转。 问题是,+ 和 DEC指令均不会改变CC0和CC1的状态, 只有+I指令(-I)才会改变CC0和CC1,从而可以影响到JZ指令的执行。程序改为
L #CYC_NUM;
L 1;
-I ;
JZ ZERO;
动作正常。 总结, 本来是为了节约程序空间,省写一条语句,结果出问题了,呵呵。

2、做配方程序时,开始使用FB块。 由于使用了AR1和AR2,程序始终不正常。 后来才想起来以前看过西门子标准库里的程序,都会对AR2和AR1暂存, 上网查资料,发现一些特殊的数据访问会改变AR2的值……最后改用FC+全局DB。

总结,AR2是个比较特殊的东西,目前还没有完全搞清楚它的使用原则。 希望大家都来讨论讨论。
小指令,大影响 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54082条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。