首页 理论教育 诊断13.5.1故障方法

诊断13.5.1故障方法

时间:2023-07-01 理论教育 版权反馈
【摘要】:通过用户程序可读取S7-1200PLC系统的故障诊断数据,不同的编程方式可实现对不同的硬件层级读取诊断数据,实现对PLC、分布式I/O系统、分布式I/O站、本地模块以及分布式模块、通道的诊断。图13-17 诊断中断OB82中对模块故障响应的编程示例程序段1、2:将诊断中断OB82的启动信息存储到数组变量“‘诊断故障’诊断数据”,可用于其他组织块中的程序访问。以S7-1200PLC本地模拟量输入模块触发了断线故障为例,读取诊断数据。

诊断13.5.1故障方法

通过用户程序可读取S7-1200PLC系统的故障诊断数据,不同的编程方式可实现对不同的硬件层级读取诊断数据,实现对PLC、分布式I/O系统、分布式I/O站、本地模块以及分布式模块、通道的诊断。S7-1200PLC系统通过用户程序诊断故障的编程结构如图13-14所示。

978-7-111-58391-2-Chapter13-28.jpg

图13-14 通过用户程序实现的诊断层级

1.故障中断OB

S7-1200 PLC可以通过触发中断的方式响应PLC系统发生的一些错误,可以通过编程读取相应的中断OB的启动信息分析导致中断的事件。

(1)诊断中断OB82

支持诊断的模块可以是S7-1200 PLC机架上的本地模块,也可以是PROFIBUS DP或PROFINETIO系统的分布式I/O模块。模块诊断功能的设置如图13-15所示。

在模块参数设置中使能诊断功能后,当发生诊断故障时模块报错,同时S7-1200 PLC也报错,在CPU中编程访问OB82的启动信息可以立即判断故障模块并可实现对此故障的响应。OB82的启动信息如图13-16所示。

978-7-111-58391-2-Chapter13-29.jpg

图13-15 模块的诊断功能设置

978-7-111-58391-2-Chapter13-30.jpg

图13-16 诊断中断OB82的启动信息

①“IO_State”:设备的IO状态,含义见表13-7。

13-7 诊断中断OB82启动信息中IO_State变量的含义

978-7-111-58391-2-Chapter13-31.jpg

②“LADDR”:触发此次OB82的模块的硬件标识符。

③“Channel”:触发此次OB82的通道编号。

④“MultiError”:当故障模块中有多个通道存在故障时为1,特定支持通道诊断的模块有此功能。

注意:

支持通道诊断的模块发生通道故障时,OB82的启动信息变量“Channel”为通道编号,当模块故障恢复(离去事件)时为32768。

下面的示例程序实现存储OB82的启动信息,以便用于HMI状态显示和其他程序处理,以及当模块AI4x13BIT_1(HW_ID=269)故障时,点亮报警灯,程序如图13-17所示。

978-7-111-58391-2-Chapter13-32.jpg

图13-17 诊断中断OB82中对模块故障响应的编程示例

程序段1、2:将诊断中断OB82的启动信息存储到数组变量“‘诊断故障’诊断数据”,可用于其他组织块中的程序访问。读取的OB82的启动信息如图13-18所示。

978-7-111-58391-2-Chapter13-33.jpg

图13-18 读取到的诊断中断OB82的启动信息

程序段3:当模块的硬件标识符为269(AI4x13BIT_1)的模块报故障时,报警灯“Alarm_Lamp”点亮,当故障恢复后将报警灯熄灭。

(2)模块插拔中断OB83

S7-1200PLC本地模块不支持热插拔功能,当支持热插拔功能的分布式I/O有热插拔操作时,编程访问OB83的启动信息可以判断出触发OB83的模块并作出响应。OB83的启动信息如图13-19所示。

978-7-111-58391-2-Chapter13-34.jpg

图13-19 模块插拔中断OB83的启动信息

①“LADDR”:触发此次中断模块的硬件标识符。

②“Event_Class”:事件类别,B#16#38:插入模块;B#16#39:拔出模块或未响应。

③“Fault_ID”:故障标识,含义与事件类别相关,见表13-8。

13-8 事件类别和故障标识的对照表

978-7-111-58391-2-Chapter13-35.jpg

(3)时间错误中断OB80

