用过西门子PLC和HMI的工程师都知道,组态HMI离散量报警,以word型触发变量举例,大概是以下过程:
- PLC程序中一条报警触发word中的某一位(一个word 16个位,可以做16条报警)
- 在HMI变量中添加该word变量,为每个触发位组态报警文本。
如果是标准设备或功能,我们可以在标准块中专门写好相应的报警程序,使用时PLC侧批量调用功能块,HMI侧批量添加触发变量,相同设备的报警文本都一样。
但实际编程过程我们经常遇到需要临时添加一些报警或提示的情况,这也是标准块无法涵盖的。这时候我们就需要通过以上两步新增报警,看似简单,但报警多了,就需要我们频繁修改和下载HMI组态,很费时间。
笔者摸索出一套方法,可以灵活组态报警,算是高效编程的一个小技巧,在此分享给大家,希望大家共同讨论!
小技巧如下:
1.首先我们新建一个FB,并声明接口变量,
在Input接口声明16个bool型变量
在静态变量区声明以下内容
2.编写FB程序,过程如下
- 将Input管脚bool变量汇总成word,作为HMI离散报警触发变量。
- 读取Input管脚变量名称作为HMI离散量报警文本。(这一段在FirstScan或程序更新时才执行,以节省扫描时间)
最后出来FB长这样,
3.HMI侧组态如下
4.测试效果如下
总结:原理很简单,主要利用了HMI离散量报警文本中可以添加文本变量的特点,PLC中报警触发的同时,将该报警变量的变量名读出来作为报警文本。这样一来,哪边需要做报警或提示,直接将触发变量写好,拖到我们报警FB管脚即可,HMI侧不再需要任何组态和下载。本例是以word类型作为触发变量,一个FB最多带16个报警。超出16个的话有两个方法,第一重复调用FB。第二,以word数组作为触发变量,这样可以在HMI性能允许内任意扩展报警条目。
,