故事作者:万泉河

最近创作

看看TA的故事

【万泉河】如何优雅地点亮系统中央声光报警

已锁定

万泉河

  • 帖子

    10885
  • 精华

    132
  • 被关注

    892

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【万泉河】如何优雅地点亮系统中央声光报警

5841

11

2020-05-17 23:28:01

【万泉河】如何优雅地点亮系统中央声光报警

 

我在去年发表过一篇文章, 《【万泉河】如何优雅地点亮一个指示灯?》, 文章的起脚点很低浅, 立意却相当高远。没有读过的读者可以先跳转过去读一下,了解前文之后再来看本文,才能比较容易看懂。

 

那篇文章发表之后,我很快就意识到,这种思路方法也可以用于解决中央报警器上面。 那篇文章里面,解决了2套工艺共用一个指示灯系统的问题。 而从2延伸到1000其实差别是没多大的。

 

只不过,现在我们自己的设计的工程项目中,由于讨厌中央报警的处理繁琐,耗费资源和精力,也达不到标准化,所以都刻意给省略掉了。比如今年年初, 即便有客户提出希望加中央报警的功能,最后也是通过在WINCC上增加输出控制的方法实现,而最终绕过了PLC编程。

 

但我自己设计中不采用中央报警,架不住别人还一直设计。五一期间,一位标准化学习营的学员,他们公司的新项目实施时感觉有困难,所以找到我,希望我帮他们做一套标准化的示范模板。这样他自己就可以更容易上手了,以后做起来更规范。

 

然后,等IO清单发给我,我第一眼就看到了Q0.0和Q0.1两个点分别是声音报警和报警指示灯,马上就意识到,这一天终于来了,躲不过了。 还好,前面已经有思想准备,这些年也有了足够的知识技能储备,说干就干,先把声光报警的库函数搞定先!

 

解释一下中央声光报警的功能逻辑:即当系统中有新发生的报警时,除了指示灯亮起之外,还有声音报警的警笛响起。同时系统中有确认按钮,当人工按下ACK 或者叫做RESET按钮之后, 声音停止输出,而指示灯继续点亮,直到这个故障完全消失,然后指示灯灭。

 

因为声音报警通常比较吵闹,烦人,而操作人员有可能第一时间会去处理线上的故障,没空暇来控制柜按ACK按钮,所以还可以设置延时时间,时间到后自动确认,声音停止,但指示灯可以保持为闪烁,直到故障消除后,指示灯熄灭。

 

所以,简单说, 对系统的所有报警信息的判断有二,1,有报警;2,有新报警。分别对应的是指示灯和发声警笛。即为中央声光报警系统。

 

通常的解决方法是,取系统中所有的故障点的故障信号, 整理到一个大的数据区中,然后对这个数据区进行判断,比较,得出有新报警和有报警的状态,输出到声光报警器。

 

这个问题,曾经是技术论坛的热点问题,大家在2012年到2013年间,进行过充分的讨论。 我为了准备本文, 把那两个帖子扒拉出来了,也从头到尾重新阅读了一遍。

 

在S7-300程序中做一个类式电气的消声程序(声光报警)

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=959721&pno=1&b_id=4&s_id=23#959721#6543491-tsina-1-29391-4bf7b7abc11eb4f132d0aef68d8ac2d7


 

还记得ZANE版主的报警处理FB块吗?

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1075053&b_id=4&s_id=0&num=41#anch


 

两个帖子的主贴发布者分别是一位叫做笑眯眼的网友和我本人。


 


 

在两个旧帖子中,见到了很多曾经非常熟悉的网友的名字:

@ZANE

@youhm

@kinkin

@n次看你的背影

@liucs_2009

@Laohuai

@冬日

@Automann

@我家牛

@will666

@伊默

@火麒麟

@dcount107

@一天到晚游泳的猪

@VOLLMER

 

这是将近8年前的旧帖子了,看到这些名字,现在仍然感觉非常亲切。 其中的一些人现在仍然活跃在***中, 而其中另一些人,已经许久未见了。

 

时隔多年,现在想问候下大家,你们还好吗? 对这个话题还有印象吗?来读一下我的新文章, 我内功修为又上了一个新层级啦!

 

