1.硬件组态
将项目“用博途诊断故障”另存为“用程序诊断故障”(见随书光盘中的同名例程)。双击指令树中的“设备和网络”,打开网络视图。CPU 1516C-3 PN/DP为IO控制器,设备名称为hsx1的ET 200SP为1号IO设备(见图7-39)。为了演示故障诊断功能,组态了一个并不存在的IO设备ET 200AL。将“硬件列表”窗口的文件夹“分布式I/O\ET 200AL\Interface modules\PROFINET”中的接口模块IM 157-1 PN拖拽到网络视图中,将它连接到PROFINET IO系统网络上。
选中ET 200AL的以太网接口,再选中巡视窗口的“属性>常规>以太网地址”,ET 200AL的IO设备的默认编号为2,IP地址为192.168.0.3。
图7-39 网络视图
图7-40 诊断故障的程序
2.用于故障诊断的指令
打开主程序OB1,指令列表的“扩展指令”窗格的“诊断”文件夹中的10条指令用于读取各种硬件信息和诊断信息。其中最重要和最实用的是“读取IO系统的模块状态信息”指令DeviceStates和“读取模块的模块状态信息”指令ModuleStates。可以在OB1和中断OB(例如诊断中断OB82)中调用这两条指令。
3.编写诊断故障的程序
指令“DeviceStates”用于查询PROFINET IO系统中所有IO设备的状态信息,或DP主站系统中所有DP从站的状态信息。
在OB1中调用DeviceStates指令,参数LADDR为PROFINET IO系统或DP主站系统的硬件标识符。输入该参数时两次单击地址域的<???>,再单击出现的按钮,选中列表中的“Local~PROFINET_IO-System”,其值为261。
参数MODE的值为1~5时,分别读取整个PROFINET IO系统或DP主站系统的下列状态信息之一。MODE为1读取已组态的IO设备/DP从站;为2读取有故障的IO设备/DP从站;为3读取已禁用的IO设备/DP从站;为4读取存在的IO设备/DP从站;为5读取出现问题的IO设备/DP从站,例如有维护要求或维护建议、不可访问、不可用和出现错误的IO设备/DP从站。图7-40中该指令的MODE为2,用DeviceStates指令读取有故障的IO设备/DP从站。
InOut参数STATE用于输出由MODE参数选择的IO设备或DP从站的状态,其数据类型为VARIANT。在全局数据块“诊断状态”(DB1)中,生成数组“IO设备状态”,数据类型为Array[0..4] of Bool,该数组由5个数据类型为Bool的元素组成,作为参数STATE的实参。数组元素的个数应大于等于IO设备的个数+1。
两条指令的返回值Ret_Val是指令执行状态,它们的实参是数据类型为Int的临时局部变量RET1和RET2。(www.xing528.com)
指令“ModuleStates”用来读取PROFINETIO设备或PROFIBUS-DP从站中的模块状态信息。参数LADDR为IO设备或DP从站的硬件标识符。PLC默认的变量表中1号IO设备hsx1~IODevice的硬件标示符的值为267。
参数MODE的值为1~5时,分别读取模块的下列状态信息之一:模块已组态、模块故障、模块已禁用、模块存在,和模块中存在故障,例如有维护要求或维护建议、不可访问、不可用和出现错误。图7-40中该指令的MODE为2,用该指令读取有故障的模块。
InOut参数STATE用于输出由MODE参数选择的模块状态。在全局数据块“诊断状态”(DB1)中,生成数组“PN模块状态”,数据类型为Array[0..6] of Bool,该数组由7个数据类型为Bool的元素组成,作为参数STATE的实参。数组元素的个数应大于模块的个数+2。
4.故障诊断的实验
人为设置一些故障,将程序和组态数据下载到CPU,打开网络视图,单击工具栏上的“在线”按钮,由IO设备上的诊断符号可知1号IO设备ET 200SP有故障,CPU不能访问2号IO设备ET 200AL。
双击打开数据块“诊断状态”DB1(见图7-41),启动监控,打开两个数组,可以看到其中的诊断状态。
数组元素“IO设备状态[0]”为组显示,它为1(TRUE)表示网络上至少有一个IO设备有故障。“IO设备状态[1]”和“IO设备状态[2]”为TRUE,表示1号IO设备ET 200SP和2号IO设备ET 200AL有故障。如果“IO设备状态[n]”为TRUE,表示n号IO设备有故障。
图7-41 DB1中的诊断结果
ET 200SP有3块模块有故障,2号槽的DI模块被拔出,3号槽的DQ模块和5号槽的AQ模块的输出负载断路。将组态信息和程序下载到CPU。打开网络视图,双击ET 200SP,打开它的设备视图。单击工具栏上的“在线”按钮,切换到在线模式。由模块上的诊断符号可以看到该IO设备的第2、3、5号槽的模块有故障。
数组元素“PN模块状态[0]”为组显示(见图7-41的右图),它为TRUE表示IO设备至少有一个模块有故障。“PN模块状态[n]”为TRUE,表示第n-1号模块有故障。数组“PN模块状态”的第3、4、6号元素为TRUE,表示第2、3、5号模块有故障。
切换到离线模式后,将指令DeviceStates的参数MODE改为4(读取存在的IO设备),将程序下载后,“IO设备状态[1]”为TRUE,“IO设备状态[2]”为FALSE,表示1号IO设备ET 200SP存在,2号IO设备ET 200AL不存在。
可以用HMI画面上的指示灯,显示指令DeviceStates检测到的有故障的IO设备/DP从站,以及指令ModuleStates检测到的有故障的模块。
本节配套的视频教程为“用指令诊断故障”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。