FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0

发布时间:2021-12-17 17:22:48     来源:

SM877-PNT耦合器若与西门子S7-1200/1500发生通讯故障时,可通过耦合器本体的指示灯直观的定位问题。指示灯说明如下:

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


当通讯发生异常时,还可以通过诊断指令来对故障进行准确定位。本FAQ使用S7-1200控制器作为Profinet主站,介绍如何通过诊断指令来获取耦合器的连接状态,从而获取SM877-PNT当前所接扩展模块的个数为例说明。

(本文对于控制器如何连接SM877-PNT不做介绍,使用详情请参考SM877-PNT产品使用手册)

定位发生故障的耦合器

具体定位到是哪个PN从站发生故障,使用DeviceStates 指令对分布式 IO 子站进行诊断;

1、在全局数据块中创建数据类型为 Array of BOOL 数组,共计1024个元素,以及添加一个返回值的变量(uint数据类型):

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


2、在OB1中调用DeviceStates指令,双击LADDR引脚,点击小书本,选择需要诊断的PN IO系统硬件标识符:

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


3、将MODE设置为2,STATE填写上述定义的全局数据块数组。

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


DeviceStates指令引脚说明

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


对分布式IO子模块进行诊断

使用 ModuleStates 指令对分布式IO子模块进行诊断。

1、在全局数据块中创建数据类型为 Array of BOOL 数组,共计34个元素,以及添加一个返回值的变量(uint数据类型):

(之所以添加34个元素是因为耦合器可扩展32个模块,再加上2个状态位)

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


2、在 OB1 中调用 ModuleStates 指令,双击 LADDR 引脚,点击小书本,选择需要诊断的PN IO设备硬件标识符。

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


选择的PN设备与网络视图中组态的保持一致:

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


3、将MODE设置为2,STATE填写上述定义的全局数据块数组。

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


ModuleStates指令引脚说明

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


测试结果

1、通讯正常时,所有故障信息均为false:

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


2、人为将连接877-PNT掉电或网线拔除导致丢站之后,站点1报错,且此时PN耦合器的子模块也存在报错:

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


3、人为将SM877-PNT扩展的第11、12个模块移除后,对应的SM877_State[12]和SM877_State[13]变为TRUE,即存在报错:

注:SM877_State[2]为877-PNT扩展的第一个槽位扩展的IO模块,依次类推。

FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0


FAQ-S7-1200如何对SM877-PNT做故障诊断_V1.0