在一个形参快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