自动售货机详细设计_曹琦一、-,每投入一次钱币都得经过感应器进行真假监辨后,再给PLC进行计币的指令。当发现伪币时,感应器不给PLC累计投币值的指令,同时自行退出伪币。而当PLC接收到感应器传来的记币的指令时,PLC自动把接收来的货币对应的数据累加到寄存器D1中。PLC编程梯形图如图1-2:由图可以知道我是把投进的不同货币,进行不同的记录,并把总数目都寄存到寄存器D1中。为了避免小数点的影响,我是把货币的数据化成整数进行处理的,这样可以减少自己在编程时会出现的差错。X002~X004为设置为高电平的输入,这样中间继电器M1~M3侧为一周期内都会保证了X002~X004的输入有效。一方面避免了扫描漏了有投币的有效反应;另一方面也可以避免了不良输入对记数的不良影响。图1-2比较部分价格的比较要贯穿实验过程的始终,只要余额大于某种商品价格时,就需要输出一个信号,提示可以购买。投币完成后,系统会将D1内钱币数据和可以购买的饮料价格进行比较:当投币<2元,则没有可购买的商品指示灯亮,表示所投钱币不能购买任何东西,此时可以继续投币或退币;只有投币在2元或以上时会见到汽水选择的指示灯长亮,此时可以选择购买汽水或退币;同样,大于3元的就有可乐的选择显示,5元就出现咖啡的选择显示,此时都是可以选择购买或退币。梯形图如图7-3:在梯形图1-3中,为了实现数据的实时比较,用了一个特殊内部继电器M8000,在程序执行过程中,M800始终保持闭合,FNC10CMP是16位数据比较指令,用它来比较余额和商品的价格。当余额大于等于某种商品价格时,程序使相应的指示灯亮起来表示可以购买该种商品。为了优化程序,我都设计了比较的价格是比商品的价格少1角的。因为余额都是五的倍数,少一就可以达到等于或大于商品价格的意图了,还可以用上中间继电器来辅助显示可选商品的等亮起来。 图1-3选择和饮料供应部分比较完成后,按下指示灯长亮的选择按钮,相应的电磁阀(Y12或Y13)起动,并且相应的选择指示灯由长亮转为以1s为周期的闪烁直至饮料供应完毕后闪烁停止。当饮料输出达到7s时,电磁阀关断。梯形图如图1-4:图1-4余额计算部分饮料输出的同时减去相应的购买币数。梯形图如图1-5:图1-5退币部分顾客可在购完饮料后,由退币指示灯Y23可知是否可以退币,指示灯亮,则可以退币,当按下退币控制按钮后,数据寄数器D1内的币数除以10,商的整数部分是需要退回1元的个数并储存在D2中;D3的数据除以5,商的整数部分是需要退回的5角钱的个数,并储存在D4中,依次类推选择退币的同时起动3个退币电动机。3个感应器开始计数,当感应器记币的个数等于数据寄存器退回的币数时,退币电动机停止运转。PLC编程梯形图如图1-6图7-6报警部分还有就是其他的运行监控系统和报警系统。主要的运行监控系统,包括有温度的监控,光度的监控两个,都可以外接传感器进行单输入单输出的简单操作。不妨构思一下,假设饮料的温度要保持在4°C左右,用温度传感器设置售货机里面温度在6°C时就给PLC一个开动制冷器的信号,是一个持续的信号。°C时,信号断开。同样的光度监控就直接用个光感来给PLC进行售货机照明的信号。报警系统分为非故障报警和故障报警。如果是非故障报警,只要通过网络通知送掖车或者送币车即可;如果是故障报警则需要通知维修人员到现场进行维修。同时系统如果报警则要打出回条给顾客,避免故障造成顾客损失。#include""voidmain(){ StructGoodsinfodrink[3]={{1,20,"cola"},{2,20,"milk"},{3,20,"coffee"}};structMoneyinfomoney={100,20,0,0};=+5*+10*;Mainmenu(drink,&money);}#include""#include""#include""#include""#include""voidWindow1(int(*v)[4]){setbkcolor(CYAN);inti;Frame1();for(i=0;i<3;i++){ Drawbutton(v[i],15,8);}settextstyle(0,0,1);outtextxy(177,177,"buyservice");outtextxy(280,177,"[costumeruse]");outtextxy(175,217,"admiservi
自动售货机详细设计 曹琦 来自淘豆网m.daumloan.com转载请标明出处.