延时中断延时精度的验证 PLC的普通定时器的工作与扫描工作方式有关,其定时精度较差。
为了检查定时器的定时精度,在接通延时定时器输入信号的上升沿和定时器输出位的上升沿,分别调用SFC 1读取CPU的日期和时间,用IEC功能FC 8从其中提取实时时间(TIME_OF_DAY)。设置时间预置值分别为5s和50s,扫描循环时间为10ms。作者作了多次实验,发现定时器的定时误差为1~9ms。
如果需要高精度的延时,应使用延时中断OB,延时精度为1ms。
在I0.0的上升沿触发硬件中断,CPU调用OB40,在OB40中调用SFC 32“SRT_DINT”启动延时中断,延时时间为10s。从LD12开始的8B临时局部变量是调用OB40的日期时间值,将其中的后4个字节LD16保存到MD20。下面是OB40的程序。
CALL "SRT_DINT"
OB_NR :=20
DTIME :=T#10S
SIGN :=MW10
RET_VAL:=MW12
L LD 16
T MD 20
10s后延时时间到,CPU调用SFC 32指定的OB20。在OB20中用MOVE指令保存调用OB20的日期时间值的后4个字节。同时将Q4.0置位,并通过PQB4立即输出。下面是OB20的程序。
L LD 16
T MD 24
SET
S Q 4.0
L QB 4
T PQB 4
可以用PLCSIM对延时中断仿真。下图的变量表的MD20中是调用OB40的时间(25分9秒643毫秒),最后1位为星期的代码,5表示星期4。在OB20中保存在MD24的实时时间值为25分19秒643毫秒,与OB40中保存在MD20的时间值相减,可知延时时间刚好是10.000s,定时精度是相当高的。

可以在OB1中调用SFC 34“QRY_DINT”来查询延时中断的状态,调用SFC 33“CAN_DINT”来取消延时中断过程。