技术论坛

 【技】【万泉河】在S7-1200 PLC里做上位机报警(二)

返回主题列表
作者 主题
万泉河
版主

经验值:28633
发帖数:10885
精华帖:131
楼主    2020-02-26 10:15:50
主题:【技】【万泉河】在S7-1200 PLC里做上位机报警(二)


我在前一篇文章里讲解过在PLC中做报警的意义。


【万泉河】在PLC中实现上位报警(一)

https://mp.weixin.qq.com/s/Ju9zzCjotP1L5QmPf5GQYQ


本篇讲一下在S7-1200/WINCC做报警的具体实现方法。 


在进入主题之前,先吐槽一下AB。


我本来认知上既然所有PLC都是计算机, 那不仅西门子PLC,其它品牌的PLC也都可以实现。 而且,业界一直传闻的是,AB的PLC性能特别强大,编程环境特别自由,比西门子好用多了。


 我自己多年前使用的感受,也想当然地以为1769比S7-300更接近计算机,各种与计算机相关的需求自然不在话下。


但这次组织在AB系统下做标准化项目,令我大失所望。 而主要承担开发工作的同事,曾经多次跟我进言AB PLC多好用,用起来多舒服的,这次也吃尽苦头。连续撞墙掉坑之后,跟我感慨,认识到西门子反而比AB PLC自由多了。 


做报警功能,在PLC编程中嵌入字符串功能,把报警信息文本做出来,我们目前在AB的系统中还没找到实现方法。希望有AB高手能实现的话,不吝赐教。


在S7-1200和WINCC中,具体实现的思路其实很简单。


首先在PLC中建立FB块ALARMB


接口如下:

 


各管脚的定义:

ENA, 触发位,需要一个上升沿。

INFO1,INFO2, INFO3,为3个字符串,用于绑定需要的文本,通常只用1个。

(我前面吐槽AB的就是竟然INPUT管脚都不能支持字符串类型 ,不能直接赋值字符型常量值到管脚上,希望有AB高手能指导我们一下)

SEP为链接字符串的分隔符

PV为嵌入过程值


输出值

Writing:WINCC报警触发信号。

MSG:WINCC报警信息文本。


其它为程序逻辑需要的辅助变量。 其中有一个BUFF的数组,我这里设置了上限80。具体结合CPU的性能和系统的规模,可以修改。 


程序的逻辑很简单:

当ENA到来时,整理组织报警字符串,并送到BUFF的空闲位置中。如果不为空,则提升一个位置,直到80个都满,则溢出报警。 (说明此程序崩溃,有系统报警丢失)


而在BUFF中有数据的情况下, 则不断执行FIFO, 把报警信息送到MSG,并触发报警信息位Writing。


WINCC中收到报警信息后,则PLC程序取消 发送,过一个延时,再次发送下一条。 


取决于WINCC报警系统和PLC的通讯能力,过去是所有报警信息是并发的,而现在是串行发送,性能当然降低不少。 所以需要延时。 触发时需要延时,以保证WINCC能收到报警。 而取消触发时也同样需要延时,需要一定长的时间,以确保WINCC收到报警离去,下一次再来时才会接收新的报警。 


BUFF的功能实现了在同一时刻有多条报警信息触发的情况下, 报警信息不会丢失,但因为有延时, 会导致后发送的报警条目的时间和WINCC报警系统中记录的时间不一致。 所以程序中在报警信息文本中备注了误差时间。


其实我更期待有更好的办法,写入到WINCC的报警时间,也能从PLC中获得,就OK了。 这需要再研究。


然后在主控制程序,或者需要触发报警信息的位置,均插入一条对ALRMB的调用,这里示例了2个:


注意,FB虽然是多次调用,但使用的背景数据块只有1个,等于是这个实例被重复调用罢了。 


 


WINCC的项目中, 则非常简单, 只需要建立一条报警条目,触发信息即为ALMB_DB.Writing, 报警信息的内容为嵌入一个字符串型的变量,ALMB_DB.MSG。


根据项目规模的大小, 如果一个报警通道的BUFF会拥堵,则可以再开辟一个通道, 即ALMB多调用一次,WINCC中也再增加一条报警。但无论如何,比需要多少个报警,就在WINCC中建立多少个条目, 要方便多了。 PLC编程思路也不容易被打断。 产生了什么报警,直接把描述信息记录在当场即可。 



对于WINCC来说,一直有一个问题, 即嵌入报警的变量和触发变量同时赋值的话,在产生的报警信息中,嵌入变量值不够新,还是旧的值。 这个问题官方有一篇技术文档提出了解决方法, 也是本文描述的方法可以成功实现的一个重要基础。 


【周三技术工坊】PLC+WinCC报警消息中过程值延迟问题

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1579416&b_id=140&s_id=0


综合分析下本文方法的得失:

1,原本报警信息有到来, 有离开。 改造后只有到来,没有离开了。 

2,原本报警信息时间是准确的, 改造后时间不准确了。 

3,原本报警信息是可以详细分类的, 改造后没有分类了。 除非给每一个类别都单独设置一条报警。



本文的方法还只是在实验中通过,还没有放到工厂应用。没有经历过实践考验, 所以就不分享源程序了。 希望有兴趣的朋友可以自己动手实现, 期待大家有更好的思路方法欢迎和我交流。 







微信公众号:PLC标准化编程,ZHO6371995
Zane
至圣

经验值:75765
发帖数:19245
精华帖:376
1楼    2020-02-27 13:10:03
精华帖  主题:回复:【技】【万泉河】在S7-1200 PLC里做上位机报警(二)

呵呵,早就说过AB的牛皮比性能高,当年初学AB时他们所谓高手的认知就已经没法给我解释问题了。

最后,我就是用西门子的方法把AB的项目给做了,再最后项目的业主美国人也抛弃了AB,改用西门子了。


再说句绝的,用AB的绝大部分不会做离线硬件配置,估计会的人也是西门子的高手了

Zane 注册自动化系统工程师 Always save before download
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。