现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

究竟该怎么编程

2008-12-15 09:25 工业·编程 ⁄ 共 722字 ⁄ 字号 暂无评论

最近在帮客户看一段程序,这个程序是另外一家公司写的,因为与我几乎同时期在客户那里调试/投产,而且两个程序涉及的部分工艺是相同的。但是这两年来这部分工艺运行的情况却大不相同,客户就找我来帮忙分析。

看了三天,总算明白了一点点他的思路,其中关于阀门模式切换的程序看的我头昏脑涨的。这种调节阀一共有5种运行模式:手动的开/关/停操作,手动的4-20ma输出开度去操作,自动调节模式(pid的sp由操作工调整),和比例调节模式(pid的sp由程序运算得出),而在比例模式下还有一种模式,就是按照一定的逻辑条件阀门可以被强制到一定的开度。

对此,我是写了一个模块将阀门的模式分为四种:手动开关停、手动4-20ma、自动和比例,便于以后可以通用;再写一个模块判断比例模式下是否需要强制输出得到第五种模式的标志位,最后用1个sr触发器,由自动或者比例进行置位,其它三个标志进行复位,得出pid的模式是自动还是手动;

而这位老兄的这部分切换模式的程序有两个特点,一是每次切换要进行四个变量的置位或者复位操作,二是喜欢直接对背景数据块进行操作;在wincc的画面按钮中,每个模式切换按钮也是要写三个变量下去;因为程序中要数次进行按逻辑切换比例和比例时固定开度,所以频频的看到了一堆的变量被置位或者复位,晕啊。为什么不能做成每种模式写一个变量就行么?

究竟该怎么写代码?

我觉得应该一是力求通用化,通用化的意思是力求能够被重复利用,不仅在本工程里面,而且在其它项目里面也能用,能够多包含一些常见的情况和条件,考虑周到,不能为了编程而编程,要为以后减轻工作量多动脑筋;二是封装化,模块要把细节封装起来,调用起来简单易行,类似这种直接去操作背景数据块的行为,个人认为是不可取的;

给我留言

留言无头像?