首页 理论教育 故障诊断西门子工业通信技术应用

故障诊断西门子工业通信技术应用

时间:2023-11-07 理论教育 版权反馈
【摘要】:当错误的发生与程序扫描有关时,CPU的操作系统会产生一个同步故障。同步错误组织块包括OB121用于对程序错误的处理和OB122用于处理模块访问错误。⑤OB84:当检测到接口故障或分布式I/O网卡的接口故障发生或消失时,操作系统调用组织块OB84。本节用OB82和OB86为例,介绍使用中断组织块的局部变量来诊断DP从站。OB82的局部变量的意义见表11-15,其中最主要的部分是逻辑基地址和4个字节的故障模块的诊断数据。

故障诊断西门子工业通信技术应用

1.使用用户程序进行诊断

SIMATIC S7可编程序控制器提供了许多可以在用户程序中执行的诊断功能。如果对这些诊断功能系统地加以应用,用户程序就可以确定出系统故障的准确原因并做出相应的反应。

(1)错误处理组织块

当一个故障发生时,SIMATIC S7 CPU中的错误处理组织块OB会被调用。如果错误处理组织块OB未编程,CPU进入“STOP”模式。这个调用会在CPU的诊断缓冲区中显示出来。用户可以在错误处理OB中编写如何处理这种错误的程序,当操作系统调用了故障组织块OB时,CPU根据是否有故障处理程序进行相应的反应。

根据是否被S7 CPU检测到并且用户可以通过组织块对其进行处理的错误分为同步错误和异步错误两种。与程序的运行有关的为同步错误,与程序运行无关的为异步错误。CPU根据检测到的错误,调用适当的错误处理组织块,见表11-13。注意在S7-400H中,有三个附加的异步错误处理组织块OB,它们是OB70(I/O冗余错误处理组织块)、OB71(CPU冗余错误处理组织块)、OB72(通信冗余错误处理组织块)。

表11-13 错误处理组织块

978-7-111-52480-9-Chapter11-22.jpg

1)同步错误处理组织块。当错误的发生与程序扫描有关时,CPU的操作系统会产生一个同步故障。同步错误是与执行用户程序有关的错误,程序中如果有不正确的地址区、错误的编号和错误的地址,都会出现同步错误,操作系统将调用同步错误OB。如果未将同步故障OB加载到CPU中,则当发生同步故障时CPU切换到STOP模式。

同步错误组织块包括OB121用于对程序错误的处理和OB122用于处理模块访问错误。同步错误OB的优先级与检测到出错的块的优先级一致。因此OB121和OB122可以访问中断发生时累加器和其他寄存器中的内容,用户程序可以用它们来处理错误。

①OB121:当有关程序处理的错误事件发生时CPU操作系统调用OB121,此错误包括寻址的定时器不存在、调用的块未下载等,但不包括用户程序的逻辑错误和功能错误等。例如当CPU调用一个未下载到CPU中的程序块,CPU会调用OB121。

②OB122:当I/O访问错误出现时,操作系统激活OB122中断,执行OB122中断服务程序。当STEP7指令访问一个信号模块的输入或输出时,而在最近的一次暖起动中没有分配这样的模块,CPU的操作系统会调用OB122,例如直接访问I/O出错(模块损坏或找不到)、访问一个CPU不能识别的I/O地址等。

2)异步错误处理组织块。异步错误是与PLC的硬件或操作系统密切相关的错误,与程序执行无关。异步错误没有独立的处理程序,这意味着它与程序异步执行,其后果一般都比较严重,其对应的组织块为OB70~OB73和OB80~OB87,有最高的优先级。

①OB80:在执行程序过程中,若出现下列错误时,CPU的操作系统都会调用OB80:周期监视时间溢出、OB请求错误(所请求的OB仍在执行或在给定优先级内的OB调用过于频繁)或实时时钟被拨快而跃过了OB的起动时间。例如OB35中的程序循环执行就会出现周期监视时间溢出错误。

②OB81:在执行程序过程中,若出现下列错误时,CPU的操作系统都会调用OB81:后备电池失效或未安装、在CPU或扩展单元中没有电池电压、在CPU或扩展单元中24V的电源故障。

③OB82:如果模块具有诊断能力又使能了诊断中断,当它检测到故障时,它输出一个诊断中断请求给CPU,该中断请求可以是即将到来或即将过去的事件,操作系统中断用户程序的扫描并调用组织块OB82。当一个诊断中断被触发时,有问题的模块自动地在诊断中断OB的起动信息和诊断缓冲区中存入4个字节的诊断数据和模块的起始地址。

