0625 【万泉河】在Prodiag和Program_Alarm之间,我选择了Program_Alarm
先做个名词解释。
Prodiag和Program_Alarm是西门子 TIA PORTAL中在PLC中实现HMI报警的2种方法。 然而并不是所有PLC型号都支持。 只在部分高端型号中可以使用这些功能。
具体哪些型号支持, 只需要查阅相应的文档手册。 不是本文关注的重点。 如果有人连自己查文档都不会,来看了本文后抱怨没有干货,那说明他自己还处于吃干货还没掌握的阶段,干货应该自己先解决。
什么叫PLC中实现HMI报警,打一个比方,你在PLC程序中写逻辑,当程序逻辑达到一个条件,比如,水箱的液位要满了,炉内的温度超上限了,或者桁架的移动位置越位了,你需要在程序中触发一条报警信息,在HMI上以文本报警方式将这些条目展示出来。
如:
If Hi_limit then
Echo “温度超上限,请及时处理!”
End_IF
即,程序产生报警条目的位置,就是当下报警产生的逻辑所在的部分。 这样的程序阅读起来就会非常容易,因为这些报警内容本身也到了注释的作用。而更重要的是, 不需要在显示端逐条增加或者减少报警条目,极大地减少了设计工作量。
上述的程序代码,显然更接近于高级语言的编程方法,而不是PLC程序。当然,每一种高级语言都有自己特定的语法,Echo是我随便举例,我甚至都不记得这是哪一种语言中的了。
所以,我们更关注于功能本身,而不是程序语法。
而在PLC中,能实现这样的功能,就很不容易。可以说西门子TIA PORTAL有此功能都算是绝无仅有。当然更老版本的S7-300/400中也一直有类似的系统报警功能,这是西门子的传统。
在旧的STEP7系统中就有Prodiag,我就有了解和研究过。 到了新的TIA PORTAL系统,我也跟进研究了好多次。 然而,一直不得要领。
倒不是说看不懂帮助和文档的内容,而是看文档里面啰啰嗦嗦一大堆内容下来,没看到封装的可能性。 我不需要懂那么多的细节, 我只需要你封装好一个具备了系统报警功能的设备块FB,给我用,我只要调用了,系统有报警的时候,就会自动在HMI上面显示。 这才是我想要的,也是我做程序的目的。
把上面的话倒过来描述,我做好的库模块,已经具备了程序逻辑之外的HMI画面接口和HMI报警的所有功能,那么在程序应用中,不管有多少个实例, 只需要简单罗列调用多少次即可。 其余的均不再需要关心。 所以最大程度上真正实现了高内聚低耦合。
我在S7-1500中实现使用的Program_Alarm,其实采用的是与PCS7类似的方式,只要懂PCS7的SFB35 ALARM8P,就自然懂得这种方法。 但所有关于ProDiag方法的文章里,都没有这样的封装。
所以在我所有写过的文章里,从来只字不提ProDiag,原因就是我不会用,用不好。如果有读者有做过较好的封装,请教给我。或者有见到这方面的文档资料,请分享给我。
当然,我在各种文章中, 对Program_Alarm提及的也不多,因为我把它们当基础技能了。 你如果对它不了解,不熟悉,只需要关键词搜索它,就会有无数的资料文章呈现。
然而,它确实非常重要的功能,我在前一本的专著《PLC标准化编程原理与方法》中有专门的章节做了讲解。 而在今年已经交稿的《西门子PLC标准化编程烟台方法—基于LBP基本过程库》中,讲解了对LBP原始库函数的升级方法, 将其中的log15模块用Program_Alarm 方法进行了重写。
PLC产生系统报警的方法如此迷人,所有烟台方法的学员,收到样例程序后无一不被其简洁给迷倒。然而只可惜,这种方法目前只在西门子PLC中有提供,而其它的品牌,则基本没有同级别的功能。(倍福TC3和AB中有接近的功能,但还远远不够简练)。
而另外,这种功能需要的HMI只能是西家自己的触摸屏或者WINCC。而对于许多的小型自动化设备使用各种国产触摸屏,则不能支持。 所以,包括我自己,也还有很多烟台方法的学员,或早或晚都会发展到尝试仿照Program_Alarm接近的方法在各种品牌的PLC中以及配套的非西门子HMI中实现同样的功能。 上个月召开的2025烟台方法研讨会,有学员还专门就这个题目做了报告分享。提及了他在汇川和台达PLC中实现的过程。
但问题是他也是步子迈的太大了,前因后果没交代,台下的听众中,对烟台方法学习掌握还不够好的,基本都没有听懂,听下来一脸懵逼。 我这篇文章算是给做个补充索引了。
昨天看了一篇公众号文章《西门子Prodiag最全操作步骤解释和问题汇总》,我看下来, 还是一如既往地没看懂。 所以才产生了写本文的想法。
同时, 也期待对Prodiag更熟悉,更有心得的同行,可以再分享些对Prodiag更深入的应用技巧。
会议当场有录制视频,公众号后台回复“2025烟台方法”可以获得链接。
分享有时间限制,过期后即取消分享。