CPU在循环期间一直监控当前执行周期的循环时间,如果超出CPU参数中设置的“循环周期监视时间”,CPU将报“超出最大程序循环时间-时间错误”,并请求启动时间错误OB80。

当超出2倍的“循环周期监视时间”时,无论是否编程时间错误中断OB80,CPU都将停机。为避免CPU循环超时,停机影响正常生产,可以编程RE_TRIGR指令,重新触发CPU的循环时间监控。CPU的循环时间通过RE_TRIGR指令最多只能延长到“循环周期监视时间”的10倍,否则仍会导致CPU停机,程序示例如图13-20所示。

978-7-111-58391-2-Chapter13-36.jpg

图13-20 编程“RE_TRIGR” 重新启动周期监视时间

(4)机架错误OB86

在PLC系统的运行过程中,分布式I/O的输入信号和输出信号的有效性是非常重要的。当某个分布式I/O站因为断电或通信故障等原因不可访问时,PLC的控制程序中IO访问不能反映实际工况。在这种情况下,需要通过PLC编程诊断分布式I/O站的状态以评估控制程序中I/O访问的有效性,作出相应的控制处理并发出报警。当分布式I/O站掉站/恢复时,S7-1200 PLC会触发中断OB86,编程访问OB86的启动信息可以判断出触发中断的I/O站,并作出响应。OB86的启动信息如图13-21所示。

978-7-111-58391-2-Chapter13-37.jpg

图13-21 机架错误OB86的启动信息

①“LADDR”:触发中断的I/O站的硬件标识符。编程时,可以从PLC的“系统常量”中查找到PROFINET IO设备和PROFIBUS DP从站的硬件标识符判断故障站点。名称结构和数据类型见表13-9。

13-9 机架错误OB86LADDR

978-7-111-58391-2-Chapter13-38.jpg

示例如图13-22所示。

978-7-111-58391-2-Chapter13-39.jpg

图13-22 分布式I/O站硬件标识符示例

②“Event-class”:事件类别,含义见表13-10;

13-10 事件类别的代码含义

978-7-111-58391-2-Chapter13-40.jpg

③“Fault-ID”:故障代码,含义与事件类别相对应,具体含义可参考TIA博途软件的在线帮助。

(5)RALRM指令

编程诊断中断OB82,可以从OB82的启动信息判断事件的类别、故障模块以及故障通道,如果要读取更详细的诊断信息,如故障类型(断线,短路故障等),可以在中断OB中编程“接收中断”指令“RALRM”,该指令在中断触发时,将从I/O模块(集中式组态)或分布式I/O站的模块中接收所有诊断信息,并在输出参数中输出。输出参数中的信息包括中断OB的启动信息以及中断源的信息。指令参数含义见表13-11。

13-11 “RALARM”指令参数含义

978-7-111-58391-2-Chapter13-41.jpg

诊断数据输出到目标区域TINFO和AINFO。编程如图13-23所示。

978-7-111-58391-2-Chapter13-42.jpg

图13-23 “RALRM”指令编程

图中示例Mode=1,诊断中断OB82触发后将更新所有输出数据。以S7-1200PLC本地模拟量输入模块触发了断线故障为例,读取诊断数据。变量AINFO声明为按照S7-1200PLC集中式组态的诊断结构定义的用户数据类型,读取到的诊断数据如图13-24所示,下面只说明用于分析模块故障常用的数据。

①②③:含义与OB82的启动信息含义相同,可以判断模块的硬件标识符,模块状态以及通道号。

④槽号:2号槽模块。

⑤通道诊断。

978-7-111-58391-2-Chapter13-43.jpg

图13-24 “RALRM”指令读取诊断数据示例

⑥通道号:通道2。

⑦故障类型:断线故障。

有关附加报警信息结构的详细信息,请参见SIMATIC PROFINET IO编程手册《从PROFIBUS DP至PROFINETIO》以及现行IEC61158-6-10-1标准。

注意:

在S7-1200PLC中编程“RALRM”时,参数AINFO必须输入“标准访问”数据块中的变量。

2.LED指令

S7-1200 PLC提供了“LED”指令,可以通过编程读取CPU的STOP/RUN、ERROR、MAINT这3个状态指示灯的状态,从而可以通过HMI设备实现PLC状态的远程显示。编程如图13-25所示。

