引言
随着科技的发展及人们生活水平的提高,自动售货机已经逐渐走进了我们的生活。在学校的楼道旁,公园的一脚等都有自动售货机的身影。自动售货机市场的发展呈现出多元化及个性化的需求。传统的自动售货机控制系统采用单片机作为控制,不仅需要在输入输出接口上做大量的工作,而且系统的抗干扰性也比较差。本文详细介绍了一种用FPGA实现的自动售货机主控制系统的硬件设计和软件设计,并进行了软件仿真和硬件设计实验,实验表明该控制系统是可行的。
1 自动售货机系统总体结构
自动售货机作为一种完全独立的售货设备,集接收货币、顾客自选商品、售出商品和找零等功能于一体。具体的说,一个完整的售货机控制系统一般应包含如图1所示的设备和模块。
(1)人机交互设备:通过显示设备和输入设备实现,顾客通过使用键盘输入需要购买的商品编号,根据液晶显示器LCD给出的提示信息进行投币、取商品、接受找零等操作;系统管理人员可以使用键盘在显示器所提供的可视化界面下对售货机的各种运行参数进行设置;
(2)MBD(Multi-Drop Bus / Internal Communication Protocol)通信接口:MBD/ICP协议是欧洲售货机制造者协会制定的一套用于协调自动售货机的主控制器(VMC)与多个外设之间的通信协议,用于协调自动售货机的主控制器(VMC)与多个外设之间的通信,所有外围设备与主控制器之间的通信方式都一致。由于其简洁明了、功能强大、可扩展性强,并且对外设数目没有限制,成为理想的自动售货系统内部总线协议;
(3)主控制器:主要包括对各种外设获取的信息加以处理,对于售货机的整个销售流程进行控制,运行执行机构正常工作所需的各种算法等;
(4)信息采集模块:主控制器所需采集的信息主要包括自动售货机箱体内的温度,售出的货物是否正常掉落到顾客取货区,电机运行有无异常状态。
(5)货道电机驱动模块:主要指商品通道的驱动电机阵列。根据输入的所选商品的通道号,主控板驱动相应的小型直流电机转动,将货物推送至顾客取货区。作为自动售货机的终执行机构,电机驱动控制部分的性能以及可靠稳定性直接影响商品销售,是自动售货机控制器设计中非常重要的一部分。
2 自动售货机的主要系统
根据售货机自动控制系统的流程可以知道自动售货机的主要系统包括:计币系统、比较系统、选择系统、饮料供应系统、退币系统和报警系统。
1.计币系统:
当有顾额色买饮料时,投入的钱币经过感应器,感应器记忆投币的个数关且传送到检测系统(即电子天平)和计币系统。只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器D2中。如果不正确时,认为是假币。既定出投币,既定出系统,等待新顾客。
2.比较系统:
投入完毕后,系统会把D2内钱币数据和可以购买饮料的价格进行区间比较,当投入的钱币小于2元时,指示灯Y0亮,显示投入的钱币不足。此时可以再投币或选择退币。当投稿的钱币在2~3元之间时,汔水选择指示灯长亮。当大于3元时,汔水和咖啡的指示灯同时长亮。此时可以选择饮料或选择退币。
3.选择系统:
比较电路完成后选择电路指示灯是长亮的,当按下汽水或咖啡选择时,相应的选择指示灯由长亮转为以1秒为周期闪烁。当饮料供应完毕时,闪烁同时停止。
4.饮料供应系统:
当按下选择按钮时,相应的电磁阀(Y4或Y6)和电机(Y3或Y5)同时启动。在饮料输出的同时,减去相应的购买钱币数。当饮料输出达到8秒时,电磁阀首先关断,小电机继续工作0.5秒后停机。此小电机的作用是:在输出饮料时,加快输出。在电磁阀关断时,给电磁阀加压作用,加速电磁阀的关断
5.退币系统:
当顾客购完饮料后,多余的钱币只要按下退币按钮。系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1元钱需要退回的数量,存放在D10里。余数存放在D11里。再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。余数存放在D13里。D13里面的数值,就是1角钱需要退回的数量。在选择退币的同时启动3个退币电机。3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。
6.报警系统:
报警系统如果是非故障报警,只要通过网络通知送液车或者送币车即可。但是如果是故障报警则需要通知维修人员到现声进行维修。同时停止服务,避免造成顾客的损失。
3 自动售货机系统工作原理
根据系统控制要求,编写了控制系统的程序总框图,如图2所示。
从投币口送入货币,然后经过传感器采集数据、识别器判别人民币的真伪并判别面值。识别器把信息数据传给通信模块。通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已售完,并等待顾客按键选择商品。顾客选择商品后,售货机自动把商品送出,等待顾客取走。显示余额,如果金额足够多,顾客可以选择找币或继续买商品;如果款额不足,售货机经过延时予以退币。退币分2种情况:一种是由纸币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。系统复零,完成售货。
4 主控制系统FPGA[4]的软件设计及仿真
4.1 软件结构
根据控制系统的工作原理及硬件设计,该系统的软件采用模块化的设计方法,其主要由初始化、投币过程、价格比较过程、商品选择、显示、退币和报警等模块组成,其中一些主要模块的功能如下:
(1)投币模块:在投币过程中,每投下一枚硬币,经钱币识别传感器把信号传递给PLC,该模块将完成辨别硬币的真伪和判定具体的币值,可以进行钱币的叠加,并显示出相应的币值,余额也增加同样的币值;
(2)价格比较模块:投币完成后,系统对余额中钱币数据和可以购买的饮料价格进行区间比较:若大于或等于商品的价格,则可以购买该商品,指示灯亮;
(3)商品选择模块:此模块可以实现用户对商品的选择购买;
(4)退币模块:系统可在顾客购买完商品后退回余币。在退币过程中,主要的是要完成退币的运算过程,运算结果放在数据寄存器,根据结果起动退币电动机工作,输出相应的钱币,退币结束时还要给程序中使用到的某些寄存器重新赋零。
4.2 主要模块功能仿真
4.2.1 投币模块功能仿真
系统可以接受4种钱币的投入,RESET可以复位,系统内部的计数器将对投入的钱币总数,进行自加计数,仿真波形如图3所示。
4.2.2 商品选择模块功能仿真
系统允许顾客对4种物品进行选择。同时系统内部计数器将进行自减计数,内部变量还会自动记录顾客购买的各种物品数目并由LTEM_OUT端口输出顾客购买物品的种类仿真波形如图4所示。
4.2.3 退币模块功能仿真
系统可以找出2种钱币。当顾客键入END_BY后,系统开始找钱,原则为从大往小找,在找钱的同时,不允许顾客投入钱币。系统内部的计数器将进行自减计数,直至到零为止。同时,系统将记录找出各种钱币的数目并输出找出钱币面值。
4.2.4 价格比较模块功能仿真
投币完成后,系统会将在余额中钱币数据和可以购买的饮料价格进行区间比较:若大于或等于商品的价格,则可以购买该商品,指示灯亮。
5 结论
本文从总体上介绍了自动售货机主控制系统的组成和功能,讨论了自动售货机工作原理,详细阐述了主控制系统FPGA的软、硬件设计及其主要控制模块的仿真实现,并编写了系统程序总框图。实践验证,系统能够在各种条件下持续、平稳、可靠地工作。
[1]. D10 datasheet https://www.dzsc.com/datasheet/D10_1092217.html.
[2]. PLC datasheet https://www.dzsc.com/datasheet/PLC_1248813.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。