首页 理论教育 相关知识:CPU数字量输入中断及硬件OB生成与执行

相关知识:CPU数字量输入中断及硬件OB生成与执行

时间:2023-06-24 理论教育 版权反馈
【摘要】:暖启动将清除延时中断OB 的所有启动事件。出现CPU 内置的数字量输入的上升沿、下降沿或高速计数器事件时,立即中止当前正在执行的程序,改为执行对应的硬件中断OB。最多可以生成50 个硬件OB,在硬件组态时定义中断事件,硬件中断OB 的编号为40 ~47 或大于等于123。如果在执行硬件中断OB 期间,同一个中断事件再次发生,则新发生的中断事件丢失。

相关知识:CPU数字量输入中断及硬件OB生成与执行

1.延时中断组织块

PLC 的普通定时器的工作过程与扫描工作方式有关,其定时精度较差。如果需要高精度的延时,应使用延时中断(Time delay interrupt)。在指令SRT_DINT 的EN 使能输入的上升沿,启动延时过程。用该指令的参数DTIME (1 ~60 000 ms)来设置延时时间,如图6-55所示。在启动延时中断后,延时一定的时间再执行时间延时OB。在时间延时中断OB 中配合使用计数器,可以得到比60 s更长的延时时间。用参数OB_RN 来指定延时时间到时调用的OB 编号,S7-1200 未使用参数SIGN,可以设置任意的值。REN_VAL 是指令执行的状态代码。

图6-55 SRT_DINT 和CAN_DINT 指令

延时中断用完后,若不再需要使用延时中断,则可使用CAN_DINT 指令来取消已启动的延时中断OB,还可以在超出所组态的延时时间之后取消调用待执行的延时中断OB。在OB_NR 参数中,可以指定将取消调用的组织块编号。

循环中断和延时中断组织块的个数之和最多允许4 个,延时中断OB 的编号应为20 ~23或大于等于123。要使用延时中断OB,需要调用指令SRT_DINT,且将延时中断OB 作为用户程序的一部分下载到CPU。只有在CPU 处于“RUN”模式时,才会执行延时中断OB。暖启动将清除延时中断OB 的所有启动事件。

2.硬件中断组织块

1)硬件中断事件与硬件中断组织块

硬件中断(Hardware interrupt)组织块用来处理需要快速响应的过程事件。出现CPU 内置的数字量输入的上升沿、下降沿或高速计数器事件时,立即中止当前正在执行的程序,改为执行对应的硬件中断OB。

最多可以生成50 个硬件OB,在硬件组态时定义中断事件,硬件中断OB 的编号为40 ~47 或大于等于123。S7-1200 支持下列中断事件:

(1)上升沿事件,是CPU 内置的数字量输入和4 点信号板上的数字量输入由OFF 变为ON 时,产生的上升沿事件。

(2)下降沿事件,是上述数字量由ON 变为OFF 时,产生的下降沿事件。

(3)高速计数器1 ~6 的实际计数值等于设置值(CV =PV)。

(4)高速计数器1 ~6 的方向改变,计数值由增大变为减小,或由减小变为增大。

(5)高速计数器1 ~6 的外部复位,某些HSC 的数字量外部复位输入由OFF 变为ON时,将计数值复位为0。

如果在执行硬件中断OB 期间,同一个中断事件再次发生,则新发生的中断事件丢失。如果一个中断事件发生,在执行该中断OB 期间,又发生多个不同的中断事件,则新发生的中断事件进入排队,等第一个中断OB 执行完毕后依次执行。

对硬件中断事件处理的方法:给一个事件指定一个硬件中断OB,这种方法最为简单方便,应优先采用;多个硬件中断OB 分时处理一个硬件中断事件,需要用DETACH 指令取消原有的OB 与事件的连接,用ATTACH 指令将一个新的硬件中断OB 分配给中断事件。

2)生成硬件中断组织块

打开博途编程软件,在PORTAL 视图中选择“创建新项目”,输入项目名称“硬件中断例子”,选择保存路径后单击“创建”按钮,创建项目完成,然后进行项目的硬件组态。打开项目视图中的文件夹“ \ PLC_1 \ 程序块”,双击其中的“添加新块”,单击打开的对话框中的“组织块”按钮,选中列表中的“Hardware interrupt”,生成一个硬件中断组织块,OB 的编号为40,将块的名称改为“硬件中断1”,如图6-56所示。单击窗口下方的“确定”按钮,OB 块被自动生成和打开,用同样的方法生成名为“硬件中断2”的OB41。