LADDR:输入CPU的硬件标识符,为系统常量“Local~Common”。

978-7-111-58391-2-Chapter13-44.jpg

图13-25 LED指令编程

LED:表示所要读取的LED指示灯的标识号,1:STOP/RUN,2:ERROR,3:MAINT指示灯。示例中赋值2,表示读取CPUERROR指示灯状态。(www.xing528.com)

Ret_Val:指示灯状态值。示例中为4,可判断出S7-1200CPU的ERROR指示灯在闪烁,有故障存在,要分析具体故障原因需要使用其他诊断方法,如TIA博途软件的在线诊断。

3.DeviceStates指令

通过编程机架错误OB86,只是在分布式I/O站掉站或恢复的事件发生时进行诊断,是基于事件触发的诊断。而使用“DeviceStates”指令,则可以在主循环OB中任意时刻或在中断OB86中编程,读取PROFINETIO系统或PROFIBUSDP主站系统中当前所有分布式I/O站的状态。

以PROFINETIO系统的IO设备故障诊断为例,CPU1215C通过PN接口连接了两个PROFINETIO设备,设备编号分别为1和2,系统配置如图13-26所示。

978-7-111-58391-2-Chapter13-45.jpg

图13-26 S7-1200PROFINETIO组态

在主程序OB1中,编程“DeviceStates”指令,读取PROFINETIO系统中的故障IO设备。指令参数介绍如下:

LADDR:PROFINET IO系统的硬件标识符。该硬件标识符在“系统常量”中根据包含“PROFINET”(如果是PROFIBUSDP主站系统则包含“DP”)的名称和数据类型Hw_Io-System可以查询到,如图13-27所示。

978-7-111-58391-2-Chapter13-46.jpg

图13-27 S7-1200PROFINETIO系统硬件标识符

Mode:不同的值表示读取分布式I/O站的不同状态。含义如下:

1)IO设备/DP从站已组态;

2)IO设备/DP从站故障;

3)IO设备/DP从站已禁用;

4)IO设备/DP从站存在;

5)出现问题的IO设备/DP从站。例如:维护要求或建议、不可访问、不可用、出现错误。

State:输出由Mode参数选择的IO设备/DP从站的状态。当IO设备/DP从站的状态与Mode选择的状态对应时,State参数中下列的位将置为“1”:

•位0=1:组显示,即表示至少有一个IO设备/DP从站的第n位置为“1”。

•位n=1:对应的设备编号为n的IO设备或PROFIBUS地址为n的DP从站的状态与Mode参数选择的状态一致。

•要输出所有IO设备/DP从站的状态信息,请使用下列长度的ArrayofBOOL:

978-7-111-58391-2-Chapter13-47.jpg

图13-28 “DeviceStates”指令编程示例

a.对于PROFINETIO系统。需要1024位。

b.对于DP主站系统:需要128位。

编程示例如图13-28所示。

在此示例中Mode=2,选择读取PROFINETIO系统中的故障IO设备。选中STATE参数的实参变量,可通过巡视窗口中的“诊断>监视值”显示读取的状态数据:

①在全局数据块中声明的1024个位的ArrayofBOOL变量;

②位0=1:至少有一个IO设备故障;③位1=0:设备编号为1的IO设备“IOdevice_SP_2”状态正常;④位2=1:设备编号为2的IO设备“IOdevice_SP”故障。

注意:

如果S7-1200PLC通过PROFIBUSDP主站模块CM1243-5扩展了一个PROFIBUS DP主站系统,“DeviceStates”指令的LADDR参数为系统常量“Local~DP-Mastersys-tem”。

4.ModuleStates指令

“ModuleStates”指令可以诊断S7-1200PLC系统中S7-1200PLC中央机架、分布式I/O站中模块的状态,如哪个插槽中的模块是否存在或是否存在故障。

以诊断S7-1200PLC中央机架的模块状态为例,S7-1200PLC在2号槽中组态了一个模拟量输入模块AI4x13BIT。在主程序OB1中编程“ModuleStates”指令,读取S7-1200PLC模块的故障状态。编程示例如图13-31所示,指令参数介绍如下:

