SIMATIC S7-1500与TIA博途软件的使用---连载95

已锁定

总坛主

  • 帖子

    1023
  • 精华

    21
  • 被关注

    395

论坛等级:至圣

注册时间:2011-02-24

黄金 黄金 如何晋级?

SIMATIC S7-1500与TIA博途软件的使用---连载95

5868

14

2017-02-23 10:28:50

 

以下内容节选自机械工业出版社出版的西门子自动化技术丛书----《SIMATIC S7- 1500 与 TIA博途软件使用指南》, 作者崔坚。更多更详细的内容请您参考《SIMATIC S7- 1500 与 TIA博途软件使用指南》一书。

 

 

通过编写程序实现诊断

  • 12.7通过编写程序实现诊断

S7-1500 PLC也支持通过编写用户程序实现对系统的诊断。比如可以通过程序判断一个模块或I/O站的工作状态,该类指令位于“指令列表”—>“扩展指令”—>“诊断”目录下,如图12- 20所示。

 

图12- 20 诊断指令列表

 

下面通过示例的方式,介绍其中几个典型诊断指令的使用。

1)      LED指令

在PLC中调用“LED”指令可实现对CPU的STOP/RUN、ERROR、 MAINT 3个LED的状态查询,程序调用如图12- 21所示。

图12- 21 LED诊断指令

 

参数 LADDR数据类型为“HW_IO”,调用时需要赋值CPU 的硬件标识符。例如,要查询 CPU LED (STOP/RUN) 的状态,需将硬件标识符“Local~Common”赋值给LADDR;1赋值给LED(表示查询STOP/RUN灯的状态)。根据LED指令返回的状态值“Ret_Val” 即可判断CPU的LED指示灯工作状态,示例中CPU工作在RUN模式。

 

2)      DeviceStates 指令

通过调用“DeviceStates”指令可以读出PROFINET IO或者PROFIBUS-DP网络系统中IO设备或者DP从站的故障信息。该指令可以在循环 OB 以及中断 OB(例如,诊断中断OB82 )中调用。下面以示例的方式介绍如何使用DeviceStates 指令查询PROFINET IO和PROFIBUS-DP网络上有故障的站点。

在本示例中,S7-1516 CPU分别通过PN和DP接口分别连接了PN和DP的分布式I/O,系统配置如图12- 22所示。

图12- 22 S7-1500系统配置图

 

在CPU 中,插入一个循环中断 OB 200,并在该OB中调用“DeviceStates”指令,用于查询PROFINET  IO网络上有故障的IO设备,如图12- 23所示。

图12- 23 使用“DeviceStates”指令对PROFINET网络进行诊断

 

同样再次调用“DeviceStates”指令,用于查询PROFIBUS-DP有故障的从站,如图12- 24所示。

图12- 24 使用“DeviceStates”指令对PROFIBUS网络进行诊断

 

 “DeviceStates”指令参数介绍:

LADDR:PROFINET IO 或 DP 主站系统的硬件标识符,可以在项目树下的“PLC变量”->“显示所有变量”->“系统常量”中,查看名称分别带PROFINET和DP字样、数据类型为 “Hw_IoSystem”的变量。可以看到,对应PN网络的值为259,而对应DP网络的值为284,如图12- 25所示。

图12- 25 查看系统常量表确定PROFINET IO或DP主站系统的硬件标识符

 

MODE:通过对MODE赋不同的值,可以对分布式IO站的不同状态进行诊断:

    1: IO 设备/DP 从站已组态

    2: IO 设备/DP 从站故障

    3: IO 设备/DP 从站已禁用

    4: IO 设备/DP 从站存在

    5: 出现问题的 IO 设备/DP 从站,例如:维护要求或建议、不可访问、不可用或出现错误。

Ret_Val:指令执行状态

