高速计数模块FM350-1一个深入问题的探讨【请教】

已锁定

段段尔

  • 帖子

    34
  • 精华

    0
  • 被关注

    2

论坛等级:游侠

注册时间:2003-06-06

普通 普通 如何晋级?

高速计数模块FM350-1一个深入问题的探讨【请教】

3957

27

2018-02-07 04:19:12

目前在做一个关于定长切割的问题,使用FM350-1遇到了一个很奇怪的问题,特向大家请教,谢谢!

工艺简述:两个辊子,一个主动辊,一个跟随辊,主动辊送料,跟随辊每转一圈切割一次,要求每次切割的材料长度一致。跟随辊旁边装有一个切点检测开关,每转一圈到切点是能够给出一个电平信号,这个检测开关精度能满足要求。

控制系统硬件构成:cpu314,两个FM350-1分别检测主动辊和跟随辊的脉冲数值。

控制过程:设置OB35为3ms的控制周期,每3ms通过FM350分别读取一次主动辊和跟随辊的脉冲值,并把读到的脉冲值和过切点时的脉冲值做差,进行跟随控制,从而尽量保证每当主动辊的脉冲差数值到达一个预定的值时【对应设定长度】,跟随辊也刚好转过一周到达切点而切下。

     每当过切点时,使用切点检测开关信号分为两路,分别作为FM350-1的DI-start信号进行锁存,得到在切下的那一时刻的脉冲计数值,并以此值作为基准。而通过前后两刀时的锁存的主动辊的脉冲值得差可以计算得到这一次的实际切长值。


FM350-1使用中出现的问题:

     问题出现在锁存值和通过调用FC2读取的脉冲值之间出现无法解释的差异值,具体如下:

     第一次过切点时的数据:

     主动辊的锁存值:77197892

     主动辊的读取值:77197918  

     可以看到,锁存值比通过FC2读取的计数值略小一些,说明切下的那一刻比plc通过FC2读取脉冲的时刻要略早一点。

     跟随辊的锁存值:272843804

     跟随辊的读取值:272843930

     同样,锁存值比读取值略小一些。

     因为锁存值是通过硬件同时触发的,认为是同一时刻分别在两个FM350-1中锁存的。

     而读取值是在OB35中通过连续调用两个FC2分别读取两个辊子编码器的值,因为一个FC2块执行所需的时间极短,可以忽略不计,因此也可以认为是在同一时刻读取的。【即便有点差异,经过核算不影响】

     问题是:那么可以看出对于这两个FM350-1模块,同一时刻各自锁存了一个值,又在同一时刻读取了一个值,那么这两个模块在这个相同的时间内应该的到的脉冲差值基本一致。通过核查在切点前后每3ms主动辊和跟随辊经过的脉冲值,都很稳定,因此在这样的情况下,脉冲差值基本一致的推断应该成立。

     但是问题就出现在这里:

     主动辊的脉冲差值:77197918-77197892=26

     跟随辊的脉冲差值:272843930-272843804=126

     根据实际情况,还要把跟随辊的脉冲换算为和主动辊同一基准下才能进行比较,此换算系数为0.283107.因此,跟随辊的脉冲差值换算后为:

     126*0.283107=35.67

     显然,26和35.67差了9个脉冲,这和上面的推断矛盾了!!!

   

     这里,我只列出这一组数据,类似的数据经过测试,有很多都是这样。

     而且,这两个差值在前后两刀切下时,有时差的量是几乎相同的。比如,下一刀切下时,结果还是主动辊的脉冲差值比跟随辊少9个脉冲,印象中这种情况略多一些。还有时,前后两刀的这两个差值是不同的。而且差值的具体数值也不固定,有时是5,有时是6,等等。

     这个问题,一直困扰而无法解决。

     经过仔细分析,并致电西门子技术支持,但是目前还没有弄清楚是什么原因,怎么解决?

     首先,我觉得两个FM350-1在同时的硬件锁存信号作用下的锁存值应该是在同一时刻的,因为锁存值是在FM350-1内部执行的操作的,而这个值只要没有发生变化,那么随时通过FC2读取这个值都行。

     基于上面的原因,那么造成这种现象的原因就只有可能是使用FC2块分别读取的两个FM350-1模块的脉冲值实际上并不是真正在同一时刻的值。

     查阅FM350的手册可知,“CNT_CTL1函数在此DB和FM之间周期性地传送数据”,那么就是说每个FC2功能块读取的计数值实际上是其使用的DB块和FM350-1周期性的交换数据而得到的。

      因此,即便主动辊和跟随辊使用的各自的FM350-1模块是相同的,其在DB块和FM模块之间传送的周期会不会有些微小的差异,而这个时间的差异不断积累,结果导致在某一时刻分别去读这个模块的当前脉冲值时,一个可能是刚刚传送完成的数据,而另一个则还是上次传送的数据,新的数据还没有传送过来,因此造成了差异。也就是说,即便是同时去读,但是得到的两个模块的所谓的当前脉冲实际上并不是真正的相同时刻的脉冲值。

      基于这样的想法,经过西门子技术支持的帮助,不适用FC块而使用外部I/O的方式,就是使用PIW,PQW等读直接读取或者写入参数,经过测试,问题依然存在。

      头痛啊..........................

 

      到底怎么回事,该怎么解决呢?

      问题的本质就是:怎么样使得在稳速的情况下,确保两个FM350-1模块在同一时刻读取的脉冲值确实是实际中同一时刻产生的?怎么确保在同一时刻锁存的在两个FM350模块中的锁存值确实是实际中同一时刻产生的脉冲值?

      之前认为,对于两个FM350模块,在外部硬件同时触发得到的锁存值应该是实际中真正同一时刻的脉冲数据,这个会不会有问题?


      限于能力,水平不够,感觉难于解决这个问题,因此请教于大家,希望有高手指点迷津,十分感谢!在此先行谢过!!!

      并提前祝大家新年快乐!!!

    

高速计数模块FM350-1一个深入问题的探讨【请教】 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54777条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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