④OB83:操作系统每秒钟对模块组态进行一次检测。在“RUN”“STOP”和“STAR-TUP”状态时每次组态的模块插入或拔出,就产生一个插入/拔出中断(电源模块、CPU、适配模块和IM模块不能在这种状态下移出)。该中断都将在CPU的诊断缓冲区和系统状态表中留下一个记录。

⑤OB84:当检测到接口故障(MPI网络的接口故障、PROFIBUS DP的接口故障)或分布式I/O网卡的接口故障发生或消失时,操作系统调用组织块OB84。

⑥OB85:在执行程序过程中,若出现下列错误时,CPU的操作系统都会调用OB85:产生了一个中断事件,但是对应的OB块没有下载到CPU(OB81除外)、访问一个系统功能块的背景数据块时出错或该块不存在、刷新过程映像表时I/O访问出错,模块不存在或有故障(如果OB85调用没有在组态中禁止)。

⑦OB86:出现下列故障或故障消失时,都会触发机架故障中断OB86,操作系统将调用OB86:扩展机架故障(不包括CPU318),DP主站系统故障或分布式I/O故障。

⑧OB87:当发生通信错误时,操作系统调用通信错误组织块OB87。常见通信错误举例如下:接收全局数据时,检测到不正确的帧标识符(ID)、全局数据通信的状态信息数据块不存在或太短、接收到非法的全局数据包编号。

(2)组织块的变量声明表

操作系统为所有的OB块声明了一个包含OB的起动信息的20B的变量声明表(见表11-14),声明表中变量的具体内容与组织块的类型有关,其中,当组织块的类型为错误组织块时,字节地址为1的数据表示故障代码。用户可以通过OB的声明变量表获得与起动OB的原因有关的信息。

表11-14 OB的变量声明表

978-7-111-52480-9-Chapter11-23.jpg

处理故障的中断组织块的局部变量中包含了大量的故障信息,如果DP从站发生故障,可以通过查看这些局部变量确定故障的原因。本节用OB82和OB86为例,介绍使用中断组织块的局部变量来诊断DP从站。

1)OB82局部变量。如果模块具有诊断能力又使能了诊断中断,当它检测到故障时,操作系统中断用户程序的扫描并调用组织块OB82。有问题的模块自动地在诊断中断OB的起动信息和诊断缓冲区中存入4个字节的诊断数据和模块的起始地址。

OB82的局部变量的意义见表11-15,其中最主要的部分是逻辑基地址和4个字节的故障模块的诊断数据。

表11-15 OB82的局部变量表

978-7-111-52480-9-Chapter11-24.jpg

2)OB86局部变量。表11-16描述了机架故障OB86的局部变量。

表11-16 OB86的局部变量表

978-7-111-52480-9-Chapter11-25.jpg

如果扩展机架、DP主站系统或分布式I/O发生故障,在故障发生和消失时,CPU都会自动调用OB86。

①OB86_EV_CLASS为B#16#39时表示故障刚出现,为B#16#38时表示故障刚消失。

②OB86_FLT_ID为故障代码,不同的故障对应不同的故障代码。

③OB86_MDL_ADDR为DP主站的逻辑基地址,它是HW Config中主站的DP接口的诊断地址,CPU的操作系统使用该地址来报告该接口的故障。

④OB86_RACKS_FLTD是数据类型为32个位元素的数组,若DP从站出现故障,则此数组包含从站诊断地址,DP主站系统编号以及从站地址的信息。

⑤OB86_DATE_TIME为事件发生的时间。

(3)使用SFC13进行DP从站的诊断

1)SFC 13介绍。通过调用系统功能SFC 13“DPNRM_DG”,可以查看遵循EN 50170标准的DP从站的诊断信息。SFC 13可以读取的最大报文长度为240B。表11-17描述了SFC 13的输入参数和输出参数。

表11-17 SFC13DPNRM_DG的参数

978-7-111-52480-9-Chapter11-26.jpg

对SFC 13处理是异步进行的,这意味着它的执行需要经历若干SFC调用,从而也需要经历若干CPU循环。

2)DP从站诊断数据的主要结构。表11-18是标准EN 50170 Volume 2(PROFIBUS)对DP从站诊断数据的主要结构描述。

表11-18 DP从站诊断数据的主要结构

978-7-111-52480-9-Chapter11-27.jpg

IM 153-x提供了符合标准的从站诊断。与从站相关的诊断数据取决于所使用的IM 153-x版本。

3)在OB82中调用SFC 13。

