某天,工会的老大姐找我,说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版本下编译通过
电脑抢答器网 抢答器设计与制作的专业网站 大学生课程设计的园地 |