博图标准化编程技巧(十二)优化上位变量
最近趁着西门子论坛的跨新年活动,唠唠叨叨把之前编程方面的一些不成熟的方法跟大家总结分享了一下。一开始还感觉有不少好的经验,到最后确实没啥可写的了,有的一些窍门感觉大家可能都会用,写出来让人笑掉大牙,认为我为了凑数而写。今天应该是分享的最后一篇了,一是因为确实没啥新东西跟大家分享了,后面在程序开发过程中如果有好的想法再跟大家讨论;二是明天差不多就能点亮荣誉之星了,没有目标也就没有动力了
。
今天向大家分享的是我做标准化程序时优化上位变量的过程,没有什么特别的窍门。最开始我设计标准化程序的时候总想到的是怎么尽量丰富程序模块的功能,减少后期修改增加程序功能的机会。比如一个普通液位计的转换程序,我设计了量程设置、数据显示、误差修正、三级高报警、三级低报警、报警延时、报警死区、报警开关量反馈、报警闭锁和使能开关等多个上位变量,大概有30多个。而通常编程开发顶多有5、6个上位变量。这样设计虽然功能较多,但带来的影响也是巨大的。首先就是上位变量增加了5、6倍,原来3000点就够用的软件授权就不够用了,有个大项目甚至到了5万多点,号称无限点的国产某控的KSCADA软件都顶不住了。后来我又开始考虑怎么优化上位变量,首先把不常用的变量通过立即数在程序里写死,减少上位变量数量;另外删减一些功能,比如把原来的高低各三级报警减少到两级;最后还用了一种办法——取消各种报警的闭锁和使能按钮。
原来设置使能按钮的目的是有的仪表不需要报警或某项功能的时候可以闭锁该功能,比如液位计有6个高低报警使能按钮还有一个硬件故障使能按钮。可取消使能按钮后又怎么闭锁不需要的报警呢?我根据行业里常用仪表数据的特点,选择-100作为特殊常量,如果报警设置输入-100则表示该报警需要闭锁,报警判断程序则不再执行。各类报警设置默认数据都为-100即默认报警均不使能。这样一来不仅减少了上位变量,同时保持了原有的功能。经过优化的程序块上位变量剩下不到20个,虽然比普通编程方式多,但功能更丰富,后续维护较少,可以适用于所有常用仪表数据转换的要求。