①新建一个项目,插入300的站,进行硬件组态,插入电源、CPU和输入输出模块,新建DP网络,DP主站使用CPU315-2PN/DP,站地址为2;标准从站使用ET200M,站地址为3。硬件组态如图11-8所示。

978-7-111-52480-9-Chapter11-28.jpg

图11-8 硬件组态图

选中图11-8中的3号从站ET200M,在下面的窗口中双击输入输出模块,在它的属性对话框中,使能诊断中断。

②打开CPU315-2PN/DP的Block文件夹,插入错误处理组织块OB82,双击打开OB82,在其中编写如图11-9所示调用SFC 13的程序并保存。

978-7-111-52480-9-Chapter11-29.jpg

图11-9 在OB82中调用SFC 13的程序

③将组态和程序下载到PLC并运行,可以任选从站ET200M的一个输入输出模块,将其一个通道组的负载电压和DC 24V电源断开,此时产生诊断中断,CPU调用一次OB82,在OB82中调用SFC13来读取诊断信息。

(4)使用SFC51进行DP从站的诊断

1)系统状态表SZL。系统状态表描述了自动化系统的当前状态。系统状态列表只能使用SFC 51读取,不能进行修改。DP相关的系统状态子表是虚拟列表。这意味着它们只有在被请求时才由操作系统产生。

系统状态列表包含下列信息:

①系统数据:包含某个CPU固定的或可调节的特性数据。描述了CPU的硬件组态,优先权等级和通信状态。

②CPU的诊断状态数据:描述系统诊断功能所监视的所有部件的当前状态。

③模块诊断数据:除CPU之外,其他有诊断功能的模块生成和存储的模块诊断信息和诊断数据。

2)系统状态子表。系统状态子表由表头和实际请求的数据记录组成。这种子表的表头包含系统状态子表的ID号(SZL_ID)、所请求子表的索引、单个数据记录的字节数以及这个子表所包含的数据记录的个数。

表11-19列出了部分系统状态子表。

表11-19 SFC51RDSYSST的参数

978-7-111-52480-9-Chapter11-30.jpg

3)SFC 51介绍。使用SFC 51“RDSYSST”可以读取系统状态子表的内容或者其中的一个摘录。SFC 51的参数SZL_ID和INDEX决定了将要读取哪个子表或哪个子表摘录。

表11-20列出了SFC 51的调用参数。

表11-20 SFC51RDSYSST的参数

978-7-111-52480-9-Chapter11-31.jpg

参数描述:

①SZL_ID:系统状态子表的ID号(SZL_ID)占一个字,如图11-10所示。它由子表序号、子表摘录序号和模块类型组成。

978-7-111-52480-9-Chapter11-32.jpg

图11-10 SSL_ID的结构

识别码包含4个附加位用于识别模块类型。这些位指定了将要读取的子表或子表摘录所在模块的类型。CPU、IM、FM和CP的模块类型分别为二进制数0000、0100、1000和1100。

②INDEX:某些子表或子表摘录需要一个对象类型标识符或一个对象标号。这种情况下必须使用INDEX参数。在不需要这个参数的情况下,可以忽略它的内容。

③RET_VAL:描述了参数发送错误代码

④SZL_HEADER:参数类型为STRUCT,结构元素为WORD型数据LENGTHDR和N_DR,在读操作完成之后,LENGTHDR元素包含了所读数据记录的字节数,而N_DR元素则包含了所读数据记录区域中数据记录的个数。

4)在OB82中调用SFC 51。可以按照调用SFC 13的示例来组态和触发诊断中断,这里主要介绍调用SFC 51的程序设计。(www.xing528.com)

在OB82中调用SFC 51需要结构变量SZL_HEADER,因此在OB82的局部变量最下面的空白行生成临时变量SZL_HEADER,数据类型为STRUCT。双击打开后,输入该结构的元素LENTHDR和N_DR,如图11-11所示。

978-7-111-52480-9-Chapter11-33.jpg

图11-11 局部变量表中的结构

OB82的局部变量OB82_MDL_ADDR是要读取的有故障模块的地址,局部变量OB82_IO_FLAG为B#16#54时,为输入模块;为B#16#55时,为输出模块。根据OB82_IO_FLAG的值,判断出故障模块的类型,如果是输出模块,则将地址OB82_MDL_ADDR的最高位置1。

打开CPU315-2PN/DP的Block文件夹,插入错误处理组织块OB82,双击打开OB82,在其中编写如图11-12所示调用SFC 51的程序并保存。

