RALRM 的编程示例
简介
在以下示例中,将通过输入模块生成断路诊断并接收包含相关信息的中断。本示例适用于 PROFINET IO 和/或 S7-1500 CPU。
说明 本示例的存储 本示例必须保存在将生成中断(断路)的输入模块的设置中。 |
要求
创建一个输入模块,并在该输入模块的属性中读取硬件标识符。并通过输入参数 F_ID(“alarmCheckID”)存储该硬件标识符。
为了产生一个中断,该输入通道需选择“线路”(Wire break) 选项。该选项位于“模块参数 > 通道模板 > 输入”(Module parameters > Channel template > Inputs) 中。
在全局数据块中,创建 7 个变量和结构“TI_Diagnostic_Interrupt”和“Additional_Diag”进行数据存储。创建数据类型为“TI_DiagnosticInterrupt”的结构“TI_Diagnostic_Interrupt”。
互连参数
在一个诊断中断 OB (OB82) 中,调用指令“RALRM”。互连该指令的参数,如下所示:
RALRM 的结果
说明 触发断路 要触发断路,可拔除该输入模块输入端的电源电缆,然后再重新连接该电缆。或者,拔除该输入模块的电位桥后再重新连接。 |
发生断路故障时,输入模块将生成一个中断。之后,将调用诊断中断 OB,并启动指令“RALRM”。
“RALRM”指令将通过输入参数 F_ID(“alarmCheckID”)调用该输入模块。指令“RALRM”将根据输入参数 MODE(“alarmMode”)的值“2”,检查中断是否由该输入模块产生。如果中断来自该输入模块(“alarmCheckID”和“alarmFromID”相同),则输出参数 NEW(“alarmReceived”)将置位为“TRUE”,并通过参数 TINFO(“TI_Diagnostivc_Interrupt”)和 AINFO(“Additional_Diag”)保存该中断信息。生成该中断的模块硬件标识符将显示在输出参数 ID(“alarmFromID”)处。
已接收到的中断信息长度将记录在输出参数 LEN(“alarmLength”)中。根据输入参数 MLEN(“alarmMaxLength”)的值,值为“0”时,待读取 AINFO (“Additional_Diag”)的信息将不受限制。
并在输出参数 STATUS(“alarmStatus”)处,显示该块的状态。该过程成功执行且无任何错误。
在以下章节中,将详细介绍对 TINFO 和 AINFO 的评估。
有关 TINFO(“TI_Diagnostivc_Interrupt”) 参数的详细信息
该 OB 的启动信息和管理信息均存储在参数 TINFO(“TI_Diagnostivc_Interrupt”)中。
生成的中断包含以下信息:
OB 启动信息:OB82 使用优化启动信息(“SI_Format”和值“254”)。
管理信息:
读取状态为“Error”(参见“IO_State”的值)的输入模块(参见“LADDR”)。
最近记录的通道“15”的中断(参见“Channel”的值)。
记录多个错误(“MutliError”的值为“TRUE”)。
最近记录的站“0”的中断(参见“address”的值)。
根据诊断数据记录 0 记录的结构(参见“slv_prfl”的值)。
由组态的分布式模块触发的中断(参见“intr_type”的值)。
有关 AINFO(“Additional_Diag”)参数的详细信息
有关中断的标头信息和附加信息,均存储在参数 AINFO(“Additional_Diag”)中。
生成的中断包含以下信息:
所用 OB 是一个诊断中断 OB(“InterruptType”,值为“1”)。
系统报告模块在插槽“2”(“SlotNumber”处和通道 8 到 15 处发生中断(BYTE 1,“SubSlotNumber”)。
对于子模块(“InterruptSpecifier”,值为“16#2000”),通道诊断和/或状态信息中,至少有一项可用。
在本示例中,使用通道诊断的结构(“FormatIdentifier”,值为“16#8000”)。
触发该中断的组件通道编号将分配给该子模块(“ChannelNumber”,值为“16#0008”)。
诊断输入通道的一个到达错误(“ChannelErrorType”,值为“16#28”)。
所用的数据格式为一个位(“DataFormat”,值为“16#01”)。
诊断一个断路故障(“ErrorCode”,值为“16#0006”)。