EN_MSG: 启用PLC 报警 (S7-400) 说明 可使用此指令来启用已禁用的 PLC 报警。 可能已在显示设备上或使用“DIS_MSG (页7893)” 将报警禁用。参数 ERROR 和 STATUS 下表包括可通过参数 ERROR 和 STATUS输出的所有特定错误信息。 ERROR STATUS (十进制) 说明 0 11 警告: 由于前一作业仍处于忙碌状态,未激活新作业。0 25 已开始通信。 作业正在处理。 1 1 通信问题 1 2 否定确认,功能无法执行 1 3 指定的 AR_ID 没有登录。 14 • 归档数据指针 SD_1 中存在与数据长度或数据类型有关的错误。 • 第一次调用时,指定的 AR_ID 位于允许范围之外。 15 已执行请求的复位。 1 7 RESET 作业不相关,因为当前功能已完成或未启用(块处于错误状态)。 1 10无法访问本地用户存储器 (例如,无法访问已删除的 DB) 1 12 调用该指令时 • 指定了不属于 AR_SEND 的背景 DB •指定了全局数据块,而不是背景数据块。 1 18 AR_ID 已由一个 AR_SEND 使用。 1 20 工作存储器空间不足。数据一致性 为了确保数据一致性,只能在当前发送操作完成后写入当前正在使用的发送区域 SD_1 的一 部分。 当状态参数 DONE的值为“1”时,就存在这种情况。
可使用输入参数 MODE 和MESGN 来指定要启用的报警。 只有在此指令尚未有效启用报警 的情况下,才可使用此指令来成功启用报警。可通过在调用期间将值“1”赋给输入参数 REQ 来开始启用过程。 功能描述启用过程不同步执行,换言之,此过程可跨多次指令调用来执行(请另参见 同步指令和异 步指令之间的不同之处 (页 6480)):• 第一次调用此指令时 (REQ =1),它将检查输入参数,并尝试分配所需系统资源。 正常情 况下,将会输入 RET_VALW#16#7001,设置 BUSY,并触发启用。 否则,会在 RET_VAL 中输入相关错误信息并完成作业。在此情况下,不对 BUSY进行评估。 • 如果存在多次调用,则输入值 RET_VAL W#16#7002(CPU 仍在执行该作业)并设置 BUSY。中间调用不会影响当前作业。 • Zui后一次调用此指令时,如果未发生错误,则输入值 RET_VALW#16#0000。 在此情况 下,将在BUSY 中写入 0。如果不存在错误,则在 RET_VAL 中输入错误信息,并且不对 BUSY 进行评估。 参数下表列出了指令“EN_MSG”的参数: 参数 声明 数据类型 存储区 说明 REQ Input BOOL I、Q、M、D、L REQ= 1:触发启用 MODE Input BYTE I、Q、M、D、L 或常 量 有关用于选择要启用的报警的参数,请 见下表;MESGN Input DWORD I、Q、M、D、L 或常 量 报警编号 仅在 MODE = 6 时才相关。可启用单个 报警。RET_VAL Return INT I、Q、M、D、L 错误信息(见下面); BUSY Output BOOL I、Q、M、D、LBUSY = 1:启用过程仍未完成。 有关有效数据类型的更多信息,请参见“有效数据类型概述。参数 MODE 下表列出了输入参数MODE 的输出值。 值 含义 0 使用指令生成的 CPU 所有 PLC 报警 1 使用指令生成的所有 CPU PLC报警,即“NOTIFY (页 7865)”、“NOTIFY_8P (页 7857)”、 “ALARM(页 7867)”、“ALARM_8P (页 7862)”和“ALARM_8(页 7860)”的所有报警。 6 “使用指令生成的 PLC 报警”类别的单个报警 参数 RET_VAL 错误代码(W#16#...) 说明 0000 启用已终止,未发生错误。 7000 第一次调用时 REQ = 0: 未激活启用。 7001第一次调用时 REQ = 1: 已触发启用。 7002 中间调用: 启用已处于激活状态。 8081 访问参数时出错 8082 MODE的值非法。 8083 报警编号超出允许的取值范围。 8084 使用 MODE (可能 MESGN )指定的报警没有登录。 80C3无法启动通过 MODE (可能 MESGN )指定的报警启用,因为另一个“EN_MSG ”启用过程当 前正处于激活状态。 8xyy常见错误信息 另请参见: 通过输出参数 RET_VAL 评估错误 (页 184) DIS_MSG: 禁用 PLC报警 (S7-400) 说明 可使用此指令来禁用通过指令创建的 PLC 报警。 可使用输入参数 MODE 和 MESGN 来选择要禁用的报警。只有在尚未启用通过“DIS_MSG”禁用报警的情况下,才可调用指令“DIS_MSG”并成功禁用报警。调用“DIS_MSG”时已做好发送准备、但仍位于内部缓冲区中的报警无法再被禁用,将发送这 些报警。将通过指令“NOTIFY (页 7865)”、“NOTIFY_8P (页 7862)”、“ALARM(页 7867)”、 “ALARM_8P (页 7862)”和“ALARM_8 (页 7860)”的输出 ERROR 和STATUS 来指示报警传送 已禁用。 可通过在调用“DIS_MSG”时将值“1”赋给输入参数 REQ 来启动该过程。 功能描述读取过程不同步执行,换言之,此过程可跨多次调用执行(请另参见 同步指令和异步指令 之间的不同之处 (页 6480)): •第一次调用时 (REQ =1),“DIS_MSG”将检查输入参数,并尝试占用所需系统资源。 正常 情况下,将会输入RET_VALW#16#7001,设置 BUSY,并触发禁用。 否则,会在 RET_VAL 中输入相关错误信息并完成作业。在此情况下,不能对 BUSY 进行 评估。 • 如果存在多次调用,则输入值 RET_VALW#16#7002(CPU仍在执行该作业)并设置 BUSY。 中间调用不会影响当前作业。 • Zui后一次调用此指令时,如果未发生错误,则输入值RET_VALW#16#0000。 在此情况 下,将“0”写入 BUSY。 如果存在错误,则在 RET_VAL 中输入错误信息,且不对BUSY 进 行评估。 参数 下表列出了指令“DIS_MSG”的参数: 参数 声明 数据类型 存储区 说明 REQ InputBOOL I、Q、M、D、L REQ = 1:触发禁用 MODE Input BYTE I、Q、M、D、L 或 常量用于选择要禁用的报警的参数,请见下表 MESGN Input DWORD I、Q、M、D、L 或 常量 报警编号 仅在 MODE =5、6、7 时才相关的报警编号。 可禁用单个报警。 RET_VAL Return INT I、Q、M、D、L 错误代码(见下面)BUSY Output BOOL I、Q、M、D、L BUSY = 1:禁用过程仍未完成。参数 MODE 下表列出了输入参数 MODE的输出值。 值 含义 0 使用指令生成的 CPU 所有 PLC 报警 1 使用指令生成的所有 CPU PLC 报警,即“NOTIFY(页 7865)”、“NOTIFY_8P (页 7857)”、“ALARM (页 7867)”、“ALARM_8P(页 7862)”和“ALARM_8 (页 7860)”的所有报警。 6 “使用指令生成的 PLC报警”类别的单个报警 参数 RET_VAL 错误代码 (W#16#...) 说明 0000 禁用已终止,未发生错误。 7000第一次调用时 REQ = 0: 未激活禁用。 7001 第一次调用时 REQ = 1: 已触发禁用。 7002 中间调用:禁用已处于激活状态。 8081 访问参数时出错 8082 MODE 的值非法。 8083 报警编号超出允许的取值范围。 8084 使用MODE (可能 MESGN )指定的报警没有登录。 80C3 无法启动通过 MODE (可能 MESGN)指定的报警禁用,因为另一个“DIS_MSG”禁用过程当 前正处于激活状态。 8xyy 常见错误信息 另请参见: 通过输出参数RET_VAL 评估错误 (页 184) READ_SI: 读出动态分配的系统资源 (S7-300,S7-400) 使用指令“ALARM_DQ”和“ALARM_D”生成报警时动态分配的系统资源的来源 使用“ALARM_DQ (页7881)”和“ALARM_D (页 7879)”生成报警时,操作系统将临时分配系 统存储器中的存储空间。例如,如果使用 CPU中已存在的“ALARM_DQ (页 7881)”或“ALARM_D (页 7879)”调用来 删除FB,则相应系统资源可能会yongjiu性保持已分配状态。如果使用“ALARM_DQ (页7881)” 或“ALARM_D(页7879)”调用来重新加载 FB,则可能不再会对指令“ALARM_DQ (页7881)” 和“ALARM_D(页 7879)”进行正确处理。 说明使用指令“READ_SI”读取当前使用的系统资源,这些系统资源是针对使用“ALARM_DQ (页 7881)”和“ALARM_D (页7879)”生成报警进行分配的。这一操作可通过所使用的 EV_ID 和 CMP_ID 的值来完成。这些值将传递给指令“READ_SI”的参数 SI_ID 中。 指令“READ_SI”具有四种可能操作模式,下表对它们进行了说明。可通过参数 MODE 来设置 所需操作模式。 MODE 所读取的已分配给“ALARM_DQ”/“ALARM_D”的系统资源 1所有(使用 SI_ID:=0 来调用“READ_SI”) 2 分配给通过 EV_ID:=ev_id进行的“ALARM_DQ”/“ALARM_D”调用的系统资源(使用 SI_ID:=ev_id 来调 用 READ_SI ) 3分配给通过 CMP_ID:=cmp_id 进行的 “ALARM_DQ”/“ALARM_D”调用的所有系统资源(使用SI_ID:=cmp_id 来调用 READ_SI ) 0 由于选择了过小的目标字段 SYS_INST 而无法使用 MODE=1 或MODE=3 中的上一次调用读取的 附加系统资源。 功能描述 如果在使用 MODE=1 或 MODE=3 调用 READ_SI时选择了足够大的 SYS_INST 目标区域,则 该区域将包含调用之后通过参数 MODE 选择的所有当前已占用系统资源的内容。如果当前占用的系统资源的量非常大,则运行时间相应地会很长。 这就是说,CPU 的性能负荷会很高,可能造成超过可组态的Zui大循环监视时间。 可通过以下方法来解决这种运行时间问题: 选择相对较小的 SYS_INST目标区域。 如果指令 无法进入将要在 SYS_INST 中读取的所有系统资源,则将通过 RET_VAL=W#16#0001 来通知这种情况。 使用 MODE=0 和与上一次调用相同的 SI_ID 来调用 READ_SI,直到 RET_VAL 的值为W#16#0000。 说明 由于操作系统不对属于某一读取作业的 READ_SI 调用进行协调,应在同一优先级内执行 所有READ_SI 调用。