基于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 FB的背景DB
.类别:E表示error,W表示warning
,都是你在监控设置里面设置的类别
.类型:O表示操作数,I表示互锁
,都是你在建立prodiag监控时选择的。
.红色有表示现在出现的类型和类别。
3. 内在逻辑梳理
这是本篇最重要的东西,虽然可能看上面看的一头雾水,但是只要你捋清楚了这个事的内生逻辑,我相信你可以自己摸索出自己的方法。
ProDiag是基于PLC推送的,所以我们
需要将自己要监控的变量放在自己建立的Prodiag FB里面
,因为只有被ProDiag FB管理到的监控才会被正确的记录下来。监控变量的
监控类型,互锁条件,触发条件是需要自己设置
的,因为只有自己才知道自己程序里面的触发逻辑。报警类别,报警子类别,报警确认,报警格式,文本域等
需要自己去设置的原因是:如果你是一个大型项目或者一个标准化项目,报警再哪一个区域被触发,哪一个类型,是否对于维修有重大影响,是否需要现场确认,都是需要工程人员自己去思考和定义的。同理,报警格式和报警详细文本也是基于这一层意思的。如果你是做来玩,或者根本不需要详细内容,那你甚至可以不用关心这些看似枯燥又繁琐的东西。ProDiag FB关于是否选择
初始值采集
和使用中央时间戳
的属性,完全取决于你对最后输出结果的把控和需求。在PLC侧做完之后其实本质已经结束了,因为ProDiag是一个PLC主动推送的过程,和HMI或者WEB没有半毛钱关系,说白了,它们就是显示工具而已。(从这个角度看
ProDiag的好处就是完全不会对HMI造成多大的通信负载和完全不依靠HMI的通信响应时间,因为PLC是主动端
)。HMI侧首先要配置的是
ProDiag概览
,因为我们需要它连接来自于ProDiag FB背景DB的State结构
全部内容,State存储了Prodiag推送的详细的,细节的内容。接下来我们需要配置
报警视图
,我们在报警视图里面放入了两个HMI内部变量代码分析视图变量(wstring)
和控制变量(bool)
,这两个内部变量存储了报警推送过来时的文本和使能信息。基于报警视图的内容,我们配置了
条件分析视图
,这个视图是解析了代码分析视图变量(wstring)
,让我们能在控件里面看的明白哪些条件导致的结果被触发。然后,我们需要建立一个按钮,按钮按下的时候去
激活代码视图
,刷新为我们看到的LAD代码。但是我们不能再没有推送的时候去也按这个按钮,因为没有意义。所以我们使用了控制变量(bool)
,让按钮在报警来但的时候才能被显示和使用。整个代码视图的思维导向基本就是这样。
4. 总结
实践才能得到自己想要的结果。
之后可能会总结ProDiag显示Graph顺序步,这个相对容易些。
5. update
在ProDiag概览
中,右键增加一个报警视图按钮单击
事件,选择显示窗口报警
。选择对象名称
为相应的报警视图,选择显示模式
切换模式,如图:
.用于关联报警视图