在那个话题中,所有人集思广益,群策群力,各自给出了自己的解决方法。 而我自己,在后一篇帖子中也发了一个截图, 是我当年的一个项目中所实现:

 



(我其实就是为了找这个图片,才去翻到了上面两个旧帖。)

 

一个库函数,串联调用了十几遍,最终把系统中的所有报警收集起来送到了最后的输出上。

 

我现在总结一下,当年所有人的做法,包括ZANE, 以及我自己,做法都不够优雅。甚至相当笨拙。

 

比如我自己的做法, 是在CFC中实现的,虽然不需要去逐个数用过的M变量了,但仍然需要把所有设备的报警输出都连线,接过来。 当时做的时候,就很担忧,生怕某一个设备给拉下了,就会遗漏掉它的报警指示,运行中就会出大问题。

 

我自己当初的做法是, 程序接完线之后,又仔细的翻阅每一页程序框图,通过查看特定位置的特定颜色的接线,发现有没有错误。

 

这相当累。

 

因而相当不优雅。 对我来说,膈应了很多年。

 

所以,其实是我补充提出后一个帖子的原因。但其实最后也没有得到好的答案。 

 

我当时提的想法是:



 

但想法很原始, 也没有动手去实践,更主要是当时的自己,掌握的技能和思想架构还不如今天般成体系,所以一放就是近10年。

 

不过,原贴中有一位朋友给出的想法和今天的我是最接近的:



所以,兴奋之余,顺手给了个精华帖。迟到的精华。

 

我当年的时候对FB的认识和使用熟练程度还远未到今天的层次, 所以我想到的还只是有可能FC来管理实现,而到今天,我现在的实现方法,就是只做了一个专用的FB: HA2。就可以实现了。


 


FB中有一个APP的管脚,在程序调用建立实例化的时候,设定APP=0, 然后把声光的输出点绑定。 而在实际的使用中时,APP=1,但不需要绑定Q点了。

 

特别重要的一点是, 不管是实例化时,还是使用中,背景数据块是同一个。所以,在实际使用中, 只要有报警信号发生,需要触发中央报警的时候,就把块的调用复制过来,触发一次。

 

所以,FB块中的逻辑现在可以用SCL来写,其实就很简单, APP=1的时候,做信号的收集整理堆栈,APP=0的时候则分析这些数据,以判断有没有报警,和有没有新报警。

 

我们开始学习做PLC编程的时候,得到的认知常识是,FB块每一次调用,都要给附加不同的背景数据块,否则基本上会是编程错误。 而这一两年,我在实现一些特殊任务时,就特别喜欢重复调用FB+不变的IDB。 看看, 这就是我基于对PLC运行原理的认知加深了, 因而技能水平境界都与当年大不同了。

 

 

这是不是就相当优雅了?

 

而且, 也非常容易嵌入在标准化框架中了。

 

我在开发完成了这个报警处理块之后,便着手对已有的电机阀门变频器等的设备块进行了二次封装改造,封装之后所有设备只要有发生报警, 自动进入中央报警序列,自动触发声光报警。

 

妈妈再也不用担心我遗漏了哪个重要设备的重要报警了。

 

当然, 也不担心我多报了啥报警。

 

简直爽歪歪啊!

 

因为有人很反感文章收费,所以,这篇文章既不收费,也不提供源代码。

 

这里只是把思路方法讲解给大家,有兴趣有能力的同行,很容易看懂,并自己做出来。或者就算是我给大家留的一个作业,自己完成即可。

 

不过预告一下,库函数的封装功能,是标准化设计中的重要一个技能。我在以前的文章里提及过,但具体的操作实现,涉及不深。 后续我会陆续发表一些相关的文章库函数封装的, 每篇文章介绍一个FB块,作为标准化知识资料库中增加的内容。标准化学习营的学员可以打折付费阅读学习。

 

里面自然也会包含了本文介绍的中央声光报警的函数代码。

 

而未参加学习营的同行,则不建议来付费阅读,因为没有折扣,而价格又偏贵,得到的经验知识太少太碎,所以不合算。

 

可以等正式参加以后,再逐篇品读不迟。

 



【万泉河】如何优雅地点亮系统中央声光报警 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。