我一直以为,当我组态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了。
--------需要几个参数: