基于ProDiag的监控视图-LAD篇

此篇的目的是对ProDiag的使用做一个回顾和加深。

ProDiag是一个可选插件,小于25个使用点不需要授权,否则是需要授权的,另外它只支持1500PLC。
优点:

  • 不需要组态
  • 报警随时在PLC侧修改,不影响HMI侧显示和运行
  • 监控类型比较多,而且可以自定义
  • PLC触发报警,显示可以是HMI或者是WEB
  • 每一条报警对应的程序段可以在HMI上查看到代码(LAD/FBD有效)
  • 可以显示Graph程序段
  • 报警消息比较丰富,而且可以自定义

1. ProDiag的监控设置

(非必要但可以)

在项目内,找到公共数据,展开它,找到监控设置,双击配置,打开常规,该页面就是配置监控文本和报警格式的详细配置表了。

  • 类别:分报警类别的,默认有错误,警告,信息,你也可以按照自己的想法添加更多。报警类为Acknowledagement和 No Acknowledagement,表示需要不需要确认,按照你的需求选择。

  • 子类别:他是用来分类你的报警区域的,比如说,你可以分别定义三个子类别为workshop1/workshop2/workshop3

  • 监控类:他来定义你监控的触发器,监控类型,有默认的,不想可以不用设置。

  • 中央时间戳:可以允许你定义一个时钟,以后你的所有PLC报警信息都以这个时间为时间基准。使用这个的要求是首先你要在PLC里面定义并赋值一个LDT类型的变量,其次是你要对ProDiag FB块的属性使能使用中央时间戳选项。

  • 报警文本:用来设置报警信息的格式,这个可以分配一下,当出现报警的时候报警文本的格式就是这个格式

如下图:

.监控设置的内容是应用到项目全局的,不单单是一个PLC。这些设置对大型项目和标准化项目有着重要的意义。

2. ProDiag变量监控

这里就直接实操了。

  • 创建一个PLC+HMI的系统,我用的1513F+TP1200

  • 新建一个FB,语言选择PRODIAG(含IDB)

    .选择初始值采集,主要是HMI需要一个初始状态,出问题的时候能有对比(你要是不勾也行,不用这个功能而已,它的原理是将初始状态和问题状态对比,给你高亮异常的点位。)
    .若先前设置了使用中央时间戳这里记得也要勾选,没有就算了。
    .版本号V1.0可以最多支持250个变量,V2.0可以最多支持1000个变量

  • 新建一个程序段,监控程序线圈

  • 去到你的DB里面,右键监控变量result,操作数类型,监控的变量触发器,设置延时和C1/C2/C3触发器,也不是飞的全部设置,看你需求。

.注意ProDiag FB改成自己想要的FB
.检查一下报警文本是不是自己想要的
.这里面有个大坑(也不能说坑,是我自己没搞明白):** 监控类型如果选择操作数的话,是看不了PLC代码视图的,切记**

  • 对详细文本域的处理
    每个报警文本最多可以添加3个相关值,SD_4~SD_6,对应编号4/5/6,添加相关值的格式如下:
    1
    @<相关值的编号><格式>@ #字符@用于打开和关闭相关值 

HMI相关格式说明:

格式 说明
%[i]X 共i位数的十六进制数
%[i]u 共i位数的不带符号的十进制数
%[i]d 共i位数的带符号的十进制数
%[i]b 共i位数的二进制数
%[i].[y]f 共i位数的浮点数,小数点后y位
%[i]s 共i位数的ANSI字符串
%t#<文本库内容> 访问文本库

.这样警报文本就能带上你想要的关键变量信息了。

  • 文本库设置

PLC报警文本列表中,新建一条属于自己的文本列表

.可以带上文本列表条目,不满足条件的时候会输出想要的内容,比如报警文本就能详细告诉你哪个条件不满足了。

  • HMI需要变量
    • 需要一个从ProDiag的iDB中引出的State变量

      .如果你去监控过这个state变量结构的话,你会发现其实代码视图的显示需要的源数据都是靠它。最后我再讲讲代码视图的实现逻辑的时候会再提到它。

    • 需要两个HMI内部变量,一个作为条件分析视图控制变量(wstring类型),一个作为内部开关量(bool)。画面布局如下:

.两个控制变量在报警视图中设置
.按钮引用bool类型的控制变量做可见性设置,按钮事件中选择激活代码视图
.prodiag概览视图中需要State变量来获取来自Prodiiag_FB的全部信息
.代码视图拖出来就行。

  • 按钮设置
    • 按钮动作事件,当按下按钮后,激活相应的代码视图

    • 按钮可见性连接到bool类型的控制变量。

  • 拖一个概览视图

    • 视图的常规过程,连接变量state
  • 拖一个代码视图

  • 拖一个条件分析视图

    • 连到代码分析视图变量(WSTRING)
  • 拖一个报警视图

    • 设置代码分析视图控制变量,(一共俩个)

.这两个变量,都是自己在HMI变量表里面新建的内部变量,它没有任何其他地方写入

  • 设置报警类型启用

.这里也有个我踩过的坑:** 如果你触发的报警类别在这里没有被勾上的话是弹不出报警的**

  • 仿真效果如图:

    .注意右上角编号53的是个操作数报警,它是我作对比用的一个prodiag类型,它能被Prodiag抓到并产生报警,但是它产生不了代码视图的,切记

    -prodiag概论视图简单解释

.名字显示的是你连接的Prodiag FB的背景DB
.类别:E表示error,W表示warning,都是你在监控设置里面设置的类别
.类型:O表示操作数,I表示互锁,都是你在建立prodiag监控时选择的。
.红色有表示现在出现的类型和类别。

3. 内在逻辑梳理

这是本篇最重要的东西,虽然可能看上面看的一头雾水,但是只要你捋清楚了这个事的内生逻辑,我相信你可以自己摸索出自己的方法。

  1. ProDiag是基于PLC推送的,所以我们需要将自己要监控的变量放在自己建立的Prodiag FB里面,因为只有被ProDiag FB管理到的监控才会被正确的记录下来。

  2. 监控变量的监控类型,互锁条件,触发条件是需要自己设置的,因为只有自己才知道自己程序里面的触发逻辑。

  3. 报警类别,报警子类别,报警确认,报警格式,文本域等需要自己去设置的原因是:如果你是一个大型项目或者一个标准化项目,报警再哪一个区域被触发,哪一个类型,是否对于维修有重大影响,是否需要现场确认,都是需要工程人员自己去思考和定义的。同理,报警格式和报警详细文本也是基于这一层意思的。如果你是做来玩,或者根本不需要详细内容,那你甚至可以不用关心这些看似枯燥又繁琐的东西。

  4. ProDiag FB关于是否选择初始值采集和使用中央时间戳的属性,完全取决于你对最后输出结果的把控和需求。

  5. 在PLC侧做完之后其实本质已经结束了,因为ProDiag是一个PLC主动推送的过程,和HMI或者WEB没有半毛钱关系,说白了,它们就是显示工具而已。(从这个角度看ProDiag的好处就是完全不会对HMI造成多大的通信负载和完全不依靠HMI的通信响应时间,因为PLC是主动端)。

  6. HMI侧首先要配置的是ProDiag概览,因为我们需要它连接来自于ProDiag FB背景DB的State结构全部内容,State存储了Prodiag推送的详细的,细节的内容。

  7. 接下来我们需要配置报警视图,我们在报警视图里面放入了两个HMI内部变量代码分析视图变量(wstring)控制变量(bool),这两个内部变量存储了报警推送过来时的文本和使能信息。

  8. 基于报警视图的内容,我们配置了条件分析视图,这个视图是解析了代码分析视图变量(wstring),让我们能在控件里面看的明白哪些条件导致的结果被触发。

  9. 然后,我们需要建立一个按钮,按钮按下的时候去激活代码视图,刷新为我们看到的LAD代码。但是我们不能再没有推送的时候去也按这个按钮,因为没有意义。所以我们使用了控制变量(bool),让按钮在报警来但的时候才能被显示和使用。

  10. 整个代码视图的思维导向基本就是这样。

4. 总结

实践才能得到自己想要的结果。
之后可能会总结ProDiag显示Graph顺序步,这个相对容易些。

5. update

ProDiag概览中,右键增加一个报警视图按钮单击事件,选择显示窗口报警。选择对象名称为相应的报警视图,选择显示模式切换模式,如图:

.用于关联报警视图


基于ProDiag的监控视图-LAD篇
http://example.com/2024/07/21/基于ProDiag的监控视图-LAD篇/
作者
xiao cuncun
发布于
2024年7月21日
许可协议