基于LabVIEW 的自动售货机系统设计
2021-06-11张安莉
张安莉,谢 檬,郭 月
(西安交通大学城市学院,陕西西安 710018)
最早时期的自动售货机概念来自于古埃及,科学家HERON 在他的书中描述道:这种装置只需要将钱币投入,便可以有源源不断的水流[1-3]。日本1904年问世的“邮票明信片自动出售机”是第一台实用型的自动售货机[4-7]。自此以后,自动售货机作为一种商业自动化设备出现在人们生活的各个方面[8-9]。自动售货机不受时间和空间的限制,可以在日常生活中解决买东西需要排队的问题,更在某种程度上节省了人力,让人们的交易变得更加方便快捷[10-12]。文献[13-17]采用可编程序控制器(PLC)控制自动售货机,实现售货机的基本功能,文献[18-19]通过Multisim 和EDA 方法进行自动售货机仿真设计,实现了自动售货功能,文献[20]采用LabVIEW 设计了
如何高效便捷地实时监控自动售货机是否正常工作,货存量是否充足,能否自动补货存是自动售货机控制系统研究的关键问题。该系统在LabVIEW平台上,从钱币处理,储存商品,显示信息等主要方面设计控制系统,包括语音提示模块、钱币投入模块、商品种类及数量的选择模块、余额计算模块、出货模块,实现了语音播报商品名称和钱币选择、商品种类及数量选择、找零、余额不足显示等功能。
1 总体方案设计
文中在LabVIEW 平台上设计的自动售货机系统结构如图1 所示。
图1 系统结构
系统主要包括钱币投入模块,商品种类和数量选择模块,出货和退币模块,出错警告模块。
1.1 钱币投入模块
该系统选用模拟按钮,表示钱币的投入,即点击一次货币按钮代表一次钱币的投入,多次点击货币按钮可增加投入货币量。例如;点击“5 角”按钮,表示投入5 角货币,连续点击该按钮,则依次累计5角。其余货币按钮功能类似。
1.2 商品种类和数量选择模块
商品种类的选择通过不同种类的商品按键,多次点击同一类型按键表示购买商品数量的增加,同时会在前面板设置显示用户的购买信息。
1.3 出货和退币模块
在用户投入货币之后,开始选择商品,在确认购买商品之前,先进行余额计算,若有剩余余额,则获取商品和退币,若没有剩余余额,则只获取商品。若投入钱币无法购买任何商品,可选择直接退币。
1.4 出错警告模块
在用户投入钱币之后,先根据投入钱币选择商品,然后将所选的商品价格与投入钱币进行比较,若剩余钱币不足,则无法购买商品,这时前面板的商品按钮不再闪烁,表示购买失败。
2 系统软件设计
系统的软件设计主要包括主程序的设计和商品种类选择子程序的设计。
2.1 主程序设计
该系统的主程序流程图如图2 所示,首先,系统进行初始参数的设定,即每种商品单价的确定和商品库存数量的设定;然后,开始判断是否投币,如果投币成功则开始判断是否能选择商品,如果投币失败则继续判断是否投币;如果可以选择商品,则计算出投入金额与商品价格的差价,先在取物口获取商品,如果不能选择商品,则余额不足;这时再决定是否退币,如果不需要退币,还需购买其他商品,可选择继续投币进行购买,如果需要直接退币,可直接在取物口取出剩余货币。此时购买过程结束,再次购买时需重新开始。
图2 主程序流程图
2.2 商品种类选择子程序的设计
商品种类选择子程序流程图如图3 所示。首先,系统进行初始参数的设定,即分别对每种商品的单价和库存数量进行设定;然后,开始判断是否投币,如果投币成功则判断是否购买零食,如果投币失败则继续判断是否投币;如果选择零食,应计算出投币金额与所选零食的差价,并获取所购买的零食;如果不选择零食,则判断是否购买饮料,购买饮料应计算出投币金额与所选饮料的差价,并获取所购买的饮料;如果不购买饮料,再判断是否退币,如果不需退币,还需购买其他商品,可选择继续投币进行购买,如果需要直接退币,可直接在取物口取出剩余货币。此时购买过程结束,再次购买时需重新开始。
图3 商品种类选择子程序流程图
3 系统的虚拟面板设计
系统的虚拟面板设计分为两个子面板:用户操作子面板和后台操作子面板。
3.1 用户操作子面板
用户操作子面板如图4 所示,包括用户操作指示灯、商品的图标和价格、状态显示、金额显示、货币按钮、商品确认按钮、退币按钮和出货信息。
图4 用户操作子面板
1)用户操作指示灯
自动售货机在用户正常使用时,指示灯闪烁为黄色,关闭自动售货机后,指示灯关闭,不再闪烁,用户操作指示灯主要用来显示自动售货机是否正常工作。
2)商品图标与价格及确认按钮
6 个商品图片表示6 种不同的商品,分别是:可乐、脉动、怡宝、方便面、好吃点和凤爪;设置6 种商品的出售价格:可乐3 元、脉动4.5 元、怡宝2 元、方便面5 元、好吃点4 元、凤爪6 元;6 个商品都有对应的确认按钮,在点击按钮时会有商品名称的语音提示,听到语音提示即为点击成功。用户根据所需选择不同的商品,多次点击,从而累计商品数量。
3)状态与金额显示
状态显示设置两种不同的状态:余额充足和余额不足无法购买。用户在操作时,状态显示也可判断钱币是否成功投入,若成功投入,则可根据投入钱币继续购买商品;若投入失败,则可选择重新投入钱币或直接购买失败获取退币。金额显示处在用户投入不同货币时会显示投入的相应货币金额,消费后会显示消费后的剩余金额。
4)货币按钮和退币按钮
系统设置4 种不同的货币按钮:5 角、1 元、5 元和10 元。用户通过点击货币按钮投入相应金额,语音提示所选金额,即投入成功,多次点击,会自动累计投入货币金额。用户经过投入钱币,选择商品种类及数量,获取商品,选择是否退币后,点击退币按钮,可取出剩余货币。
5)出货信息
出货信息用来显示用户使用时所投入的金额、商品种类及数量的选择、退币金额及交易是否成功的信息。
3.2 后台操作子面板
后台操作子面板如图5 所示,包括:上货按钮、销售金额显示、关闭售货机按钮、商品单价及数量显示。用户是否能够正常使用自动售货机,取决于商家是否上货与关闭售货机,该操作是在后台操作子面板完成的。
图5 后台操作子面板
1)上货按钮
用户在操作子面板完成若干购买过程后,商品数量会减少。商家可在后台操作子面板上点击上货按钮,使所选商品的库存恢复到初始设定的20 件,商品单价不变。
2)交易金额显示
交易金额显示是指用户结束一次操作后,在该处显示此次操作的总销售金额,用户再次操作时销售金额初始化,恢复为0 元;关闭售货机按钮是将销售单价,销售数量,销售金额初始化,在下次使用时即是用户重新开始购买操作。
4 系统的功能测试
系统的功能测试包括:商品购买成功和商品购买失败的功能测试,以及对购买的历史数据记录进行了分析。
4.1 商品购买成功的功能测试
在金额充足的情况下成功购买脉动的用户操作子面板和后台操作子面板分别如图6、图7 所示。
图6 成功购买商品时的用户操作子面板
图7 成功购买商品时的后台操作子面板
用户投入11 元货币,听到语音提示“1 元”“10元”,状态显示栏显示金额充足,所有商品的按钮闪烁,即表示所有商品都可购买。此时用户选择两罐脉动,语音提示“脉动”,并通过两次点击脉动的确认按钮进行购买,消费金额9 元,剩余2 元,此时状态显示金额为2 元,整个购买过程结束,该用户成功购买。成功购买商品的过程都会在出货信息栏显示,包括实时投入金额11 元,消费金额9 元,和成功购买脉动两罐。后台显示消费金额9 元,以及剩余脉动数量为18 罐。
4.2 商品购买失败的功能测试
用户投入7 元货币,语音提示“7 元”,状态显示栏显示金额充足,所有商品的按钮闪烁,此时用户选择一包凤爪,语音提示“凤爪”,通过点击凤爪的确认按钮进行购买,消费金额6 元,剩余金额1 元,此时商品按钮全都停止闪烁,即余额不足,无法继续选择用户欲购买的商品,此次交易失败。整个购买过程都会在出货信息栏显示,包括实时投入金额7 元,消费金额6 元。后台显示消费金额为6 元,凤爪剩余数量为19 包。用户购买失败的用户操作子面板和后台操作子面板如图8、图9 所示。
图8 购买失败时的用户操作子面板
图9 购买失败时的后台操作子面板
4.3 购买历史数据存储及查询
测试商品的销售历史数据分为日销售交易和月销售交易两种情况。
1)日销售交易情况表
①饮料记录销售表
2019 年5 月10 日自动售货机所记录的饮料销售量记录见表1。包括购买饮料的时间、种类、数量、单价、用户投币、消费总额以及剩余余额。从用户选择饮料种类来看,可乐是最优选择;从用户选择饮料数量来看,怡宝是最优选择;因此,可在上货时适当增加怡宝和可乐的数量。同时可以看出脉动的销量很低,因此,在上货时适当减少脉动的数量。
表1 饮料的日销售表
②零食销售记录表
2019 年5 月10 日自动售货机所记录的零食销售量的记录见表2。包括购买零食的时间、种类、数量、单价、用户投币、消费总额以及剩余余额。从用户选择零食种类来看,泡面是最优选择;从用户选择零食数量来看,好吃点是最优选择;因此,可在上货时适当增加泡面和好吃点的数量。同时可以看出凤爪的销量很低,因此,在上货时适当减少凤爪的数量。
表2 零食的日销售表
2)月销售交易情况表
在2019 年5 月份抽取了11 天的时间,对所售卖商品进行了销售数据记录分析。
①饮料销售记录表
11 天内对饮料销售量最高的记录见表3。包括购买饮料的时间、种类、数量、单价以及消费总额。可看出:在11 天内,可乐在饮料中销售量最高,脉动在饮料中销售量最低;因此,在下半月上货时需适当增加可乐数量和减少脉动数量。
表3 饮料的月销售表
②零食销售记录表
11 天内对零食销售量最高的记录见表4,包括购买零食的时间、种类、数量、单价以及消费总额。可看出:在5 月份的上半月,泡面在零食中销售量最高,凤爪在零食中销售量最低;因此,在下半月上货时需适当增加泡面数量和减少凤爪数量。
表4 零食的月销售表
3)系统测试小结
通过5 月10 日对零食和饮料进行的日销售量记录,以及从5 月1 日到5 月11 日十一天里对零食和饮料进行的月销售量记录,详细展示了每类商品的销售数量、消费金额,并在饮料和零食的分别对比之后,得出销量最高的零食和饮料分别是泡面和可乐,销量最低的零食和饮料分别是凤爪和脉动。因此,可在之后上货时参考该结论,适当增加销量较高的泡面和可乐的数量,适当减少销量较少的凤爪和脉动的数量。
5 结束语
文中设计的基于LabVIEW 的虚拟自动售货机系统能够完成自动售货机所拥有的基本功能,用户在开始操作售货机的过程中,有钱币的投入,商品种类及数量的选择,购买完成后剩余金额的计算,获取商品和剩余钱币4 个模块,在商品选择和钱币投入模块,还添加了语音播报,该功能可根据用户的操作实时播报投入的钱币名称和所选择的商品名称。经过系统测试,实现了实时监控自动售货机是否正常工作,货存量是否充足,实现了高效便捷的自动补货存等关键功能,满足了实际需要。