求教一段程序,实在不知道意图

在一个形参快FC中,有一段:
      L     #IN5      //mb1
      L     #IN6      //1
      /I    
      SRD   16
      L     0
      <>I   
      O     #IN3        //图控的手自动选择
      =     #OUT8
这个FC主要是控制PID手自动、手动设定值的,上面参数中注释就是调用FC时给的一组参数。mb1是一个在OB35中每秒循环加1的变量,不会主动清零,监控程序时发现mb1加到最大值后自动变成负最大值后继续。
疑惑的是:mb1一个字节最大也就255,被右移16位那肯定是0啊,为何要与0比较呢?
这点看不懂,希望大家帮忙看看,谢谢!

最佳答案

不必疑惑,了解整数除法后累加器1中是怎样的结果后就不疑惑了。
1、mb1一个字节最大也就255,被右移16位那肯定是0啊?
不一定为0,因为mb1还要与 #IN6 作整数除法。mb1与 #IN6 作整数除法,余数保存在累加器1的高字,商保存在累加器1的低字中。
2、SRD   16:累加器1的32位右移16位,即只保存上述除法的余数。换言之,是在取余数。

提问者对于答案的评价:
感谢两位的回答,我忽略了整数相除后会得到32位的结果,我这里实参mb1还是除以了1,所以余数是0,右移还是0。不清楚编程者在这里的用途。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc229885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