1、本文介绍如何使用OB82,OB83,以及OB86来判断现场故障,并作出相应的处理。OB82为诊断中断组织块,相关的诊断报警例如“DO模板的DO信号断线”会使PLC调用OB82;OB83为插拔中断组织块,当插拔机架上的模块时PLC会调用OB83;OB86为机架故障组织块,当扩展机架丢失,分布式IO掉站时,PLC会调用OB86。各个组织块的详细信息可以参看下面介绍。上述组织块都具有20个字节的临时变量,对于用户在编程时不能占用和修改这些临时变量。这些临时变量会由PLC在调用相应的故障组织块时自动生成,所以这些临时变量为只读属性,用户只需要读取这些临时变量的数值或者状态来判断哪里出现什么样的故障。每
2、一个故障组织块的临时变量随诊断功能的不同而不同,另外还可以根据相应故障组织块的临时变量OB8x_Date_Time得到故障出现的时间日期。该时间虽然是调用相关OB8x的时间,但是也可以参考故障出现的大致时间。1, OB82诊断OB82是诊断中断组织块。PLC的模板状态从严重程度上可以分为两类,一类表示“完好”,一类表示“故障”。然而对于PROFINET模板其状态具有另外一种中间状态,该状态处于“完好”和“故障”之间,是一种临界状态,称为“维护”,利用该状态用户可以尽早的发现故障,尽快维护现场设备,可以有效的防止由于故障导致生产的停顿。使用该组织块诊断“故障”。首先要求PLC的模板具有诊断能力,
3、然后通过组态使能相关诊断(Diagnostics:)去检测一个故障事件,例如“断线”(wire break),“短路”(short circuit to M)等,参考图1 ET200S DO模块的参数设置。相关的诊断“故障”的方法参考上述连接文档。使用该组织块诊断“维护”。对于PROFINET的接口模板,例如ET200S IM151-3 PN HF接口模块支持检测网络错误,包括同步丢失,端口连接状态,光纤信号质量等。这些事件就是维护中断事件,同样也需要通过组态使能检测网络错误参考图2,当这些事件出现后,接口模板的MAINT/FO灯亮。如果需要CPU获取这些维护信息,需要在CPU的PN-IO属性
4、中设置使能OB82,参考图3 使能OB82/I/O fault task。图1 ET200S DO模块的参数设置 图2 使能检测ET200S接口模块的网络错误图3 使能OB82/I/O fault task当它检测到维护事件时,它输出一个诊断中断请求给CPU(到来和离去事件)。于是操作系统调用OB82。如果没有下载OB82到PLC中,那么PLC会停机。OB82 的局部变量中除了包含故障模块的逻辑地址OB82_MDL_ADDR,还包含故障模板四个BYTE 的诊断数据LB8,OB82_MDL_TYPE,LB10,LB11。具体信息可以查看Step7在线帮助OB82。下面举一个维护的例子,组态参考图
5、4 PLC硬件组态。例如ET200S FO接收光纤信号质量由于某种原因衰减,导致接收功率低于门槛值,从而产生MAINT信息。同时触发诊断中断OB82,PLC调用OB82来接收该中断信息,通过在OB82中编程,获取诊断信息。利用这些诊断信息可以显示在上位机上,以便用户快速的维护防止生产中断。图4 PLC硬件组态参考图2设置,当出现信号质量衰减时,通过Step7在线会出现“扳手”图标,指示需要维护,参考图5。图5 绿色扳手指示端口状态参考图3设置CPU的PNIO属性,然后在程序中加入OB82,进行编程。编程之前需要了解OB82临时变量的意义。对于PROFINET,OB82临时变量的一些预留位,被赋
6、予了一些新的含义。例如临时变量OB82_MDL_TYPE的Bit7表示Maintenance required,与维护状态绿色 相对应。临时变量OB82_RESERVED_2表述Maintenance demanded,与维护状态黄色 相对应。例子程序如下:A(L #OB82_EV_CLASSL B#16#39 /incoming event=I)L #OB82_MDL_ADDRL W#16#1FF9 /diagnostics address for Port2 of IM151-3(Dec:8185)O L 9.7 /Maintenance requiredO #OB82_RESERVED_
7、2 /Maintenance demandS M 100.0 /to show maintenance informationA M 100.0JCN nextCALL DT_DATEIN :=#OB82_DATE_TIMERET_VAL:=MW120 /DateDT_TOD=MD124 /timenext: NOP 0通过上述简单的程序实例,表明当在IM151-3接口模板的端口2出现光纤信号衰减而导致接收功率低于门槛值时,置位M100.0,同时获取故障事件时间和日期存储到MW120和MD124。这些变量可以编写在WinCC/WinCC flexible中进行显示,方便用户维护现场故障。对于其
8、它端口或者其它分布式IO上的接口模板的端口诊断可以按照上述方式自行添加。2, OB83诊断OB83是插拔中断组织块。对于PROFINET IO,OB83赋予了一些新的特点,对于S7 CPU31x-2PN/DP可以使用OB83来评估模块插拔中断。而对于PROFIBUS-DP系统中的S7-300则无法使用OB83。在下列情况下CPU 操作系统调用OB83: 组态的模板插入/拔出之后。 在STEP 7 下修改了模板参数并在RUN 状态下装所作修改到CPU。模板插入和拔出在RUN、STOP 和STARTUP 方式时每次组态的模板插入或拔出,就产生了插入/拔出中断(电源模板、CPU、适配模块和IM 不能
9、在这种方式下移出)。对于S7-300PLC不允许热插拔中央机架的模块。然而,存在一些特殊情况: S7 CPU31x-2PN/DP仅支持分布式IO设备插拔模板中断。 S7 CPU IM151-7 DP和CPU IM151-8 PN支持中央机架IO的插拔(1块IO模板)。如果没有遵守上述要求,例如在CPU IM151-8 PN的中央机架插拔2块IO模板。那么即使在CPU中加入了OB83,CPU也会停机,同时报告“Stop caused by I/O management”,只有这些故障消除才能启动CPU。所以在操作时必须遵守模板安装规范,防止不必要的停机。当它检测到故障时,它输出一个插拔中断请求给
10、CPU。于是操作系统调用OB83。如果没有下载OB83到PLC中,那么PLC会停机。具体相关变量信息可以查看Step7在线帮助OB83。下面举一个模块更换的例子,假如一个DO模块损坏,然后替换一个新的模块,如果新的模块的类型与被替换的类型不一致,报告相应的错误。L #OB83_EV_CLASSL B#16#38 /module insertL #OB83_FLT_IDL W#16#55 /Fault ID) /PROFINET IO submodule inserted, but does not match configured submoduleL #OB83_MDL_TYPEL W#16
11、#8102) /confirm againL #OB83_RESERVED_1L B#16#C4L #OB83_MDL_ADDRT MW 130 /read the address of the moduleL #OB83_RACK_NUML 2#11111111111AWT MW 132 /determine the device number通过上述简单的程序实例,表明当插入的实际模块与Step7组态的模块配置不相符时,可以获取该模板的所处位置的逻辑地址MW130和设备号MW132,参考图6 设备号和逻辑地址。也可以获取故障事件时间和日期存储到相应的变量中,参考相关OB82的编程方式。图6
12、 设备号和逻辑地址3, OB86诊断OB86是机架故障组织块。操作系统在检测下列故障时会调用OB86:当中央扩展机架(非S7-300)故障。PROFIBUS-DP主站系统故障。分布式I/O 中(PROFINET IO/PROFIBUS DP)站故障。禁止一个站(PROFINET IO/PROFIBUS DP)使用SFC12”D_ACT_DP”模式4时。使能一个站(PROFINET IO/PROFIBUS DP)使用SFC12”D_ACT_DP”模式3时。当CPU检测到故障时,发出中断请求给CPU,操作系统调用OB86。如果没有下载OB86到PLC中,那么PLC会停机。下面举一个PN IO站丢失
13、的例子,这是一种常见的故障,可能由于连接断开而导致某些IO站无法连接到IO控制器上,通过OB86的简单编程用户可以得到相应站的基本信息。L #OB86_EV_CLASSL #OB86_FLT_IDL W#16#CB /PROFINET IO station failure/station returnL #OB86_RESERVED_1 /confirm againL LD 8T MW 140 /determine the device numberL MD 10 /set a flag variable with initial value 16#1SLD /shift to left wi
14、th bits number of MW140T MD 14L DB1.DBD 0ODT DB1.DBD 0 /calculate device number into bitL B#16#1T MD 10 /set a flag variable with initial value 16#1通过上述简单的程序实例,得出机架故障的分布式IO的设备号Device number,确定拿一个设备连接断开。当某一设备发生机架故障来Incoming事件时,得出该设备号码。但是如果IO设备串联在一起,前面的设备丢站导致后面的设备也丢失,简单编程获取站号只有会有一个站的信息,无法表示多个设备掉站。通过编程
15、使用左移指令左移位bit的方式,但是需要给MD10设置初始值16#1,目的就是保证末位为1,这样偏移后可以知道该位1的移动位置,然后通过站号存储地址DB1.DBD0进行“或”运算,这样DB1.DBD0相应的位就置1,从而当多个设备掉站DB1.DBD0相应的位会置1。例如DB1.DBD0低字节为2#00000110时,表示设备号1(bit1)和2(Bit2)掉站,Bit0位0保持不变。这样最多可以获取63个设备掉站信息(63设备编号需要64), 对于一般应用是足够的。最后还要给MD10设置初始值,以保证最后一位Bit0为1。这些Bit变量可以编写在WinCC/WinCC flexible中进行显示,方便用户维护现场故障。关键词PLC, 诊断,故障,维护,OB82,OB83,OB86,PROFINET
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1