电工学习网

 找回密码
 立即注册
查看: 10234|回复: 0
打印 上一主题 下一主题

博途我所用的DeviceStates指令块

[复制链接]
跳转到指定楼层
楼主
发表于 2018-11-21 17:13:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
       早期对DP进行诊断时,西门子提供了FB125/FC125 2个程序块给大家使用,后来PROFINET大行其道,西门子提供了 可以同时诊断PN和DP网络的FB126功能块,这个功能块需要根据CPU型号选择不同版本的FB126,大家需要选择合适的FB126(主要是不同型号的CPU所支持的程序块大小不一样,低端的最大支持16K);坑爹的是FB126是对外保密的,结合第三方系统使用,需要自己分析DB里类容。所以 在那段时间,楼主都是自己通过调用"S7_RDSYSST"系统功能来进行诊断的,虽然功能简单了点,但是够用了。

        使用1500+TIA PORTAL后,指令 "DeviceStates"让你的需求变的简单,而且 支持PN/DP诊断;
        先看下PORTAL 里的指令帮助吧
        首先,是指令的参数接口
        1:LADDR PN IO 或者DP的硬件标识,数据类型是HW_IOSYSTEM,这值怎么找?其实在我们组态完PN IO或者DP 主站系统后,会在 plc变量默认变量表系统常数里找到它见下图
看硬件配置图
博途我所用的DeviceStates指令块

其次找到相应的PN IO系统的HW_IOSYSTEM值
博途我所用的DeviceStates指令块

    2:MODE PLC 会根据在此所设的参数来读取相应的信息,模式定义见下图
博途我所用的DeviceStates指令块

3:RET_VAL 返回值

4:读取的信息存放区,数据类型VARIANT,


编程实例
首先,要定义信息存储区见下图,分别定义了 5个一维数组
博途我所用的DeviceStates指令块

改变MODE参数来读取相应的信息
博途我所用的DeviceStates指令块
读取的信息中的 CPU中已组态的站点故障站点未激活站点等信息都存在相应的数组里了,从数组元素1开始存放各个站点的信息。数组大小,大家可以根据需要来确定,目前CPU自身+扩展的CM/CP 最多支持1000个IO设备,所以楼主就把数组大小设为1024了(目前1500系列PLC的数据内存比较大)
新的指令真是简单明了!
本文转载自:西门子工业技术论坛

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-27 04:42

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表