首页 理论教育 延时中断组织块的应用和效果

延时中断组织块的应用和效果

时间:2023-06-30 理论教育 版权反馈
【摘要】:如果需要高精度的延时,应使用延时中断。打开项目视图中的文件夹“\PLC_1\程序块”,双击其中的“添加新块”,生成名为“硬件中断”的组织块OB40,名为“延时中断”的组织块OB20,以及全局数据块DB1。参数SIGN是调用延时中断OB时OB的启动事件信息中的标识符。图4-55 OB20的程序图4-56 OB1的程序在延时过程中,在I0.1为1状态时调用指令CAN_DINT来取消延时中断过程。令I0.0变为1状态,CPU调用硬件中断组织块OB40,再次启动时间延迟中断的定时。

延时中断组织块的应用和效果

PLC的普通定时器的工作过程与扫描工作方式有关,其定时精度较差。如果需要高精度的延时,应使用延时中断。在指令SRT_DINT的EN使能输入的上升沿,启动延时过程(见图4-54)。该指令的延时时间为1~60000ms,精度为1ms。延时时间到时触发延时中断,调用指定的延时中断组织块。

1.硬件组态

生成一个名为“延时中断例程”的新项目(见随书光盘中的同名例程),CPU的型号为CPU 1214C。打开项目视图中的文件夹“\PLC_1\程序块”,双击其中的“添加新块”,生成名为“硬件中断”的组织块OB40,名为“延时中断”的组织块OB20,以及全局数据块DB1。

选中设备视图中的CPU,再选中巡视窗口的“属性>常规”选项卡左边的“数字量输入”文件夹中的通道0(即I0.0,见图4-46),用复选框启用上升沿中断功能。单击选择框“硬件中断”右边的978-7-111-58719-4-Chapter04-75.jpg按钮,用下拉式列表将OB40指定给I0.0的上升沿中断事件。出现该中断事件时调用OB40。

2.硬件中断组织块程序设计

在I0.0的上升沿触发硬件中断,CPU调用OB40,在OB40中调用指令SRT_DINT启动延时中断的延时(见图4-54),延时时间为10s。延时时间到时调用参数OB_RN指定的延时中断组织块OB20。参数SIGN是调用延时中断OB时OB的启动事件信息中的标识符。RET_VAL是指令执行的状态代码。RET1和RET2是数据类型为Int的OB40的临时局部变量

978-7-111-58719-4-Chapter04-76.jpg

图4-54 OB40的程序

为了保存读取的定时开始和定时结束时的日期时间值,在DB1中生成数据类型为DTL的变量DT1和DT2。在OB40中调用“读取本地时间”指令RD_LOC_T,读取启动10s延时的实时时间,用DB1中的变量DT1保存。

3.时间延迟中断组织块程序设计

在I0.0上升沿调用的OB40中启动时间延迟,延时时间到时调用时间延迟组织块OB20。在OB20中调用RD_LOC_T指令(见图4-55),读取10s延时结束的实时时间,用DB1中的变量DT2保存。同时将Q0.4:P立即置位。

4.OB1的程序设计

在OB1中调用指令QRY_DINT来查询延时中断的状态字STATUS(见图4-56),查询的结果用MW8保存,其低字节为MB9。OB_NR的实参是OB20的编号。

978-7-111-58719-4-Chapter04-77.jpg(www.xing528.com)

图4-55 OB20的程序

978-7-111-58719-4-Chapter04-78.jpg

图4-56 OB1的程序

在延时过程中,在I0.1为1状态时调用指令CAN_DINT来取消延时中断过程。在I0.2为1状态时复位Q0.4。

5.仿真实验

打开仿真软件S7-PLCSIM,下载所有的块。打开SIM表1,生成IB0、QB0和MB9的SIM表条目(见图4-57)。仿真PLC切换到RUN模式时,M9.4马上变为1状态,表示OB20已经下载到CPU。

978-7-111-58719-4-Chapter04-79.jpg

图4-57 S7-PLCSIM的SIM表1

打开DB1,单击工具栏上的978-7-111-58719-4-Chapter04-80.jpg按钮,启动监视功能(见图4-58)。单击SIM表中I0.0对应的小方框,在I0.0的上升沿,CPU调用OB40,M9.2变为1状态,表示正在执行SRT_DINT启动的时间延时。DB1中的DT1显示出在OB40中读取的DTL格式的时间值。

978-7-111-58719-4-Chapter04-81.jpg

图4-58 数据块中的日期时间值

定时时间到时,M9.2变为0状态,表示定时结束。CPU调用OB20,DB1中的DT2显示出在OB20中读取的DTL格式的时间值(见图4-58),Q0.4被置位。可以看到在指令SRT_DINT启动定时和定时时间到两次读取的实时时间之差很接近10s。多次试验发现误差小于1ms,说明定时精度是相当高的。

令I0.2为1,可以将Q0.4复位(见图4-56)。令I0.0变为1状态,CPU调用硬件中断组织块OB40,再次启动时间延迟中断的定时。在定时期间令I0.1为1状态,执行指令CAN_DINT(见图4-56),时间延迟被取消,M9.2变为0状态。10s的延迟时间到的时候,不会调用OB20。Q0.4不会变为1状态,DB1中的DT2也不会显示出新读取的时间值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