作者 | 主题 |
---|---|
执笔画管脚 侠圣 经验值:2719 发帖数:264 精华帖:2 |
楼主 2021-11-13 10:08:03
主题:西门子HMI柔性报警 用过西门子PLC和HMI的工程师都知道,组态HMI离散量报警,以word型触发变量举例,大概是以下过程, 1. PLC程序中一条报警触发word中的某一位(一个word 16个位,可以做16条报警) 2. 在HMI变量中添加该word变量,为每个触发位组态报警文本。 如果是标准设备或功能,我们可以在标准块中专门写好相应的报警程序,使用时PLC侧批量调用功能块,HMI侧批量添加触发变量,相同设备的报警文本都一样。 但实际编程过程我们经常遇到需要临时添加一些报警或提示的情况,这也是标准块无法涵盖的。这时候我们就需要通过以上两步新增报警,看似简单,但报警多了,就需要我们频繁修改和下载HMI组态,很费时间。 笔者摸索出一套方法,可以灵活组态报警,算是高效编程的一个小技巧,具体如下: 1.首先我们新建一个FB,并声明接口变量, 在Input接口声明16个bool型变量 在静态变量区声明以下内容 2.编写FB程序,过程如下 1. 将Input管脚bool变量汇总成word,作为HMI离散报警触发变量。 2. 读取Input管脚变量名称作为HMI离散量报警文本。(这一段在FirstScan或程序更新时才执行,以节省扫描时间)
最后出来FB长这样,
4.测试效果如下 原理很简单,主要利用了HMI离散量报警文本中可以添加文本变量的特点,PLC中报警触发的同时,将该报警变量的变量名读出来作为报警文本。这样一来,哪边需要做报警或提示,直接将触发变量写好,拖到我们报警FB管脚即可,HMI侧不再需要任何组态和下载。 本例是以word类型作为触发变量,一个FB最多带16个报警。超出16个的话有两个方法,第一重复调用FB。第二,以word数组作为触发变量,这样可以在HMI性能允许内任意扩展报警条目。
你若安好便是晴天
|
W.M.J 侠士 经验值:1702 发帖数:99 精华帖:6 |
66楼 2021-11-19 09:47:25
主题:回复:西门子HMI柔性报警 这样做主要问题是很多时候你的变量名不足以向操作员描述你的报警,还有如果有多语言要求怎么办?如果用变量去表示报警文本,这个FB就可有可无了。直接建一个报警DB,第一个变量用WORD,后面是16个WSting类型的变量代表前面WORD代表的16条报警的报警文本就好了,可以直接在DB中输入报警文本,把你程序中的BOOL报警映射到WORD中就好了,WORD变量也支持位访问的。 |