一般的系统都会有一个300或400PLC主站挂一个甚至多个DP从站,如ET200M,ET200S,ET200B等等,西门子的这些分布式IO从站性能优良,可靠耐用
而且具有强大的自诊断能力,但我们有很多应用他们时并没有完美的利用他们这
一点功能,一般他们在出现故障时我们都是通过PLC的状态灯LED来初步判断,更具体
的会通过读故障诊断缓冲信息来诊断,但这样需要借用编程PC,这对快速诊断和处理
显然不利,所以今天介绍一下用SFC13来读DP从站的诊断信息:
SFC13可以读取DP从站的诊断信息,诊断信息的结构可以在所用DP从站使用手册上获得
一般从站的前3字节数据信息结构是相同的,今天发个例子重点在于初识SFC13的用法
具体可以参照附件1《用于S7的系统软件和标准功能参考手册.rar》
一般最简单有效的方法是通过诊断诊断字节1是否为0来判断DP从站是否有错误,然后
可以在人机界面如西门子触摸屏上来显示出来,这样在发生故障时就能马上定位是哪个模块,当然还可以写程序进一步来分析SFC13读取的数据来判断出具体是哪个槽哪个模块发生了什么故障
注:
本程序来自于廖常初老师的《西门工业通信网络组态编程与故障诊断》
SFC13的LADDR为硬件组态时的诊断地址(点击DP总线,在下方的列表时出现的各从站的诊断地址,如2021,2022,此参数必须为十六进制,如2022对应16#3FE)
本程序是用STL编写,程序在OB86和OB82里编写着,比较简单
SFC13是异步执行的,也就是说要调用多次,直到执行完毕为止,可以通过查询BUSY参数位来判断是否执行完毕。程序里的MW 84为调用OB块的次数。#OB86_EV_CLASS=39时为故障发生,等于38时为故障处理OK,可以从STEP7帮助里获得OB里的局域变量的信息
欢迎大家加群交流:
点击此处加入群
附件程序点击下载