技术论坛

 小指令,大影响

返回主题列表
作者 主题
伊默
至圣

经验值:19231
发帖数:4256
精华帖:118
楼主    2011-09-19 11:31:15
主题:小指令,大影响 精华帖 
做配方处理的程序,遇到两个有意思的事,跟大家分享。
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是个比较特殊的东西,目前还没有完全搞清楚它的使用原则。 希望大家都来讨论讨论。
I can do it
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。