LADDR:站的硬件标识符,可以在“系统常量”中查看数据类型为“Hw_Device”或“Hw_DpSlave”的变量,示例中诊断S7-1200PLC本地模块的状态,硬件标识符为“32”,如图13-29所示。

978-7-111-58391-2-Chapter13-48.jpg

图13-29 “ModuleStates”指令中参数LADDR 所对应的硬件标识符

Mode:不同的值表示读取模块的不同状态,含义如下:

1)模块已组态;

2)模块故障;

3)模块禁用;

4)模块存在;

5)模块中存在故障。例如维护要求、建议、不可访问、不可用或者出现错误。

在示例中,Mode=2,选择读取S7-1200PLC本地模块中的故障信息。

State:输出由Mode参数选择的模块的状态,每一个位指示一个模块的状态,当模块的状态与Mode选择的状态一致时,State参数中下列的位将置“1”。

•位0=1:组显示,即表示至少有一个模块的第n位置为“1”。

•位n=1:槽号为n-1的模块的状态与Mode参数选择的状态一致。

•数组变量:Array of BOOL,长度为128,可读取所有模块的状态信息。

978-7-111-58391-2-Chapter13-49.jpg

图13-30 “ModuleStates”指令编程示例

选中STATE参数的实参变量,可通过巡视窗口中的“诊断>监视值”显示读取的状态数据,如图13-30所示。

①在全局数据块中,声明的128个位的ArrayofBOOL变量。

②位0=1:至少有一个模块故障。

③位3=1:2号槽模块故障。

注意:

当诊断分布式I/O站中的模块状态时,需要结合分布式I/O站的状态诊断功能OB86或“DeviceStates”指令综合判断。

5.RDREC指令

读取数据记录“RDREC”指令可以用于读取PROFIBUS DP或PROFINET IO分布式I/O模块的详细诊断信息,与接收中断指令“RALRM”在诊断分布式I/O模块时的诊断数据相同。不同的是可以在主程序OB中或中断OB中编程,以读取模块中所有的故障通道和具体的故障类型,详细说明请参见SIMATIC PROFINET IO编程手册《从PROFIBUSDP至PROFINETIO》。

6.GET_DIAG指令

读取诊断信息“GET_DIAG”指令可以实现对模块故障状态的诊断,可以用于本地模块和分布式I/O模块,可以在主程序OB或中断OB中编程读取模块的状态信息。

7.值状态

值状态(QI,质量信息)功能为每个I/O通道分配一个输入位地址,用于诊断I/O通道状态。值状态通过程序访问过程映像输入(PII)读取,此时不触发模块的诊断。

在S7-1200PLC系统中,只有分布式I/O站中的部分高性能DI、DO、AI和AQ模块支持值状态功能。例如组态DI模块时,在“设备视图”中选择模块,在“巡视窗口”中的“属性>常规>模块参数>DI组态”中启用“值状态”功能,此模块将增加用于值状态信号的输入地址空间,如图13-31所示。

978-7-111-58391-2-Chapter13-50.jpg

图13-31 启用值状态功能

示例中启用值状态的模块DI8x24VDCHF_1的地址空间如图13-32所示。a为模块的起始地址。

978-7-111-58391-2-Chapter13-51.jpg

图13-32 带值状态的DI8x24VDCHF的地址空间

①IBa是DI模块的通道地址。

②IB(a+1)是值状态的地址,字节中的8个位分别用于诊断模块中8个通道的状态。

过程映像输入中值状态字节的分配取决于所使用的模块。值状态的每个位均指定给一个通道,并提供通道值有效性的信息(0=信号无效,1=信号正常)。值状态为0有以下可能的原因:

•端子上电源电压缺失或不足;

•通道已禁用;

•输出未激活(如,CPU处于STOP模式)。

如上示例中的DI模块,起始地址a=10,那么值状态字节地址为11。当通道接入干接点信号时,需要并联一个电阻(25~45kΩ)实现在信号断开的状态下进行断线诊断,如图13-33所示。

978-7-111-58391-2-Chapter13-52.jpg

图13-33 干接点信号并联电阻诊断断线

图13-33aI11.7(QI)=1,表示此时的I10.7=0是有效的信号状态;

图13-33bI11.7(QI)=0,表示此时的I10.7=0不是有效的信号状态,为断线状态。

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

我要反馈