回复:PTI V90 转盘的程序问题

慢慢即漫漫

  • 帖子

    168
  • 精华

    0
  • 被关注

    3

论坛等级:游侠

注册时间:2018-03-14

普通 普通 如何晋级?

发布于 2021-01-06 22:55:48

3楼

展开查看
以下是引用小型自动化系统S7-1200讲师在2021-01-06 10:12:23的发言 >2楼

1、第一张图中的意思是检测enable的上升沿,对#statPosTimes清零;#statPosTimes是实际已执行的重复定位次数,#PosTimes是设定的重复定位次数。

2、#state表示FB执行到哪一步了,即case语句在哪一步执行;#status 表示FB的状态,是否报错,是否第一次调用,通过数值来表示。

3、第二张图片,不是程序,是注释,用来解释检测 FB is disabled,您可以忽略该注释。

4、 #posOffset 是每次定位时的定位距离;#resetPos用于对实际已执行的重复定位次数清零。

5、对于133行,我做个解释,其余的您可以按照我上面所描写的statPosTimes 、statPosTimes 、

#PosTimes、#status 、#posOffset 、#resetPos每个具体含义,重新读一遍程序,我想你肯定会懂得。

133:轴的目标位置=轴的当前位置+定位距离,你可以想想,每次的目标位置不就是当前位置加上定位的距离吗,无论转盘已经完成多少次定位?

6、151和170是可以实现上升沿的,通过扫描时序实现,当#resetPos=1时的那个周期,先扫描151行,,后扫描170行,此时#stateRe'setPosOld还是0,所以,执行151行时即检测到了上升沿。

7:221:#state表示FB执行到哪一步,错误发生时,#state=0表示#FB_STATE_NO_PROCESSING。


谢谢老师。

那如果把170行的程序 插到155和154行的中间,也就是ELSE指令的前面,这个和现在的程序实现的功能有区别吗?




老师还是关于这个绝对定位的问题。我假设:#posTimes=3  、#startPos=1、#posOffset=90

124  假如#instMcMoveAbsolute.Done 没有输出

127 程序不执行

130  条件满足 ,就执行绝对值定位的程序(131-141),然后就完成了转盘旋转90度。然后程序继续往下走,然后就退出了CASE指令。但是#posTimes设置的是3,实际执行了一次,那还剩2次,然后下面的程序就是检查故障和设置故障状态。(这里就完成了一个扫描周期)。假设这时候没有出现任何错误,enable一直处于接通的状态。那就会又执行CASE指令,因为没有故障而且enable一直处于接通的状态,所以#statFBState里面的值就不会改变,还是等于30,那么就又会进行绝对值定位。然后#startPos=1是一直保持的,那绝对值定位不是一下就执行了3次了吗?而且还是不会停顿的那种,就是一下转了270°,而且即使#startPos的信号是点动了一下,接通立马松掉,但是PLC的扫描周期是很快的,所以还是会产生上面所描述的场景,那设置#posTimes的值又有啥意义呀,所以老师这里为什么不用#startPos的上升沿呢?

本人愚昧,问题繁多,多谢老师悉心教导,感激不尽。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

MA 小型自动化系统

共有853条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。