STATE:每一个位信号指示一个IO设备/DP从站的状态,与 MODE 参数有关。示例中MODE选择2,表示查询PROFINET IO和PROFIBUS-DP 网络上有故障的从站。如果位0 = 1(组显示), 指示网络上至少有一个 IO 设备/DP 从站有故障。位n = 1,指示设备编号/DP地址为“n”的IO设备/从站有故障。

对于 PROFINET IO 系统,IO 设备的设备编号可以在“接口模块的属性”->“以太网地址”界面中PROFINET设备编号中查看,如图12- 26所示,设备编号为1 。

 图12- 26 查看PROFINET设备编号

 

对于“STATE”参数,建议使用“BOOL”或“Array of BOOL”作为其变量的数据类型。如果仅需输出组信息(位0状态),在 STATE 参数中使用“ BOOL ”数据类型;如果需要输出所有 IO 设备/DP 从站的状态信息,在STATE参数中使用“Array of BOOL”数据类型。这种情况下, 对于PROFINET IO 系统需要1024 位,而对于 DP 主站系统需要128 位。

例如,在CPU 中创建一个全局DB 块,并在该DB块中创建一个名称为“PN_Device_Status”的数组变量,类型为 Array of BOOL,长度1024,那么这个数组变量可作为STATE参数的变量,用于指示有故障的IO设备,如图12- 27所示。

图12- 27 为“DeviceStates”的STATE参数建立数据区

同样,也可以创建一个“PB_Device_Status”的数组变量,类型为 Array of BOOL,长度128,用于指示有故障的DP从站。

 

3)      ModuleStates指令

可以通过调用“ModuleStates”指令对某个分布式I/O上的模块进行诊断,例如,可以读取 PROFINET IO 设备或 PROFIBUS DP 从站中模块被拔出的当前信息或者模块存在的故障信息。

下面以示例的方式介绍如何使用“ModuleStates”指令查询一个PROFINET IO站点是否存在有故障的模块。该指令可以在循环 OB 以及中断 OB(例如,诊断中断OB82 )中调用。

在CPU 中,插入一个循环 OB 200,在该OB 中调用“ModuleStates”指令,如图12- 28所示。

图12- 28 使用“ModuleStates”指令对分布式IO站的模块进行诊断

 

“ModuleStates”指令参数介绍:

LADDR:分布式IO站的硬件标识符,该标识符可以在“PLC变量”->“显示所有变量”->“系统常量”中,查看名称分别带IODevice和DPSlave字样、数据类型为 “Hw_Device”或“Hw_DpSlave”的变量。 如图12- 29所示,该系统有2个PN站点,值分别为268和264;一个DP站点,值为285,示例中选择硬件标识符为264的站点。

图12- 29 查看系统常量表确定IO设备/DP从站的硬件标识符

 

MODE:通过对MODE赋不同的值,可以对分布式IO站点上模块的不同状态进行诊断:

    1: 模块已组态

    2: 模块故障

    3: 模块禁用

    4: 模块存在

    5: 模块中存在故障。 例如:维护要求或建议、不可访问、不可用或者出现错误

Ret_Val:指令执行状态。

STATE:每一个位信号指示一个模块的状态,与 MODE 参数有关。示例中MODE选择2,表示查询站点上有故障的模块。如果位0 = 1,指示 站点上至少存在一个模块有故障;位n = 1,指示第n-1(例如:位 3 对应插槽 2)号插槽中的模块有故障。

在CPU 中创建一个全局DB 块,并在该DB块中创建一个名称为“PN_Module_1_Status”的数组变量,类型为 Array of BOOL,长度128,那么这个数组变量可作为STATE参数的变量,用于指示有故障的模块,如图12- 30所示。

图12- 30 为“ModuleStates” 的STATE参数建立数据区

 

“DeviceStates”和“ModuleStates”指令可以配合使用,用于PLC系统中所有PN和DP总线系统以及分布式I/O站点中各模块状态的诊断。

 

SIMATIC S7-1500与TIA博途软件的使用---连载95 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8662条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。