俗话说:空穴来风,必有所由。我一个搞医疗设备维修的工程师忽然来了兴趣弄弄工业控制系统,总得有些原因。
还得从我们医院的新楼说起。我们的新病房楼的天顶安装了太阳能热水系统,这个系统的控制部分,就是用的西门子的S7-200系列的PLC。包括1个CPU224,2个EM231模拟量扩展模块,1个TD200显示面板。这些东西完成整个系统的运行控制和显示,包括:监测太阳能热水的温度、水箱中热水温度、水箱中水量,通过对这些量的监测,控制各种热水冷水交换以及对电加热锅炉控制等功能。照理说烧洗澡水这种事情怎么也不该设备科来管,但就是由于有了这么个PLC,也许是出于对总务部门技术能力的考虑,院方把这个系统交给我们设备科管理了。
倒霉的事情很快就来了,由于和太阳能公司的一些商务上的问题,双方陷入了一场旷日持久的谈判之中。而公司似乎也早有准备,他们设置了一个时间程序,某日早上,我们发现这个系统自动停机了――CPU224进入了STOP状态,厂方不肯启动CPU。我们部门只好每2个小时派人到天顶手工操纵系统,保证热水供应――大夫做完手术没有热水洗澡他们会闹的。总这么下去也不是个办法,我马上买了个CPU224,还有EM231、TD200、编程电缆等装备,准备自己赶紧写一套程序救急。
第一次接触这个东西,一开始几乎无从下手,工作量也很大。一份系统手册,打印出来有500多页,厚厚的一大叠子,也不是一时半会能看完的。而且那个系统手册翻译得不好,看着很费劲。从网上找了一篇文章《S7-200的160个常见问题解答》,这篇文章写得太好了,类似FAQ一类的文档,一看就是顶尖高手的作品,语言流畅,讲述清晰。我利用一个夜班的时间把这篇文章看了2遍,感觉眼前豁然开朗,对这个系统有了一个大致的了解了。
第二天试着编了一个眨眼灯的控制程序(不是用汇编,用的是梯形图完成的),调试、下载、运行……哈哈,还不错,挺好的。就在我摩拳擦掌准备大干一场的时候,商务谈判结束了,厂方技术人员启动了系统,一切正常了。我也失去了动力,懒得再看了,那些东西就静悄悄的躺在家中的角落里了。
某天,工会的老大姐找我,说5·12护士节要到了,院里准备办个知识竞赛,问我能否给做个6个位置的抢答器,我答应了她。抢答器的电路还是比较简单的,用51单片机或者74LS373之类的锁存器制作都很方便,但我现在真的是懒得再去画电路板了。忽然想起家里还有个CPU224呢,用它做不就行了,不用画板,顺便还可以进一步熟悉系统。
晚上把功能和实现方法想了一下,基本上想明白了。早上一上班就给我们的电工们出题:让他们用3个继电器做一个3个位置的抢答器。经过一段时间的讨论,梯形图很快就画出来了,和我预想的几乎一样。有个地方有点小BUG,有两个人同时选上的可能,我给改正了。大伙对着黑板上的梯形图看了一会,确认逻辑上没有问题了。有个电工还真来了兴趣,马上拿出3个继电器就要开始配线,我说算了吧,很麻烦,3个的能配线,6个位置的得一大捆线,还不把人弄晕了,我用CPU224编吧,这可是PLC的长项哦。
CPU224的编程语言有3种:汇编、梯形图、功能模块。一般都用梯形图来编,比较符合工业控制领域的传统习惯。原来这些控制都是由继电器来完成的,电工都能画梯形图,更何况工程师呢。PLC上的梯形图和电工画的梯形图逻辑一样,图例有些差别:比如说PLC是用括号表示继电器线圈而电工图例则是使用方块表示;电工梯形图的供电线要求画出NL线,而PLC里面只要求画出能流线即可,电流流出端不画。我按照PLC和电工的习惯各画了一张图,让他们对比着看了一下,他们表示能够理解。看样子在工控领域,大家更容易交流。
下面就是抢答器的第一个网络的梯形图:
从图中可以看出,当Key_Pos1被首先按下时,Lock_1线圈得点,吸合Lock_1常闭触点,完成自锁。同时打开所有的Lock_1常闭触点,这样,其他的按键均不起作用,实现抢答的唯一性的功能。其他的按键被首先按下时同理。当Key_Reset键被按下时,能流断开,系统复位。
这2个网络中Speaker_Delay相当于一个延时继电器,当任何一个位置的按钮被按下时,蜂鸣器响2秒钟。没有这个延时直接接蜂鸣器的话就会发生这样的情况:某个位置抢中后,在Key_Reset被按下之前,蜂鸣器会一直响,比较烦人,如果迅速复位的话,有可能还没有看清楚哪个位置被抢中了。当Key_Reset被按下时,将Speaker_Delay延时继电器复位,即初时计时器的数值置0。
这个网络里面我搞了点小花活,如果想简单的话每个位置被按下弄个指示灯就可以了,我用了个5寸的数码管。这里就涉及到显示译码的问题了,如果用逻辑关系转换,再画卡诺图化简那可麻烦透了。还好,系统有一个功能模块SEG可以完成这个功能,拿来用就行了。某个机位的键被按下时,把那个机位的数字送入SEG模块进行译码,输出口(QB0)就会得到相应的LED数码管段的点亮位置。
这个网络完成的功能是当Key_Reset键被按下时,将显示输出口Q0.0~Q0.7复位,也就是全部为熄灭。
好了,所有的梯形图就这些了,下面就是符号表了。就是我图中的各个线圈、触点的名称所对应的系统硬件地址。很多人编程直接使用系统硬件地址,这样做一来容易出错,二来修改不便。比如说某个输入口坏了,想换个输入口,如果使用了符号表,直接在符号表里面改一下映射就可以了,否则就得在所有的网络里面查找用过此端口的点,那麻烦可就大了。
编译、下载、调试运行,程序很快就跑起来了,挺不错的,所有的功能都正常。就等着知识竞赛的时候使用了。
下面的是这个抢答器的项目文件,传上来,有兴趣的同仁可以装上STEP 7-MicroWin软件试一下,已在4.0版本下编译通过。
|