如何使用博图监控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协议通信实现过程。

楼主最近还看过


客服
小程序
公众号