978-7-111-52480-9-Chapter11-34.jpg

图11-12 在OB82中调用SFC 51的程序

(5)使用SFB54进行诊断

DP从站或DP从站中的模块根据它们所具有的功能特性可以产生不同的中断。用这种方式所发送的诊断数据已经部分地提供在所调用的中断OB的局部数据中。在相关中断OB中调用SFB54 RALRM可以读取完整的诊断信息。

可以采取不同的模式调用SFB54。SFB54的相关输入参数对模式进行了指定:

在模式0中,ID参数用于输出那个产生中断的DP从站或其模块,输出参数NEW被赋值为TRUE。其他所有输出参数不重写。

在模式1中,无论产生中断的模块是哪个,SFB54的所有输出参数都将用相关的诊断数据进行重写。

在模式2中,SFB54将查看由输入参数F_ID所指定的模块是否已产生了中断。如果是,那么输出参数NEW将重写为TRUE,并用相关数据重写其他所有输出参数。如果F_ID与产生中断的模块不同,NEW将赋值为FALSE。

表11-21描述了SFB 54的输入参数和输出参数。

表11-21 SFB54“RALRM”的参数

978-7-111-52480-9-Chapter11-35.jpg

(6)使用FB125进行诊断

FB125是中断驱动的功能块,可以检测到那些已经故障或失效并由此引发了中断的DP从站,它可以提供故障从站的详细诊断信息,例如插槽号或模块号、模块状态、通道号和通道故障等。表11-22和表11-23分别为FB125的输入参数和输出参数。

表11-22 FB125的输入参数

978-7-111-52480-9-Chapter11-36.jpg

表11-23 FB125的输入参数

978-7-111-52480-9-Chapter11-37.jpg

2.使用CP342-5的程序进行诊断

对CP 342-5的DP从站进行诊断,只能采用CP的诊断功能和调用FC3“DP_DIAG”来实现。通过CP 342-5读、写DP从站和诊断DP从站故障的程序均在OBI中编写。在程序编辑器左边窗口的“Libraries”→“SIMATIC_NET_CP”→“CP300”中可以调用FC3。

(1)调用FC2

使用FC3对CP 342-5的DP从站进行诊断,首先要调用FC2“DP_RECV”,读取DP从站的输入值和DP状态信息,查询DP_RECV返回的DP状态字节DPSTATUS中的状态位。

(2)读取站列表

FC2“DP_RECV”的DP状态字节DPSTATUS的第一位为0时,表示所有的DP从站都处于正常的数据传送状态;若该位为1,则表示至少有一个已组态的DP从站没有处于正常的数据传送状态。此时需要调用FC3,读取站列表,了解哪些从站工作不正常。FC3所有参数意义的说明见表11-24。FC3的输入参数DTYPE(诊断类型)意义的说明见表11-25。

表11-24 FC3“DP_DIAG”参数说明

978-7-111-52480-9-Chapter11-38.jpg

(续)

978-7-111-52480-9-Chapter11-39.jpg

表11-25 诊断类型DTYPE的说明

978-7-111-52480-9-Chapter11-40.jpg

组态期间分配给DP主站的所有DP从站的状态和可用的信息都在DP站列表中给出。站列表保存在PROFIBUS CP中,并在DP轮询周期内持续更新。读入的站列表与通过FC2读取的最新输入数据匹配。

DP站列表的地址区用FC3的输入参数DIAG设置,长度为16B(128bit),每一个位表示一个DP从站的地址,地址的对应如图11-13所示。若某个状态位的代码为1,则表示对应的从站没有处于周期性数据传输的状态,可能的原因有:

978-7-111-52480-9-Chapter11-41.jpg

图11-13 DP站列表中从站状态位

1)组态的从站不在总线上,或在总线上但是没有响应。

2)从站的组态不正确。

3)组态的从站没有准备好与DP主站进行数据传输,仍然处于起动阶段。

每次成功地调用FC2后,无论其状态字节怎样,都可以读取DP站列表。站列表被读入FC3指定的地址区。

(3)读取诊断列表

DPSTATUS的第2位为0时,表示没有新的诊断数据;若该位为1,则表示至少一个站有新的诊断数据,此时必须调用FC3,读取诊断列表,判别哪些从站有新的诊断数据。

DP诊断列表提供哪些DP从站已修改了诊断数据,必须通过单个DP站诊断功能获取诊断数据。单个站的历史数据存储在PROFIBUS CP中,并根据环形缓冲区的“后进先出”的原则读取。诊断列表也保存在PROFIBUS CP中,并在DP轮询周期内持续更新。每次用户程序读出诊断列表后,诊断列表被禁止。只有出现至少一个新条目时,才启用诊断列表,可以随时读取单个DP站的诊断信息。

