QQ登录

只需一步,快速开始

FM350-1高计及OB40中断的关系

[ 复制链接 ]
FM350-1高计及OB40中断的关系

我一直以为,当我组态FM350-1为硬件中断,且中断方式选择为“达到比较值1的上升沿”时,OB40就应该在当计数值达到比较值的时候执行一次。

比如,我如果设定比较值为1000,那当计数值为1000的瞬间,OB40执行。

而且我的编程思路也一直是这样的。

但是,前几天在一个现场处理问题时,出于工艺的要求,我在OB40中读取当前实际计数值,却发现实际情况并不是我理解的那样:

    比如,我的比较值是:355348,但是在OB40中读到的实际值却小于这个值。我连续观测了十次,数值如下:355211、355220,355210、355324、355217、355328、355128、355070、355253、355230.

从这组数据可以看出实际值远小于比较值时,OB40就已经开始执行了。


是我的理解错了?还是这是FM350-1的一个BUG?或者,压根就是一个误导?


-------呵呵,要相信西门子,你在OB40里读到的数是从哪里读的?DB?外设地址?


-------是DB40.DBD34。

DB40是分配给高计的背景数据块。


--------读写是有偏差的,但是中断是正常调用的,在中断中可以去操作上一次的设定值。如果有条件,你可以用硬件锁存的方式做个记录,你就可以发现区别了!


-----我认可偏差。

我的分析是在OB40中读出的实际值应该比比较值稍大一点,因为考虑到读写周期的影响。

但现在的问题是实际值比比较值小,而且小的比较多。

或者,如果我在OB40中读外设地址的话,可能会更接近中断的概念。但没有机会试。

如果读外设地址两者接近的话,那说明FM350的背景数据块更新还是受读写周期影响的,滞后于实时数据。

我曾经以为这个数据块是实时更新的。


--------是不是PLC反映慢呀


------不是慢。

如果慢的话,我读出来的实际值应该比较大才对。


-----老兵,需要查一下当前生效的中断比较值,是不是355348?


--------这个我是确认的,因为只有两个比较值。另一个比这个比较值大好多,接近42K了。


--------需要几个参数:

  •   编码器的线数
  • 编码器的转速
  • OB1扫描周期

---------要明白,DB40是在什么时候被刷新的,OB40中断时是否有再刷新DB40?


--------兵哥,锁存读数是最安全的,但是需要处理DI信号的速度,所以你我曾经看过的图纸,那个DI会做一个处理!我试过用OB40读数,OB1读数,还有就是锁存读数,有差别!

FM350-1高计及OB40中断的关系

FM350-1高计及OB40中断的关系

FM350-1高计及OB40中断的关系

FM350-1高计及OB40中断的关系


---------借兵哥的话题,我也提一个比较奇怪的现象,请各位大侠帮助分析分析。

我是用450-1,两个通道各带一只增量编码器,各自用SW_GATE,我在OB40中利用#OB40_POINT_ADDR来判断是哪一个通道产生的中断,来区别处理。根据模板和通道的地址,这个#OB40_POINT_ADDR我认为是每个通道对应一个唯一的值,例如两个通道分别是L#268435456,和L#4096,但是实际在运行中出现OB40被调用,但是#OB40_POINT_ADDR不等于以上两个值的情况。


我实验了很多次,不是经常出现,不理解,不明白。

请各位大侠看一下!


--------编码器是1024线的,组态的是四倍频。

转速在900RPM左右。

CPU的扫描周期在3-7ms。


另外,我还真没关注过DB40什么时候刷新的。


--------我用OB1与OB40计数没有差别,一样一样的,呵呵。

应该是与背景数据块的刷新周期有关






回复

使用道具 举报

快速回复 返回列表 客服中心 搜索