| 作者 | 主题 |
|---|---|
|
伊默 至圣
经验值:19231 发帖数:4256 精华帖:118 |
楼主
主题:小指令,大影响
做配方处理的程序,遇到两个有意思的事,跟大家分享。
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
|