图6-56 生成的硬件中断组织块OB40

3)组态硬件中断事件(www.xing528.com)

用鼠标双击项目树的文件夹“PLC_1”中的“设备组态”,打开设备视图,首先选中CPU,再选中巡视窗口的“属性→常规”选项卡左边的“数字量输入”的通道0,即I0.0,如图6-57所示,用复选框启用上升沿检测功能。单击选择框“硬件中断”右边的按钮,用下拉式列表将OB40 (硬件中断1)指定给I0.0 的上升沿中断事件,出现该中断事件时将调用OB40。用同样的方法,用复选框启用通道1 的下降沿中断,并将OB41 指定给该中断事件。如果选中OB 列表中的“—”,则表示没有OB 连接到中断事件。选中巡视窗口的“属性→常规→系统和时钟存储器”,启用系统存储器字节MB1,其中M1.2 的功能始终为1(高电平)。

图6-57 组态硬件中断组织块OB40

4)编写程序与仿真

在OB40 和OB41 中,分别用M1.2 一直闭合的常开触点将Q0.0 置位和复位,如图6-58、图6-59所示。

图6-58 OB40 程序

图6-59 OB41 程序

打开仿真软件S7-PLC SIM,下载所有的块,仿真PLC 切换到RUN 模式。打开SIM 表格_1,生成IB0 和QB0 的SIM 条目。两次单击I0.0 对应的小方框,方框中出现钩以后再单击去掉,在I0.0 的上升沿,CPU 调用QB40,将Q0.0 置位为1,结果如图6-60所示。两次单击I0.1 对应的小方框,当方框中的钩去掉时(I0.1 的下降沿),CPU 调用OB41,将Q0.0 复位为0。

图6-60 SIM 表格_1 的仿真

3.时钟功能指令

系统时间是格林尼治标准时间,本地时间是根据当地时区设置的本地标准时间。我国的本地时间(北京时间)比系统时间快8 个小时,可以用CPU 的巡视窗口设置时区。

“WR_SYS_T”是“设置时间”指令,用于设置CPU 时间的日期和系统时间,将输入IN 的DTL 值写入PLC 的实时时钟。“读取时间”指令“RD__SYS_T”将读取的PLC 时钟当前日期和系统时间保存在输出OUT 中,数据类型为DTL。输出参数“RET_VAL”是返回指令执行的状态信息,数据类型为Int。

“写入本地时间”指令“WR_LOC_ T”将参数LOCTIME 输入的日期时间作为本地时间写入时钟。参数DST 与夏令时有关,我国不使用夏令时。“读取本地时间”指令“RD_LOC_ T”的输出OUT 提供数据类型为DTL 的PLC 中的当地时期和本地时间。为了读取到正确的时间,在组态CPU 的属性时,应设置实时时间为北京时间。

“设置时区”指令“SET_TIMEZONE”是用于设置本地时区和夏令时/标准时间切换的参数。“运行时间定时器”指令“RTM”用于对CPU 的32 位运行小时计数器的设置、启动、停止和读取操作。

举例:生成一个全局数据块,在其中设置4 个数据类型为DTL 的变量DT1、DT2、DT3、DT4。将DT1 的时间数据写入本地时间,读取系统时间到DT2 中,读取本地时间到DT3 中。用“读取本地时间”指令控制路灯的定时接通和断开,20:00 开灯,06:00 关灯。

其程序如图6-61所示。程序段1:“写时间”状态为1 时,指令WR_LOC_T 将DT1 变量的日期时间数据写入本地时间。程序段2:“读时间”状态为1 时,指令RS_SYS_ T 读取系统时间到DT2 变量中,同时用RD_LOC_ T 指令把本地时间读到DT3 变量中,可以启用仿真来比较同时读出的系统时间DT2 和本地时间DT3 的时间。程序段3:用RD_LOC_ T 指令读取本地时间到数据类型为DTL 的局部变量DT4 中,其中的HOUR 是小时值,其变量名称为DT4.HOUR。用Q0.0 来控制路灯,20:00 ~0:00 时上面的比较触点接通,0:00 ~6:00 时下面的比较触点接通,路灯亮。

图6-61 时钟功能指令例子程序

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

我要反馈