1.用SFC13进行故障诊断
SFC13是STEP7中专用的诊断指令,具有强大的诊断功能。
以下用一个例子介绍SFC13的应用。先进行如图12-44所示硬件组态。
双击图12-44所示的从站模块IM153-1,弹出的界面可以看到从站的诊断地址1022(就是16#03FE),如图12-45所示。在DB82中创建数组,如图12-46所示。
图12-44 硬件组态
图12-45 DP从站属性
在OB82中编写程序,如图12-47所示。
创建并监控变量表如图12-48所示,以下解读故障含义。
如未编写如图12-47所示的程序,单击如图12-49中的“十六进制格式”按钮,弹出从站信息,此信息与变量表中的信息的含义是相同的。
在解读十六进制代码的含义前,须知:这些代码和不同的从站设备是相关的,读者应查阅相关手册,得出代码表达的含义。本例使用的是ET-200M,所以读者要查阅ET-200M手册。以下给出部分手册查阅到的信息。ET200M的诊断数据结构见表12-10。
图12-46 创建数组
图12-47 程序
图12-48 变量表
表12-10 ET200M的诊断数据结构
站状态1各位为1的意义见表12-11。
图12-49 故障代码
表12-11 站状态1各位为1的意义
站状态2各位为1的意义见表12-12。
表12-12 站状态2各位为1的意义
站状态3一般为16#00。
如图12-50所示,第0个字节16#00、第1个字节16#04和第2个字节16#00表示无故障,第3个字节16#02表示主站地址是2,第4、5个字节16#418B是制造商的ID,这个代号可以在“模块信息”中看到。
图12-50 故障代码
2.用SFC51进行故障诊断
系统功能SFC51“RDSYSST”(读取系统状态)可以读取系统状态列表或部分系统状态列表。用读取的信息进行故障诊断。
(1)系统状态列表(SSL)介绍
1)系统状态列表(SSL)的作用。系统状态列表(SSL)用于描述PLC的当前状态。SSL的内容只能通过系统功能进行读取,而不能修改。换言之,部分列表是虚拟列表,只在有特殊请求时由CPU的操作系统所创建。
系统功能SFC51“RDSYSST”用于读取“系统状态列表”、部分列表或CPU的SSL列表摘录。对于PROFINETIO,这些SSL包含了I/O模块、PROFINET IO主站系统或实际控制器的状态信息。当选择所用的、特别是在一个中断或起动OB中使用的SSL_ID时,必须注意SFC仅能同步执行。如果执行SFC之后,Busy位激活,表明几个循环周期执行一次SFC,数据还没有完全读出,因此数据是无效的。接收到的系统状态列表数据记录包括了诊断PROFINETIO设备上的信息概览。
PROFINET通信部分列表是虚拟列表,只是在有请求时由CPU的操作系统所创建。虚拟列表来自CPU内部的PROFINET IO控制器的缓冲区,缓冲区由控制器的起动和ALARM信息进行维护和刷新。
2)局部系统状态列表(SSL)的结构。局部系统状态列表(SSL)由报头和数据记录组成。报头由局部SSL的标识符SSL_ID、索引INDEX、包含局部SSL中的数据记录的字长度和数据记录的个数组成。局部SSL的标识符SSL_ID占一个字(16位),它由局部SSL编号(第0~7位)、局部SSL摘录号(第8~11位)和模块类型(第12~15位)组成,如图12-51所示。
图12-51 局部SSL的标识符SSL_ID
SSL_ID的模块类型占高四位,主要读取模块的类型,如果读取到的二进制数据为2#0000、2#0100、2#1000和2#1100,则分别对应的模块类型为CPU模块、接口模块IM、功能模块FM和通信模块CP。
某些局部SSL或者它的摘录需要一个对象类型标识符或者一个对象号,此时必须使用索引INDEX。通过局部SSL的摘录号,可以指定要读取局部列表的哪一个子集。部分SSL_ID列表和INDEX的对应关系见表12-13。
表12-13 部分SSL_ID列表和INDEX的对应关系
(2)SFC51指令介绍
读取“系统状态列表(SFC51)指令比较难理解,其含义见表12-14。
表12-14 读取“系统状态列表(SFC51)指令和参数
要理解这条指令,必须对照表12-13,或者查看帮助。例如,当SZL_ID=16#0694和INDEX为PROFINETIO系统总线号(取值范围是100~115,如图12-53中为100)配合时,读取的信息是IO控制器系统的中央机架/站中的扩展单元的诊断状态。有时,SZL_ID的数值与INDEX数值无关,例如当SZL_ID=16#0391时,读取的信息是所有无法获得的模块的状态信息,不需要指定INDEX数值,即与INDEX数值无关。
SFC51的SZL_HEADER的数据类型是STRUCT(结构),必须在调用SFC51的组织块中创建结构。创建的方法是在OB块的局部变量的最下方生成临时变量SZL_HEADER,其数据类型为STRUCT。本例是在OB1中创建,局部变量表的结构如图12-52所示。SZL_HEADER中有两个元素,分别为LENTHDR和N_DR,其数据类型为WORD(字)。LENTHDR是读取的SSL或者SSL的数据记录的长度,N_DR是读取的数据记录的编号。
图12-52 局部变量表的结构
(3)SFC51的应用举例
【例12-5】某控制系统采用PROFINET通信,其硬件组态如图12-53所示,请用SFC51指令读取PROFINETIO的故障信息。
图12-53 系统硬件组态
解:
1)先创建共享数据块DB1,用于存储故障信息。
2)再在OB1中编写如图12-54所示的梯形图程序,注意编写程序之前,需要创建如图12-52所示的结构SZL_HEADER,否则编写的程序会报错。
注意本例的INDEX=16#64就是十进制的100,也就是如图12-53中PROFINETIO系统总线号,理解这点十分重要。
3)创建变量表进行监控,如图12-55所示。MW6中是数据记录的长度,监控为258,MW6为数据记录个数,监控为1。MW10=16#0294是SSL_ID。
对于DB1.DBB6为2#0000_0011,其中bit0表示组信息,如果为1,表示至少有一个IO设备与IO控制器进行通信;如果为0,表示IO站点全部丢失。Bit1~Bit5表示设备号1~5的IO设备的状态,1表示IO设备存在;0表示IO设备丢站。其他的高字节中的位(Bit)的含义依次类推,表示对应IO设备的状态。
图12-54 梯形图
图12-55 变量表监控
4)对数据块DB1进行监控,如图12-56所示,同样可以解读出设备的通信状态。
3.用FC10进行故障诊断
(1)FC10(AG_CNTRL)的功能
图12-56 数据块DB1监控
在故障诊断时,可以使用FC10(AG_CNTRL)程序块对连接进行诊断。具体如下:
1)读出连接信息。根据状态信息,可以确定所有或单个通信模块CP连接是否有用。
2)复位已组态的连接。可以复位个别或所有通信模块CP的连接。终止活动连接,并重新建立连接。
(2)FC10(AG_CNTRL)参数简介
FC10(AG_CNTRL)的指令和参数见表12-15。
表12-15 FC10(AG_CNTRL)的指令和参数
(3)FC10(AG_CNTRL)的应用举例
【例12-6】某控制系统采用工业以太网通信,其网络组态如图12-57所示,请用FC10指令读取通信反馈信息。
解:硬件配置和网络组态不再赘述,前面章节已经讲解。
图12-57 网络组态图
1)客户端是S7-400,客户端的程序如图12-58所示。
2)编写服务器端梯形图程序,如图12-59所示。
图12-58 客户端梯形图
图12-59 服务器端梯形图
3)在客户端的“块”中创建变量表;在变量表中监控反馈信息。
①使M10.0=1,激活通信状态,使MW2(CMD)=16#0001。反馈信息读取到MD20中,如图12-60所示。当CMD=1时,反馈值的低16位有效,其各位含义见表12-16。
图12-60 用变量表监控
表12-16 CMD=1时,反馈值的低16位含义
如图12-60所示,反馈信息为2#0000_0000_0000_0000_0111_0000_0001_0111。以下根据表12-4解释其含义。
●位0是1,表示为发送和接收作业保留的连接。
●位1是1,表示正在执行发送作业。
●位2、3是01,表示上次发送作业成功完成。(www.xing528.com)
●位4是0,表示无接收连接。
●位5是0,表示没有执行接收作业。
●位6、7是01,表示上次接收作业成功完成。
●位12、13是11,表示处于连接状态。
●位14是1,表示CP处于RUN状态。
●位15是0,表示FC10尚未复位连接或复位ID已清除。
综合以上信息可知:以太网处于连接状态,CP运行正常,发送数据正常。
②使M10.0=1,激活通信状态,使MW2(CMD)=16#0002。反馈信息读取到MD20中,如图12-61所示。当CMD=2时,反馈值的低16位有效。
当CMD=16#0000_0001时,表示成功地将复位作业传送给CP。触发连接中止及后续的连接建立。
当CMD=16#0000_0002时,表示无法将复位作业传送给CP,原因是CP上的服务尚未起动(例如,CP处于STOP状态)。
如图12-53所示,反馈信息为2#0000_0000_0000_0000_0000_0000_0000_0001=16#0000_0001。表示成功地将复位作业传送给CP。
③使M10.0=1,激活通信状态,使MW2(CMD)=16#0003,获取所有的连接状态信息,两个双字反馈值有效。反馈信息读取到MD20和MD24中,如图12-62所示。当为1时,表示连接,为0时表示连接终止或者没有组态。图12-62中反馈信息为2#0000_0000_0000_0000_0000_0000_0000_0000,表示都未连接。如果为反馈信息为2#0000_0000_0000_0000_0000_0000_0000_0111,则表示ID号为1、2和3的处于连接状态。
图12-61 用变量表监控
图12-62 用变量表监控
4.用FB10进行故障诊断
使用AG_CNTEX(FB10)程序块可以对连接进行诊断,并可使用Ping命令通过网络对设备进行寻址。必要时,可以使用AG_CNTEX重新初始化连接建立过程。
(1)FB10的功能
AG_CNTRL(FC10)和与程序块AG_CNTEX(FB10)相比,程序块AG_CNTEX可提供更多功能。AG_CNTEX包含了AG_CNTRL的所有功能,可以在用户程序中以相同方式使用这些功能。其具体功能如下:
1)读出连接信息。根据状态信息,可以确定复位所有或单个CP连接是否有用。
2)复位已组态的连接。可以复位CP的个别或所有连接。
3)终止活动连接,并重新建立连接。
4)读出CP中组态的连接类型(相对于AG_CNTRL的扩展功能)。
5)发送PING命令(相对于AG_CNTRL的扩展功能)。
6)可以检查网络中的特定节点是否可到达。
(2)FB10(AG_CNTEX)参数简介
FB10(AG_CNTEX)的指令参数含义见表12-17。
表12-17 FB10(AG_CNTEX)的指令和参数
PING参数引用数据块,其数据结构见表12-18。
表12-18 PING参数引用数据块的数据结构
(3)FB10指令的应用举例
【例12-7】某控制系统采用工业以太网通信,其网络组态如图12-57所示,请用FB10指令读取通信反馈信息,并用PING功能检查网络是否正常连接。
解:FB10指令读取通信反馈信息方法与FC10读取反馈信息的方法完全相同,在此不详细介绍,仅将反馈信息列出。
1)创建自定义数据类型UDT1,如图12-63所示,其符号名为“PingA”。
图12-63 创建UDT1
2)创建数据块DB1,其符号名为“Ping”,创建3个变量,分别是Ping1、Ping2和Ping3,其数据类型为前面创建的UDT1,即“PingA”,如图12-64所示。单击程序编辑器菜单中的“视图”→“数据视图”,弹出如图12-65所示的界面。
注意:不创建UDT1也可行,但在创建数据块时就比较麻烦,如果以太网连接的站点越多,使用自定义数据类型就越方便。
在图12-65中,有三个IP地址分别是192.168.0.3(192的十六进制是C0,存储在Ping1.Ping[0]中;168的十六进制是A8,存储在Ping1.Ping[1]中)、192.168.0.4和192.168.0.5。
图12-64 创建DB1(声明视图)
图12-65 DB1的数据视图
3)客户端是S7-400PLC,客户端的程序如图12-66所示。
4)编写服务器端梯形图程序,如图12-67所示。
5)在客户端的“块”中,创建变量表,在变量表中,监控反馈信息。
5.用FC3对CP342-5的从站进行故障诊断
(1)FC3(DP_DIAG)的功能
程序块FC3(DP_DIAG)用于请求诊断信息,通过指定一个站地址,还可以为一个指定的从站请求诊断数据。为了将诊断数据传送到CPU,应该在CPU中保留一个内存区域,然后在调用中指定该区域。该内存区域可以是一个数据块区或一个位存储区。还可以在作业中指定可用内存区域的最大长度。
FC3(DP_DIAG)只有在DP主站模式中才起作用,从站模式无效。其具体功能如下:
图12-66 客户端梯形图
图12-67 服务器端梯形图
1)请求DP站列表。
2)请求DP诊断列表。
3)请求DP单个状态。
4)非周期性地读取DP从站的输入/输出数据。
5)读取较早的DP单个诊断信息。
6)读取DP状态。
7)读取用于PLC/CP停止的DP模式。
8)读取DP从站的当前状态。
(2)FC3(DP_DIAG)指令参数
FC3(DP_DIAG)的指令参数含义见表12-19。
表12-19 FC3(DP_DIAG)的指令和参数
(续)
(3)FC3指令的应用举例
【例12-8】某控制系统采用PROFIBUS-DP通信,其硬件组态如图12-68所示,请用FC3指令读取通信诊断信息。
图12-68 硬件组态图
解:
1)创建一个项目,硬件组态如图12-68所示,具体操作步骤参考8.4.6(CP342-5PROFIBUS-DP作主站的通信)。
2)创建一个数组。在创建数组前,先创建共享数据块DB1,再在数据块中创建一个数组(包含16个元素,数据类型为字节),如图12-69所示。
图12-69 数组
3)编写梯形图程序如图12-70所示。
图12-70 梯形图
M80.2为0表示不存在新的诊断数据,当M80.2为1表示有新的诊断数据。
①当DTYPE(MB50)=0时,表示读取的数据为DP站列表,站地址的范围是0~127。
DP站的列表的地址用FC3的输入参数DIAG设置,长度为16 B(128位),每一位对应一个DP地址,即对应于一个DP从站,如图12-71所示。
图12-71 DP站列表中从站状态位
状态位为0的含义有三种情况:从站处于周期性传输状态、没有使用该站以及该从站输入/输出数据的长度组态为0。
状态位为1的含义是从站没有处于周期性传输状态。
当DTYPE(MB50)=0时,数据块中的数组AA中存储的数据就是位状态,使数组处于监控状态,如图12-72所示。数字AA的第一个字节AA[0]=16#10=2#0001_0000,对应的就是3号站,其含义是3号站没有处于周期性传输状态。可能的原因是3号站掉电或者电缆断开等原因。假如,AA[0]=16#18=2#0001_1000,表示的含义是3、4号站没有处于周期性传输状态。
图12-72 数组AA
②当DTYPE(MB50)=2时,表示读取的单个站的当前诊断信息。使数组AA处于监控状态,如图12-73所示。
前3个字节(AA[0]~AA[2])表示站的状态;第4个字节表示主站地址,本例为16#02;第5、6个字节表示的是制造商标识号;第7个字是固定数值;从第9个字开始表示的是诊断信息。
图12-73 数组AA
当然,DTYPE还有其他的取值,请读者自己参考相关手册。
此外,还有一些其他的诊断方法,如使用FB126和FC125诊断,请读者自行参考相关资料。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。