[西门子] 如何使用博图监控Profinet从站通讯状态?

[复制链接]
查看44867 | 回复0 | 2024-8-9 20:20:03 | 显示全部楼层 |阅读模式
西门子系列PLC常用技巧

如何监控Profinet通讯状态?

主控设备往往需要对下属从站的运行状态实时监控,当出现异常时能够及时报警,提醒维护人员排查故障,通常我们可以通过“心跳”来监控下挂设备,其实我们还可以通过博图自带的模块状态监控指令,对已组态Profinet IO设备进行实时监控,确保通讯无异常。



【关于ModuleStates指令】

ModuleStates指令可用来读取 PROFINET IO 设备或 PROFIBUS DP 从站的模块状态信息。在【扩展指令】→【诊断】找到该指令。

模块的接口含义如下:



使用参数MODE可以用来设置指令的不同模式。可以有以下几种选择:

MODE=1---模块已组态。

MODE=2---模块故障。

MODE=3---模块禁用。

MODE=4---模块存在。

MODE=5---模块中存在故障。

...

搭配参数MODE,INOUT类型中的STATE参数可以用于输出IO设备的各个插槽的以上不同的状态信息。

STATE可以使用bool或者是bool类型的数组。如果想输出所有模块,可使用arry of bool来监控模块状态信息。

就知道你不喜欢看这个,那就直接开干吧!


【怎么用?!】


任务目标:

本次PLC主站下挂Profinet设备有25个,需要对各个模块的通讯状况实时监控,掉线可立即报警!

开搞开搞!

STEP 01 声明变量。

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


STEP 02 批量创建数组结构。

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



        STEP 03 根据现场实际添加注释。



STEP 04 查看IO设备硬件标识符

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



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



STEP 06 创建报警输出bool型变量


        STEP 07 编写程序

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



        STEP 08 下载并监控状态信息



可以看到,States[0]=True,表示该监控对象从插槽1~127至少有1个【模块存在】(因为MODE=4),而States[8]、States【9】=False,即插槽8和9未找到模块!

验证无误之后,即可批量复制程序,由于使用数组,可使用循环指令循环监控并报警。但为了方便查看监控报警,依旧使用梯形图编写。如下所示,复制相同24个程序段即可。


通过以上方法即可对从站通讯状态进行主动监控,无需等待从站反馈心跳交互。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则