PROFINET I/O总线诊断
PROFINET I/O Bus Diagnostics
中国汽车工业工程公司 罗祖宪,韩达
摘要:使用PROFINET总线连接PROFINET I/O设备(站点)时,如果某个总线站点出现故障或掉线,设备还在继续运行的话,这时该设备及其周围人员都将处于非常危险的状态,一旦设备出现误动作,将导致严重的生产事故。对于总线的实时状态,必须在程序中进行判断,故障的站点号必须及时被读出,这样PLC才能根据总线故障信息,快速进行保护性的输出,甚至停止输出,使设备运行处于安全状态。因此,对PROFINET总线状态的诊断具有非常重要的实际意义。诊断总线站点故障的方法有多种,本文重点介绍两种读取PROFINET总线状态到用户程序中的方法,并对这两种方法如何通过用户程序实现做详细说明。
关键词:PROFINET总线诊断;OB86;系统状态列表
PROFINET是新一代基于工业以太网技术的自动化总线标准。作为一项战略性的技术创新,PROFINET为自动化通信领域提供了一个完整的网络解决方案,是囊括了工厂管理层、车间级监控层、现场设备层的数据通信与控制的总线技术。目前自动化技术发展的趋势之一就是工业以太网向现场级的延伸,西门子PROFINET满足工业现场实时可靠的控制要求,实现了工业以太网在现场级的应用。
可靠的PROFINET控制,还需要完善的诊断方式,尤其现场设备层对总线状态诊断的需求是必不可少的,总线一旦出现
Abstract: When the PROFINET bus is connected a PROFINET IO device and some device failures, the surrounding personnel will be in a dangerous state. The status of the bus must be judged in real-time and the disabled device must be promptly taken out,so that the PLC can produce a fast protection output and make the device run in a safe state. Therefore, the diagnosis on the PROFINET bus state is important. This paper provides two methods to read the state of a PROFINET bus into a user program.
Key words: PROFINET bus diagnostics, OB86, The list of system status
故障或掉线,PLC必须进行保护输出,这样才能保证人员和设备的安全。如何诊断PROFINET I/O 系统,如何快速获取I/O设备的的状态和详细的故障信息,是用户面临的一个重要问题。对于PROFINET I/O 系统的诊断目前至少有三种可行的方法:FB126是西门子公司推出的一个专门用于诊断PROFINET I/O 系统的功能块,但是该方式使用不是很灵活,体现在HMI必须使用西门子的WinCC Flexible而且编程固定,西门子公司对于这一功能块还做了加密,用户很难修改其中的程序,当连接其它上位机或HMI时,使用FB126将难以满足用户对于总线站点状态读取和在HMI上显示的需求。因此,本文将探究另外两种比较灵
106AUTOMATION PANORAMA 2012.9活的方法来诊断PROFINET I/O 系统总线状态。其一是通过系统功能块SFC51读取系统状态列表,通过系统状态列表来分析总线站点的实时状态;另一种方式是通过中断组织块OB86来读取PROFINET I/O 系统的故障站点和故障恢复站点。这两种方式都能够在用户程序中快速获取总线诊断状态,当出现总线故障时,让PLC及时停止输出或进行保护性输出,而且可以在任何与该PLC连接的HMI或上位机上显示总线的实时状态,方便用户查看故障,编程也十分灵活。
* indexWORD表2
目录数据长度含义100-115:PROFINET I/O的网络ID号,参考硬件配置组信息 1:下列状态位中至少有一个为1 0:所有下列状态位均为0状态,站1状态,站2..状态,站2047status_0status_1status_2..status_2047BOOLBOOLBOOL..BOOL1 通过系统功能块SFC51读取总线状态
1.1 功能说明
SFC 51系统功能用于读取 “系统状态列表” (简写为SSL),系统状态列表(SSL)用于描述CPU的当前状态。SSL的内容只能通过系统功能进行读取,而且不能修改。系统状态列表包含了模块标示符、CPU特性、组件标识、中断状态、模块LED灯的状态 、机架/站的状态信息、模块状态信息、PROFINET I/O和PROFIBUS DP 状态信息等。当我们向CPU发送获取PROFINET I/O总线状态的请求时,CPU将响应这一请求,并创建一个PROFINET I/O总线状态列表发送给用户,用户接收到的系统状态列表数据记录就是PROFINET I/O的总线状态,这与RSLogix5000中将DeviceNet总线站点状态固定放在Controller Tag中有所区别,实际上西门子STEP7的系统状态列表是个虚拟的列表,只有当用户请求时,系统才创建发给用户。
在用户程序中,通过调用SFC 51系统功能,并对其指定不同的INDEX 和SSL_ID(W#16#0094、W#16#0294),来读取关于PROFINET I/O的系统状态列表,也就读出了站点的实时状态。
可用于诊断PROFINET I/O的SSL_ID含义如表1所示。
表1
SSL_ID (W#16#...)0094对于每一段PROFINET I/O总线,通过读取系统状态列表最多可以诊断2047个站点,需要256个字节的数据长度,但在硬件配置中,每段PROFINET I/O总线最多只能配置125个PROFINET I/O站点,因此这样的一个诊断数据长度应该有预留。
1.2 编程
在OB1中加入SFC51,程序示例如下: CALL \"RDSYSST\"
REQ :=M0.0 //REQ=1,启动处理
SZL_ID :=MW2 //将要读取的系统状态列表或部分列表的SSL-ID
INDEX :=MW4 //列表中对象的类型或编号RET_VAL :=MW6 //读取出错故障代码BUSY :=M0.1 //TRUE:尚未读取完成
SZL_HEADER:=DB1.SSL_HEADER // SSL列表读取数据长度的描述
DR :=DB1.RECORD //SSL列表读取或SSL部分列表读取的目标区域
对变量进行赋值:
MW2 = 16#0694 (系统状态列表ID)
部分列表 - 机架/站的状态信息I/O控制器系统的中央机架/站中的机架的期望状态 (状态位 = 1:站已组态)I/O控制器系统的中央机架/站中的机架的实际状态(状态位 = 1:站存在,处于激活状态并且未出现故障)INDEX (W#16#...)100-115: PROFINET I/O系统总线号 MW4 = 16#64 (PROFINET总线的序号,16#64等于十进制的100)
通过上述程序调用,可以在DB1.RECORD中得到256个字节的数据记录,也就是2048个BOOL位,其中bit0表示组信息,如果为1,表示至少有一个I/O站点故障或丢失;如果为0,表示没有站点发生故障。Bit1~Bit125表示设备号1~125的I/O设备的状态,1表示I/O站点故障或丢失,0表示该站点没有发生故障或者该站点没
0294100-115: PROFINET I/O系统总线号 SSL_ID为W#16#0x94的部分系统状态列表,读取到的数据记录具有如表2中所示的数据结构。
有被组态。
按照上述方法,只要对SZL_ID和 INDEX改变赋值,就能得
2012.9 AUTOMATION PANORAMA107
Solution 解决方案
到PROFINET I/O 相关的各种总线状态信息。
图1是为PROFINET总线某一段上的所有总线站点状态所做的数据块,相应的程序在这里不再叙述。
到14表示I/O系统ID,位15为1,位16到30表示站的逻辑基址。
2.2 编程
在OB86中加入如下程序: OPN \"OB86_Data\" L W#16#39CA L LW 0 ==I
JCN D001 //不是PROFINET/I/O主站系统故障则跳转
L W#16#E0FF
图1 PROFINET总线某一段上的所有总线站点状态所做的数据块
T DBW 0 L W#16#1F00
T DBW 2 //假设已经组态的从站设备号是5~20D001: L W#16#39CB //丢站故障发生,事件到来 L LW 0 ==I
JCN D002 //不是丢站故障出现则跳转 L LD 8 //获取丢失从站的设备号 L 2#11111111111
AW //位0到10:站号
目前正在进行中的一个采用PROFINET I/O总线的项目,通过调用SFC51读取系统状态列表,可以获得站或模块的状态信息,如:已组态站点、丢失的站、有故障的站、有维护请求的站、正常通讯的站。对于故障和丢失的站,PLC可以及时停止信号输出,而且这些站点的状态都能在上位机上正常显示。但是当调用SFC51时,将占用一个CPU异步处理的资源,对于一些低端的CPU,在使用这一方法时,需要注意适当调整CPU的扫描时间。
2 通过中断组织块OB86来读取总线状态
2.1 功能说明
使用OB86是最基本最简单的获取机架或分布式站点故障信息的方法。当PLC发生故障时,会立即调用相应的故障组织块OB,如果PLC中没有加入相应的组织块,PLC会停机,停机的目的就是为了保证生产过程处于安全状态。OB86为机架故障组织块,当扩展机架丢失,或分布式I/O掉站,或者是这些故障恢复时,PLC将调用一次OB86 ,否则PLC始终不会扫描OB86。OB86中有20个字节的临时变量,用户在编程时不能占用和修改这些临时变量,这些临时变量的数据会由PLC在调用相应的组织块时自动生成,而且为只读,用户通过读取这些临时变量的数值或状态来判断故障。
STEP7中的OB86的局部变量OB86_EV_CLASS(LB0)为16#39和16#38分别表示故障出现和故障消失。OB86_FLT_ID(LB1)为16#CA、16#CB和16#CC分别表示PROFINET I/O系统故障、PROFINET I/O站丢失、PROFINET I/O站正常通讯但至少有一个模块故障。OB86_Z23(LW8):位0到10表示站号,位11
T LD 20 //故障从站地址送地址指针 S DBX [LD 20] //置位设备编号对应的数据块位地址,存储器间接寻址
D002: L W#16#38CB //丢站故障恢复,事件离开 L LW 0 ==I
JCN D003 //不是丢站故障消失则跳转L LD 8 //获取丢站恢复从站的设备号 L 2#11111111111
AW //位0到10:站号
T LD 20 //故障恢复从站地址送地址指针 R DBX [LD 20] //复位设备编号对应的数据块位地址
D003: NOP 0
图2是为PROFINET总线一段上的总线站点丢站的状态所做的数据块,用于OB86诊断数据存储。(下转114页)
108AUTOMATION PANORAMA 2012.9Solution 解决方案
解决办法:关闭空管检测功能,同时变更管道在流量计出口形成一个另一端高于流量计的U形弯。为测量HF的流量计加装接地环,后正常工作,如图8所示。
3.5 三废处理单元的应用3.5.1 雷达液位计的应用
应用工况:酸性废气中和时的Ca(OH)2及NaOH溶液液位测量选用仪表:两台雷达FMR240。
存在问题:同一时刻两台液位计的数值相差很大,有时还会出现大的波动。
问题分析:NaOH容易潮解,测量探头被NaOH覆盖,故从包罗区线上可以看出没有回波,两台安装的位置不是绝对对称,同时储罐下是球形的,在区面以下零点不统一,量程与零点之间有误差造成现场两台雷达之间显示的数值差为一个恒定值。但是当到一定的液位时两台的显示一致。
解决办法:E+H服务人员重新设置零点和量程后,工作正常, 同时建议定期清洗探头。
3.5.2 80I系列质量流量计用于测量密度的应用
应用工况:尾气酸性气体中和用氢氧化钙溶液密度测量,通过密度差表得到氢氧化钙溶液的百分比,再加料或者加水,为废液处理提供一定配比的氢氧化钙。
现场说明:从搅拌罐用泵抽出氢氧化钙,并保证3~5m3/h的流量来供80I测量使用,浆液从80I流到排液池,再由泵抽回到搅拌罐,无用能耗比较大。
应用效果:改良西门子法生产多晶硅主要是通过三氯氢硅合成,精馏,还原转化,还原尾气回收,废液、废气处理,多晶硅棒后处理及辅助压缩空气、氮气、循环水等组成。达到硅提纯和三废零排放的目的,在每个阶段都需要一定的仪表来进行测量。在改良西门子法生产多晶硅工艺中,需根据工艺要求,配置对应的检测仪表,构成可靠的控制系统。E+H在某多晶硅企业使用后,运行良好,操作人员反映其稳定性好,维护方便且改造时通用性强,为工艺控制提供了及时准确的信息,创造了一定的经济效益和社会效益。
(上接108页)
图2 PROFINET总线一段上的总线站点丢站的状态所做的数据块
通过调用上述程序,当总线上站点发生掉线故障时,在OB86程序中迅速得出了分布式I/O丢站的站点号,当丢失的站点恢复后,在B86程序又再次得到了该站点号。程序适用于只有一段PROFINET I/O总线的情况,如果有多段总线时,还需要再读取PROFINET I/O系统主站ID(网络的编号),来判断是哪一段总线站点丢失。上述方法通过PLC响应总线故障中断,触发中断处理程序OB86,在用户程序中可以判断中断的触发源,最终找到故障的站点。这种方式下,当没有总线故障时,该程序不会占用CPU的扫描负荷,但是在OB86中不能得到已经组态的站点是哪些,需要用户另外编程。
3 结语
以上介绍的两种方法,都可以在程序中读出PROFINET I/O总线的故障站点号,从而让PLC做出相应的处理,但两种方法都有各自的优缺点。比较这两种方法,虽然读取系统状态列表的方法会占用一个CPU异步处理的资源,但是该方法能够完整的获取总线诊断信息,方便在HMI或上位机上显示,而采用OB86由于不能获取已经组态的站点是哪些,对于在HMI显示这一功能使用起来不方便。因此,当需要在HMI或上位机上显示总线状态时,笔者建议采用读取系统状态列表的方法更适合诊断PROFINET I/O总线状态,而且该方法在实际使用中也十分方便。完善的总线诊断,会给生产中的设备和人员增加一份安全保障,同时也方便了设备的快速维护。
参考文献:
[1]西门子STEP7 V5.5编程软件帮助(F1)[Z].[2]西门子系统功能(SFC)说明书[Z].
[3]用于S7-300/400系统和标准功能的系统软件说明书[Z].[4]Step7V5.5系统函数参考手册[Z].[5]S7-300/400语句表编程手册[Z].
参考文献:
[1]陈洪全,岳智.仪表工程施工手册[M].化学工业出版社.2008.[2]齐卫红.过程控制系统[M].电子工业出版社.[3]丁炜.过程控制仪表及装置[M].电子工业出版社.
[4]焦小澄,将大纯.仪器仪表维修工[M].江苏科学技术出版社.[5]邓丰,唐正林.多晶硅生产技术[M].化学工业出版社.
罗祖宪(1979-)
男,壮族,广西来宾人,工学学士,目前就职于中国汽车工业工程公司,主要从事汽车涂装生产线自动化控制系统设计,十年来参加了包括通用、宝马、大众、上汽等国内外知名汽车品牌在内的众多涂装生产线的设计和建设工作。
114AUTOMATION PANORAMA 2012.9
因篇幅问题不能全部显示,请点此查看更多更全内容