DP诊断列表的地址区用FC3的输入参数DIAG设置,长度为16B(128bit),每一个位表示一个DP从站的地址,诊断位与DP站地址的关系与DP站列表的相同,如图11-14所示。若DP诊断列表的某位代码为1,则表示组态的DP从站具有新的诊断数据,此时可用FC3读取DP诊断列表,并保存在调用FC3时指定的地址区。

978-7-111-52480-9-Chapter11-42.jpg

图11-14 DP站列表中从站诊断位

在主站的初始化阶段(参数分配与组态),会忽略诊断列表中的诊断消息,用0初始化诊断位,如果在初始化阶段DP从站发生错误,则会将该站的诊断位设置为1。读取诊断列表后,FC2的输出参数DPSTATUS中的第2位(“诊断列表有效”状态位)被复位。读出了某个从站的诊断信息之后,用户程序将诊断列表中该站对应的位复位。

(4)读取单个DP站诊断信息

诊断列表的某一位为1时,可以调用FC3读取该从站的详细的诊断信息。

DP从站的诊断信息的第1~3个字节是站状态字节,第4个字节是已将参数分配给DP从站的DP主站的PROFIBUS地址,16#FF表示没有参数,16#FE表示不能通过PROFIBUS获得。第5、第6个字节是制造商标识号。第7个字节开始,是与设备、标识号和通道有关的诊断数据。诊断数据的字节数和各字节的意义与DP从站的型号有关,可以查阅相关的用户手册

读取诊断信息之后,可以调用FC1“DP_SEND”将发送给从站的数据写入CP。

3.能够进行测试与诊断的专有硬件

(1)诊断中继器简介

诊断中继器是具有诊断功能的RS-485中继器,用于在系统正常工作时进行线路诊断。它以DP从站模式运行,作为一个RS-485中继器集成在PROFIBUS-DP网络中,传输速率为9.6kbit/s~12Mbit/s。

当PROFIBUS网络物理介质出错时,它可以快速地定位故障发生的地点,找出引发故障的原因。它可以诊断以下错误:

1)PROFIBUS总线中A线或B线断路。

2)PROFIBUS总线中A线或B线与屏蔽层之间短路。

3)终端电阻缺失。

4)无效的级联深度。

5)在一个网段中出现一个或者更多的测量电路。

6)在一个网段中出现的节点过多。

7)节点离中继器距离超出通信范围。

8)报文错误。

需要注意的是,PROFIBUS总线中A线和B线之间的短路、多余的终端电阻或没有站点而仅有终端电阻等故障中继器是无法诊断出来的。诊断中继器的外形和面板如图11-15和图11-16所示,面板上各个元件的作用说明见表11-26。

978-7-111-52480-9-Chapter11-43.jpg

图11-15 诊断中继器

978-7-111-52480-9-Chapter11-44.jpg

图11-16 诊断中继器的面板

表11-26 诊断中继器面板元件说明

978-7-111-52480-9-Chapter11-45.jpg

(2)BT200总线测试仪简介

在系统安装调试阶段,可以使用BT200对PROFIBUS-DP网络进行诊断。BT200是一种对RS485物理层检测的工具,操作简单方便,无须借助其他的诊断工具,与常用的相关检测工具相比,它具有更多的高级功能,如可以测量站地址、显示PROFIBUS电缆长度等,BT200外观及各按钮功能见表11-27。

表11-27 BT200外观及各按钮功能说明

978-7-111-52480-9-Chapter11-46.jpg

用BT200对网络进行测试可以分为普通模式和专家模式。在普通模式下只能测试接线的状态。总线的连接测试在BT200和测试连接器(Test plug connector)之间进行。在系统设备安装阶段(设备未上电),将测试连接器安装在总线的一端,用BT200对总线依次进行测试。总线段的两端需要配备终端电阻。关于各种故障信息在BT200上的显示可以参考产品手册。

通过普通模式的测量,可以检测出站点连接中断、接线反相、短路、AB相或屏蔽层断路、没有或多于2个终端电阻等错误信息。如果需要进一步的测试,可以将BT200切换到专家模式。同时按下“ESC”和“OK”键,可以将设备从普通模式切换到专家模式。专家模式不仅具有普通模式下的所有功能,还具有RS-485接口测试、路径测试、网络距离测量和信号反射测试等功能。

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

我要反馈