OB20是延时硬件中断,它的执行是不是不经过过程映像,也就是没有扫描周期的时间,但在OB35里用定时器,它的时间也是固定的。还有如果硬件组态里设置OB20的过程映像为ob1PI那不是就和用定时器一样了吗?
最佳答案
S7-300 的定时器时基与扫描周期的关系:
.S7系统的IEC定时器(SFB3,SFB4,SFB5)支持最小到1ms的定时时间分辨率设定,但如需要定时器时间精确到1ms,定时器是难以实现的, 因为定时器的精度受程序扫描影响,除非程序扫描周期小于等于1ms。
对于精确到1ms的定时响应编程,可以通过SFC32延时触发OB20,将需要延时的操作编在OB20里面。
. 普通定时器的工作与扫描工作方式有关,其定时精度受到不断变化的循环周期的影响。为了获得高精度可调用延时中断OB块与系统FC块来实现。
比如设定脉冲定时器为10MS,但扫描周期为100ms,当定时器被启用时是10ms后他的输出位Q变化,还是100ms后输出位Q才变化?",这取决于定时器到时后采用何种指令。
如定时器到时后用输出指令 = Q0.0,则本周期结束时输出,该指令与扫描周期及I/Q映像区有关.
如定时器到时后用立即输出指令 L QB0 T PQB0,则立即输出,与扫描周期及I/Q映像区无关。但注意对于P通道只能以字节、字或双字来存取,不能以位来操作。
OB20的用法:
延时中断组织块(OB20)
每一次OB20 的程序执行,必须调用SFC32 (SRT_DINT),延迟时间在SFC 的输入参数中给定,同时给定OB 号,调用SFC32 且设定的时间延迟到后,执行OB 程序,如果再次执行OB 程序,需要再次调用SFC32。如果在延迟时间未到之前想取消程序的执行,可以调用SFC33(CAN_DINT),同时可以使用SFC34 (QRY_DINT)取得延迟中断的状态,具体SFC32/33/34 的调用方法可参考在线帮助.
见《组织块使用说明》其中有详解,下载:
http://218.93.112.166/ec/C23/dl/xxzl/%E7%BB%84%E7%BB%87%E5%9D%97%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.pdf
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc311359.html