长沙工控帮教育科技有限公司整理 Copy
10 用于处理延时中断的SFC
10.1
处理延时中断
定义
调用SFC32 “SRT_DINT”后,操作系统将在指定的延迟时间过去后生成一个中断,
也就是说,调用所选择的延时中断OB。此中断被称为延时中断。此中断称为延时 中断。
调用条件
必须满足下列条件,操作系统才能调用延时中断OB:
• 必须通过SFC32 “SRT_DINT”启动延时中断OB。
• 不得使用STEP 7取消选择延时中断OB。
• 延时中断OB必须存在于CPU中。
SFC32到SFC34的用途
以下各部分所介绍的系统功能SFC32到SFC34的用途如下:
• 启动延时中断(SFC32 “SRT_DINT”)
• 取消延时中断(SFC33 “CAN_DINT”)
• 查询日时钟中断(SFC34 “QRY_DINT”)。
长沙工控帮教育科技有限公司整理
状况与影响...
下表列出了一些不同状况,并说明了它们对延时中断的影响。
如果... 且... 那么...
延时中断被启动
(通过调用SFC32 “SRT_DINT”)。
该延时中断已经启动。 将重写延迟时间,并重新启动延时 中断。
在调用时延时中断OB不存在。 操作系统将生成优先级出错 (调用OB85)。
如果OB85不存在,CPU将切换到 STOP模式。
CPU切换为RUN模式前,已在 启动OB中启动中断且延迟时 间已过。
将延迟对延时中断OB的调用,
直到CPU处于RUN模式。
延迟时间已过。 先前启动的延时中断OB 仍在执行。
操作系统将生成时间出错 (调用OB80)。如果OB80 不存在,CPU将切换到 STOP模式。
暖重启和冷重启
暖重启或冷重启期间,用户程序中使用SFC指定的所有延时中断设置均将被清除。
在启动OB中启动
可以在启动OB中启动延时中断。要调用延时中断OB,必须满足下列两个条件:
• 延迟时间必须已过。
• CPU必须处于RUN模式。
如果延迟时间已过而CPU未处于RUN模式,则延时中断OB调用将被延迟,直到CPU 处于RUN模式。然后,将在执行OB1中的第一条指令前调用延时中断OB。
长沙工控帮教育科技有限公司整理
10.2
使用SFC32 “SRT_DINT”启动延时中断
描述
通过SFC32 “SRT_DINT” (启动延时中断),可以在延迟时间过去(参数DTIME)后立即 启动调用延时中断组织块的延时中断。
使用SIGN参数,可以输入用于标识延时中断开始的标识符。执行指定的OB时,
DTIME和SIGN值将再次显示在该OB的启动事件信息中。
参数 声明 数据类型 存储区域 描述 OB_NR INPUT INT I、Q、M、D、L、
常数
将在延时后启动的OB的编号 (OB20到OB23)。
DTIME INPUT TIME I、Q、M、D、L、
常数
延时值(1到60000ms)
要实现更长时间的延时,例如,可以通过在 延时中断OB中使用计数器来实现。
SIGN INPUT WORD I、Q、M、D、L、
常数
调用延时中断OB时将显示在启动事件 信息中的标识符。
RET_VAL OUTPUT INT I、Q、M、D、L 如果在系统功能处于激活状态时出错,
则RET_VAL的实际参数将包含出错代码。
精度
只要没有中断事件延迟该调用,调用SFC32 “SRT_DINT”和启动延时中断OB之间的 时间最多比所选时间少一毫秒。
8xyy 常规出错信息,请参见使用输出参数RET_VAL评估
出错。
长沙工控帮教育科技有限公司整理
10.3
使用SFC34 “QRY_DINT”查询日时钟中断
描述
通过SFC34 “QRY_DINT” (查询日时钟中断),可以查询日时钟中断OB的状态。
延时中断由组织块OB20到OB23管理。
参数 声明 数据类型 存储区域 描述 OB_NR INPUT INT I、Q、M、D、L、
常数
将查询其STATUS的OB的编号 (OB20到OB23)。
RET_VAL OUTPUT INT I、Q、M、D、L 如果在处理功能期间出错,则RET_VAL 的实际参数 将包含出错代码。
STATUS OUTPUT WORD I、Q、M、D、L 有关延时中断的状态,参见下表。
输出参数STATUS
位 值 含义
0 0 操作系统已启用延时中断。
1 0 未拒绝新的延时中断。
2 0 未激活延时中断或时间已过。
3 - - 4 0 未加载延时中断OB。
5 0 当前活动的测试功能未禁用延时中断OB的执行。
出错信息
出错代码(W#16#...) 说明
0000 未出错
8090 不正确的参数OB_NR
8xyy 常规出错信息,请参见使用输出参数RET_VAL评估出错。
长沙工控帮教育科技有限公司整理
10.4
使用SFC33 “CAN_DINT”取消延时中断
描述
通过SFC33 “CAN_DINT” (取消延时中断),可以取消已启动的延时中断(参见使用 SFC32 “SRT_DINT”启动延时中断)。这样,将不调用延时中断OB。然后,将不调用 延时中断OB。
参数 声明 数据类型 存储区域 描述 OB_NR INPUT INT I、Q、M、D、L、
常数
将取消的OB的编号(OB20到OB23)。
RET_VAL OUTPUT INT I、Q、M、D、L 如果在功能处于激活状态时出错,
则RET_VAL的实际参数 将包含出错代码。
出错信息
出错代码(W#16#...) 说明
0000 未出错。
8090 不正确的参数OB_NR 80A0 未启动延时中断。
8xyy 常规出错信息,请参见使用输出参数RET_VAL评估出错。