一个将2#0000_0001左移n位的程序。
使用梯形图,放置一个SHL_B指令,参数如下:
IN ----1
N ----AC3
OUT ----AC3
从逻辑上讲,应该没有问题,而且也能编译过去,但是就是得不到正确的结果。改变一下参数N就可以了,如下:
IN ----1
N ----VB0(注意:只有这里改变了)
OUT ----AC3
把梯形图转成STL,上边一句对应的STL为:
MOVB 1, AC3
SLB AC3, AC3
变成了将1左移一位,能得出正确的结果才怪(除非巧合)。
一直认为s7-200的梯形图还可以,觉得它可以完成所有的功能,所以一直懒得学STL,看来真是错了,还得好好学习STL。希望其他人不要犯同样的错误。