如何用博图监控PROFINET从站状态?掌握这两个方法就够了 点击:24 | 回复:0



USB210

    
  • 精华:0帖
  • 求助:3帖
  • 帖子:445帖 | 122回
  • 年度积分:9
  • 历史总积分:2377
  • 注册:2009年8月05日
发表于:2026-01-17 10:56:34
楼主

如何使用博图监控Profinet从站通讯状态,这里有两个方法供你选择。

方法一使用DeviceStates指令

创建全局数据块

在博图项目中,创建一个全局数据块(DB),用于存储从站状态信息。在数据块中定义一个array of bool类型的变量(如state),长度根据从站数量确定(通常为1024位)。

调用DeviceStates指令

在OB1或其他循环组织块中,调用DeviceStates指令。

设置laddr参数为Profinet IO系统的硬件标识符(可在“设备和网络”→“网络视图”中找到,或在“PLC变量”→“系统常量”中筛选hw_iosystem类型)。

设置mode参数为2(表示读取从站故障状态),其他模式可参考指令说明。

将state参数连接到全局数据块中的array of bool变量。

监控状态变量

下载程序到PLC后,在博图的变量监控窗口中,观察state数组的值。若某个从站出现故障,对应数组位会被置为1(例如state[1] = 1表示设备编号为1的从站故障)。

方法二使用ModuleStates指令

声明变量

结合该通讯指令接口,创建如下FB块并在静态区声明以下类型变量。

批量创建数组结构。

考虑到设备数量较多,首选数组结构,方便程序修改。

根据现场实际添加注释

查看IO设备硬件标识符

【PLC变量】→【显示所有变量】→【系统常量】。点击【数据类型】,快速筛选出同为【Hw_Device】类型的硬件标识符,方便抄写。

抄写从站硬件标识符至变量初始值。

创建报警输出bool型变量

创建全局数据块

对模块状态STATES缓存进行对比。

下载并监控状态信息

可以看到,States[0] = True 表示监控对象(对应MODE=4)的插槽1~127中至少存在一个在线模块;而States[8]和States[9]均为False,则表示插槽8和9没有检测到模块,这与实际硬件配置一致。

验证无误后,即可基于此逻辑批量扩展程序。虽然使用数组配合循环指令能够高效实现监控,但为了便于在线查看和诊断报警,本例仍采用直观的梯形图(LAD) 进行编写。如下所示,将程序段重复复制24次,即可完成对所有所需插槽的状态监控与报警。

PLC无线通讯案例分享

本方案以组态王和2台西门子S7-1200为例,介绍组态王与多台 PLC的无线Profinet协议通信实现过程。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师