人人范文网 岗位职责

自动售货机机器维修岗位职责(精选多篇)

发布时间:2021-06-23 07:55:12 来源:岗位职责 收藏本文 下载本文 手机版

推荐第1篇:自动售货机

摘要:本设计利用通讯领域的前沿技术GPRS网络,采用能够实现远程测控的GPRS模块,以实现自动售货机的远程管理。

关键词:自动售货机;MDB;GPRS;SIM300C

引言:

自动售货是20世纪70年代在日本、欧美发展起来的一种全新的消费方式,自动售货机又被称为24小时营业的微型自助超市,它的售货领域非常广泛,是发达国家商品零售的一种主要方式。近几年,自动售货机在国内迅速普及,逐渐被越来越多的消费者所接受。但由于售货机分布零散、范围广阔的特点,自动售货机在为消费者带来方便的同时,也为经营者在监控、管理、维护等方面带来很大的不便。目前售货机运行的各种情况都需要由人工判断,包括缺货、缺零钱、币箱已满、售货机机械故障等,经营者普遍采用人工定时巡回视察的管理办法,既费时费力,又无法及时准确获取自动售货机状态报告,给经营者增加了管理成本和难度,也有可能给消费者的正常消费造成不便。

本系统的设计和实现可以使自动售货机的经营者可以根据网络统计的销售状况进行商品销售状况分析,预测商品的销售走势,确定合理的采购和配送策略,以期获得最高的投资回报率。同时售货机的一些故障信息和警报信息可以实时的传送到相应运营人员,从而可以在第一时间内发现并解决问题。

1 GPRS通信

1.1 GPRS通讯技术优势

在自动售货机无线管理系统实现的前期,大部分都是采用GSM(Global System for Mobile Communications)通信技术来实现的,GSM是一种电路交换系统,通常使用短信形式传送数据:用户发出的短消息首先被发送到短信息中心的服务器中,然后短信中心的服务器对所收到的短消息进行排队处理,按顺序再发送给相应的接收用户终端,很容易发生短消息拥塞,造成短消息丢失,同时短消息在短消息中心服务器中保留的时间也有一定的期限,无法做到“实时在线”、“按量计费”,另外每一条短消息只能传送140个字节,大大限制了使用的灵活性和应用范围,增加了通信成本。

GPRS是通用分组无线业务(General Packet Radio Service)的简称,是在GSM系统基础上发展起来的分组数据承载和传输业务。GPRS与GSM系统最根本的区别是,GSM是一种电路交换系统,而GPRS是一种分组交换系统,具有\"高速\"和\"永远在线\"的优点。与GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势,更有效的利用无线网络信道资源,特别适用于间歇、非周期数据传输、少量的数据传输,较大容量数据不频繁传输等。GPRS的技术优势资源利用率高,接入时间短,支持IP协议和X.25协议,收费合理等。

GPRS网络是在现有GSM网络中增加 GGSN和SGSN 来实现的,使得用户能够在端到端分组方式下发送和接收数据。其系统结构如图1所示。

1.2 GPRS通信模块的TCP/IP协议及AT指令

目前市场上的主流通信模块大都内嵌TCP/IP协议,只要通过几条AT指令就可连接到INTERNET,实现数据发送,如果使用APN网还可以维持终端的IP地址和端口,实现实时的双向通信,现将笔者采用的SIMCOM公司的SIM300模块中常用的AT指令列表如下:

如果数据中心有数据发送到通信模块,数据将自动的接收,通过串口发送到单片机系统,如果需要还可以通过上述的AT+CIPHEAD指令来设置数据的祯头信息。

2自动售货机接口

售货机是通过MDB协议协调主控制器(VMC)与多个外设之间通信,本系统也是通过MDB协议同售货机通信的,以下介绍一下MDB协议。

2.1 MDB协议的实现

MDB接口实际上是工作于9600波特率的主从型串行总线接口,所外围设备(例如硬币机、读钞机、读卡器等)均为主控制器(传统上称售货机控制器——VMC)的从机。所有外围设备与VMC之间的通信方式都一致。

MDB协议的串行位格式为:1个起始位,8个数据位,1个方式位与1个停止位,共11位。位传递的顺序如图2所示。其中方式位根据传递的方式不同置0或置1。在MDB总线上,VMC通过广播方式向外发送命令。第一字节为地址字节(实际上只有高5位寻址信息,低3位为对外设的指令),该字节被所有的外设读取,但只有符合地址字节所指定的外设才处理其后的数据字节,并做出反应。在VMC到外设的数据中,地址字节的方式位被置1,数据字节的方式位被置0,外设通过检验接收到的方式位确认是地址命令还是数据。当数据从外设发送到主机时,最后送出的字节方式位被置1,标志着数据发送完毕。

VMC向外设传送的指令由一个地址字节、一些可选的数据字节与一个校验和(CHK)字节构成。发送指令后,外设应答VMC的通信块可以由一个数据块和一个CHK字节组成,或者一个应答字节(ACK),或者一个无应答字节(NAK)。如果外设应答数据块的话,VMC将通过一个应答字节(ACK)、无应答字节(NAK)或得发字节 (RET)应答外设传回的数据。

图3至图6为几个典型的会话例子,其中“*”表示传送时方式位置1,“ADD”表示地址字节,“CHK”表示传送数据的校验和。

2.2主要功能的实现

●管理员设置模式检测:当维护员进行维护时,要先将主板上的拨码开关拨至维护模式;维护完成后再拨回销售模式。否则主板会检测到模式错误并及时通知控制中心。

●故障信息和检测:若售货机终端的主要机械部分出现故障而不能及时发送特定的信号给控制中心,就说明该部分设备处于不工作或不正常的工作状态。如当纸币机、硬币机出现故障时,主板CPU会接收到相应的错误信息,并对错误信息解析后发给控制中心。

●缺货、缺币报警:当售货机料道的某种商品临近缺货或硬币机内的硬币数量少于一定值时,系统会及时发送报警信号通知控制中心,以便得到及时的补充。

●售卖信息:当有售卖操作发生时,中空板将相应的信息按照MDB协议数据。

3 系统组成和实现方式

3.1 硬件部分

(1)硬件组成

自动售货机接口系统部分的硬件主要由单片机部分、GPRS模块部分、数据存储部分、电源部分以及时钟部分。

●单片机部分:选用美国Cygnal公司的C8051F023,该芯片内集成了构成一个单片机数据采集或控制系统所需要的几乎所有模拟和数字外设及其他功能部件,为设计小体积、低功耗、高可靠性、高性能的单片机应用系统提供了方便。

●GPRS模块部分:选用SIMCOM公司的SIM300C,且操作非常简单,价格便宜,内嵌TCP.IP协议,大大降低了开发时间。

●数据存储部分:选用美国ATMEL公司的AT24C256,该芯片可以进行100,000次擦写,断电后可保存数据100年,可以有效保存通信参数,售卖信息,故障等相关信息。

●电源部分:为了系统的稳定性,系统给SIM300C单独供电,SIM300C采用NS公司的LM1085-ADJ,3.6V供电,单片机等其他部分用LM1085-3.3供电。

●时钟部分:选用DALLAS公司的DS12C887,可以利用其周期性中断和多频率输出的方波来控制数据的定时发送。

3.2 软件部分

该软件采用C语言完成,主要有初始化模块,中断服务模块,数据处理模块,数据发送,接受数据处理五个部分组成:

●初始化模块:设置通信参数(IP,端口,APN),有无未发送的售货机信息等,设置通信模块的初始参数,定时器、串口、中断、时钟芯片等的初始化工作。

●中断模块:定时器中断,串口数据发送接收中断,时钟芯片中断等。

●数据处理:售货机售卖信息,货物状态信息,料道故障信息,纸币器、硬币器故障,以及售货机和本系统之间的数据处理。

●数据发送:将售货机相关信息发送到数据中心,如果采用公网作为通信载体,还需要发送维持网络连接的脉冲信息等。为了保证数据发送的可靠性,数据发送部分还包括在未收到数据中心的应答信息所采用的重发机制。

●数据接收:接受来自数据中心的数据,并根据协议解析、处理。

在数据传输可靠性方面,我们对数据采取先存储后转发的机制,并且在数据传输时采用握手协议,控制中心在收到上行数据帧后,应在约定的时间内发送回应信息给接口模块,如果模块在约定的时间内未收到回应信息,则应该继续发送该帧数据,直到收到为止。

4控制中心部分部分设计

4.1 系统运行环境

OS: Windows 2000 server

数据库:SQL SERVER

硬件要求:CPU:PIII 800M以上

内存:128M

硬盘:10G以上

4.2 系统运行设计上的限制

●自动售货机无线网络管理系统必须遵循B-S-S三层架构。

●为提高数据库访问效率,服务器端必须采用ODBC数据库连接池技术。

●软件开发必须遵守公司的ISO 9001规范。

●数据通信模块通过UDP协议接收发送数据。

●软件的外部数据接口必须基于工业标准,例如Txt、DBF、XML或API、COM+等。

4.3 系统外部接口要求

(1)软件接口

严格参照:《VMCTX》中所规定数据接口

(2)通讯接口

●运营商及其业务客户端通过Modem、DDN、ADSL或宽带网接入Internet;

●服务器(计算机控制中心)通过DDN,ADSL、光纤、或宽带网挂接Internet;

●自动售货机通信模块通过GPRS无线数据业务挂接Internet;

●自动售货机通信模块通过UDP通信协议完成和系统服务器(计算机控制中心)的数据传输。

4.4 系统实现功能

控制中心软件主要部分和实现功能如下:

●实时监控,实现基本信息管理:以数字、表格、图形等方式显示售货机的状态, 实现对自动售货机基本信息、商品基本信息、货币基本信息、自动售货机的料道基本信息等的管理。

●联网通信模块,实现报警检测和任务调度:监控中心通过GPRS通信模块自动查询售货机终端的运行状态。当售货机出现故障时,除报警外,还以短信的形式将报警信息发送给维护员以便及时得到处理。

●接收通信数据,对数据进行统计、核对、解析和深层挖掘:通过对售货机销售情况的实时检测,实现按商品、售货机、营业地区、营业时间段等为分类条件的多种组合查询或统计,并进行核对和解析,并可进一步进行深层次的数据挖掘和数据分析,为商家提供隐藏在大量积累数据中的商业信息。

●实现系统远程控制和维护:如控制关机、吐货、各种控制参数的远程设定,并实现数据维护、用户管理、终端身份验证、故障诊断信息等的管理。

5结束语

本文的系统已经在行业内得到了实际的应用,为运营商提供了一种集约化和自动化的经营管理模式,既降低了成本,也提高了经济效益。随着通讯技术、电子技术、计算机技术、网络技术的进一步发展,多媒体自动售货机以及手机自动售货机也逐步地得到推广和应用,不久的将来,自动售货机必定为人们的生活带来更大的便利。

推荐第2篇:软件工程_自动售货机

自动售货机

信息1101 施敏宇 18号

下面是自动售货机系统的需求陈述,试建立它的对象模型、动态模型和功能模型: 自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币、五分币、二分币、一分币。其他货币被认为是假币。机器拒绝接受假币,并将其从退币孔退出。当机器接受了有效的硬币之后,就把硬币送入硬币储藏器中。顾客支付的货币根据硬币的面值进行累加。 自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。顾客通过选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返还到退币孔。如果分配器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。如果顾客支付的货币值少于所选择的分配器中货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,他投放进的货币将从退币孔中退出。

面向对象的分析

面向对象分析方法的核心思想是利用面向对象概念和方法为软件需求构造一组相关模型(对象模型,动态模型和功能模型),来获得关于问题域的全面认识。

这三个模型从不同的角度对系统进行描述,其中:对象模型描述了系统静态的、结构化的数据性质;动态模型描述了系统顺势的、行为化的控制性质;功能模型描述了变化的系统的功能性质。这三个模型都涉及到数据。控制和操作等共同的概念,但每种模型描述的侧重有所不同。它们各自以不同侧面反应系统的实质内容,综合起来则全面反映了目标系统的需求。

对象模型是三个模型中最关键的。它的作用是描述系统的静态结构,包括构成系统的类和对象、它们的属性和操作以及它们之间的联系。UML中类图适用于建立对象模型,状态图适用于建立动态模型。每个类的动态行为用一张状态图来表示,各个类的状态图通过事件合并起来,构成系统的动态模型。也就是说,动态模型是基于事件共享而相互关联的一组状态图的集合。建立对象模型大体上按照下列顺序进行:寻找问题域内的对象,识别出对象间的关系、定义属性和服务。事实上,分析工作不可能严格按照预定顺序进行,系统的模型往往需要反复构造多遍才能建成。

注:对象硬币计算器和对象硬币检测器可以作为对象自动售货器的一部分,它们的属性作为自动售货器的属性。

建立动态模型

对于仅存数静态数据的系统来说,动态模型并没有什么实际意义。然而在开发交互式系统时,动态模型却起着很重要的作用。如果收集输入信息是目标系统的一项主要工作,则在开发这类应用系统时建立正确的动态模型是至关重要的。

建立动态模型的步骤:

(1) 编写典型的对话脚本;

(2) 从脚本中提取出事件,联系该事件与其目标对象;

(3) 组织事件的顺序和状态(采用状态图描绘);

(4) 比较各个不同对象的状态图,检查对象之间的一致性,确保事件之间的匹配。

提示投币投币购买提示是假币,退币假币检查硬币否真币存储硬币,计算货币总值确认投完硬币是请求选择货物选择货物检测货物存量无货提示无货计算比较货币总值和货物价格确认确认顾客购买小于提示货物不足,确认顾客购买不购买送出货物,请求取货不购买退币请求取退币提示显示交易完毕

功能模型

功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑计算的次序。功能模型由多张数据流图组成。数据流图用来表示从源对象到目标对象的数据值的流向,它不包含控制信息,控制信息在动态模型中表示,同时数据流图也不表示对象中值的组织,值的组织在对象模型中表示。

数据流图中包含有处理、数据流、动作对象和数据存储对象。

1.处理

数据流图中的处理用来改变数据值。最低层处理是纯粹的函数,一张完整的数据流图是一个高层处理。

2.数据流

数据流图中的数据流将对象的输出与处理、处理与对象的输入、处理与处理联系起来。在一个计算机中,用数据流来表示一中间数据值,数据流不能改变数据值。

3.动作对象

动作对象是一种主动对象,它通过生成或者使用数据值来驱动数据流图。

4.数据存储对象

数据流图中的数据存储是被动对象,它用来存储数据。它与动作对象不一样,数据存储本身不产生任何操作,它只响应存储和访问的要求。

有效币特征假币退假币假币检查硬币有效币硬币送入硬币储藏器计算面值货物价格有货货币总值硬币顾客投币顾客不足等待顾客投币顾客取消购买,退币顾客判断货币是否足够足够选择货物判断分配器货物存量无货分配货物,找零货物,硬币硬币退币

推荐第3篇:自动售货机渊源

自动售货机:不容忽视的销售方式

如今,自动售货机由于随处可见,似乎被人们所忽视。客观上讲,它是一种起源较早的无店铺销售方式。看似可以和路边电话亭等归为一类的自动售货机,曾帮助了许多产品打开市场销路,甚至有些特殊产品依托这种特殊的销售方式才得以走进人们的生活。无论之前,现在还是今后,自动售货机

都是一种不容忽视的无店铺销售方式。

自动售货机的前生今世

自动售货机(vendingmachine)的标准定义是:“通过售货机进行售卖活动的零售业态。”自动售货机又称为自动售货亭,已被广泛地运用到多种类商品上。自动售货,顾名思意,首先是要有自助的收费系统,比如纸币器、硬币器,或能刷卡的装置,能自助收钱;其次能自动找零,当然目前由于成本的问题,大多机器只能找硬币。当投入或刷入足够的钱后,能让顾客选择货物,货物可以是饮料、咖啡、食品、MP3等能通过机器出来的产品,才能称为自动售货机。

世界上第一台自动售货机诞生于公元前215年的古埃及神庙,用于分配圣水,当时生活在亚历山大的一位著名数学家把它描述成在寺庙中投币就可产生圣水的机器。1700年,英国酒馆里有了能用硬币购买的售烟盒。1706年,中国人造出使用硬币操作的自动售铅笔机。

进入20世纪,日本率先开发出实用型的自动售货机。日本第一台自动售货机是1904年问世的“邮票明信片自动出售机”,它是集邮票明信片的出售和邮筒投函为一体的机器。1905年,美国邮局开始使用邮票售卖机。20世纪20年代,商用的自动售烟机开始进入市场。1936年,NAMA(国际自动售货机协会)成立。1946年,发明出自动售咖啡机。

自动售货机的真正普及是在第二次世界大战以后。20世纪50年代,“喷水型果汁自动售货机”大受欢迎,果汁被注入在纸杯里出售。后来,由于美国的饮料大公司进入日本市场,1962年,出现了以自动售货机为主体的流通领域的革命。1967年,100日元单位以下的货币全部改为硬币,从而促进了自动售货机产业的发展。1960年纸币兑换机出现在银行柜台。

全世界的自动售货机应该说是在1970年后才取得了迅猛的发展,由最初出售口香糖、香烟或罐装清凉饮料和酒精饮料扩展到各种食品和日用百货,而且延伸到服务领域,如自动点唱机、自动洗衣

机、自动提款机等。

1980年,电子组件装备自动售货机。1985年,信用/借计卡消费在自动售货机上实现。1993年,自动售货机机器数据无线传输实现。2000年,手机购物在自动售货机上实现。

自动售货机构建特殊产品销售渠道

在艾滋病感染率逐年上升的今天,安全套的使用无疑在阻断艾滋病病.毒传播方面发挥了重要的作用。可是,在我国,许多人对安全套具有排斥心理,致使安全套的推广变成一个系统的社会工程,而不能像其他产品一样走通常的市场推广路线,使得安全套平稳进入中国百姓家经过了一个漫长的过

程。

受中国传统思想的影响,安全套由于涉及到私人生活,大部分人不好意思在众人的注视下到药店、超市等公共场所去购买,需要一种不用售货员直接参与购买行为的销售方式来避免这种尴尬。

再加上计生产品安全套处在一个特殊的位置上,此类商品是被禁止广告的,因而失去了广告这一最为常规和有效的武器,就好比一个哑巴商贩在推销商品,这种无声的沟通试图,其中的困难可想而

知。

但是,英国产品“杰士邦”安全套自从1998年进入中国市场以来,短短两三年时间,就在中国安全套市场获得了极高的知名度,销量也名列前茅。“杰士邦”的品牌是如何通过非广告途径建立起来的呢?1998年11月,深圳街头出现了第一个安全套自动售货机,随后陆续进入上海、昆明、重庆等地,杰士邦正是通过这种小箱子打开了中国市场。

改革开放后,一种小巧的安全套自动售货机悄悄出现在大街、车站等公共场所的墙壁上,1990年代末,一台编号为0002号的安全套自动售货机出现在了清华校园里。这是一种白色的、长方形金属质地的盒子,有点像是个热水器。需求者只需送给“此机”1元硬币,售货机便会“吐”出一个外形精美、质量优良的**。“**自动售货机”一经“出更”,好似向平静的湖水中投进了石子,立刻激起了层层涟漪,争议声不断,但它还是在不断拓展,从一线城市蔓延到二线城市,最后连三级城市都

覆盖了。

19世纪初,我国就已经有人在使用安全套,但到19世纪末,长达一个世纪的时间,还是有许多人没有接受它,可见销售推广的工作之难。改革开放之后,安全套的销售规模上了一个台阶,无疑思想的开放起了重要的作用,而合理益于人们接受的销售方式更是不能忽视的。

安全套由于其产品的特殊性,采用自动售货机这种方式出售,取得了成功。随后,自动售货机被广泛地应用到多种商品上。包括那些方便性的冲动购买品,诸如香烟、软饮料、糖果、报纸和热饮料等,一般是满足人们临时性需要的;也包括一些日常用小商品,诸如点心,热汤和食品、袜子、化妆品、平装书、唱片、胶卷、T恤衫等;另外,涌现出了自助洗衣机、自动电动游乐器、自动行李放、

自动计时停车场。

自动售货机亦能卖房卖车

眼下,自动售货机出售的商品远不止这些。美国佛罗里达州迈阿密一家酒店安装了一台奢华自动售货机,不但出售大牌服饰,甚至还有“宾利”雅骏敞篷汽车和公寓供选择。这台体形庞大的自动售货机安装在蒙德里安南滩酒店大堂里。与传统自动售货机不同,这台名为“半自动”的机器看似更像一个摆满白色盒子的大书架。根据酒店方面的介绍了解到,“半自动”售货机共出售大约60种商品,售价在10美元至120万美元之间。顾客们可以先从盒子上找到想要的商品,然后透过大屏幕观看细节。一旦确定,只需刷卡、按下货品按钮,就能看到一条机器臂缓缓移动,从售货机中取出该货品。

不过,如购买汽车和公寓之类的大宗商品,就没有这么简单。买家必须先支付1500美元订金,然后跟随酒店工作人员试驾汽车或者由地产经纪人带去看房。没有问题则成交,若买家不满意却不能

拿回已支付的订金。

自动售螃蟹成本将大降

江苏省南京市高淳县素有“日出斗金、日落斗银”的江南鱼米之乡的美誉,是清朝乾隆皇帝钦赐

的“江南圣地”。

高淳县一家水产合作社的负责人史团结,是个螃蟹经销大户。史团结介绍,现在高淳有上百位螃蟹经销大户,一般都采取在城市开设专卖店的方式销售螃蟹。他个人就在北京、上海、南京开设了8家,但专卖店的成本太高。三名营业员,加上门面租金,每家专卖店的费用至少10万元,这些费用都得加到螃蟹上,螃蟹价格就降不下来,销售也就不会上一个台阶。一天,他偶然在网上看到日本人用自动售货机卖茶叶,萌生了用自动售货机销售螃蟹的点子。2008年,高淳县与深圳的自动售货机生产厂家签下了协议,厂家称技术上绝对没问题,改变一下自动售货机的出口就可以了。售货机的货仓本身就是冷藏箱,可以存放不同规格的螃蟹。只要有标准化的螃蟹包装器,就能把不同规格、不同价格的螃蟹“吐”出来。史团结介绍,首批可以“爬”出螃蟹的自动售货机已进入生产阶段,也许不

久就可以出现在城市的小区和街头。

那么,自动售货机卖螃蟹有什么好处呢?史团结给记者算了一笔帐:“一台售货机的造价一万元,使用寿命一般可到5年,摊到每年的费用仅2000元。这种售货机可以放在居民小区里、道路边、超市里,支付很少的场地费就可以售卖。售货机里的螃蟹根据大小标价,所有售货机电脑联网,可以随时了解销售情况。专卖店三个人看一个店,售货机则一个人可以管10来台机器,无疑将大大降低销售成本。这样一来,就可以降低螃蟹的销售价格,一般人都可以承受,无形中就扩大了消费的群体。”

江苏省农林厅的一位专家对这种营销方式表示赞同。他说,现在已经有越来越多的农产品走进超市,但成本比较高。利用自动售货机完全是一种新的销售模式,成本低,销售地点灵活。“更重要的是,它会带来农产品包装上的重大变革。现在,农产品包装还处于初级阶段,而标准化是自动化销售最重要的前提。自动售货机能‘爬’出螃蟹了,说不准就能带动其他农产品包装的标准化,这对农产

品销售的意义是十分重大的。”

可见,自动售货机快捷、低成本的特点已经得到了广大商家的认可,各类产品纷纷加入自动售货机的销售行列。因此有专家建议将自动售货亭的国家标准改为:“是买者向机器中投入特定的交易媒介(钱币或磁卡),机器自动交付商品和找付零钱的零售类型。”

随着自动售货机的广泛应用,自动售货机产业也正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约10-15%的电力。自动售货机正向节省资源和能源以及高功能化的方向发展,这种销售方式将会受到更多产品的青睐,

已经成了必然的趋势。

推荐第4篇:自动售货机系统程序

Coin类:

#include #include #include

using namespace std;

cla Coin { public: /** Constructs a coin with a given name and value @param n the coin name @param v the coin value */ Coin(string n, double v); /** Gets the coin name. @return the name */ string get_name() const; /** Gets the coin value @return the value */ double get_value() const; private: string name; double value; };

Coin::Coin(string n, double v) { name = n; value = v; }

string Coin::get_name() const { return name; }

double Coin::get_value() const { return value; }

Product类: #include #include #include

using namespace std;

cla Product { public: /** Constructs a product with a given name, price and quantity @param n the product name @param p the price @param q the quantity */ Product(string n, double p, int q); /** Gets the product name @return the name */ string get_name() const; /** Gets the product price @return the price */ double get_price() const; /** Gets the product quantity @return the quantity */ int get_quantity() const; /** Adds to the product quantity @param amount the amount to add */ void add_quantity(int amount); private: string name; double price; int quantity; };

Product::Product(string n, double p, int q) { name = n; price = p; quantity = q; }

string Product::get_name() const { return name; }

double Product::get_price() const { return price; }

int Product::get_quantity() const { return quantity; }

void Product::add_quantity(int amount) { quantity = quantity + amount; }

VendingMachine类:

cla VendingMachine { public: /** Constructs a vending machine with no current product selection. */ VendingMachine(); /** Adds product to the machine. @param p the product to add */ void add_product(Product p); /** Sets the currently selected product @param name the product name @return true if the machine has a product with the given name */ bool select_product(string name); void chaxun_product();//查询当前售货机内的商品

/** Adds a coin to pay for the currently selected product. @param c the coin to add @return true if sufficient coins have been added to pay for the selected product. */ bool add_coin(vector current_pay); /** Removes all coins that were added to pay for the current product. @return the value of the returned coins */ double return_coins(); /** Removes all money that was paid for products. @return the value of the money */ double remove_money(); double add_coinbijiao(vector current_pay );//对投入的金钱和所购买的商品的价格进行比较

double return_yiyoucoins();//统计售货机中已有的货款 void setcurrent_product();//把当前选择的商品代号置为-1 int getcurrent_product();//得到当前选择的商品代号 private: vector products; int current_product; vector current_payment; vector coins; };

VendingMachine::VendingMachine() { current_product = -1; }

void VendingMachine::add_product(Product p)//添加商品 { for (int i = 0; i

{

cout

return;

} } products.push_back(p); cout

bool VendingMachine::select_product(string name)//选择商品 {

int i; for ( i = 0; i

if (products[i].get_name() == name && products[i].get_quantity() >0) { current_product = i; return true; } else { if(products[i].get_name() == name && products[i].get_quantity() == 0) { cout

double VendingMachine::return_yiyoucoins()//统计售货机当前的金钱总额 { double total = 0; for (int i = coins.size()1; i >= 0; i--) { coins.push_back(current_payment[i]); current_payment.pop_back(); } products[current_product].add_quantity(-1); current_product = -1; cout

{ return false; } }

double VendingMachine::add_coinbijiao(vector current_pay ) { if (current_product == -1) return false; double total = 0; for(int k=0;k

} double m=products[current_product].get_price()-total; if (m>0) return m; else return -1; }

double VendingMachine::return_coins()//统计当前投入的金钱总额 { double total = 0; for (int i = current_payment.size()1; i >= 0; i--) { total = total + coins[i].get_value(); coins.pop_back(); } return total; }

void VendingMachine::chaxun_product() {

if(products.size()==0) { cout

void VendingMachine::setcurrent_product() { current_product=-1; }

int VendingMachine::getcurrent_product() { return current_product; }

Main函数:

#include #include #include #include\"coin.h\" #include\"product.h\" #include\"machine.h\" using namespace std;

void main() { vector coins; vector current_pay; coins.push_back(Coin(\"nickel\", 0.05)); coins.push_back(Coin(\"dime\", 0.1)); coins.push_back(Coin(\"quarter\", 0.25)); coins.push_back(Coin(\"rmb\", 1.00));

VendingMachine machine; bool more = true; machine.chaxun_product(); while (more) { cout >command; if (command == \"a\") { cout >name;

cout >price; cout >quantity; machine.add_product(Product(name, price, quantity)); } else if (command == \"s\") {

double total1;

total1=machine.return_yiyoucoins();

if(total1>=5000)//当售货机中的货款大于等于5000时,暂停售货

{

cout

}

else

{ machine.setcurrent_product(); cout >name; machine.select_product(name);

} } else if (command == \"p\") {

if(machine.getcurrent_product()!=-1)//如果当前已选择商品,才可以投币

{ bool panduan=false; while(!panduan)//多次投币的实现

{ cout >name; while(name!=\"#\") { bool found = false; for (int i = 0; !found && i >name;

}

double k=machine.add_coinbijiao(current_pay ); if(k==-1)

{ machine.add_coin(current_pay); for (int i = current_pay.size()1; i >= 0; i--) { total = total + current_pay[i].get_value(); current_pay.pop_back(); } cout

else

cout

{

machine.setcurrent_product();

double total=0;

for (int i = current_pay.size()1; i >= 0; i--) { total = total + coins[i].get_value(); coins.pop_back(); } return total; }

void VendingMachine::chaxun_product() {

if(products.size()==0) { cout

void VendingMachine::setcurrent_product() { current_product=-1; }

int VendingMachine::getcurrent_product() { return current_product; } }

JAVA

import Input.touqian; import java.*; cla shangpin {

} cla fenpeiqi {

}

cla xianshichanpin {

fenpeiqi fpq[]=new fenpeiqi[3]; public xianshichanpin() {

fpq[0]=new fenpeiqi(3.0); fpq[0].sp[0]=new shangpin(\"玉米烤肠

\",10); fpq[0].sp[1]=new shangpin(\"可口可乐

\",15); fpq[0].sp[2]=new shangpin(\"百事可乐

\",10); fpq[1]=new fenpeiqi(5.0); fpq[1].sp[0]=new shangpin(\"哈德门香烟\",10); fpq[1].sp[1]=new shangpin(\"将军香烟

\",15); fpq[1].sp[2]=new shangpin(\"红梅香烟

\",10); fpq[2]=new fenpeiqi(10.0); fpq[2].sp[0]=new shangpin(\"一支笔香烟\",10); fpq[2].sp[1]=new shangpin(\"红塔山香烟\",10); fpq[2].sp[2]=new shangpin(\"泰山香烟

\",15); double price; shangpin sp[]=new shangpin[3]; public fenpeiqi(double price) { } this.price=price; String name; int num; public shangpin(String name,int num) {

} this.name=name; this.num=num;

#\"); #\"); #\"); #\"); #\");

} } void show() { System.out.println(\"===============

System.out.println(\"#

System.out.println(\"#

System.out.println(\"#

欢迎使用自动售货机

System.out.println(\"#

System.out.println(\"#

=================\"); System.out.println(\"===============

System.out.println(); System.out.println(\"编号\\t\\t\"+\"名称\\t\\t\\t\"+\"价格\\t\\t\"+\"数量\\t\"); for(int i=0;i

} if(fpq[i]!=null) {

} for(int j=0;j

} } if(fpq[i].sp[j]!=null) { =================\"); System.out.println((i+1)*10+j+1+\"\\t\\t\"+fpq[i].sp[j].name+\"\\t\\t\"+fpq[i].price+\"\\t\\t\"+fpq[i].sp[j].num); System.out.println(\"=============== } =================\"); cla panduan { boolean ying()

} {

} boolean zhi() {

}

int z=touqian.in();

if(z==5||z==10) { } else { } return false; return true; double y=touqian.dou(); if(y==1||y==0.5) { } else { } return false; return true; cla jiabi {

switch(touqian.in()) void ceshi() { System.out.println(\"请选择投放钱的类型 \"); System.out.println(\"1 表示投放 硬币\"); System.out.println(\"2 表示投放 纸币\"); System.out.println(\"请输入您选择的钱的类型 :\");

panduan pd=new panduan();

{ case 1:

System.out.println(\"请您投入有效的面值\");

if(pd.ying())

{

System.out.println(\"您投入的是有效地硬币\");

System.out.println();

// System.out.println(\"^_^ 请选择您所需要的物品^_^\");

}

else

}

cla chanpin {

{

System.out.println(\"您投入的不是有效地硬币,请您重新投入\");

}

break;

case 2 :

System.out.println(\"请您投入有效的面值\");

if(pd.zhi())

{

//

}

else

{

}

break;

default :

System.out.println(\"请您重新投入有效地货币\");

} }

System.out.println(\"您投入的不是有效的纸币,请您重新投入\"); System.out.println(\"您投入的是有效的纸币\"); System.out.println(); System.out.println(\"^_^ 请选择您所需要的物品^_^\");

} } public static void main(String args[]) {

System.out.println(\"请输入您想要产品的编码:\"); int bianma; bianma=touqian.in(); System.out.println(\"请输入您想要产品的数量:\"); int shuliang; shuliang=touqian.in(); System.out.println(\"您一共要付:\"); double sumjine; sumjine= xianshichanpin xscp=new xianshichanpin(); xscp.show();

推荐第5篇:自动售货机合作协议书

自动售货机合作协议书

甲方: 乙方:

本着平等互利、友好协商的原则,甲、乙双方根据《中华人民共和国合同法》、《食品安全法》及其相关规定,就自动售货机合作项目达成如下协议:

一、乙方提供所辖场地,即________布设甲方自动售货机,如因乙方原因需要调整自动售货机摆放位置,应提前10天通知甲方,甲方按要求搬迁。

二、乙方为自动售货机营运提供标准电源220V·10A、三线标准插座,接地线,24小时供电(特殊情况或乙方全公司停电除外),售货机产生的电费甲方必须在每月5号前按1元/度交至乙方财务,未按时交电费的,乙方有权终止协议或将设备低压电费。

三、甲方每月5号前须向乙方缴纳场地使用费

元,甲方自负盈亏,乙方无义务帮助甲方经营管理、支付款项等一切与甲方有关的费用和税金。

四、甲方提供国家检验合格的自动售货机放置在乙方场地,安装台数: __,型号:___________,如因甲方设备安全或食品安全造成不良后果的,责任由甲负责,甲方自动售货机及货物进出乙方场地,必须由双方签章认可,甲方不得销售乙方公司危禁物品(如:烟、酒等)

五、甲方如需对所布自动售货机的数量、型号或位置进行调整,因提前10天通知乙方、并取得其书面同意。如因自动售货机摆放位置原因造成甲方经营严重亏损,甲方要求调换位置或撤机,乙方应给予积极配合。

六、自动售货机的所有权归甲方所有。甲方全权负责与自动售货机相关的营运项目,并保留变更具体经营项目的权利。甲方保证其经营的合法性,负责自动售货机的日常运营、维护及销售商品的售后服务。如因机器故障或销售商品质量引起的顾客投诉,由甲方负责。

七、乙方协助甲方做好机器设备的安装、营运维护工作,诸如协助故障处理、免费提供场地进出及停车配货等。协助甲方维护自动售货机等财产安全。如发生机器损坏、商品被偷盗等情况应及时通知甲方或报警。甲方工人进出乙方场地必须遵守乙方所有规章制度,(包括安全生产,交通安全,消防安全等),如甲方员工有违反公司制度或单方面对设备及以上协议内容有变动的,乙方可随时终止本协议,甲方须马上搬离乙方区域!

八、本协议有效期__年,即自__年__月__日至__年__月__日止。期限届满30日前,双方应积极主动联系本协议续签事宜。在同等条件下,甲方有优先取得续约的权利。

九、本协议未尽事宜,或双方发生争议,应友好协商解决,否则任何一方均可向有管辖权人民法院起诉。

十、本协议自签字盖章之日起生效。

十一、本协议壹式贰份,双方各执壹份,具有同等法律效力。

甲方: 乙方: 地址: 地址: 电话: 电话:

甲方代表签名并盖章: 乙方代表签名并盖章:

推荐第6篇:自动售货机合作合同

自动售货机合作协议书

甲 方:南京威汀贸易有限公司

乙 方:

甲、乙双方本着平等、互惠的原则,经过友好协商,就合作放置自动售货机开展的服务

达成如下协议:

第一条 综合条款

1.甲方向乙方提供自动售货()机台,咖啡机经营。

2.乙方向甲方所提供场地指定在(地址)()共()处。

3.甲方所提供自动售货机编号为共台。咖啡机编号为共台

4.甲方在年月日前,将自动售货机调试后运送到位投入使用。

5.合作期间,放置于乙方处自动售货机的所有权归属于甲方。

第二条 服务内容

1.甲方保证所提供之自动售货机内销售的商品符合中华人民共和国国家卫生标准及企

业技术质量标准。

2.甲方负责自动售货机的日常运营工作,并承担运营成本(商品补给、设备保养、清

洁及日常维修)等费用。

3.甲方工作人员进入乙方区域,服从乙方负责人的管理。

4.乙方如因特殊情况需要移动自动售货机位置,必须事先通知甲方,由甲方工作人员

在3个工作日内迁移设备。

5.乙方对自动售货机协助保管,发现设备故障或消费者投诉应及时通知甲方,甲方应

及时处理解决,设400,000,2991投诉专线,遇卡货卡币投诉立即全额理赔并免费奉送所购商品。

第三条 协议条件、期限

1.本协议自签定之日起即刻生效,协议期限以一年为准,协议期满,如双方无异议,

本协议自动延续至下一年同月日。

2.协议期内甲方按装置自动售货机前双方商定的费用元,付给乙方,一季度

结算一次。

第四条 协议解除

1.如果乙方场地另有用途需提前15日通知甲方撤走.

2.如自动售货机持续销售状况不佳,甲方提前10天告知乙方,在结算清相关费用后,

解除协议。

其他约定:

第五条本协议一式二份,双方各执一份,具有同等法律效力。

甲方盖章:南京威汀贸易有限公司

代表签字:

代表签字:乙方盖章:联系电话: 025-85552178联系电话:

地址: 地址: 南京市栖霞区金尧路19-5

日期:

推荐第7篇:软件工程课程设计(自动售货机)

《软件工程》课程设计报告

一、问题描述

(一)关于自动售货机

自动售货机像磁卡电话、银行柜员机一样,以方便、新颖、文明、昼夜服务等特点,成为发达国家不可缺少的便民配套设施。如今的自动售货机可以为顾客提供多种服务。顾客可以根据自己的需要选择商品并投入钱币,售货机接收钱币,售出商品。

(二)自动售货机的设计

自动售货机系统是一种无人售货系统。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是一元币、五角币、一角币、五分币和一分币。其它货币都被认为是假币。机器拒收假币,并将其从退币孔退出。当机器接收了有效的硬币之后,将之送入硬币储藏器。顾客支付的货币根据硬币的面值进行累加。

自动售货机装有货物分配器,每个分配器中包含0 个或多个价格相同的货物。顾客通过选择货物分配器来选择货物。如果有货,且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将找零返回到退币孔。如果无货,则和顾客支付的货币值相等的硬币将被送到退币孔。如果顾客支付的货币值小于所选货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,他投放进的硬币将从退币孔中退出。

二、需求分析

(一)UML自动售货机系统功能需求:

自动售货机系统是一种无一元等3个硬币投币口。顾客确认购货后,售货机可根据硬币的面值进行累加。

自动售货机装有货物分配器。每个货物分配器中包含零个或多个价格相同的货物。顾客通过 1 选择货物分配器来选择货物。如果货物分配器中有货物,而且顾客支付的货币值不小于该货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返回到退币孔。如果分配器是空的,则和顾客支付的货币值相等的硬币将被送加到退币孔。如果顾客支付的货币值少于所选择的分配器中的货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,将所投硬币从退币孔退出。

(二)UML自动售货机系统控制要求:

根据售货机自动控制系统的流程可以知道自动售货机的主要系统包括:计币系统、比较系统、选择系统、饮料供应系统、退币系统和报警系统。

1.计币系统:

当有顾额色买饮料时,投入的钱币经过感应器,感应器记忆投币的个数关且传送到检测系统(即电子天平)和计币系统。只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器中。如果不正确时,认为是假币。既定出投币,既定出系统,等待新顾客。

2.比较系统:

投入完毕后,系统会把钱币数据和可以购买饮料的价格进行区间比较,当投入的钱币小于2元时,指示灯亮,显示投入的钱币不足。此时可以再投币或选择退币。当投稿的钱币在2~3元之间时,汔水选择指示灯长亮。当大于3元时,汔水和咖啡的指示灯同时长亮。此时可以选择饮料或选择退币。

3.选择系统:

比较电路完成后选择电路指示灯是长亮的,当按下汽水或咖啡选择时,相应的选择指示灯由长亮转为以1秒为周期闪烁。当饮料供应完毕时,闪烁同时停止。

2 4.饮料供应系统:

当按下选择按钮时,相应的电磁阀(Y4或Y6)和电机(Y3或Y5)同时启动。在饮料输出的同时,减去相应的购买钱币数。当饮料输出达到8秒时,电磁阀首先关断,小电机继续工作0.5秒后停机。此小电机的作用是:在输出饮料时,加快输出。在电磁阀关断时,给电磁阀加压作用,加速电磁阀的关断。(注:由于该售货机是长期使用,电磁阀使用过多时,返回弹力减少,不能完全关断会出现漏饮料的现象。此时电机Y3和Y5延长工作0.5秒起到电磁阀加压的作用,使电磁阀可以完好的关断。)

5.退币系统:

当顾客购完饮料后,多余的钱币只要按下退币按钮。系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1元钱需要退回的数量,存放在D10里。余数存放在D11里。再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。余数存放在D13里。最后D13里面的数值,就是1角钱需要退回的数量。在选择退币的同时启动3个退币电机。3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。

6.报警系统:

报警系统如果是非故障报警,只要通过网络通知送液车或者送币车即可。但是如果是故障报警则需要通知维修人员到现声进行维修。同时停止服务,避免造成顾客的损失。

(三)业务流程图

钱币记录仪对钱币前端接受顾客投的进行识别币判断退出钱币发送信息到分配器判断没有货物时发送信息到前端发送货物4

(四)数据流程图

钱币钱币记录仪对分配器反钱币钱币进行计算与货物价格进货物发放行比较取走零钱与购买的货物

三、各种UML图型及其分析

(一)用例图

1.顾客的用例图

inputCoinchooseSodaCustomer

2.自动售货机的用例图

RegisterDispenserFrontSodaMachine

(二)类图

7

(三)序列图

理想状态(不找零钱)的序列图

:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: releaseSoda()8 1.

没有货物的序列图

:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: displayPrompt()12: sendReturnCoin()13: returnCoinToFront()14: returnCoin()9 2.

3.需找零钱的序列图

:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForChange()13: releaseChange()14: receiveSoda()15: receiveChange()10

没有零钱找给顾客

:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForCharge()13: returnNoCharge()14: returnCoinToFront()15: displayPrompt()16: returnSodaToDispenser()17: returnCoin()11 4.

5.完整的序列图

:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnNoCharge()6: returnCoinToFront()7: displayPrompt()8: returnCoin()9: End()10: returnSodaFree()11: displayPrompt()12: chooseSoda()13: sendChooseToDispenser()14: checkAvailability()15: returnUnavailability()16: displayPrompt()17: sendReturnCoin()18: returnCoinToFront()19: returnCoin()20: End()21: releaseSoda()22: sendSodaFrice()23: checkForCharge()24: returnNoCharge()25: returnCoinToFront()26: displayPrompt()27: returnSodaToDispenser()28: returnCoin()29: End()30: releaseCharge()31: receiveSoda()32: receiveCharge()33: End()34: receiveSoda()35: End()12

(四)协作图

1.理想状态的协作图

3: getCustomerInput()9: checkAvailability()4: checkForSoda():Registe:Dispensrer8: sendChooseToDis()2: accept()5: returnSodaFree()1: inputCoin()10: releaseSoda()7: chooseSoda():Front : Customer6: displayPrompt()11: releaseSoda()2.没有货物的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()11: displayPrompt()14: returnCoin()13: returnCoinToFront()8: sendChooseToDis()2: accept()5: returnSodaFree()12: sendReturnCoin()10: releaseSoda()3: getCustomerInput()9: checkAvailability()4: checkForSoda():Registe:Dispensrer

13 3.需找零钱的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()14: receiveSoda()15: receiveChange()13: releaseChange()8: sendChooseToDis()2: accept()5: returnSodaFree()10: releaseSoda()3: getCustomerInput()12: checkForChange()9: checkAvailability()4: checkForSoda():Registe:Dispensrer11: sendSodaPrice()4.没有零钱找给顾客的协作图

1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()15: displayPrompt()17: returnCoin()13: returnNoCharge()14: returnCoinToFront()8: sendChooseToDis()16: returnSodaToDispenser()2: accept()5: returnSodaFree()3: getCustomerInput()10: releaseSoda()12: checkForCharge()9: checkAvailability()4: checkForSoda():Registe:Dispensrer11: sendSodaPrice()

完整的协作图

29: End()33: End()35: End()1: inputCoin()12: chooseSoda():Front : Customer7: displayPrompt()8: returnCoin()11: displayPrompt()16: displayPrompt()19: returnCoin()26: displayPrompt()28: returnCoin()31: receiveSoda()13: sendChooseToDispenser()32: receiveCharge()27: returnSodaToDispenser()34: receiveSoda()10: returnSodaFree()5: returnNoCharge()15: returnUnavailability()6: returnCoinToFront()21: releaseSoda()18: returnCoinToFront()24: returnNoCharge()14: checkAvailability()25: returnCoinToFront()30: releaseCharge()2: accept()17: sendReturnCoin():Dispenser4: checkForSoda()3: getCustomerInput()22: sendSodaFrice()23: checkForCharge():Register15 5.

(五)状态图

提示投币do/ 请求投币do/ 提示是假币假币do/ 检查硬币真币否购买do/ 存储硬币,计算货币总值do/ 确认投完硬币有do/ 请求选择商品选择货品do/ 提示无货无货do/ 检测货品存量有货计算小于do/ 比较货币总值和货物价值do/ 提示货币不足不小于确认do/ 确认顾客购买do/ 送出货品,请求取货有零钱退币无零钱do/ 请求退币不购买显示do/ 提示交易完成17

(六)活动图

1.投币的活动图

投币确认投币完成2.选择货物的活动图

请求选择输入货物确认选择货物ID

18 3.前端的活动图

接受货币显示可购显示面值货物过小显示没有该货物接受饮料显示没有零钱找零钱退货币 19

货币记录仪的活动图

接受从前端来的钱币判断钱币发送信息给分配仪发送货物金额给前端返回钱币计算零钱20 4.

5.分配器的活动图

接受货币启示录仪的信息发送货物提示没有该货物 21

(七)组件图

CustomerSodaMachineFrontRegisterDispenserDB_0

(八)配置图

Clint数据库

22

(九)数据模型图

23

推荐第8篇:c语言自动售货机实验报告

课程设计

课程名称

C语言高级程序设计

xxx XXX XXX XXX XXX

小组成员1

小组成员2

小组成员3

任课教师

2016——2017学年 第1学期

1

一. 所选题目与要求

自动售货机 问题情景:

分析学校教学楼自动售货机的功能,设计一个自动售货系统。

功能要求:

1.系统能提供所售商品的清单(编号,名称,单价,数量)

2.客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。(不考虑用支付宝付款的情况)

3.可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。

成果要求:

通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。

各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。

各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。

根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。

附:综合实验总结报告应包含的内容: 1.系统功能说明 2.程序结构  程序结构说明  重要数据说明  函数清单

/* 每个函数的书写格式 */ 函数名:所在文件名 函数功能

2

参数说明

算法描述或程序代码 3.系统运行结果

4.系统设计难点及其解决方法 5.不足之处 6.人员分工说明

二. 问题分析及算法设计

主函数

void main()

//主函数模块 {

do{ system(\"pause\"); show(); //显示屏幕函数,商品清单

loop1:printf(\"现在你有%.1f元\\n你可以选择商品序号开始选购或按 0 退出\\n\",M); input(); //输入函数 if(M-goods[n-1].price>v) {t=0;printf(\"对不起,售货机没有足够的零钱了\\n谢谢光临!退还%.1f元\\n\",M);break;} //判断售货机是否有足够的零钱,0表无

if(n==0){ //确认用户是选择离开还是买东西开始购买

t=1; change(M);} //找零函数

else { loop2:sell(n,M,1,1); //购买函数

if(A==0)//货没有了怎么办 input(); //输入函数

………………………………………………………………………..

3 if(n==0) //没货离开

change(M); //找钱函数

else //继续购买其它商品

{ ……………………………………………

goto loop2;返回至购买函数

} //else

}

//if

else if(B==0)//没钱了怎么办

{ …………………………………..if(m1==0) //离开

change(M);返回至找零函数

else

//加钱

{ …………………………………………..

goto loop1;返回至再次购买

} //else

} //else if

else//有钱又有货,继续选 goto loop1;返回至购买程序

} //else }while(1); } //main

结构体定义

struct goods

//定义物品清单 { int number; char name[10];

float price; int quantity; }goods[9]={{1,\"可口可乐\",3,5},{2,\"拿铁咖啡\",4,5},{3,\"橙汁\",3,5},{4,\"奶茶\",4,5},{5,\"雪碧\",2.5,5}, {6,\"矿泉水\",2,5},{7,\"椰子汁\",2.5,5},{8,\"格瓦斯\",3,5}};

struct money

//定义钱的种类,数量用于记录找零的某值张数 { float moneys; int mount; }money[2]={{1,0},{0.5,0}};

被调用的函数

float show() //显示模块--屏幕 { …………………………… }

int input() //输入模块 { …………………………..

} }

int sell(intn,floatm,inta,int b) //出售模块n为序号,m钱, { ……………………………

if(goods[i].quantity>0) //表示有货

{ ………………………………..

}

else

5

}

} else A=0; //表示没货了

B=0; //表示没钱了

if(M==0) B=0;//判断出钱已用光 return(a); return(b); void change(float m) //找钱模块 {

…………………………… switch(a){ case 1花光…………………………………….case 2:找零………………………………………

} …………………………………… }

三. 程序源代码

#include #include float M;//M为投入的钱数

int A=1,B=1,t;

//A为数量标记,B为金钱标记,1表示有,0表示没有,t用于标记售货机是否能完成退款

inti,n,v=100;

//i用于循环显示商品列表,n用于记录输入的货号,v用于保存售货机内可以找零的钱数,初设为v=100

//结构体定义

struct goods

//定义物品清单 { int number;

6

char name[10]; float price; int quantity; }goods[9]={{1,\"可口可乐\",3,5},{2,\"拿铁咖啡\",4,5},{3,\"橙汁\",3,5},{4,\"奶茶\",4,5},{5,\"雪碧\",2.5,5}, {6,\"矿泉水\",2,5},{7,\"椰子汁\",2.5,5},{8,\"格瓦斯\",3,5}};

struct money

//定义钱的种类,数量用于记录找零的某值张数 { float moneys; int mount; }money[2]={{1,0},{0.5,0}};

float show() //显示模块--屏幕 { system(\"pause\"); putch(\'\\n\'); for(i=0;i

printf(\"

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\\n\");

printf(\"

|%d%8s%7.1f元...剩余%7d|\\n\",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(\"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n\"); printf(\"购买东西前,请投入money!(支持1元,5元,10元和20元)\\n《温馨提示,投入money过多可能无法完成退币》\\n\"); scanf(\"%f\",&M); return M;}

int input() //输入模块 { for(;;){ scanf(\"%d\",&n); if(n8)

printf(\"输入错误,请重新输入商品序号开始选购或按 0 退出\\n\"); else {return n;break;} } } int sell(intn,floatm,inta,int b) //出售模块

n为序号,m钱, {

7

inti=0; while(n!=goods[i].number) i++; if(m>=goods[i].price) {if(goods[i].quantity>0)

{goods[i].quantity--;

M=m-goods[i].price;

for(i=0;i

printf(\"

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\\n\");

printf(\"

|%d%8s%7.1f元...剩余%7d|\\n\",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);}

printf(\"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n\");

printf(\"你的商品 %d %s 已经出货了\\n\",goods[n-1].number,goods[n-1].name);

}

else

A=0; //表示没货了

} else

B=0; //表示钱了

if(M==0) B=0;//判断出钱已用光

return(a); return(b); }

void change(float m) /钱模块 { inti,a;//用于辅助输出

if(m==0) a=1; if(m!=0.0&&t!=1) a=2; switch(a){

case 1:printf(\"钱用光了哦\\n谢谢光临!\");break; case 2:{for(i=0;i

if(money[i].moneys

{m=m-money[i].moneys;

money[i].mount++;

i--;}//继续检索当前的面额是否符合条件,才会有相同面值出现

printf(\"

谢谢光临!\\n找零\\n\");

8

for(i=0;i

if(money[i].mount>0)

printf(\"%d张%.1f元\\t\\n\",money[i].mount,money[i].moneys);m=0;M=0;};

money[0].mount=0;break;

} }

void main()

//主函数模块 { do{ int t=1;

//用于标记售货机是否能完成退款,1表能

float m1;

//m1用于记录用户再次加的钱

show(); //显示--屏幕

loop1:printf(\"现在你有%.1f元\\n你可以选择商品序号开始选购或按 0 退出\\n\",M);

input(); //输入函数

if(M-goods[n-1].price>v) {t=0;printf(\"对不起,售货机没有足够的零钱了\\n谢谢光临!退还%.1f元\\n\",M);break;} //判断售货机是否有足够的零钱,0表无

if(n==0){ //确认用户是选择离开还是买东西开始购买

t=1;

change(M);} /零函数

else { loop2:sell(n,M,1,1);

if(A==0)//货没有了怎么办

{printf(\"可惜了,商品 %d 已卖完了\\n你还有 %.1f元\\n你可以买其它商品(直接输入商品序号)或按 0 离开\\n\",n,M);

input(); //输入函数

if(n==0)

change(M); /钱函数

else

{A=1;

B=1;//要将标记归位

goto loop2; } //else

}

//if

9

else if(B==0)//没钱了怎么办

{printf(\"噢,,,没钱了,你可以继续投入money购买,或按 0 离开\\n\"); scanf(\"%f\",&m1); if(m1==0)

change(M); else

{M=M+m1;

A=1;

B=1;//标记要归位

goto loop1; } //else } //else if

else//有钱又有货,继续选

goto loop1; } //else }while(1); } //main 四. 系统功能及运行效果图

一, 系统提供商品清单,并提示购买前投入money

二, 如果用户投入的money过多,售货机无足够硬币完成退币,10

动退还用户已付金额

三, 用户投入money购买,确定购买商品后,系统显示如下

11

四, 如果不想继续购买,则按0退出,系统自动完成找零

五, 想继续购买,则直接输入商品序号,当商品已售完时,系统自

12

动提示如下

六, 若不想退出,则可以继续购买其它商品,直到剩余钱不足时

13

七, 想继续购买,则直接加钱后购买,钱全部花完时,系统提示如

14

五. 研究总结

1.研究过程

接到研究型学习任务后,我们三个同学组成了小组进行探究。 首先我们先详细分析讨论了整个系统需要完成的功能细节,并考虑了实现的方法。 一开始我们的方法不够优化,我们通过查阅一些资料,得到了新的方法,拓宽了思路, 并且再次进行了讨论。讨论完毕后进行了组员的分工,大家在一周内进行了代码的编写和模块化调试,最后所有模块合在一起进行了总的调试。调试过程中又发现了不少问题,我们又一一加以修改,最后形成了现在这个较为完善的程序。

2.小组分工

王宗德—组长,编写主程序,排版,划分模块,负责调试合成整个代码等。 何硕—负责收集资料,负责部分子模块程序的编写,撰写实验报告。 刘泳—检查程序错误及部分程序设计,完善实验报告。

15

3.收获

经过本次研究型学习任务,我们小组深刻意识到了分工合作的重要性。大家在探究过程中各司其职,相互帮助。除此以外,我们也加深了对课上所学知识的理解,比如字符串、数组与指针、结构体使用等。我们意识到实践是提高知识水平和专业技能的重要途径。

16

17

推荐第9篇:毕业论文自动售货机汇总[材料]

毕业设计说明书

自动售货机控制系统的设计与仿真

自动售货机控制系统的设计与仿真

摘 要

随着社会的进步,科学的发展,生活水平的提高,单一传统的生活方式已经不能满足现代居民对高品质生活的追求,在这种现象下,许多自动化设备应时代应潮流而生。自动售货机作为自动化设备中的最常见的设备之一,由于其众多的优点,已经在世界各地得到了普遍的发展并且还在不断地发展。自动售货机掀起了继百货商店和超市之后的又一零售狂潮,这种智能售货系统在车站、教学楼、办公楼等公共场所有着广阔的发展前景。

本文在对自动售货机的背景历史和发展趋势进行了研究介绍之后,对课题中的自动售货机系统进行了整体的设计及规划。该自动售货机控制系统是基于EDA技术来实现的,同时,利用Altera公司的QuartusⅡ14.0作为其软件开发平台,利用VHDL编程语言输入的方式完成了软件设计。本设计方案对整个控制系统进行了层次化的编写。把整个系统划分为6个子模块,分别是找零计算模块、确认取消控制模块、找零控制模块、总钱数加和模块、显示模块、锁定模块,并且对每一个子模块进行了详细的软件设计。在顶层文件中通过调用各个子模块来完成vhdl程序的设计。

最后在对每一个子模块完成了功能仿真测试验证,同时也对整个系统进行顶层设计和仿真测试,测试结果表明了整个控制系统的合理性以及正确性。整个控制系统设计简单合理,操作简单,满足售货机的基本要求,具有一定的实用意义。 关键词:自动售货机、VHDL、EDA、QuartusⅡ

自动售货机控制系统的设计与仿真

Abstract

Abstract: With the progre of the society, the development of the scientific, and the improvement of living standards, single traditional way of life has not meet modern residents\' pursuit of high quality life, under this kind of phenomenon, a number of automation equipment should come into being.Vending machine as one of the most common equipment in the automation equipment, has been develop all over the world and develop constantly because it has many advantages .Vending machines set off after department stores and supermarkets in another retail frenzy, this intelligent vending system has broad prospects for development in the station, school buildings, office buildings and other public places.Based on the background of the vending machine, the article designs and plans the project of vending machine system after introducing the history and development trend.The vending machine control system is based on the EDA technology to realize, at the same time, it used Quarter Ⅱ 14.0 of the Altera corporation as the software development platform, taking advantage of VHDL programming language input completed the software design.The design scheme is hierarchical write for the whole hierarchical control system.The whole system is divided into six sub modules, change calculation module, confirming cancellation control module, the change control module, total amount module, display module, locking module, and each child module software design is design in detail.On the top floor file by calling each module to complete the VHDL program design.Finally, The design scheme completed the function simulation test to verify for each child modules, and conducts Top-level design and simulation test for the whole system, the test results show the rationality and validity of the whole control system.The design of the whole control system is simple and reasonable, the operation is simple, it meets the basic requirement of the vending machine and has certain practical significance.keywords :The vending machine、EDA、VHDL、QuqrtusⅡ

自动售货机控制系统的设计与仿真

1 绪论

1.1课题研究背景

早在20世纪30年代,出售香烟的自动售货机就在美国被研制出来了,此后,各类自动售货机也相继被研究出来。到了20世纪的70年代,自动售货机在欧美地区和日本的发展已经相当的普遍。早在1998的数据统计中,日本就已经有了550万台各式各样各种功能的自动售货机,而美国所拥有的自动售货机的数量更是高达700万台,也就是说在上个世纪末在日本平均23个人就拥有一台自动售货机,而美国则是平均35个人就拥有一台。

自动售货机的优点之一就是无需人工看守,这点在当今世界人工劳动力成本普遍急剧上升的年代成为了各商家最看重的一点,它可以24小时不断的进行自动售货操作,在为商家降低成本的同时大大的增加了收益。同时,其操作方便简单、占地面积小、全自动化等优点使其迅速在全世界各地普及开来。日本作为使用自动售货机最普遍的国家,其国内的罐装饮料有大约70%是通过自动售货机来出售的,销售额为世界第一;在西班牙,全国零售业的销售额一半以上是由自动售货机来完成的,并且每年的速度都在不断增长。从这些数据可以看出自动售货机所涉及的行业在零售行业中占据着不可替代的重要作用。

1.2课题研究的目的与意义

随着社会的不断发展与进步,城镇居民的收入日渐增多,生活条件也越来越好,城镇居民的消费方式和消费心理也正慢慢发生改变。快捷自动化的生活方式正是快节奏生活下人们所追求的一种高品质的生活方式。而自动售货机作为商业自动化的一种常见设备,无论是在国内还是国外,都深受消费者的喜爱,时代的发展为自动售货机提供了良好的发展条件。然而,我国的自动售货机行业的发展却远远及不上欧美和日本等国家,究其原因一个方面是因为我国的自动售货机行业发展比较晚,另外一方面是因为我国要普遍发展自动售货机也有着技术的瓶颈。自动售货机是一种内部集成度高、技术复杂的高科技设备,而现在我国多数企业都缺乏自主研发自主创新的精神,使得自动售货机的很多关键零件都要从国外进口,因此想要在国内发展这一行业,解决相关技术问题自主开发自动售货机是最重要的。

我国引进自动售货机已有差不多二十年的时间,然而至今在国内运营和自主研发制造自动售货机的企业少之又少,国外的自动售货机还毫无疑问的占据着我国绝大部分的的市场。这种现象严重阻碍了我国发展自动售货机行业。因此,加快脚步和加大力度去自主研制自动售货机是很有必要的,同时,更要时时关注最先进的科学技术,尽可能的把这些高科运用到自动售货机行业中去,只有这样才能让该行业在我国得到更好更快的的发展。

自动售货机控制系统的设计与仿真

1.3 国内外研究现状及趋势

目前,自动售货机已经在发达国家得到了广泛的运用,而我国由于行业起步较晚的原因使得各方面技术还不够成熟,还需要加大力度去积极发展这一行业。在2012六月份,我国各式各类的自动售货机的总量只有三万台,而在2013六月份,该数量已经上升至五万台,增长幅度高达差不多50%,当然由自动售货机带来的营业额也是非常庞大的。随着科技的不断发展,如今的自动售货机也越来越先进,其中设备的科技含量也日渐增高。自动售货机的发展历程如图所示:

目前我国生产自动售货机主要有以下几家比较知名的厂家:上海艾丝明自动售货机有限公司,主要生产咖啡机;天津歌德公司,主要生产咖啡机;大连富士冰山公司,主要生产饮料机。除此之外还有青岛澳柯玛自动商用设备有限公司、天津奥莱特自动售货机有限公司等公司生产的自动售货机也是比较常见的。

自动售货机的发展趋势是由于社会的产业结构发生变化的产物。由于社会的消费方式、销售环境等的变化,自动售货机的售货方式作为一种新的流通渠道,自然而然自动售货机也就应时代发展而生了。自动售货机从一开始的功能单一结构单一发展到现在的功能多元化个性化,该行业也成为信息化的一种表现。而且自动售货机的发展为了适应社会的发展也将会更加合理化人性化,它已不仅仅是一台用来销售商品的机器,随着科技的发展,通信的发展,互联网的发展,它也必将向着相互连通的信息生态圈的方向发展,必将发展成为一种集商品销售、信息流通等于一体的高科技的终端设备。

1.4 课题研究的主要内容

本文主要研究利用自动售货机来完成商品处理、货币找零、出货操作、led显示等功能。完成的工作主要包括以下几个方面:

1.对自动售货机的历史及发展前景做了简单的陈述。

2.对课题中用的比较多的EDA技术以及VHDL语言、QuarterⅡ软件开发平台的相关知识做了简单的介绍。

3.在对自动售货机的整个控制系统进行了一定的研究和分析之后,提出了整体设计方案。

4.对各个子模块功能的利用vhdl语言程序的输入的方式进行了详细的分析设计,并且对每一个子模块进行了仿真测试,对其相对应的功能进行了验证。最后对整个系统进行顶层设计,同时也对整个系统进行了仿真,对整个自动售货机的功能进行了验证。

自动售货机控制系统的设计与仿真

2 相关技术简介

2.1 EDA技术

电子设计自动化技术就是常见的EDA技术的简称,这种技术在现代电子设计中有着非常重要的作用。EDA技术以强大的计算机为依赖,在相应的软件开发平台上,利用硬件描述语言(HDL)来完成系统的各项功能的逻辑描述。

EDA技术有着丰富的内容,与电子技术很多领域有着密不可分的联系,所以其发展同计算机辅助工程、电子设计技术以及集成电路的大规模设计技术等都是同步发展的。就近30多年来其发展可分为以下阶段:

 上世纪70年代可编程逻辑器件开始问世,集成电路得到广泛应用,CAD技术也开始发展,EDA技术也就是在这个时候开始出现。

 上世纪80年代进入商用的复杂可编程逻辑器件、FPGA器件的出现、CAD技术广泛的应用、各类硬件描述语言的相继出现,这些解决EDA技术要广泛运用过程中所遇到的各种问题,为其规范应用奠定了基础。

 上世纪90年代,CAD、CAE等技术已经被广泛应用在电子领域方面。同时,通信技术的发展、计算机技术的发展使得EDA技术有了更大的发展空间。

发展至现在的EDA技术,CPLD和FPGA等可编程逻辑器件是被应用得最多的,这些器件是利用硬件编程语言来进行软件设计以完成功能设计,这样的设计方式简单方便,有着非常大的灵活性。可编程逻辑器件和可编程语言的发展改变了传统的电子设计的设计方法和设计理念,同时也让EDA技术有了更快的发展。EDA技术在现代社会的发展及应用范围是非常广泛的,不仅在农业、医学、军事等领域被应用,在通信、化学、交通、航天等领域更是有着不可替代的重要作用。(EDA技术与VHDL P1)

2.2 VHDL VHDL的全称是Very High Speed Circuit Language,与另一种VerilogHDL语言是现在电子设计自动化中用的最多的两种硬件描述语言,现在用的比较多的EDA工具基本都支持这两种语言,在电子领域中已经成为了通用的硬件描述语言。

VHDL是一种无关设计平台、无关具体的硬件电路的语言。跟一般的高级语言类似,不过却有着一般高级语言没有的具有硬件特性的语句,能很好的描述数字电路的功能和结构。VHDL的结构特点是设计一项工程或实体,一个元件、一个系统或者一个电路模块都可以设计成为一个实体,被设计好的实体可以很方便的被调用,这是VHDL很大的一个特点。

与其他的硬件描述语言相比,VHDL有以下特点:

 设计好的模块可以任意无数次的被调用,很好的做到了资源共享和重复利用这一点,大大减少了设计人员的工作量和工作时间。

自动售货机控制系统的设计与仿真

 语言的设计描述与器件无关,设计人员在进行电路的设计的时候,可以把精力放在优化电路上而不用先去考虑器件的选择,VHDL可以采用不同的器件来实现已经描述好的电路设计。

 语言功能强大,设计方法灵活,支持各式各样的设计方法,无论是自顶向下还是自底向上的设计方式在VHDL中都可以灵活的被运用。同时,模块化设计,层次化设计等设计方法也是被支持的。

 具有很强的移植能力,对于同一个VHDL程序,它可以在不同的工作平台、综合器、模拟器之间相互移植。

一个完整的VHDL程序代码结构包括4个模块,库和程序包的模块、实体模块、结构体模块、配置结构模块。其结构图如图所示:

2.3 QuartusⅡ软件

QuartusⅡ是由Altera公司开发的一种EDA工具,是经过A+plus、然后到MAX+plus,再到MAX+plusⅡ发展而来的。QuartusⅡ支持多种输入方式,例如原理图输入,硬件编程语言输入等,在使用QuartusⅡ软件时,它会将设计人员设计好的硬件编程语言或者原理图等自动转换目标文件,最后将目标文件下载到器件中。通过DSP Builder工具,QuartusⅡ能很好的跟Matlab、Simulink等结合起来,从而能够方便快捷的实现不同的DSP系统的设计。因为有着简单直接的入口和很强的设计能力,以及使用灵活、方便快捷的优点,所以很受广大设计者的青睐。

QuartusⅡ软件有以下特点:

自动售货机控制系统的设计与仿真

 支持多平台的设计输入,结合其处理和验证功能使其成为一个全集化的开发平台,让开发周期变短。

 是一个与结构无关的开发工具,QuartusⅡ通过把Cyclone、APEX、Mercury等设计环境转化为所需要的格式,真真正正的成为唯一一个与结构无关的开发工具。

 具有很具有全面的可设计开发资源,是一个集系统设计、软件开发、逻辑设计于一体的综合性开发平台。 QuartusⅡ的编程设计流程图所示:

2.4 Modelsim仿真工具

Modelsim提供了可以与其他EDA工具(如QuartusⅡ)的接口工具。Modelsim支持Verilog、vhdl或者二者相结合的混合。针对不同的使用环境,Modeislm分为不同的版本,常见的版本有:Modelsim AE、Modelsim ASE、Modelsim SE等。在本文的设计的版本是Modelsim ASE10.1版本。VHDL的仿真流程如图所示,首先在VHDl仿真器中对已设计好的VHDL源代码进行编译,等到代码被编译正确后就会被转换为中间格式,中间数据的结果将会保存在仿真数据库中,一般来说,VHDL源代码在编译好的仿真库就是WORK库。设计者通过编写TestBeach文件来干预仿真的过程,在本文的设计中,计时通过编写不同的TestBeach文件来对不同的模块代码进行仿真测试。

自动售货机控制系统的设计与仿真

3 系统总体方案

3.1 设计要求

 本文设计的售货机系统中只有一种,价格为13元;

 可以投入三种不同的货币来购买商品,分别是1元、5元、10元;

 每次只允许购买一个商品,若想要购买多个商品,则需要重复执行购买操作;  售货机的显示器会实时更新显示总共投入的货币的总额;

 当投入货币后,如果不想购买商品了则可以通过按取消键来退还投入的货币,否则就按确定键来获取商品;

 设置两个指示灯,分别是购买指示灯和取消指示灯,当顾客按下确定键后购买指示灯亮起;若顾客按下取消键,则取消指示灯亮起;

3.2 总体设计

通过分析系统的设计要求以及考虑到系统本身,本文对整个总动售货机系统采用自顶向下的设计方法,自顶向下的设计方法如图所示,采用自顶向下的设计方法的优点是很明显的。由于系统设计从顶层开始,所以在进行设计时就清楚实现整个系统的性能状况。随着设计向下一级进行,系统的性能就能进一步得到细化和表达,并且可以根据个人需要随时修改和调整,缩短了设计周期。

对整个系统的顶层文件进行如下端口设计:

 输入端口:clk,输入时钟信号;rst,复位信号;C1,投入一张1元货币;C5,投入一张5元货币;C10,投入一张10元货币;ok_in,确认信号;cancel_in,取消信号。

 输出端口:led_buy,确认购买指示灯;led_cancel,取消购买指示灯;en_deliver,出货信号;led1,投入货币总数的个位数(单位是元);led10,投入货币总数的十位数(单位是元)。

 内部可读输出端口:RC1,1元退币控制信号;RC5,5元退币控制信号;RC10,10元退币控制信号。

自动售货机控制系统的设计与仿真

端口原理图如图所示:

在确定了整个系统的输入输出端口后,给出自动售货机的系统内部的工作原理: 当系统接收到复位信号后,其他所有的控制信号和标识信号都清空为零,系统处于等待指令的状态。

当系统接收到相关信号输入时,系统开始工作。顾客确定购买商品时,开始投入货币,当投入货币为1元、5元、10元时,将分别产生一个时钟宽度的信号C

1、C

5、C10。所投入的货币总额会实时计算并通过显示器显示出来。

当顾客确定购买商品并按下确认键的时候,自动售货机会产生一个时钟信号ok_in,而且由led_buy控制的代表确认购买的指示灯会闪烁。如果投入货币的总额大于商品价格时,则送出商品并计算出余额操作退出余额,此时出货指示灯闪烁。如果投入的货币不足以支付商品价格,自动售货机会退还所有货币。

当顾客投入货币又不想购买商品时,就可以通过按下取消键来取消购买,这时系统会产生一个时钟信号cancel_in,同时通过找零控制模块来执行相应操作退还货币。如果确认键或者取消键被按下后,自动售货机会产生一个lock_out_entry内部信号,当发出信号后,所有的操作都是无效的。

当完成所有的操作后,将产生一个clear清除信号,此时所有的信号都会被清除,自动售货机开始等待下一次操作。

整个系统的投币购物流程如图所示:

自动售货机控制系统的设计与仿真

将整个系统划分成六个模块,分别是购买余额计算模块、找零控制模块、确认取消模块、总额加和模块、锁定模块和显示模块。各模块的功能:

余额计算模块:当顾客确认购买商品并按下了售货机的确认键后,找零模块就开始计算出应该退还的余额。

找零控制模块:在顾客确定购买商品后执行找零操作,或者是在顾客取消购买后执行退还原款操作。

确认取消模块:顾客在选择购买商品或者取消购买商品后,将输入的确认信号或者取消信号分别转换成单时钟周期的控制信号,并且控制相对应的信号灯的亮和不亮。

总额加和模块:不断的更新并计算售货机收到的总货币数量。

锁定模块:可以按下确认键或者取消键,当其中任意一个键被按下后,整个自动售货机系统的按键的输入都是无效的。

显示模块:通过控制两个显示器(led1和led10)来显示所投入货币的总额。 整个自动售货机的内部工作过程的总体框图如图所示:

对每一个子模块进行VHDL设计,然后对其进行编译,再编译没有错误后,通过编写TestBeach文件来对其进行仿真测试来验证每一个模块的功能是否正确。在顶层文件的

自动售货机控制系统的设计与仿真

vhdl程序设计中,通过特定的例化语句将已经设计好的6个子模块进行例化,然后直接对各个模块进行调用,整个顶层程序的设计就是通过调用底层的6个模块来实现的,完成顶层设计后再对整个系统进行仿真测试。

自动售货机控制系统的设计与仿真

4 软件设计及仿真测试

4.1确认取消模块 (ok_cancel模块)

4.1.1设计思想及工作原理

在确认取消模块中,顾客可以在投币之后选择继续购买商品或者取消购买商品,若确定购买则会产生一个确认信号,而该模块可以把该信号转换成单时钟的控制信号,同时确定购买led_buy显示灯会亮;同样,若顾客按下取消健,则该模块会将输入的取消信号转换单时钟周期的控制信号,同时确定购买cancel_buy显示灯会变亮。

确认取消模块有以下输入端口:

 输入端口:clk,输入时钟信号;rst,复位信号;clear,清除信号;lock_out_entry,锁定信号;ok_in,确认信号;cancel_in,取消信号。  输出端口:ok,内部时钟确认控制信号;cancel,内部时钟取消控制信号;led_buy,确认购买指示灯控制信号;led_cancel,取消购买指示灯控制信号。 电路原理图如图所示:

该模块的工作过程如下:首先系统复位,等待确认购买信号或者取消购买信号的输入,当收到信号后,系统会根据接收到的信号立即生成一个相对应的内部控制信号ok信号或者cancel信号。同时,指示灯会根据接收到的控制信号led_buy或者led_cancel来显示灯的亮和灭。此过程中,当系统第一次接收到确认购买信号或者取消信号后,将会岸上产生一个锁定信号lock_out_entry,当接收到此信号后,整个系统的所有操作都会无效,直到系统执行完毕,模块接收到清零信号后,所有信号都会被清空归零。

由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

自动售货机控制系统的设计与仿真

4.1.2仿真测试

对确认取消模块进行仿真测试后,得到如图所示的仿真波形图:

对所得到的仿真波形图进行分析:在15ns前,系统复位;在30ns的时候,系统接收到一个确认购买的信号,此时会生成ok信号,即一个时钟的内部控制信号,同一时间,会发出一个控制信号led_buy,以此来控制购买指示灯亮。在时间为31ns时,可以看到系统发出了一个锁定信号lock_out_entry,当系统接收到该信号后,其他所有的按键操作都将被视为无效,所以在40ns时输入的cancel信号不会被响应;在60ns时操作执行完毕,系统接收到一个clear的控制信号,此时锁定信号归零,同时led_buy控制信号归零。

4.2找零控制模块 (refund模块)

自动售货机控制系统的设计与仿真

4.2.1设计思想及工作原理

找零控制模块有以下输入端口:

 输入端口:clk,输入时钟信号;rst,复位信号;clear,清除信号;ok,接收到确认信号;cancel,接收到取消信号;sum1,表示接收到的投入1元货币的信号;sum_5,接收到的投入5元货币的信号;sum10,表示接收到的投入10元货币的信号;sum,投入货币总和信号;Rsum1,退出1元货币的数量;Rsum5,退出5元货币的数量;Rsum10,退出10元货币的数量;

 输出端口:en_deliver,给货控制信号;RC1,退币1元的信号;RC5,退币5元的信号;RC10,退币10元的信号。 电路原理图如图所示:

当系统接收到确认取消模块发来的确认购买信号时,则该模块开始执行找零过程,同时发出给货控制信号en_deliver,当找零操作完成后系统发出清零信号;当系统接收到其他模块发出的取消购买信号后,则该模块开始执行退币操作,模块会根据投入的货币发出不同的退币控制信号,从而完成所有货币的退还,操作完成后系统发出清零信号。

由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

自动售货机控制系统的设计与仿真

4.2.2仿真测试

对找零控制模块的仿真有2种情况:

1、确认购买操作;

系统执行取消购买操作,得到如图所示的仿真波形图:

分析上图中的波形图可以看出:在5ns前,系统复位;在10ns时,系统接收到确认购买信号ok,同时接收到信号sum,表示系统收到投入货币为15元,在同一时刻发出给货信号en_deliver;在11ns的时候,就收到了其他模块发来的退币信号Rsum_10,可以看出当投入货币依次是

15、

14、13元时,退币金额分别为

2、

1、0元;当给货信号完毕后,该模块立即产生退币信号,系统开始执行找零操作,操作

自动售货机控制系统的设计与仿真

完成后系统清零。

2、取消购买操作;

对系统执行取消购买操作,得到如图所示的仿真波形图:

对该波形图进行分析可以看出:在5ns前,系统处于复位状态;在10ns的时候,系统接收到其他模块发出的投币信号,分别投入了一张5元货币和一张10元货币,同时,接收到别的模块发出的信号sum;在30ns时,系统接收到确认取消模块发出的取消信号,则该模块开始执行退币过程,退币控制信号RC50、RC100分别发出一个高电平信号,每个退币控制信号代表退出行对应的一种货币;在操作完成后系统发出清零信号。

4.3总额加和模块 (sum_cash模块)

4.3.1设计思想及工作原理

总额加和模块有以下输入端口:

 输入端口:clk,输入时钟信号;rst,复位信号;clear,清除信号;C1,投入一元货币信号;C5,投入五元货币信号;C10,投入十元货币信号;RC1,退币1元的信号;RC5,退币5元的信号;RC10,退币10元的信号;lock_out_entry,锁定信号。

 输出端口:sum_1,表示发出1元货币的信号;sum_5,发出5元货币的信号;sum_10,发出10元货币的信号;sum,投入货币总和信号; 电路原理图如图所示:

自动售货机控制系统的设计与仿真

当系统输入不同的投币信号时,则sum1,sum5,sum10就会记录相对应的货币的数量,而sum则记录了投入货币的总额。当货币投入完毕后,顾客会选择确认购买商品或者取消购买,系统会根据接收到的不同的信号来执行相应的操作,当找零模块执行完找零操作或者退币操作后总数加和模块就会收到系统的清零信号,所有的内部信号和表示都会被清除。

由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

自动售货机控制系统的设计与仿真

4.3.2仿真测试

对总额加和模块进行仿真测试得到如图所示的波形图:

对图中波形进行分析可以发现,在5ns之前,系统在复位状态;在时间为20ns的时候,系统接收到C

1、C

5、C10发出的3个投币信号,30ns时又收到1个1元投币信号,对应的sum

1、sum

5、sum10记录了相对应不货币的数量,sum则记录了投入货币的总额;在时间为40ns时,lock_out_entry信号变为高电平,此时其他按键都会无效;当系统开始接收到退币信号后,相应的sum

1、sum

5、sum10也会发生变化,找零结束后系统发出清零信号,系统内的表示和内部信号都被清除。

4.4余额计算模块 (calculator模块)

4.4.1设计思想及工作原理

余额计算模块有以下输入端口:

 输入端口:rst,复位信号;clear,清除信号;ok,确认购买信号;输出端口:sum1,投入1元货币的信号;sum5,投入5元货币的信号;sum10,投入10元货币的信号;sum,投入货币总和信号。

 双向端口R:sum1,退还1元货币的信号;Rsum5,退还5元货币的信号;Rsum10,退还10元货币的信号。 电路原理图如图所示:

自动售货机控制系统的设计与仿真

余额计算模块在收到其他模块发出的确认购买信号后,就会开始执行操作。根据所投入的货币总额,可以分为3种情况:投入货币小于商品价格,该情况下售货机会退还所有货币;投入货币刚好等于商品价格,该情况下退还余额为零;投入货币大于商品价格,该情况则根据商品的价格和顾客投入总额的差额来计算应找余额。 由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

4.4.2仿真测试

对余额计算模块的仿真有3种情况:

1、投入货币小于商品价格;

2、投入货币等于商品价格;

自动售货机控制系统的设计与仿真

3、投入货币大于商品价格;

对于第1种情况,得到如图所示的仿真波形:

对于上面的波形图,可以看出在时间为5ns前,系统复位;在10ns的时候,系统接收到投入一张10元货币的信号和一张1元货币,接着在20ns的时候,系统接收到控制确认购买的信号ok,经过计算最后得到投入的货币总额11元小于商品的设定价格13元,所以系统将发出退款信号,Rsum10和Rsum1均被赋值为1,表示要退还10元货币和一元货币,当系统的找零控制模块接收到此信号后会执行相应操作;在时间40ns时,发出清零信号。

对于第2种情况,得到如图所示的仿真波形:

对于上面的波形图,可以看出在时间为5ns前,系统复位;在10ns的时候,系统接收到投入一张10元货币和3张一元货币的信号,接着在20ns的时候,系统接收到控制确认购买的信号ok,经过计算最后得到投入的货币总额13元刚好等于商品的设定价格13元,所以系统将发出退款信号,Rsum

10、Rsum

5、Rsum1均被赋值为0,表示要退还货币均为0,当系统的找零控制模块接收到此信号后会执行相应操作;在时间40ns时,发出清零信号,清除系统内部信号。

对于第3种情况,得到如图所示的仿真波形:

21

自动售货机控制系统的设计与仿真

对于上面的波形图,可以看出在时间为5ns前,系统复位;在10ns的时候,系统接收到投入2张货币的信号,接着在20ns的时候,系统接收到控制确认购买的信号ok,经过计算最后得到投入的货币总额20元大于价格13元,所以系统将发出退款信号,Rsum

10、Rsum

5、Rsum1分别被赋值为

2、

1、0,表示要退还货币均为2张1元,1张5元,当系统的找零控制模块接收到此信号后会执行相应操作;在时间40ns时,发出清零信号,清除系统内部信号。

4.5锁定模块(lock模块)

4.5.1设计思想及工作原理

锁定模块有以下输入输出端口:

 输入端口:rst,复位信号;clear,清除信号;ok,确认购买信号;cancel,取消购买信号。

 输出端口:lock_out_entry,锁定信号。

端口原理图如图所示:

当该模块接收到确认取消模块发出的无论是确认信号还是取消信号,都会发出一个锁定信号,从而锁定整个系统的其他任何操作。 由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

22

自动售货机控制系统的设计与仿真

4.5.2仿真测试

对锁定模块进行仿真测试,得到如图所示波形:

对该波形图进行分析:在5ns前,系统复位;在20ns时,系统接收到确认取消模块发出的cancel控制信号,此时该模块会立即产生lock_out_entry信号,即按键锁定信号;在40ns时,系统操作结束,发出清零信号。

4.6显示模块

4.6.1设计思想及工作原理

 输入端口:din,表示收到货币总额信号。

 输出端口:led1,显示货币的个位数;led10,显示货币的十位数。

显示模块会实时显示售货机收到的货币总额,并且通过led1来显示投入货币的个位数,led2来显示投入货币的十位数。在该模块中,调用了一个数码管显示的元件disp7。

Lock模块的端口原理图如图所示:

23

自动售货机控制系统的设计与仿真

由QuqrtusⅡ软件内部生成的TRL电路图如图所示:

4.6.2七段数码管显示器设计

在元件disp7程序设计中,有一个输入端口din,一个输出端口led。 disp7程序的端口原理图如图所示:

该元件设计的主要目的是具体定义了从0~9中每一个数值所对应的字符串赋值。由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

24

自动售货机控制系统的设计与仿真

4.6.3仿真测试

显示模块仿真波形图如图所示:

对该波形图进行分析:当显示模块接收到用来控制货币总额的信号din时,两个led显示器会马上将货币总额显示出来。图中可以看出,投入货币总额为15元,则led1应显示为5,led2应显示为1,根据vhdl程序的设计,led信号用字符串“\"1111001”来显示1,用字符串“0010010”来显示数字5,图中的波形图说明了显示器显示是正确的。

4.7顶层设计与分析

顶层的设计就是对整个自动售货机系统进行设计,为了在整个系统中达到连接底层元件从而形成更高层次的电路设计,在顶层文件的vhdl程序设计中使用了例化语句。在程序中利用component语句对准备调用的元件做了声明,并利用net1~net11十一个信号作为系统的内部连线。

显然,元件例化的实质就是引用一种连接关系,将之前已经设计好的设计实体定义为一个元件,然后把元件与当前的设计实体的端口通过特定的语句连接起来,从而为当前的设计实体引进新的低一级的设计层次。元件例化是vhdl设计实体完成自上而下层次化设计的一种途径。

4.7.1设计思想及工作原理

由QuqrtusⅡ软件内部生成的RTL电路图如图所示:

25

自动售货机控制系统的设计与仿真

4.7.2仿真测试

对整个系统进行功能仿真测试,对仿真的结果的其中一部分进行分析,对以下两种仿真情况进行分析:

1、确认购买但余额不足

2、确认购买且需要找零

对第1种情况进行仿真得到如图的仿真图:

在该波形图中可以看出,在5ns的时候,系统复位;在时间为30ns的时候,系统收到一个1元货币投入信号和一个5元货币投入信号,紧接着在50ns的时候又收到一个一元货币投入信号;两个显示器显示了投入货币的总额;在时间为80ns的时

26

自动售货机控制系统的设计与仿真

候,系统收到确认信号ok_in,投币结束,开始执行找零或者退币操作;系统内部通过判断发现所投入货币总额小于商品价格,所以开始进行全额退币过程;在90ns的时候系统发出同时退出一元货币和五元货币的信号RC1和RC5。系统操作完成,等待下一次的操作。

对第2种情况进行仿真得到如图的仿真图:

在该波形图中,在时间为30ns的时候,系统接收到一个投入一元货币的信号,在70ns的时候,同时收到一个五元货币和一个十元货币的投入信号,显示器实时显示所投入货币的总额;在80ns的时候收到确认购买信号ok_in,由于所投货币总额大于商品价格,则系统开始执行找零过程,并且产生一个出货信号en_deliver和一个确认购买信号led_buy;,在时间为90ns至120ns,连续3个产生退币信号退币信号RC1;退币完成后,本次操作完成,等待下一次的操作。

27

自动售货机控制系统的设计与仿真

5 总结

随着计算机技术和通信技术的发展,自动售货机的发展方向也必将向着更加智能化和人性化的础上,从顾客的实际需要出发,本文在分析了自动售货机的特点后,完成了自动售货机控制系统的设计,在设计的过程中,主要完成了以下几个方面的工作; (1)对自动售货机的发展技术进行了总结和归纳,经过总结可以发现节能环保是现在起发展的一个重要方向,同时,移动商务也是其发展的一个目标方向。 (2)完成了整个系统方案的设计,并且对整个系统进行了模块的划分,将整个系统划分成6个子模块,对每个模块都单独进行了功能设计。

(3)利用vhdl语言输入的方式,对子模块进行了详细的软件的设计,并且对其完成了相应的功能仿真测试,并且对每次的仿真结果进行分析。最后在顶层文件中将各个子模块进行例化并对子模块进行了调用,并且对整个控制系统的仿真,经过仿真测试的结果可以看出,整个控制系统的设计达到了最初的所有设计要求,完成了各项功能。

通过对整个系统的功能测试发现该自动售货机的工作是比较稳定和可靠的,而且操作简单明了,具有很大的实用性。由于经验不足和时间原因,本文中对该自动售货机系统的设计也存在了一些不足之处。在本系统中,只设定了一种商品,商品选择功能不完善;购买商品后的结算方式比较单一,只能现金支付,缺少例如IC卡支付等智能支付方式。所有这些问题会对在相关知识进行更深入的学习后逐一解决,努力对该控制系统进行改进,使其更加完善。

28

自动售货机控制系统的设计与仿真

致谢

回首大学四年,虽有遗憾却也无悔。在四年的求学期间,虽然也曾迷茫彷徨,却因为身边一群诲人不倦的老师的引导以及真诚、热心助人的同学的帮助,重新找到了前进的方向以及努力的目标。

在此,要首先感谢在本次毕业设计过程中从选题开始到论文的完成一直给我很大帮助的段老师,正是因为段老师耐心的帮助,我才能更好的完成课题中的设计及论文的编写。同时,也要感谢本次在毕业设计过程中给与我帮助的其他老师和同学。最后,祝愿所有老师身体健康,桃李天下;祝愿所有同学前程似锦,工作顺利。

大学生活即将结束,我也即将步入社会这个人生大舞台,要学习的东西还有很多。在以后的日子里,我将会更加的努力去面对生活中所遇到的各种挑战。

29

自动售货机控制系统的设计与仿真

参考文献

30

推荐第10篇:EDA课设自动售货机

基于VHDL自动售货机的设计

摘要

基于FPGA的自动售货机的设计,主要完成的任务是使用VHDl语言,在MAX+PLUSSII上完成电路的设计,程序的编译,基本功能的完善、模拟整个自动售货机的工作过程。电路的设计模块分为几个模块:主控模块、译码模块、顶层模块。各个模块完成不同的任务,合在一起就构成了一个自动售货机。在售货机的设计过程中,使用VHDL语言,根据各个模块的不同功能和它们之间的控制关系进行编写。软件模块直接在MAX+PLUSSII上进行。进入21世纪,随着人们对效率的追求,人工售货已不能不满足人们的需求。对此,自动售货机的设计就用了很大的应用空间和市场。

基于FPGA的自动售货机设计,采用软件开发模块,开发成本底,而且功能设计上有很大的灵活度,需要在软件上进行简单的修该就能实现不同的功能要求,能够满足不同的环境要求。

关键字:自动售货机;FPGA;仿真;VHDL;MAX+PLUSSII

1

2

目录

第一章 绪论 ......................................................................................4 第二章 自动售货机的设计 ................................................................4 2.1 设计说明.................................................................................4 2.1.1 流程说明 .......................................................................4 2.1.2各模块说明 ....................................................................5 2.1.3各模块的连接 .................................................................6 2.2状态之间的转换 ......................................................................6 第三章 仿真时序图 .............................................................................7 3.1主控模块的仿真 ......................................................................7 谢 辞..............................................................................................10 参考文献............................................................................................11 附录 ...................................................................................................11

3

第一章 绪论

随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。特别在发达的国家,自动售货机已经十分普及,自动售货机可售出各种成型包装的小商品,各种袋装,盒装,软瓶装等小商品。因其无需专人值守而可以每天24 小时售货,被称为“无人小超市”。在我国,由于多种原因,自动售货机的市场推广缓慢,随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。

本文设计研究自动售货机的主要功能模块,主要包括货币处理模块、余额计算模块、显示模块,延时和时控模块。相应的功能有选择货物,多次购买,出货找零。

本文是通过使用VHDL语言,基于KX GW48FPGA芯片,并通过使用MAXPLUSS II软件进行程序设计,模拟仿真,功能验证,以更好的来理解和掌握自动售货机控制系统的工作原理和设计方法,以及学习和掌握基于EDA的电子产品设计方法,进一步加深对VHDL语言以及MAXPLUSS II 软件、FPGA可编程芯片的认识与了解。

FPGA是现场可编程门阵列(Field programmable gates array)的英文简称。是有可编程逻辑模块组成的数字集成电路(IC)。这些逻辑模块之间用可配置的互联资源。设计者可以对这些器件进行编程来完成各种各样的任务

PLD/FPGA是近几年集成电路中发展最快的产品。由于PLD性能的高速发展以及设计人员自身能力的提高,可编程逻辑器件供应商将进一步扩大可编程芯片的领地,将复杂的专用芯片挤向高端和超复杂应用。据IC Insights的数据显示,PLD市场从1999年的29亿美元增长到去年的56亿美元,几乎翻了一番。Matas预计这种高速增长局面以后很难出现,但可编程逻辑器件依然是集成电路中最具活力和前途的产业。

第二章 自动售货机的设计

2.1 设计说明

本文设计的自动售货机可销售cola 和 pepsi两种饮料:售货机可识别1元和0.5元的两种货币,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零的钱数并自动找零。另外有3个发光二极管、6个LCD数码管:两个用来显示所需金额,两个用来显示已付金额,两个用来显示找零数。

2.1.1 流程说明

本文设计的自动售货机当通电时,表示一次销售的开始。顾客选择一种商品或多种商品后就进入投币状态。若不投币,则自动返回初始状态。投币后,系统自动计算所投钱数。若投币够,则出货并找零。若投币不够,如果顾客没有继续投币,则退币并回到初始状态。本系统的投币销售流程图如图1-1所示:

4

图1-1

2.1.2各模块说明

本文设计的自动售货机总体分三个模块:总控模块,二进制译码模块、BCD码译码模块。

总控模块:总控模块是本系统最重要的模块,该模块大体有5个输入端口和6个输出端口。其输入端口包括clk、coin1(投入一元货币)、coin5(投入0.5元货币)、cola(选择cola)、pepsi(选择pepsi),输出端口有paid(已投入多少钱)、needed(还需多少钱)moneyout(找零)、succe(灯亮表示交易成功)、failure(灯亮表示交易失败)、showmoneyout(灯亮表示正在找零)。该模块实现了本系统最重要的交易过程,包括选择商品、投入货币,计算剩余金额,找零出货等。

二进制译码模块:该模块有一个输入端口和两个输出端口。输入端口是一个8位的二进制数输出端口bcd0、bcd1是两个4位的BCD码。该模块的主要的功能是实现将主控模块输出的二进制数(paid、needed、moneyout)转换成BCD码,以便输出到七段数码管上显示出来。该模块的原理是将一个8位的二进制转换成2个4位的BCD码,分为高四位和低四位。

5

BCD码译码模块:该模块有一个输入端口和一个输出端口

2.1.3各模块的连接

各模块的连接如图1-2和1-3所示:

图1-2 售货机主控系统和译码器模块图

图1-3 售货机顶层模块

2.2状态之间的转换

本文所设计的自动售货机进程可以分为7个状态:a,b,c,d,e,f,g.a为开始状态,当有商品选择键按下时即进入b状态(投币状态)。当有货币投入,但投币不够时,即进入c状态(继续投币),若投币够了,即进入d状态(出货找零),之后进入f状态(延时)后返回a(状态)。

6

图1-3状态流程图

第三章 仿真时序图

3.1主控模块的仿真

上图表示顾客选择了pepsi饮料后,且投了2个一元的硬币。Succe为高电平,代表售货机有饮料售出。且余额为0. 7

上图表示顾客选择了pepsi饮料后,且投1个一元的硬币和一个0.5元的硬币。failure为高电平,代表售货机无饮料售出。且余额为已投的金额,将钱退还给顾客。.

上图表示自动售货机的译码系统,上图表示将8位数字转换成4位BCD码。

2.2BCD码译码的仿真

上图表示自动售货机的译码系统,上图表示将8位数字转换成4位BCD码。

2.3TOP文件的仿真

8

上图表示顾客选择了pepsi饮料后,且投了2个一元的硬币。Succe为高电平,代表售货机有饮料售出。且余额为0.

上图表示顾客选择了pepsi饮料后,且投1个一元的硬币和一个0.5元的硬币。Failure 为高电平,代表售货机无饮料售出。Showout为退币指示灯。.Mout_lcd0和Mout_lcd1,显示退币的金额。Paided _lcd0 和Paided_lcd1 needed _lcd0 和needed_lcd1 分别显示已付金额和还需要的金额数。

9

第四章 小结

自动售货机系统的设计经过一个星期的设计已经全部完成,能按预期的效果进行多次购买、找零出货、并且在数码管上显示出已投货币的金额、还需金额、找零,同时有指示灯提示交易成功、交易失败、正在找零。在自动售货机系统的3个模块中,最主要的是主控模块,其次的还有二进制译码模块和BCD码译码模块。各模块完成后,将它们组合成完整的自动售货机系统。在设计过程中还需改进的是。本文所用的VHDL语言虽然语法规则与其他计算机高级语言如C语言在很多方面很类似,但它毕竟是硬件描述语言,其本质作用在于描述硬件,因而会受硬件环境的限制。因此,为了达到设计的预期效果,在代码编写前,应做到对硬件电路心中有数,不能一味的追求代码的完美,而应该已实现的硬件电路的性能优劣为标准。

谢 辞

在这里我要感谢我的指导老师

10

参考文献

(1)潘松,黄继业编著 .《EDA技术实用教程 》,2005 ,科学出版社

(2)徐志军,徐光辉编著 .《

CPLD/FPGA的开发与应用 》,电子工业出版社,2001.1 (3)http://www.edacn.net/html/85/t-113885.html

(4) 甘历VHDL应用与开发实践。北京:科学出版社。2003

附录

系统各功能模块的实现程序: 主控模块完整程序如下: Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shouhuoji is port(clk: in std_logic;

coin1:in std_logic;

coin5:in std_logic;

cola:in std_logic;

pepsi:in std_logic;

paid:out std_logic_vector(7 downto 0); needed:out std_logic_vector(7 downto 0); succe:out std_logic; failure:out std_logic; showmoneyout:out std_logic; moneyout:out std_logic_vector(7 downto 0)); end shouhuoji;

architecture behav of shouhuoji is

type state_type is (qa,qb,qe,qc,qg,qd,qf);--定义七个状态

signal current_state :state_type:=qa;

signal q:integer range 0 to 100;

begin

proce(clk)

variable paidtemp:std_logic_vector(7 downto 0);--定义变量

variable neededtemp:std_logic_vector(7 downto 0);

variable backmoney:std_logic_vector(7 downto 0);

variable pricetemp:std_logic_vector(7 downto 0);

begin

if clk\'event and clk=\'1\' then

case current_state is

when qa=>paidtemp:=\"00000000\";neededtemp:=\"00000000\";

backmoney:=\"00000000\";pricetemp:=\"00000000\";q

showmoneyout

11

needed

if cola=\'1\' or pepsi=\'1\' then current_state

if cola=\'1\' then pricetemp:=pricetemp+\"00001111\";

neededtemp:=pricetemp;

Else

pricetemp:=pricetemp+\"00010100\";

neededtemp:=pricetemp;

end if;

end if;

paid

needed

when qb=>if coin1=\'1\' or coin5=\'1\' then

if coin1=\'1\'then paidtemp:=paidtemp+\"00001010\";

else

paidtemp:=paidtemp+\"00000101\";

end if;

if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp;

neededtemp:=\"00000000\";current_state

else neededtemp:=pricetemp-paidtemp;backmoney:=\"00000000\";

current_state

end if;

paid

needed

end if;

if q

if cola=\'1\' or pepsi=\'1\'then q

if cola=\'1\' then pricetemp:=pricetemp+\"00001111\";

neededtemp:=neededtemp+\"00001111\";

else

pricetemp:=pricetemp+\"00010100\";

neededtemp:=neededtemp+\"00010100\";

end if;

paid

needed

12

end if;

else current_state

end if;

when qe=>failure

if q

else current_state

end if;

when qc=>if coin1=\'1\' or coin5=\'1\' then

if coin1=\'1\'then paidtemp:=paidtemp+\"00001010\";

else

paidtemp:=paidtemp+\"00000101\";

end if;

if paidtemp>=pricetemp then

backmoney:=paidtemp-pricetemp;

neededtemp:=\"00000000\";current_state

else neededtemp:=pricetemp-paidtemp;backmoney:=\"00000000\";

current_state

end if;

paid

needed

end if;

if coin1/=\'1\'and coin5/=\'1\' then

if q

else current_state

end if;

else q

end if;

when qg=>failure

showmoneyout

current_state

succe

when qd=>succe

if backmoney>\"00000000\"then showmoneyout

moneyout

end if;

13

current_state

when qf=>if q

else current_state

end if;

end case;

else

end if;

end proce;

end behav; BCD译码模块完整程序如下:

Library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity code1 is port(

b:in std_logic_vector(7 downto 0);

bcd0:out std_logic_vector(3 downto 0);

bcd1:out std_logic_vector(3 downto 0)

)

; end code1; architecture one of code1 is begin proce(b) begin case b is when\"00000000\"=>bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0bcd0

14

when\"00010010\"=>bcd0bcd0bcd0null; end case; end proce; end one; 顶层模块完整程序如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity top is Port( clk1:in std_logic;

C1,C5,P1_5,P2:in std_logic;

paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:out

std_logic_vector(3 downto 0);

s,f,showout :out std_logic ); end top; architecture one of top is component shouhuoji port ( clk:in std_logic;

coin1:in std_logic;

coin5:in std_logic;

cola:in std_logic;

pepsi:in std_logic;

paid:out std_logic_vector(7 downto 0);

needed:out std_logic_vector(7 downto 0);

succe:out std_logic;

failure:out std_logic;

showmoneyout:out std_logic;

moneyout:out std_logic_vector(7 downto 0)

); end component; component code1 port(

b:in std_logic_vector( 7 downto 0);

bcd0:out std_logic_vector(3 downto 0);

bcd1:out std_logic_vector(3 downto 0) ); end component;

signal p,n,mo:std_logic_vector( 7 downto 0);

15

--signal s1,s2,s3,s4,s5,s6:std_logic_vector(3 downto 0); begin

u0:shouhuoji--各模块连接

port map(clk=>clk1,coin1=>C1,coin5=>C5,cola=>P1_5,pepsi=>P2, succe=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=>mo); u1:code1 port map(b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1); u2:code1 port map(b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1); u3:code1 port map(b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1);

end one;

第11篇:自动售货机测试用例

题目:有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。 1.分析这一段说明,列出原因和结果 原因:

1.售货机有零钱找 2.投入1元硬币 3.投入5角硬币

4.押下橙汁按钮 5.押下啤酒按钮

结果:

21.售货机〖零钱找完〗灯亮

22.退还1元硬币

23.退还5角硬币

24.送出橙汁饮料 25.送出啤酒饮料 2.画出因果图

如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:

11.投入1元硬币且押下饮料按钮 12.押下〖橙汁〗或〖啤酒〗的按钮 13.应当找5角零钱并且售货机有零钱找 14.钱已付清

3.转换成判定表:

4.设计测试用例

1) 在售货机有零钱找的情况下,投入1元硬币,押下橙汁按钮,找回5角硬币并送出橙汁饮料。

2) 在售货机有零钱找的情况下,投入1元硬币,押下啤酒按钮,找回5角硬币并送出啤酒饮料。

3) 在售货机有零钱找的情况下,投入1元硬币,系统不做任何处理。

4) 在售货机有零钱找的情况下,投入5角硬币,押下橙汁按钮,送出橙汁饮料。 5) 在售货机有零钱找的情况下,投入5角硬币,押下啤酒按钮,送出啤酒饮料。 6) 在售货机有零钱找的情况下,投入5角硬币,系统不做任何处理。 7) 在售货机有零钱找的情况下,押下橙汁按钮,系统不做任何处理。 8) 在售货机有零钱找的情况下,押下啤酒按钮,系统不做任何处理。

9) 在售货机没有零钱找的情况下,投入1元硬币,押下橙汁按钮,售货机“零钱找完”灯亮,并退还1元硬币。

10) 在售货机没有零钱找的情况下,投入1元硬币,押下啤酒按钮,售货机“零钱找完”灯亮,并退还1元硬币。

11) 在售货机没有零钱找的情况下,投入1元硬币,售货机“零钱找完”灯亮。

12) 在售货机没有零钱找的情况下,投入5角硬币,押下橙汁按钮,售货机“零钱找完”灯亮,并送出橙汁饮料。

13) 在售货机没有零钱找的情况下,投入5角硬币,押下啤酒按钮,售货机“零钱找完”灯亮,并送出啤酒饮料。

14) 在售货机没有零钱找的情况下,投入5角硬币,售货机“零钱找完”灯亮。 15) 在售货机没有零钱找的情况下,押下橙汁按钮,售货机“零钱找完”灯亮。 16) 在售货机没有零钱找的情况下,押下啤酒按钮,售货机“零钱找完”灯亮。

第12篇:自动售货机联营合作协议

自动售货机联营合作协议

甲方: 乙方:*********地有限公司

甲.乙双方本着平等、互惠的原则,经过友好协商,就通过自动售货机开展经营活动达成如下协议:

第一条

综合条款

1.2.3.4.甲方作为设备提供方,向乙方提供自动售货机,用于经营。

乙方向甲方提供设备摆放场地,指定在(地址)888888888一楼门厅 。

甲方所提供自动售货机型号为亿客牌TCN-DV-10L/AOL+10RS机型,数量暂定为壹台。 合作期间,放臵于乙方处自动售货机的所有权归甲方所有。

第二条

服务内容

1.甲方保证所提供之自动售货机内销售的商品符合中华人民共和国国家卫生标准及企业技术质量标准。

2.甲方负责自动售货机的日常运营工作,并承担运营成本(商品补给、设备保养、清洁及日常维修)等费用。

3.甲方确保所提供的机器设备处于安全状态,若因设备设施导致安全事故发生,甲方承担全部责任。4.甲方承诺,通过自动贩卖机销售的产品售价与本地大型生活类超市基本一致,保持平价销售。 5.乙方如因特殊情况需要移动自动售货机位臵,必须事先通知甲方,由甲方工作人员在3个工作日内迁移设备(紧急避险情况下,乙方有权采取必要措施迁移或遮盖设备)。

第三条

协议条件

1.本协议自签订之日起即刻生效,协议期限以一年为准,协议期满,如双方无异议,本协议自动延续至下一年同月日。

2.自动售货机附带的“22寸LCD屏幕”经营权归甲方所有,但播放广告或视频内容不得包含淫秽,色情,暴力,医院疾病治疗等类别或违反广告法之内容,否则乙方有权予以制止。3.协议期内甲方按照自动售货机销售数据作为基数,按系数据实向乙方分配收益:(①.香烟销售额的15% ②饮品销售额的15% ③零食销售额的30%)。结算周期为:一季度结算一次。 4.甲方所提供的自动售货机,用电功率为: 瓦,电费由甲方承担。

第四条

协议解除

1.如自动售货机持续销售情况不佳,甲方提前10天告知乙方,在结算清相关费用后,协议解除。2.本协议一式两份,双方各执一份,具有同等法律效力。 3.未尽事宜,双方应友好协商解决。

甲方盖章: 乙方盖章:

代表签字: 代表签字: 联系电话: 联系电话: 日期:

第13篇:机器维修合同

机器维修/保养合同

甲方:

乙方:宜兴市家捷办公设备有限公司

为保证甲方机器正常工作及提高机器的使用率,甲方同意委托乙方提供维修/保养服务。

一、维修保养合同有效期:

由____ 年___ 月___ 日至_____ 年___ 月___ 日。机器型号_____________________,机器已使用张数___________收费标准:___________ 元/年 ,合计:___________元。

二、为尽量避免设备出现故障,甲方应承担以下义务:

a.督促使用者正确掌握设备的使用方法,不可使用非乙方人员拆修;

b.提供一个设备正常使用的环境;

c.当设备出现故障时,须及时通知乙方,以免机器故障扩大;

d.不可将乙方贴在机身上的号码标签转移或除去。

三、乙方应承担以下义务:

a.本公司所售机器,新机安装时,免费进行安装、调试、操作培训;

b.消耗材料(油墨,版纸,感光鼓、载体、碳粉、灯)及电器部分;所有电路板均不是机器零配件,因此不属保修范围;

c.保修期内,甲方需使用原装耗材及零配件,乙方有权拒绝安装非原装耗材及零配件。

四、为保证甲方机器在保养期内能正常运转,乙方自签订合约之日起壹年内,定期上门对机器进 行一次检修保养。如机器临时发生故障,甲方电话呼叫后,乙方将在24小时内派人上门维修。

五、维修中所更换的零配件,则征得甲方同意确认后方可进行更换,费用由甲方承担。乙方所向甲方提供的耗材及配件价格均为客户优惠价。

六、结算方式:

甲方更换的零件费和采购的耗材费由乙方开具正式发票后,甲方收到发票后3天内将款项以现金或转帐支票形式支付给乙方。

七、为配合乙方的维修工作,建议客户买乙方的原装耗材及零配件。

八、如甲方的设备须搬迁,应提前书面通知乙方,以确保双方正常工作。

九、本合同一式两份,甲、乙双方各执一份,合同一经签定,即时生效。甲、乙双方应自觉执行以上各项条款。

甲方(盖章):乙方(盖章):.

委托代理人(签名):委托代理人(签名):

签约日期:年月日签约日期:年月日

第14篇:基于自动售货机的软件工程(精)

面向对象分析实践大作业(40% 下面是自动售货机系统的需求陈述,请 你: 1.编写分析和设计报告; 2.报告分需求分析、系统设计和对象设 计三部分编撰, 各部分应按相应的格式 编写,并包含用例图、顺序图、类图、业务流程图、系统结构图等; 3.大作业的结构为: A 项目需求说明 B 需求分析报告 C 系统设计报告 D 对象设计报告

E 分析设计过程说明:这部分介绍分析 和设计过程中使用了什么技术 需求陈述: 自动售货机系统是一种无人售货系统。 售货时,顾客把硬币投入机器的投币口 中,机器检查硬币的大小、重量、厚度 及边缘类型。有效的硬币是一元币、五 角币、五分币、二分币、一分币。其他 货币被认为是假币。 机器拒绝接受假币, 并将其从退币孔退出。当机器接受了有 效的硬币之后,就把硬币送入硬币储藏 器中。顾客支付的货币根据硬币的面值 进行累加。

自动售货机装有货物分配器。每个货物 分配器中包含零个或多个价格相同的货 物。顾客通过选择货物分配器来选择货 物。如果货物分配器中有货物,而且顾 客

支付的货币值不小于该货物的价格, 货物将被分配到货物传送孔送给顾客, 并将适当的零钱返还到退币孔。如果分

配器是空的,则和顾客支付的货币值相 等的硬币将被送回到退币孔。如果顾客 支付的货币值少于所选择的分配器中货 物的价格,机器将等待顾客投进更多的 货币。 如果顾客决定不买所选择的货物, 他投放进的货币将从退币孔中退出。

参考资料:《软件工程》 张海藩 清华大 学出版社 2009年第一版

下面是自动售货机系统的需求陈述,试 建立它的对象模型、动态模型和功能模 型: 自动售货机系统是一种无人售货系统。 售货时,顾客把硬币投入机器的投币口 中,机器检查硬币的大小、重量、厚度 及边缘类型。有效的硬币是一元币、五 角币、五分币、二分币、一分币。其他 货币被认为是假币。 机器拒绝接受假币, 并将其从退币孔退出。当机器接受了有 效的硬币之后,就把硬币送入硬币储藏

器中。顾客支付的货币根据硬币的面值 进行累加。

自动售货机装有货物分配器。每个货物 分配器中包含零个或多个价格相同的货 物。顾客通过选择货物分配器来选择货 物。如果货物分配器中有货物,而且顾 客支付的货币值不小于该货物的价格, 货物将被分配到货物传送孔送给顾客, 并将适当的零钱返还到退币孔。如果分 配器是空的,则和顾客支付的货币值相 等的硬币将被送回到退币孔。如果顾客 支付的货币值少于所选择的分配器中货 物的价格,机器将等待顾客投进更多的 货币。 如果顾客决定不买所选择的货物, 他投放进的货币将从退币孔中退出。

参考资料:《软件工程》 张海藩 清华大 学出版社 2009年第一版 面向对象的分析

面向对象分析方法的核心思想是利用面 向对象概念和方法为软件需求构造一组 相关模型(对象模型,动态模型和功能 模型 ,来获得关于问题域的全面认识。

这三个模型从不同的角度对系统进行描 述, 其中:对象模型描述了系统静态的、结构化的数据性质;动态模型描述了系 统顺势的、行为化的控制性质;功能模 型描述了变化的系统的功能性质。这三 个模型都涉及到数据。控制和操作等共 同的概念,但每种模型描述的侧重有所 不同。它们各自以不同侧面反应系统的 实质内容,综合起来则全面反映了目标 系统的需求。

对象模型是三个模型中最关键的。它的 作用是描述系统的静态结构,包括构成 系统的类和对象、它们的属性和操作以 及它们之间的联系。 UML 中类图适用于 建立对象模型,状态图适用于建立动态

模型。每个类的动态行为用一张状态图 来表示,各个类的状态图通过事件合并 起来,构成系统的动态模型。 也就是说, 动态模型是基于事件共享而相互关联的 一组状态图的集合。建立对象模型大体 上按照下列顺序进行 :寻找问题域内的 对象,识别出对象间的关系、定义属性 和服务。事实上,分析工作不可能严格 按照预定顺序进行,系统的模型往往需 要反复构造多遍才能建成。

5 注:对象硬币计算器和对象硬币检测器 可以作为对象自动售货器的一部分,它 们的属性作为自动售货器的属性。

建立动态模型

对于仅存数静态数据的系统来说,动态 模型并没有什么实际意义。然而在开发

6 交互式系统时,动态模型却起着很重要 的作用。如果收集输入信息是目标系统 的一项主要工作,则在开发这类应用系 统时建立正确的动态模型是至关重要 的。

建立动态模型的步骤: (1 编写典型的对话脚本; (2 从脚本中提取出事件, 联系该事 件与其目标对象; (3 组织事件的顺序和状态 (采用状 态图描绘 ; (4 比较各个不同对象的状态图, 检 查对象之间的一致性,确保事件之间的 匹配。

7

功能模型

功能模型描述了系统的所有计算。 8

功能模型指出发生了什么,动态模型确 定什么时候发生,而对象模型确定发生 的客体。功能模型表明一个计算如何从 输入值得到输出值,它不考虑计算的次 序。功能模型由多张数据流图组成。数 据流图用来表示从源对象到目标对象的 数据值的流向,它不包含控制信息,控 制信息在动态模型中表示,同时数据流 图也不表示对象中值的组织,值的组织 在对象模型中表示。

数据流图中包含有处理、数据流、动作 对象和数据存储对象。 1.处理

数据流图中的处理用来改变数据 值。最低层处理是纯粹的函数,一张完 整的数据流图是一个高层处理。

2.数据流

数据流图中的数据流将对象的输出 与处理、处理与对象的输入、处理与处 9 理联系起来。在一个计算机中,用数据 流来表示一中间数据值,数据流不能改 变数据值。

3.动作对象

动作对象是一种主动对象,它通过 生成或者使用数据值来驱动数据流图。 4.数据存储对象

数据流图中的数据存储是被动对 象,它用来存储数据。它与动作对象不 一样,数据存储本身不产生任何操作, 它只响应存储和访问的要求。

C 语言课程设计 需求分析与系统设计报告

目 录

1 引言 .......................................................................................................13 1.1背景 ...............................................................................................13 1.2定义 ...............................................................................................13 1.3参考资料 ......................................................................................13 2 需求分析 ...............................................................................................14 2.1需求分析 ......................................................................................14 2.2运行环境 ........................................................................................4 3 系统设计 .................................................................................................5 3.1功能需求描述 ................................................................................5 3.2软件结构 ........................................................................................7

3.3 程序模块划分 ...............................................................................8 4 组员分工及时间安排 ............................................................................9 4.1 组员分工 .......................................................................................9 4.2 时间安排 .......................................................................................9 1 引言 1.1背景

自动售货机是能根据投入的钱币自动付货的机器。自动售货机 是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为 24小时营业的微 型超市。 自动售货机能够充分补充人力资源的不足,适应消费 环境和消费模式的变化, 可以更省力, 运营时需要的资本少、面积小, 有吸引人们购买好奇心的自身性能, 可以很好地解决人工费用上升的 问题等各项优点。

1.2定义

课程设计中用到的专门术语的定义(暂定 。

1.3参考资料

1.王士元 .C高级实用程序设计 .北京 : 清华大学出版社 .1996 2.潭浩强 .C语言程序设计 .北京 : 清华大学出版社 , 2000 3.百度

2 需求分析 2.1需求分析

说明:本自动售货机图形模拟系统为模拟饮料自动售货机。 (1 包含实体 1,顾客实体

2,物品管理系统实体(饮料 3,记币管理器实体 4,管理员实体 5,故障系统实体 (2 关系模式

1, 顾客:投币, 选择饮料, 购买数量, 取货, 取零钱; 2,物品管理系统:饮料名称,饮料价格,饮料数量,出货; 3,记币管理系统:顾客投钱数,总金额 ,饮料单价, 投币金额不足,找零金额; 4, 管理员:补货,查询,统计; 5, 故障系统:故障显示,报警; 2.2运行环境

本自动售货机图形模拟系统是对自动售货机工作行为及工作环 境的模拟实现,因此,对此系统的运行环境将是在计算机上面进行, 即在电脑上模拟实现。

根据自动售货机图形模拟系统设计环境要求,即在 DOS 环境 下,用 C 语言编译实现,使用 TC 或 BC 开发软件,因此,此模拟系 统可在绝大多数现形计算机系统上运

行,包括最常见的 windows xp 操作系统以及 windows 7 32位机上运行,但由于兼容性问题,此自 动售货机图形模拟系统在含 windows 7 64位操作系统的计算机上运 行可能出现意想不到的问题或根本不能运行,因而,不推荐在包含 64位操作系统的计算机上测试本自动售货机图形模拟系统。

3 系统设计 3.1 功能需求描述

(1 自动售货机能销售三种饮料:罐装可乐 (2元、果汁 (3.5元、牛奶(4元 ,设饮料数量无限。

(2自动售货机允许投入 5角、1元硬币, 5元纸币,只找出 5角、1元硬币。 (3ⅰ .当总币值等于顾客需要的饮品单价时,机器显示交易金额 并送出需要的商品; ⅱ .当总币值大于顾客需要的饮品单价时,机器显示交易金额 并除提供所需饮品外,还提供找零: A.若机内 5角硬币不足时,当投入 5元纸币购买 2元、4元或 3.5元饮料时, 2元 4元饮料卖,并正常找零, 3.5元饮料不 卖并退回 5元; B.若机内 5角、1元硬币都不足时,当投入 5元纸币购 买 2元 4元或 3.5元的饮料时,均不卖,并退回 5元; ⅲ .当总币值小于顾客需要的商品单价时,机器会退出顾客投 入的硬币,并显示投币金额不足的提示。

(4 当投入的硬币总值达到或大于饮品的最低单价时, 物品管理系 统自动接入, 并提供能够选择的饮品类型, 交易金额将输出到显示屏。

(5每次投币时间有限制,设定每次投币时间不超过 30秒,在时 间到时, 总币值不足顾客购买的饮品单价时, 自动售货机按不足钱数 处理,输出投币金额不足提示,并自动计时 10秒, 10秒内若金额还 不足,系统则自动取消交易并退还全部硬币。

(6设置取消键,当交易过程中顾客输入错误时,按下取消键系统 自动终止交易,返回到初始状态并退出全部金额。

(7当顾客完成一次购买后系统自动恢复到初始状态。

(8顾客一次只能购买一种饮品的一个,若需要更多饮品,需要重 复操作。 3.2软件结构

系统流程图 3.3 程序模块划分

显示模块 外部接口

4 组员分工及时间安排 组员分工及时间安排 4.1 组员分工 内部商定,协调安排。 4.2 时间安排 第4周 第5周 第6周 第7周 第8周 第9周 第 10 周 系统需求分析与设计报告 界面设计,算法设计 键盘、鼠标接口设计,算法设计 编码实现 编码实现 编码实现、调试 调试、验收、提交报告 20

第15篇:自动售货机联营合作协议0620

自动售货机联营合作协议

甲方: 乙方:

甲.乙双方本着平等、互惠的原则,经过友好协商,就通过自动售货机开展经营活动达成如下协议:

第一条

综合条款

1.2.3.4.5.甲方作为设备提供方,向乙方提供自动售货机。

乙方向甲方提供设备摆放场地,指定在(地址) 。 甲方所提供自动售货机型号为 ,数量暂定为 台。

合作期间,放置于乙方处自动售货机的所有权归甲方所有,经营及推广活动由甲方负责。 合作期间,为保证双方权益乙方不得在场地内投放其他同种类型售货柜。

第二条

服务内容

1.甲方保证所提供之自动售货机内销售的商品符合中华人民共和国国家卫生标准及企业技术质量标准。

2.甲方负责自动售货机的日常运营工作,并承担运营成本(商品补给、设备保养、卫生保洁及日常维修)等费用。

3.甲方确保所提供的机器设备处于安全状态,若因设备设施导致安全事故发生,甲方承担全部责任。4.甲方承诺,通过自动贩卖机销售的产品售价与本地大型生活类超市基本一致,保持平价销售。 5.乙方如因特殊情况需要移动自动售货机位置,必须事先通知甲方,由甲方工作人员在3个工作日内迁移设备(紧急避险情况下,乙方有权采取必要措施迁移或遮盖设备)。 6.乙方提供自动售货机安装所需的电源地排等,并配合甲方安装设备,维护设备安全不被人为破坏。 7.乙方在协议期内配合甲方的正常经营活动,对甲方的推广活动给予支持。

1、乙方应协助甲方做好自动售货机的安装、营运维护工作,诸如协助故障处理、免费提供场地进出及停车配货等。同时乙方应协助维护自动售货机及其内部饮食的财产安全,包括在场地内安装监控设备等。如发生自动售货机遭人为损坏(包括但不限于外观污损、零部件毁坏)、丢失、商品被偷盗等情况应及时通知甲方或报警,并提供监控视频等资料。甲方应于收到乙方的上述通知后24小时内予以响应,并制定相关解决方案。

第三条

协议条件

1.本协议自签订之日起即刻生效,协议期限以一年为准,协议期满,如双方无异议,本协议自动延续至下一年同月日。

2.自动售货机附带的“ ”经营权归甲方所有,但播放广告或视频内容不得包含淫秽,色情,暴力,医院疾病治疗等类别或违反广告法之内容,否则乙方有权予以制止。

3.协议期内甲方按照自动售货机销售数据作为基数,按系数据实向乙方分配收益:( 。结算周期为: 。

第四条

协议解除 生效 异议处理

1.如甲方停止经营需提前10天告知乙方,在结算清相关费用后,协议解除。2.本协议一式两份,双方各执一份,具有同等法律效力。 3.未尽事宜,双方应友好协商解决。

甲方盖章: 乙方盖章:

代表签字: 代表签字: 联系电话: 联系电话: 日期:

第16篇:自动售货机的PLC系统设计

常工院毕业设计论文

自动售货机的PLC系统设计

摘要:本文介绍了自动售货机的基本原理以及工作流程,然后以一次交易过程为例,把交易过程分为了几个程序块,然后分别对程序块进行编程。具体说明了可编程序控制在自动售货机忠的作用。程序涉及到了自动售货机工作的绝大部分过程。利用PLC控制的自动售货机提高了系统的稳定性,保证自动售货机能够长期稳定运行。

关键字

自动售货机;可编程控制器;梯形图

Abstact: This articke introduced vending machine‟s basic principle as well as the work flow, then take a transaction proce as examples, divides into several blocks the transaction proce, the carries on the programming separately to the block.Explained the programmable controller‟s in vending machine function specifically.The procedure involved the vending machine work major part proce.Enhanced system‟s stability using the PLC control‟s vending machine, the guarantee vending machine has been able the long-term stability movement.Key word vending machine; programmable controller; trapezoidal chart

常工院毕业设计论文

目录

·摘要…………………………………………………………………………………1 ·前言…………………………………………………………………………………3 ·第一章 自动售货机的介绍………………………………………………………...4 ·1.1自动售货机功能分析…………………………………………………………..4 ·1.1.1自动售货机的基本功能……………………………………………………...4 ·1.2 PLC的选型原理………………………………………………………………..5 ·1.3 PLC的概论……………………………………………………………………..6 ·1.3.1 PLC的产生…………………………………………………………………...6 ·1.3.2 PLC的定义…………………………………………………………………...6 ·1.3.3 PLC的发展趋势……………………………………………………………...7 ·1.3.4 PLC的特点…………………………………………………………………...8 ·1.3.5 PLC的基本功能……………………………………………………………...9 ·1.4 PLC的基本结构和原理………………………………………………………10 ·1.4.1 PLC的系统结构…………………………………………………………….10 ·1.4.2 PLC各部分的作用………………………………………………………….10 ·1.5 松下电工可编程序控制器产品—FP1-C24介绍……………………………12 ·1.5.1 FP1-C24的组成各部分……………………………………………………..13 ·1.5.2 技术性能……………………………………………………………………14 ·第二章

PLC系统设计………………………………………………………….14 ·2.1 可编程序控制系统设计的基本原则………………………………………...14 ·2.1.1 控制系统设计原则…………………………………………………………14 ·2.1.2 控制系统设计的基本内容…………………………………………………14 ·2.1.3 控制系统设计的一般步骤…………………………………………………15 ·2.1.4 编写梯形图的注意事项……………………………………………………15 ·2.1.5 程序设计的步骤……………………………………………………………15 ·第三章

自动售货机PLC程序设计……………………………………………16 ·3.1 仿真实验中的售货机的分析………………………………………………...16 ·3.2 设计任务的确定……………………………………………………………...18 ·3.3 程序设计部分………………………………………………………………...18 ·3.3.1 程序设计说明………………………………………………………………19 ·3.3.2 PLC 程序设计………………………………………………………………19 ·3.4 仿真界面与PLC……………………………………………………………...28 ·3.5 数据连接……………………………………………………………………...32 ·3.5.1 定义I/O设备……………………………………………………………….32 ·3.5.2 设计…………………………………………………………………………34 ·3.5.3 运行…………………………………………………………………………37 ·4 结束语…………………………………………………………………………38 ·致谢………………………………………………………………………………..39 ·参考文献…………………………………………………………………………..39

常工院毕业设计论文

前言

从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等因素的制约,无人自动售货机作为一种必须的机器便应运而生了。

从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本小、面积小,有吸引人们购物的好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。

据说世界上最早的自动售货机出现在公元前3世纪,那是埃及神殿里的投币式圣水出售机。17世纪,英国的小酒吧里设有了香烟的自动售货机。在自动售货机历史的长河里,日本开发出实用型的自动售货机,那是在进入本世纪后的事。日本第一台自动售货机是1904年问世的“邮票明信片自动售货机“,它是集邮票明信片的出售和邮筒投函为一体的机器。自动售货机的真正普及是在第二次世界大战以后。50年代,”喷水型果汁自动售货机“大手欢迎,果汁杯注入在纸杯里出售。后来,由于美国的饮料大公司进入日本市场,1962年,出现了以自动售货机主体的流通领域的革命。1967年,100日元单位以下的货币全改为硬币,从而促进了自动售货机产业的发展。 现在,自动售货机产业正走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送到各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状态下也能保持低温,与以往的自动售货机相比,它能够节省10—15%的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。 因经济复苏缓慢,社会对扩大就业与工作场所所提供的茶点饮料的福利事业更为关注。自动售货机不仅保障了惬意的工作时间,也是最廉价、提高职工工作效率最有效的手段。特别是在24小时无休工作状态中的办公场所,使用独具魅力的迷你型饮料冲饮机解决了不间断提供咖啡饮料服务的问题,这种服务加速了自动售货机与咖啡饮品服务的融合。1999年的全美自动售货机协会和全美咖啡服务协会的合并使人们更直观地看到了这种融合的现象。

日本是自动售货机的天堂。出了鸡蛋、米饭之外,报纸、杂志、一次性相机、干电池、磁带、刮胡刀、袜子、花及宠物食品等各种商品都通过自动售货机进行销售。连熟知自动售货机的美国游客在日本看到10台自动售货机排成一列的景象后,也是连声称奇。

韩国大约有78万台自动售货机,是除了日本、美国、英国之外自动售货机使用数量最多的国家。从不同的种类来看,咖咖啡茶的自动售货机约占全部售货机的40%以上;另外,还有冰饮料自动售货机、听装饮料自动售货机、成人用品自动售货机、生活用品自动售货机、烟、方便面自动售货机等多种。主要的设置场所包括学校、楼房、公共机关、地铁、公共汽车站、公园、体育场、展示场、工厂等。运营自动售货机产业的公司全国大约有800余个,而销售自动售货机原料、商品流通、机械销售的公司大约达到了1150个。

常工院毕业设计论文

第一章 自动售货机的介绍

1.1自动售货机功能分析

这部分阐述了自动售货机的各种动作功能和控制要求,给出了完整的自动售货机操作规章,并介绍了自动售货机运行系统所包括的人工操作步骤。

1.1.1自动售货机的基本功能

在进行上、下位机程序编写之前,首先要做的工作是确定自动售货机本身所具备的功能及在进行某种操作后具有的状态。

在实际生活照,我们见到的售货机可以销售一些简单的日用品,如饮料、常用药品和小的生活保健用品等。售货机的基本功能就是投入的货币进行运算,并根据货币数值判断是否能够买某种商品,并做出相应的反应。举一个简单的例子来说明,列如:售货机中有8种商品,其中01号商品(代表第一种商品)价格为2.60元,02号商品为3.50元,其余类推。现投入1个1元银币,当投入的货币超过01商品的价格时,01商品的选择按钮处应有变化,提示可以购买,其他商品同比。当按下选择01商品的价格时,售货机进行减法运算,从投入的货币总值中减去01商品的价格同时启动相应的电机,提取01号商品到出货口。此时售货机继续进行等待外部命令。如继续交易,则同上。如果此时不在购买而按下退币按钮,售货机则要进行退币操作,退回相应的货币,并在程序中清零,完成此次交易。由此看来,售货机一次交易要涉及加法运算、减法运算以及在退币时的 出发运算,这是它内部功能。还要有货币识别系统和货币的传动来实现完整的收获、退币功能。自动售货机的工作流程图如图1所示。

常工院毕业设计论文

1.2 PLC的选型原则

当某一个控制任务决定由PLC来完成后,选择PLC就成为最重要的事情。一方面要选择多大容量的PLC,另一方面是选择哪个的PLC及外设。

对第一个问题,首先要对控制任务进行详细的分析,把所有的I/O点找出来,包括开关量I/O和模拟量I/O以及输出是用继电器还是晶体管或者是可控硅型。控制系统输出点的类型非常关键,如果他们之间既有交流220V的接触器、电磁阀、又有24V的指示灯,则最后选用的PLC的输出端数有可能呢大于实际点数。因为PLC的输出点一般是几个一组公用一个公共端,这一组输出只能有一种电源的种类和等级。所以一旦它们是交流220V的负载负载使用,则直流24V的负载只能使用其他的输出端了。这样有可能造成输出点浪费,成本增加。所以要尽可能所则相同等级和种类的负载,比如使用交流220V的指示灯等。一般情况下继电器输出的PLC使用最多,但对于要求高速输出的情况,就要使用无触点的晶体管输出的PLC了。

对于第二问题,则有以下几个方面的考虑: (1) 功能方面

所有PLC一般都具有常规的功能,但对某些特殊要求,就要知道所选用的PLC是否有能力控制任务。如对PLC与智能仪表及上位机之间有灵活方便的通信要求;或对PLC的计算速度、用户程序容量等有特殊要求‘或对PLC的位置控制有特殊要求等。这就要求用户对市场上流行的PLC品种有一个详细的了解,以便做出正确的选择。

(2) 价格方面

不同厂家的PLC产品价格相差很大,有些功能类似、质量相当、I/O点数相当的PLC的价格能相差40%以上。在使用PLC较多的情况下,这样的差价当然是必须考虑的因素。

(3) PLC主机选定后,如果控制系统需要,则相应的配套模块也就选定了。

常工院毕业设计论文

1.3 PLC的 概述

1.3.1 PLC的产生

20世纪20年代起,人们把各种继电器、定时器、接触器及其触点按一定的逻辑关系联系起来组成控制系统,控制各种生产机械,这就是大家所熟悉的传统继电接触器控制机系统。由于它结构简单,容易掌握,价格便宜,在一定范围内能满足控制要求,因而使用面甚广,在空也控制领域中一直占主导地位。但是继电接触器控制系统有明显的缺点:设备体积大,可靠性差,动作速度慢,功能少,难与实现较复杂的控制,特别是由于它是靠硬连线逻辑构成的系统,接线复杂,当生产工艺或对象改变时,原有的接线和控制盘就要更换,所以通用性和灵活性较差。

20世纪60年代末期,美国的汽车制造业竞争激烈,各生产厂家的汽车型号不断更换,它必要求生产线的控制系统亦随之改变,以及对整个开展系统重新配置,为抛弃传统的继电接触器控制系统的束缚,适应白热化的市场竞争要求。1968年美国通用汽车公司向社会招标,对汽车流水线控制系统提出具体要求,归纳起来是:

(1) 编程方便,可现场修改程序 (2) 维修方便,采用插件式结构 (3) 可靠性高于继电接触器控制系统 (4) 体积小于继电器控制盘

(5) 数据可直接送人管理计算机 (6) 成本可与继电器控制盘竞争 (7) 输入可以是交流150V以上

(8) 输出为交流115V容量要求在2A以上,可直接驱动接触器、电磁阀等 (9) 扩展时原系统改变最小

(10)用户存储器至少能扩张到4KB(适应当时汽车装备过程的需要)

十项指标的核心要求是采用软布线(编程)方式代替继电控制的硬接线方式,实现大规模生产线的流程控制。

1.3.2 PLC的定义

美国国际电工委员会(IEC)在1987年对可编程序控制器做出以下定义:可编程序控制器是一类专门为在工业环境下应用而设计的数字式电子系统,它采用了可编程序的存储器,用来在其内部进行存储执行逻辑运算等功能的面向用户的指令,并通过数字式或模拟式的输入或输出,控制各种类型的机械或者生产过程。可编程序控制器及其相关外部设备,都应按照易于与工业控制系统联成一个整体,易于扩展其功能的原理而设计。

定义强调了PLC应直接应用于工业环境,它必须具有很强的抗干扰能力,广泛的适应能力和应用范围。这也是去呗与一般微机控制系统的一个重要特征。 定义还强调了PLC是“数字运算操作的电子系统”,它也是一种计算机,它是“专门在工业环境下应用而设计的”工业计算机。这种工业计算机采用“面向用户的指令”,因此编程方便。它能完成逻辑运算、顺序运算、定时、记数和算术运算

常工院毕业设计论文

等操作,它还具有“数字量和模拟量输入和输出”的能力,并且非常容易与“工业控制系统联成一体”,易于“扩充”。

1.3.3 PLC的发展趋势

PLC总的发展趋势是向高集成度、小体积、大容量、高速度、易使用、高性能方向发展。具体表现在以下方面:

(1) 向小型化、专业化、低成本方向发展

随着微电子技术的发展,新型器件大幅度的提高功能和降低价格,使PLC结构更为紧凑,相当于一本精装书本的大小,操作使用十分方便。PLC的功能不断增加,将原来大、中型PLC才有的功能部分地移植到小型PLC上。 (2) 向大容量、高速度方向发展

大型PLC多采用微处理器系统,有的采用32位微处理器,可同时进行多任务操作,处理速度提高,特别是增强了过程控制和数据处理的功能。另外,存储容量大大增加。

(3) 智能型I/O模块的发展

智能型I/O模块是以微处理器和存储器为基础的功能部件,它们的CPU与PLC的主CPU并行工作,占用主CPU的时间很少,有利于提高PLC的扫描速度。 (4) 基于PC的编程软件取代编程器 随着计算机的日益普及,越来越多的用户使用基于计算机上的编程软件。编程软件可以对PLC控制系统的硬件组态,即设置硬件的结构和参数,例如设置各框架各个插槽上的模块的型号、模块的参数、各串行通用接口的参数等。 (5) PLC编程语言的标准化

与个人计算机相比,PLC的硬件、软件的体系结构都是封闭的而不是开放的。在硬件方面,各厂家的CPU模块和I/O模块互不通用。PLC的编程语言和指令系统的功能和表达式也不一致,因此各厂家的可编程序控制器互不兼容。为了解决这一问题,IEC制定了可编程序控制器标准。标准中共有5种编程语言,允许编程者在同一程序中使用多种编程语言,这使编程能够选择不同的语言来适应特殊的工作。

(6) PLC通信的易用化

PLC的通信联网功能使它能与个人计算机和其他智能控制设备交换数字信号,使系统形成一个统一的整体,实现分散控制和集中控制。 (7) 组态软件与PLC的软件化

个人计算机(PC)的价格便宜,有很强的数学运算、数据处理、通信和人机交互的功能。

(8) PLC与现场总线相结合

现场总线I/O与PLC可以组成功能强大的、廉价的DCS系统。 (9) 开发新型特殊功能模块

I/O组件可以提高PLC的智能化、高密集度和增大处理能力。 (10) CPU的处理速度进一步加快

目前,PLC的处理速度与计算机相比还比较慢,其中高的CPU也不过80486,将来会全面使用64位的RISC芯片,采用多CPU进行处理、分时处理或者分任务处理方式,将各种模块智能化,部分系统程序用门阵列电路固化,这样可使PLC的处理速度达到纳秒级。

常工院毕业设计论文

1.3.4 PLC的特点

(1) 抗干扰能力强,可靠性好 PLC在电子线路、机械结构以及软件上都吸取了生产厂家长期积累的生产控制经验,主要模块均采用大规模与超大规模集成电路。I/O系统设计有完善的通道保护与信号调理电路;在结构上对耐热、防潮、防尘、抗震等都有周到的考虑。具体措施主要有以下几个方面:

1) 隔热:这是抗干扰的主要措施之一。PLC的输入、输出接口电路一般采用光电耦合器来传递信号。这种光电隔离措施,是外部电路与内部电路之间避免了电的联系,可有效的抑制外部干扰对于PLC的影响,同时防止外部高电压串入,从而减少故障和误操作。

2) 滤波:这是抗干扰的另一个主要措施。在PLC的电源电路和输入/输出电路中设置了多种滤波电路,用以对高频干扰信号进行有效的抑制。

3) 对内部电源采用了屏蔽、稳压等保护措施,以减少外界干扰,保护供电质量。另外使输入输出接口电路电源彼此独立,以避免电源之间的干扰。 4) 内部设置了连锁、环境检测与诊断、WATCHDOG(看门狗)等电路,一旦发现故障或程序循环执时间超过了警戒时钟(WDT)规定时间(预示程序进入了死循环),立即报警,以保证CPU可靠运行。

5) 利用系统软件定期进行系统状态、用户程序、工作环境和故障检测,并采用信息保护和恢复措施。

6) 对用户程序及动态工作数据进行电池备份,以保障停电后有关状态或者信息部丢失。

7) 采用密封、防尘、防震的外壳封装结构,以适应工作现场的恶劣环境。 8) 以集成电路为基础元件,内部处理过程不依赖于机械触点,以保障高可靠性。而采用循环扫描的工作循环方式,也提高了抗干扰能力。 (2) 控制系统结构简单,通用性强 PLC及外围模块品种多,可由各种组件灵活组合成各种大小和不同要求的控制系统。

(3) 编程方便,易于使用

PLC是面向用户的设备,PLC的设计者充分考虑到现场工程技术人员的技能和习惯,PLC程序的编程,采用梯形图或面向工业控制的简单指令形式。梯形图与继电器原理图类似,这种编程语言现象直观,容易掌握,不需要专门的计算机知识和语言,只要具有一定的电工和工艺的知识的人员都可以在短时间内学会。 (4) 功能完善

PLC的I/O功能完善,性能可靠,能适应于任何形式和性质的开关量和模拟量的I/O。在PLC内部具有许多控制功能,诸如时序、计算机、主控继电器以及位移寄存器、中间寄存器等。由于采用了微处理器,它能够很方便地实现延时、锁存、比较、跳转和强制I/O等诸多功能,不仅具有逻辑功能、算术运算、数制转换以及顺序控制功能,而且还具备模拟预算、显示、监控、扫描以及报表生成等功能。

(5) 设计、施工、调试的周期短

用继电接触器控制完成一项控制工程,必须首先按工艺要求画出电气原理图,然后画出继电器屏的布置和接线图等,进行安装调试,以后修改起来十分方便。而采用PLC控制,由于其硬软件齐全,为模块化积木式结构,且以商品化,故

常工院毕业设计论文

仅需按性能、容量等选用组装,而大量具体的程序编制工作也可在PLC到货前进行,因而缩短了设计周期,使设计和施工可同时进行。 (6) 体积小,维护操作方便

PLC体积小,质量轻,便于安装。PLC的I/O系统能够直接的反映现场总线信号的变化状态,还能通过各种方式直观地反映控制系统的运行状态。 (7) 易于实现网络化

PLC可连成功能很强的网络系统。 (8) 可实现三电一体化 PLC将电控(逻辑控制)、电仪(过程控制)和电结(运动控制)这三电集于一体,可以方便、灵活的组合成各种不同规模和要求的控制系统,以适应各种工业控制的需要。

1.3.5 PLC的主要功能

(1) 条件控制功能

条件控制(或称逻辑控制或顺序控制)功能是指用PLC的与、或、非指令取代继电器接触的串联、并联及其他各种逻辑连接,进行开关控制。 (2) 定时/记数控制功能

定时/记数控制功能是指用PLC提供的定时器、记数器指令实现对某种操作的定时或记数控制,以取代时间继电器和记数继电器。 (3) 数据处理功能

数据处理功能是指PLC能进行数据传输、比较、位移、数制转换、算术运算、逻辑运算以及编码和译码等操作。 (4) 步进控制功能

步进控制功能是指用步进指令来实现在有多道加工工序的控制中,只有前一道工序完成以后,才能进行下一道工序的操作的控制,以取代由硬件构成的步进控制器。

(5) A/D与D/A转换功能

A/D与D/A转化功能是指通过A/D、D/A模块完成模拟量和数字量之间的转换。

(6) 运动控制功能

运动控制功能是指通过高速记数模块和位置控制模块等进行单轴或者多轴运动控制。

(7) 过程控制功能

过程控制功能是指通过PLC的PID控制指令或模块实现对温度、压力、速度、流量等物理参数的闭环控制。 (8) 拓展功能

拓展功能是指通过连接输入输出拓展单元(即I/O拓展单元)模块来增加输入输出点数,也可通过附加各种智能单元及特殊功能单元来提高PLC的控制功能。 (9) 远程I/O功能

远程I/O功能是指通过I/O单元将分散在远距离的各种输出、输入设备与PLC主机相连接,进行远程控制,接收输入信号、传出输出信号。 (10)通信联网功能

通信联网功能是指通过PLC之间的联网、PLC与上位机的链接等,实现远程

常工院毕业设计论文

I/O控制或数据交换,以完成较大规模系统的复杂控制。 (11)监控功能

监控功能是指PLC能监视系统各部分地进行状态和进程,对系统中出现的异常情况进行报警和记录,甚至自动终止运行;也可在线调整、修改控制程序中的定时器、记数器等设定值或强制I/O状态。

1.4 PLC的基本结构及原理

1.4.1 PLC的系统结构

目前PLC种类繁多,功能和指令系统也都各不相同,但都是以微处理器为核心用做工业控制的专用计算机,所有其结构和工作原理都大致相同,硬件结构与微机相似。主要包括中央处理单元CPU、存储器RAM和ROM、输入输出接口电路、电源、I/O拓展接口、外部设备接口等。其内部也是采用总线结构进行数据和指令的传输。

如同2所示,PLC控制系统由输入量—PLC—输出量组成,外部的各种开关信号、模拟信号、传感器检测的各种信号均作为PLC的输出量,它们经PLC外部输入端子,作为PLC的输出量对外围设备进行各种控制。由此可见,PLC的基本结构由控制部分输入和输出组成。

1.4.2 PLC各部分的作用

(1)中央处理器

CPU是由控制器和运算器组成的。运算器也称为算术逻辑单元,它的功能就是进行算术运算和逻辑运算。控制器的作用是控制整个计算机的各个部件有条不紊地工作,它的基本功能是从内存中取出指令和执行指令。他的重要功能如下:

① 诊断PLC电源、内部电路的工作状态及编程中的语法错误。

② 采集由现场输入装置送来的状态或数据,并送入PLC的寄存器中。 ③ 按用户程序存储器中存放的先后顺序逐条读取指令,进行编译解释后,按指令规定的任务完成各种运算和操作。 ④ 将存于寄存器中的处理结果送至输出端。 ⑤ 应各种外部设备的工作请求。

常工院毕业设计论文

(2)存储器

PLC的存储器分为两大部分: 一大部分是系统存储器,用来存放系统管理程序、监控程序及其系统内部数据。 二大部分是用户存储器,包括用户程序存储区及工作数据存储区。 (3)输入输出接口电路 PLC通过输入输出(I/O)接口电路实现与外围设备的连接。输入接口通过PLC的输入端子接受现场输入设备的控制信号,并将这些信号转换成CPU所能接受和处理的数字信号。 (4)电源

PLC的电源是指将外部输入的交流电经过整流、滤波、稳压等处理后转换成满足PLC的CPU、存储器、输入输出接口等内部电路工作所需要的直流电源电路或电源模块。

(5)输入输出I/O拓展接口、

若主机单元的I/O点数不能满足输入输出点数需要时,可通过此接口用扁平电缆线将I/O拓展单元与主机单元相连接。 (6)PLC的基本工作原理

PLC采用的是循环扫描工作方式。对每个程序,CPU从第一条指令开始执行,按指令步序号做周期性的程序循环扫描,如果无跳转指令,则从第一条指令开始逐条顺序执行用户程序直至遇到结束信号后又返回第一条指令,如此周而复始不断循环,每一个循环称为一个扫描周期。PLC的扫描全过程如图3所示。

① 输入刷新阶段

在输入刷新阶段,CPU扫描全部输入端口,读取其状态并写入输入状态寄存器。完成后关闭输入端口,转入程序执行阶段。 ② 程序执行阶段

在程序执行阶段,根据用户输入的控制程序,从第一条开始逐条执行,并将相应的逻辑运算结果存入对应的内部辅助寄存器和输出状态寄存器。 ③ 输出刷新阶段

常工院毕业设计论文

当所有指令执行完毕后,将输出状态寄存器中的内容,依次送到输出锁存电路,并通过一定输出方式输出,驱动外部相应执行元件工作,这才形成PLC的实现输出。

显然扫描周期的长短取决于程序的长短。扫描周期越长,响应速度越慢。由于每一个扫描周期只进行一次I/O刷新,即每一个扫描周期PLC只对输入、输出状态寄存器更新一次,故使系统存在输入、输出滞后现象,这在一定程度上降低了系统的响应速度。由此可见,若输入变量在I/O刷新期间状态发生变化,则本次扫描期间输出会相应地繁盛变化。反之,若在本次刷新之后输入变量才发生变化,则本次扫描输出不变,而要到下一次扫描的I/O刷新期间输出才会发生变化。这对于一般的开关量控制系统来说是完全允许的,不但不会造成不利影响,反而可以增强系统的抗干扰能力。这是因为输入采样仅在输入刷新阶段进行,PLC在一个工作周期的大部分时间里实际上是设隔离的。而工业现场的干扰常常是脉冲式的、短时的,由于系统相应较慢往往要几个扫描周期菜响应一次,而多次扫描后,因瞬间干扰而引起的误操作将会大大减少,从而提高了系统的抗干扰能力。但是对于控制时间要求较为严格、响应速度要求较快的系统,就需要精心编制程序,必要时采用一些特殊功能,以减少因扫描周期造成的响应滞后等不良影响。

1.5 松下电工可编程序控制器产品—FR1-C24介绍

经过从功能和价格两个方面的考虑,发现松下电工可编程序控制器产品—FR1-C24比较适合自动售货机。因为它是一种功能很强的小型机,在设计的过程中采用先进的方法及组件使其通常只有在大型PLC中才具有的功

常工院毕业设计论文

能,且具有其他控制器所不具备的功能。虽然是小型机,但是其功能较完善,性能价格比高,较适合自动售货机。

现在就对FR1-C24的组成各部分和技能做一个简单介绍。在松下电工公司生产的FR系列产品中,FR1属于小型的PLC产品,其中C24是具有高级处理功能的型号。从型号可以看出FR1-C24可编程序控制器的输入输出点数(即I/O)之和为24.

1.5.1 FR1-C24的组成各部分

(1)RS232 该端口能于PC机通信编程,也可连接其他外围设备。 (2)运行监视指示灯

① 当运行程序时,“RUN”指示灯亮; ② 当控制单元终止执行程序时,“PROG”指示灯亮; ③ 当发生自诊断错误时,“ERR”指示灯亮;

④ 当检测到异常的情况时或出现“Watchdog”时,“ALARM”指示灯亮。 (3)工作方式选择开关

①“RUN”工作方式

当开关扳到这个档位时,控制单元运行程序。 ②“REMOTE”工作方式

在这个工作方式下,可以使用编程工具改变可编程序控制器的工作方式为“RUN”或“PROG”工作方式。 ③“PROG”工作方式

在此方式下可以编辑程序。若在“RUN”工作方式下编辑程序,则按出错对待。可编程控制器鸣响报警,提示编程者将方式选择开关切换至“PROG”工作方式。 ④输出端子

C24型的输出端子有8点。该端子板为两头带螺钉可拆卸的板。 ⑤直流电源输出端子

在FP1系统主机内部均配有一个供输入端使用的24V直流电源。 ⑥输入端子

C24型的输入端子有16点。输入电压范围为直流12~24V。该端子板为两头带螺钉可拆卸的板。 ⑦编程工具连接插座(RS422口)

可用此插座经专用外设电缆连接编程工具。 ⑧波特率选择开关

有19 200bp和9 600sbps两档,当可编程控制器与外部设备进行通信时,应根据不同的外设选定波特率。 ⑨电位器(V0、V1)

电位器(V0、V1)这两个电位器可用螺丝刀进行手动调节,实现外部设定。当调节该点位器时,PLC内部对应的特殊数据寄存器DT9040和DT9041的内容在0~255之间变化,相当于输入外部可调的模拟量。C24有两个(V0、V1)。

常工院毕业设计论文

⑩ I/O点状态指示灯和拓展单元接口插座

用来指示输入/输出的通断状态,当某个输入触点闭合时,对应于这份触点编号的输入指示发光二极管点亮(下一排);当某个输出继电器接通时,对应这个输出继电器编号的输出只是发光二极管点亮(上一排)。拓展单元接口插座用以连接FP1拓展元件及A/D、D/A转换单元、链接单元。

1.5.2 技术性能

FP1—C24的主机I/O点数为16/8;最大I/O点数为104;运行速度为1.6μs/步;容量为2720步;基本指令数为80;高级指令数为111;内部继电器为1008点;特殊内部继电器为64点;定时器/记数器为144点;数据寄存器为1660字;特殊数据寄存器为70字;索引寄存器为2字;主控指令为32点;跳转标记数为64点;步进数为128级;子程序个数为16个;中断个数为9个程序;输入滤波时间为1—128ms。

第二章 PLC系统设计

2.1 序控制系统设计的基本原则

2.1.1 控制系统设计原则

任何一种电气控制系统都是为了实现被控对象(生产设备或生产过程)的工艺要求,以提高生产效率和产品质量。因此,在设计PLC控制系统时,应遵循以下基本原则:

(1) 最大限度地满足被控对象的控制对象。设计前,应深入现场进行调查研究,收集资料,并与机械部分的设计人员和实际操作人员密切配合,共同拟定电气控制方案,协同解决设计中出现的各种问题。

(2)在满足控制系统要求的前提下,力求使控制系统简单、经济、使用及维修方便。

(3)保证控制系统的安全、可靠。

(4)考虑到生产的发展和工艺的改进,在选择PLC容量时,应适当留有余量。

2.1.2 控制系统设计的基本内容

PLC控制系统是由PLC与用户输入、输出设备连接而成的,因此,PLC控制系统设计的基本内容应包括:

(1)用户输入设备(按钮、操作开关、限位开关、传感器等)、输出设备(继电器、接触器、信号灯等执行元件)以及有输出设备驱动的控制对象(电动机、电

常工院毕业设计论文

磁阀等)。这些设备属于一般的电气元件,其选择的方法在其他有关数据中已有介绍。

(2)PLC的选择。PLC是PLC控制系统的核心部件,正确选择PLC对于保证整个控制系统的技术经济性能指标起到重要作用。选择PLC,应包括机型选择、容量的选择、I/O模块的选择、电源模块的选择等。 (3)分配I/O点,绘制I/O梯形图。

(4)设计控制程序。包括设计梯形图、语句表(即程序清单)和控制系统流程图。控制系统程序是控制整个系统工作的软件,是保证系统工作安全、可靠的关键。因此,控制程序的设计必须经过反复调试、修改,知道满足要求为止。 (5)必要时还需要设计控制台。 (6)编制程序系统的技术文件。

2.1.3 控制系统设计的一半步骤

(1)根据生产的工艺过程分析控制要求。

(2)根据控制要求确定所需的用户输入、输出设备,以此确定PLC的I/O点数。 (3)选择PLC系统。

(4)分配PLC的I/O点,设计I/O接线图。

(5)进行PLC程序设计,同时可进行控制大的设计和现场施工。

2.1.4 编写梯形图的注意事项

(1)输入/输出继电器、内部辅助继电器、定时器。记数器等器件的触点可以多次重复使用,无需复杂的程序结构来减少触点的使用次数。

(2)梯形图每一行都是从左母线开始,线圈终止于右母线。触点不能放在线圈的右边。除步进程序外,任何线圈、定时器、记数器、高级指令等不能直接与左母线相连。如果需要任何时候都被执行的程序段,可以通过特殊内部常闭继电器或者一个没有使用过的内部继电器的常闭触点来连接。 (3)在程序中,不允许同以编号的线圈两次输出。 (4)不允许出现桥式电路。

程序的编写顺序应该按照自上而下、从左至右的方式编写。为了减少程序的执行步数,程序应为“左大右小,上大下小”。

2.1.5 程序设计的步骤

(1)对于较复杂的控制系统,需绘制系统控制流程图,用以清楚地表明动作的顺序和条件。

(2)设计梯形图。是程序设计的关键一步,也是比较困难的一步。 (3)根据梯形图编制程序清单。 (4)用编程器将程序输入到PLC的用户存储器中,并检查输入的程序是否正确。 (5)对程序进行调试和修改,知道满足要求为止。

常工院毕业设计论文

(6)带控制台及现场施工完成后,就可以进行联机调试。若未满足要求,再从新修改程序或检查接线,知道满意为止。 (7)编写技术文件。 (8)交付使用。

控制系统设计步骤流程图如图4所示。

第三章

自动售货机PLC程序设计

3.1 仿真实验系统中售货机的分析

由于售货机的全部功能时在上位机上模拟的,所以售货机的部分硬件是由计算机软件来模拟

常工院毕业设计论文

图4 PLC 控制系统设置

替代的。如钱币识别系统可以用按压某个“仿真对象”输出一个脉冲直接给PLC发布命令而传动系统也是由计算机来直接模拟的, 这些并不会影响实际程序的操作,完全能模拟现实中自动饮料售货机的运行。 (1)试验状态假设

由于是在计算机上模拟运行,试验中有一些区别于实际情况的假设,本试验中假设:

① 自动饮料售货机只可售8种商品。

② 自动饮料售货机可识别10元、5元、1元、5角、1角硬币。

③ 自动饮料售货机可退币10元、5元、1元、5角、1角硬币。

常工院毕业设计论文

④ 自动饮料售货机有液晶显示功能

⑤ 实验中售货机忽略了各种故障以及缺货等因素。 (2)一次交易过程分析

为了方便分析,我们以一次交易过程为例。

① 初始状态。由电子标签显示各种商品价格,显示屏显示友好界面,此时不能购买任何商品。

② 投币状态。按下投币按钮,显示投币框,按下所投币值显示屏显示投入、消费、余额数值,当所投币值超过商品价格时,相应价格选择按钮发生变化,提示可以购买。

③ 购买状态。按下可以购买的选择按钮,所选的商品出现在出货框中,同时显示屏上的金额数字根据消费情况相应变化。取走商品后出货框消失。

④ 退币按钮。按下退币按钮,显示退币框,同时显示出应退币值及数量。按下确认钮,则恢复初始状态。

到此为止,饮料自动售货机的一个完整工作过程结束。

3.2 设计任务的确定

在清楚饮料自动售货机运行工作过程的基础上,制定出设计方案,确定任务的目标,以设计出合理的仿真系统。

首先,应该做上位机与下位机的任务分工:上位机主要用来完成仿真界面的制作过程,而下位机则主要用来完成PLC程序的编写。其次,要分别对上位机和下位机进行资料的查找与收集。例如在进行仿真界面的设计时可以去观看一下真正售货机的外观,必要时可以借助一些宣传图片来设计饮料自动售货机的外型:在进行PLC程序的编写时需要先分配PLC的I/O点,确定上、下位机的接口。然后,对上、下位机分别进行设计工作。最后,进行上位机设计结果与下位机设计结果的配合工作,经调试后完成整个系统的设计。

另外,上位机与下位机的设计工作是紧密配合的。它们无论在通信中使用的变量,还是在仿真中控制的对象都应该是一致的。总体上讲,仿真界面是被控对象,利用PLC来控制这个仿真的饮料自动售货机,仿真的饮料自动售货机接受PLC的控制指令并完成相应的动作;另一方面 ,仿真界面中的仿真饮料自动售货机的运行,都是由组态界面所提供的命令语言来完成的。这是整个仿真系统内部各大部件之间的内在关系。

我主要是对饮料自动售货机中的下位机,也就是主要是对PLC在其中的程序进行设计。仿真程序只做了解,虽然只做了解,但是也将在下面有所介绍。清楚了仿真试验的整体设计思路,下面就可以开始着手设计了。

3.3 程序设计部分

这个部分内容是整个系统设计的主体部分。所要完成的任务是仿真系统的上位机与下位机的程序设计,即在上述功能分析的基础上,有针对地进行设计。

常工院毕业设计论文

3.3.1 程序设计说明

下位机程序的编制则是利用松下PLC专用编程软件FPWIN-GR完成的。

在设计的过程中,就像上面所叙述的那样,并非孤立的分别进行上位机和下位机的设计工作,而是互相配合的。因此在以下的详细设计过程中,并没有将上位机的设计与下位机的设计整体分开来写,而是相互交替,同时尽量清晰的叙述,在相应的设计部分中注明是上位机的设计还是下位机的设计。

3.3.2 PLC程序设计

可以把一次交易过程分为几个程序块:运行初期电子标签价格的内部传递;投币过程;价格比较过程;选择商品过程;退币过程。 (1) 运行初期电子标签价格的内部传递程序的设计

仿真系统运行初期,要由PLC向仿真画面相应对象传递已存储好的价格,还要给投入显示、消费显示以及余额显示存储器清零,同时也要给存储退币币值的存储器清零。程序编制过程中,要用到运行初期闭合继电器R90

13、16位数据传送指令F0,同时在上位机上ForceControl中,必须定义相应的变量,来实现与PLC程序的对接。所定义的变量如表1所示。

表1初始状态变量表

根据表1编制PLC程序如图5所示。

常工院毕业设计论文

图5 运行初期电子标签价格的内部传递程序

在梯形图程序图5中,系统初始化时,通过运行初期闭合继电器R9031在第一次扫描时将数值传递给上位机。给WR1-WR11及SV0-SV4赋初值,赋值功能通过高级指令F0实现,至于为什么要加入WR

13、WR

15、WR

17、WR19及WR20,在以后的程序中将介绍他们的作用。(2) 投币过程

在投币过程中,每投下一枚硬币,投入显示将增加相应的币值,余额也增加同样币制。先建立变量表,在编写程序。变量表如表2所示。对应的梯形图程序如图7所示。

表2 投币过程变量表

在图中,当按下投入1角时,相当于让R200接通,之所以用一个微分指令,就是要只在接通时检测一次,不能永远加下 去。投入1角要投入显示、余额显示

常工院毕业设计论文

都相应增加相同数值,加法是由16位加法指令E20来实现的。投入5角、1元、10元,原理同上。 (3) 价格比较过程

价格的比较要贯穿实验的始终,只要余额大于某种商品价格时,就需要输出一个信号,

图7 投币过程梯形图

提示可以购买。这里只要选择灯代表此信号。所建立的变量表如表3所示。

表3 价格比较过程变量表

21

常工院毕业设计论文

根据变量表和控制要求编写程序如图8所示。

在梯形图8中,为了实现数据的实时比较,用了一个特殊内部继电器R9010,在程序执行过程中,R9010始终保持闭合,F60是16位数据比较指令,用它来比较余额和商品价格,R900A是大于价格,R900B是等于标志。当余额大于等于某种商品价格时,程序使相应的指示灯闪烁表示可以购买该种商品。

22

常工院毕业设计论文

图8 价格比较过程梯形图

(4) 选择商品过程

当投入的币值可以购买某种商品时,按下相应的“选择”按钮即可在出货框中出现该种商品,同时消费显示栏中显示出已经消费掉的金额,余额也将扣除已消费的币值,接着余额继续与价格相比较,判断是否能继续 购买。出现在出货口的商品在没有取走之前,一直保持显示状态,用鼠标点击该商品代表已经取走,出货口的商品隐藏。建立的变量表如表4所示。对应的梯形图程序如图9所示。

23

常工院毕业设计论文

表4 选择商品过程变量表

在梯形图9中,一是要使商品出现在出货框中,而是要实现内部的货币运算。以第一步为例,按下选择01 商品键,相当于给R205加一个信号(只接受一次脉冲,所以用DF微分指令),当Y0接通(01商品灯亮)时,则系统显示可以购买01商品,购买成功。当按下取01商品按钮时,R230断开,不能输出Y8,代表01商品被取走。内部币值的计算和是否取走商品无关,只要按下选择按钮,并且可以购买此商品就要从余额中扣除相应的金额,显示消费的币值。加法由F20指令实现,减法由F25实现。

24

常工院毕业设计论文

25

常工院毕业设计论文

(5) 退币过程

26

常工院毕业设计论文

在退币过程中,最主要的是完成退币的运算过程,根据结果输出相应的钱币,退币结束时还要使用到的某些寄存器重新赋零,所建立的变量如表5所示,对应的梯形图程序如图10所示。

表5 退币过程变量表

整个退币过程在按下按钮(即R20F接通时)时执行,同样也用到一个微分指令,在接收到信号时产生一次开关脉冲,进而执行一次其下面的指令。F32是除法指令,第一次将余额的币值除以1000,商存储于SV0中,作为退币10的输出值。余数则存储于特殊数据寄存器DT9015中,下次将不能被1000(10元)整除的余数除以100(5元),商且存储于SV1中,余数继续下传,直至被1角除过,由于所投币值最小是1角,并且商品价格也确定在整角,所以最终能被1角整除。 在程序的初始化时曾给WR

13、WR

15、WR

17、WR19和WR20赋零,WR

13、WR

15、WR

17、WR19和WR20是程序的中间量,为的只是程序在使用过程中能稳定执行,避免出现退币错误。

为什么要除以1000呢?这主要是考虑到PLC的主要特点是执行过程稳定可靠,但执行速度较慢,在计算时尽量将数值作为整数计算,因为是在计算机上模拟,可以把一部分功能交由计算机来实现,这里把1角当作

10、把5角当作50、1元当作100、5元当作500、10元当作1000,可以避免把这些数据当作有小数点的实数计算,这同前面的加1角等于10(K10)是相同的道理。至于交由计算机的任务将在以后叙述。

退币过程结束后,PLC要将寄存器中的数值置回原定得初值0,完成一次交易,防止下一次交易时出错,还将中间量WR

13、WR

15、WR

17、WR19和WR20清零。完成了以上5个过程,自动售货机的PLC控制程序基本完成,程序可以控制售货机实现各种要求的功能。

27

常工院毕业设计论文

图10 退币过程梯形图

3.4 仿真界面与PLC的配合定

在这一段中,将仔细分析仿真界面各部分是如何与PLC连接的。分析过程是按照一次交易的实际情况来进行的,即有初始状态、投币状态、购买状态、退币状态到交易结束。 (1)初始状态

通过分析得知,当电子标签显示各商品的价格、显示屏显示友好界面时,不能购买任何商品。因此先让变量poiwindows=0(系统默认)。

电子标签中的字符„J.01‟(以01商品为例)对应的变量JG01.PV与PLC程序中的地址WR4相匹配,WR4中的存储器据为250,即让字符显示2.5元。对应的梯形图如

28

常工院毕业设计论文

图11所示。 (2)投币状态

当投币时,按下“投币”提示字,出现投币框。如何定义“投币”呢?双击汉字“投币”来到“动画连接”画面,选择“触敏动作”框中作如下定义:按下鼠标时,poiwinJB=1,poiwinJB这个变量是控制投币框的,当poiwinJB=1时,出现钱币和提示框:poiwinJB=0时,钱币和提示框隐藏。

图11 数据初始化梯形图

下面分别定义提示框和钱币以及“确认”按钮,双击提示框,来到“动画连接”画

29

常工院毕业设计论文

面,定义poiwinJB=1时显示,各硬币也用同样的方法定义,这样就使在按下汉字“投币”时,变量poiwinJB=1,从而出现投币框,以及硬币等。我们只是定义了投币框的显示状态,用鼠标点击代替 了实际过程中的钱币投入动作,最重要的任务是钱币运算,下面介绍钱币的定义方法。

以10为例:双击10硬币,开到“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述中如下定义:按下鼠标时,poiwinJB=1;TR$100.PV=1时给PLC发出一个接通信号,由于TR$100.PV对应的PLC地址是R204,使得204继电器导通,转而执行相应的加10元程序。同样定义其他钱币,注意其对应的PLC软继电器。最后还要定义“确认按钮”。要实现的功能是按下“确认”按钮时,所有的钱币以及提示框均消失。当投币以后,显示屏要及时反映出投币情况,同时“选择”指示也要相应变化。下面来定义显示屏和“选择”按钮。

显示屏要显示3种数据,分别为:投入显示、消费显示、余额显示。三种显示均用力控软件自带的附件—数码管来显示。现在工具箱中点击“选择子图框”,在子图框中找到仪表中的数码管,放在显示屏中,作为投入显示,再复制两个,分别作为消费显示、余额显示。双击数码管来到数码管属性设置画面,在表达式中作如下定义:poiTR001.PV/100,poiTR001.PV连接的是PLC程序中的WR1软继电器,是用来存储投入显示数据的,除以100同样是为了PLC数据计算的方便。这样就可以用数码管来显示投入中的币值。同样定义消费显示、余额显示。“选择”按钮要根据余额的数值发生闪烁和变色。定义过程如下:双击“选择”按钮,来到“动画连接”画面,在“颜色相关动作”中选择“闪烁”项,分别定义属性和频率,在变量选择中选择相应的指示灯变量。以01商品的选择指示灯为例,在变量选择中选择D01.PV=1,满足条件时指示灯变色。这样就定义好了投币状态的上位机仿真变量,配合PLC程序可以实现投币功能。 (3)购买状态

定义了投币状态,就可以购买商品了。当选择指示灯以后,按下它,在出货口处出现我们要买的商品。这样定义“选择”按钮:双击“选择”按钮,来到“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述中如下定义:按下鼠标时,XZ01.PV=1;释放鼠标时,XZ01.PV=0.XZ01.PV与PLC程序中的R205相对应,按下可以购买商品的选择键,转而执行相应的PLC程序,同时消费显示增加相应的币值,余额显示减少相应的币值,此时还要在出货口出现相应的商品,这是用“显示/隐藏”功能来定义在出货口中出现相应的商品。以01为例,双击出货口处的小商品,来到“动画连接”,选择“显示/隐藏”项,定义CX01.PV=1时显示。出货口框架的隐藏/显现是用程序来控制的。当有一种商品出现在出货口,就会显示

30

常工院毕业设计论文

框架;当全部商品均消失后框架隐藏。程序如图12所示。图中R210是控制出货口框架是否出现的继电器。 (4)退币状态

当按下“退币”按钮时,PLC进行退币运算,所以按下“退币”按钮就要与PLC通信,执行退币计算。下面来定义退币按钮,出现“动画连接”画面,选择“触敏动作”中的“左键动作”,动作描述为:按下鼠标,poiwinJB=0;poiwinTB=1;Tenter.PV=1.释放鼠标,Tenter.PV=0;内部变量poiwinJB=1是让投币框消失,poiwinTB=1是让退币框出现,Tenter.PV与PLC程序中的R20F对应。退币框中要有5种硬币,还要有表示硬币个数的数字。由于计算中采用的算法使得退币时按照币值大小顺序退币,例如退5元,只退一个5元,而不是5个1元。定义表示硬币个数的变量只用一位数即可。在退币时,要退出的硬币及个数显式,而不退的硬币隐藏。

图12 出货口框架的隐藏/显现梯形图

定义钱币时(以10为例),双击10元硬币,出现“动画连接”画面,选择“显示/隐藏”项,在“可见性定义”对话框中作出的表达式为TB$100.PV=0。其他硬币定义方法同上。定义钱币个数:双击10硬币个数字符“a”,出现“动画连接”画面,选择“数值输出”中的“模拟”项,做出表达式为TB$100.PV。 同时钱币个数也要定义是否隐藏,定义方法和定义钱币相同。定义“确认”键时,按下“确认”键,代表取走了所有硬币,完成此次交易,因此退币“确认”的定义很重要。双击“确认”键,出现“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述栏中定义如下:按下鼠标

31

常工院毕业设计论文

poiwinTB=0; 功能:退币框消失

TuiBiok.PV=1; 功能:给PLC信号,闭合R0,完成数据的初始化

Poiwindows=0 功能:显示屏显示友好界面时

为了防止在未取走商品时退币,按下“确认”键又不能返回原始状态,在描述过程中加入以下一段程序,强行抛掉以购买的商品。 CX01.PV=0 CX02.PV=0 CX03.PV=0 CX04.PV=0 CX05.PV=0 CX06.PV=0 CX07.PV=0 CX08.PV=0 释放鼠标时,TuiBiok.PV=0.只是一个微分信号,不能将R0永远置为1。还有一点要注意,“确认”键也要有隐藏的时候定义方法如钱币。

定义退币框架:按下“退币”按钮后就会出现退币框架。可以这样定义:双击退币框架,来到“动画连接”画面,选择“显示/隐藏”项,在“可见性定义”中定义poiwinTB=1时显现即可。

3.5 数据连接

3.5.1 定义I/O设备

数据库是从I/O驱动程序中获取过程数据的,而数据库同时可以与多个I/O驱动程序进行通信,一个I/O驱动程序也可以连接一个或多个设备。下面创建I/O设备。 (1)在Draw导航器中双击“实时数据库”项使其展开,在展开项目中选择“PLC”项双击使其展开后,选择项目双击并定义。 (2)单击“完成”按钮返回,在“松下电工”项目下增加一项“PLC001”,如果要对I/O设备“PLC001”的配置进行修改,双击项目“PLC001”,会再次出现PLC001的“I/O设备定义”对话框。若要删除I/O设备“PLC001”,用鼠标右键单击项目“PLC001”,在弹出的右键菜单中选择“删除”。

① 数据连接

刚刚创建了一个名为“PLC001”的I/O设备,而且它连接的正是假想的PLC设备。现在的问题是如何将已经创建的多个数据库点与PLC联系起来,以使这些点的PV参数值能与I/O设备PLC进行实时数据交换,这个过程就是建立数据连接的过程。由于数据库可以与多个I/O设备进行数据交换,所以必须指定哪些点与哪些个I/O设备建立数据链接。为方便起见,我们将数据列整理成如表

6、表7所示。

表6 数字I/O

32

常工院毕业设计论文

续表 6

33

常工院毕业设计论文

表7 模拟I/O表

3.5.2 设计

1 饮料自动售货机控制要求

(1)该自动售货机可以同时投入5角、1元或5元硬币,自动销售汽水、果汁和咖啡。

(2)当投入的硬币总值等于或超过1.5元时,汽水按钮指示灯亮;当投入的硬币总值等于或超过3元时,汽水按钮和果汁按钮同时亮;当投入的硬币总值等于或超过5元,汽水按钮、果汁按钮和咖啡按钮同时亮。

34

常工院毕业设计论文

(3)当汽水按钮灯亮时,按汽水按钮,则汽水排出10s后自动停止,同时汽水按钮指示灯闪烁10s。

(4)当果汁按钮灯亮时,按果汁按钮,则果汁排出10s后自动停止,同时果汁按钮指示灯闪烁10s。

(5)当咖啡按钮灯亮时,按咖啡按钮,则咖啡排出10s后自动停止,同时咖啡按钮指示灯闪烁10s。

(6)若投入的硬币总值超过所购商品的价格(汽水1.5元,果汁3元,咖啡5元),则找钱指示灯亮,同时进行找钱动作。

图13 饮料自动售货机示意图

2 I/O地址定义表

此控制系统可采用自动工作方式,输入信号为汽水、果汁和咖啡按钮,5角、1元或5元硬币投入识别口记数手动复位按钮;出入信号为汽水、

果汁和咖啡排出电磁阀、找钱电磁阀及相应指示灯,共7个输入点,8个输出点,均为开关量。I/O地址定义如表8所示。

表8 饮料自动售货机控制系统I/O地址定义表

35

常工院毕业设计论文

3 程序设计

36

常工院毕业设计论文

3.5.3 运行

保存所有组态内容,然后关闭所有力控程序。将饮料自动售货机的PLC程序下传到PLC装置中,在切换到离线状态,然后再次启动力控工程管理器 ,选择本工程,并单击“进入运行”按钮启动整个运行系统。

37

常工院毕业设计论文

4 结束语

经过几个月的学习、研究以及吴老师的指导,终于按时完成了毕业设计。设计主要研究的是自动售货机有关PLC的部分。自动售货机是由于劳动密集型的产业构造向技术密集型社会转变的产物。自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购物好奇新的自身性能,可以很好地解决人工费用的上升的问题等各项优点。所以说,自动售货机是今后饮料销售方式的一个很好的发展趋势。它的出现将极大的方便人们购买所需的饮品。

38

常工院毕业设计论文

致谢

经过几个月的努力工作,毕业设计在指导老师吴金的悉心指导下终于顺利完成了, 吴老师他待人和蔼可亲,在这几个月里我们相处的非常融洽, 吴老师他社会实践经验丰富,工作认真踏实,治学态度严谨,而且他深厚的理论功底及设计能力更令我感到钦佩。设计期间,吴老师对我悉心的指导,认真查阅我的草图和设计说明书,令我十分感动。总之,吴老师的人品及治学态度是我学习的楷模和榜样,在此,我要向指导老师吴金表示感谢。

在此次设计中,也需要感谢的是我的同学。大家在一起共同奋斗,互相讨论,对我的毕业设计有很大帮助,并且,我们在一起共同营造了一个融洽的学习生活环境,建立了良好的友谊。

参考文献

1 程周·可编程序控制器原理与应用·北京:高等教育出版社,2003年 2王永华·现代电机控制及PLC应用技术·北京:北京航空航天大学出版社,2000年

3 周美兰、周封、王岳宇·PLC电气控制与组态设计·北京:科学出版社,2003年

4 吴建强、蒋三勇·可编程控制器原理及应用·哈尔滨工业大学出版社,2000年

5 吴中俊、黄永红·可编程序控制器原理及应用·北京:机械工业出版社,2003年

6 张万忠、刘明芹·电器与PLC控制技术·北京:化学工业出版社,2003年 7 王兆义·可编程序控制器教程·北京:机械工业出版社,2001年

39

第17篇:自动售货机PLC控制系统背景概述

自动售货机PLC控制系统背景概述

----- 0920332--26

陈锦

自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按 扭输入信号使控制器启动相关位置的机械装置完成规定动作,将货物输出。

据说世界上最早的自动售货机出现在公元前3世纪,那是埃及神殿里的投币式圣水出售机。17世纪,英国的小酒吧里设有了香烟的自动售货机。在自动售货机历史的长河中,日本开发出实用型的自动售货机,那是在进入本世纪后的事。日本第一台自动售货机是1904年问世的“邮票明信片自动出售机”,它是集邮票明信片的出售和邮筒投函为一体的机器。1925年美国研制出售香烟的自动售货机,此后又出现了出售邮票、车票的各种现代自动售货机。自动售货机的真正普及是在第二次世界大战以后。50年代,“喷水型果汁自动售货机”大受欢迎,果汁被注入在纸杯里出售。后来,由于美国的饮料大公司进入日本市场,1962年,出现了以自动售货机为主体的流通领域的革命。1967年,100日元单位以下的货币全部改为硬币,从而促进了自动售货机产业的发展。20世纪70以来,出现了采用微型计算机控制的各种新型自动售货机和利用信用卡代替钱币并与计算机连接的更大规模的无人售货系统在日本和欧美发展起来。

在日本,70%的罐装饮料是通过自动售货机售出的;全球著名饮料商可口可乐公司在全世界就布有50万台饮料自动售货机。在日本全国各地,共设有550万台自动售货机(据1998年的统计),销售额达6兆8969亿4887万日元,为世界第一。在售货机的显示屏幕上进行操作,输入商品号码和购买数量,并投入钱币后,商品就会从取货口出来,甚至从食品自动售货机上还能买到热呼呼的面条和米饭团。虽然日本的自动售货机总台数低于美国(据1997年的统计为689万台),但是,从人口占有数来看却是世界上最高的,美国平均三十五人占有一台,而日本为二十三人占有一台。在一些国家,自动售货机的商品销售额占全国零售业的六成以上,并以每年10%的速度递增。

从1992年开始有部分来自日、韩等国引进的旧机器摆放国内市场,到自行研制和生产自动售货机,我国各厂家、商家蹒跚起步,艰难创业,已为国内零售业开辟了一片新天地。1999年以后,它逐步进人中国市场。如今,在机场、地铁、商场、公园等客流较大的场所,不难发现自动售货机的身影。顾客只要投入5元、10元、20元的纸币或硬币,就可以方便地买到诸如饮料、口香糖等小商品。作为一种前卫的零售方式,自动售货机受到了喜欢追逐时尚的年轻人的欢迎。 中国自动售货业的发展比较缓慢,国内市场由于仅仅属于市场导入期,几乎还谈不上竞争之说,满眼望去,几乎到处都是未开垦的国内市场。目前,中国的自动售货机拥有量约为4万台,相对于13亿的人口,这个数字微不足道。即使是按现在中国城市人口3.9亿人计算,平均每10000城市人口中才有一台自动售货机。

从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。 现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约10-15%的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。

现在还有些自动售货机公司售卖的商品可根据摆放场所的需要量身定制,包括冷热饮料、零食、电话卡及海外进口的特色商品等。更引人注目的是,透过这种智能售货系统,存货、销售、物流信息可以准确及时反馈给客户,此外,其还支持现金、银行卡、储值卡、代金卡等多种交易支付模式,从而使交易过程更加安全和便利,同时方便实现较大金额的支付和交易结算。这种新一代自动售货机除了更方便售卖货品之外,还被视为一种传播广泛的广告媒介。除了机器机体本身可以成为厂商的平面广告载体外,机器上所安装的LCD显示屏也可以播放动态广告。

本系统也依然存在着一系列的问题,而且有很多是在实验室很难发现的问题。尽管系统设计时,硬件设计和软件设计上都采取了多种措施来提高容错能力,但有时组态软件和PLC也会发生一些连接和控制上无效的故障。

技术参数:货道、容纳数量、商品类型、制冷制热功能(制冷剂)、识别币种、找零币种、耗电量、额定电压(220V,50HZ)。

第18篇:机器维修(保修)条例

甲方:_________(用户单位)

乙方:_________(保修单位)

为使甲方的机器保持最佳性能和工作状态,乙方依据此条例由工程师为甲方提供保修服务。

一、保修期限:自签定协议起_________年(期满后再办理续保)。

二、保修期限内,乙方主动每个月为甲方机器上门保养一次,每个月检修一次。

三、甲方在日常使用中如遇机器故障,拨打乙方服务电话:_________,乙方将在五小时内派人上门检修。

四、甲方所需黑粉、感光鼓等消耗材料由乙方提供,乙方保证供应纯正的消耗品及零配件,并负责送货上门。

五、保修期限内,乙方将机器的运行状态和维修情况记录在案,建立“机器维修档案卡”,以备查或管理。

六、机器如遇大修,根据需要可提供备用机。

七、下列情况不属保修范围:

1.他人擅自拆装或操作失误造成的损坏;

2.使用假冒或伪劣消耗材料造成的故障和损伤;

八、保修费用:_________(每年一次性收取)。

甲方(盖章):_________乙方(盖章):_________

代表人(签字):_________代表人(签字):_________

_________年____月____日_________年____月____日

签订地点:_________签订地点:_________

第19篇:基于FPGA的自动售货机毕业设计(精)

摘要

本系统采用了Altera的开发软件的Quarts II。该软件平台进行数字电路设计和仿真的方法;阐述了VHDL(Very High Speed Integrated Circuit Hardware Description Language语言的一些特点及语法结构;介绍了自动售货机系统的基本原理、系统组成和主要功能;并分析讨论了用VHDL语言开发自动售货机系统的设计流程。本设计利用Altera公司的开发软件Quartus II平台,采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,在Quartus II软件平台上进行编译和电路仿真,最后生成的目标文件下载到实验台内的FPGA芯片以实现该系统,并在实验台上对设计进行了验证。

最终完成的自动售货机系统具有投币处理、商品选择、购货撤销、异常退币、计算存货等主要功能,整个系统的开发体现了在Quartus II软件平台上用VHDL设计数字控制系统的实用性。

关键词:FPGA,EDA,VHDL,Quarts II,Altera,自动售货机 Abstract This system uses a Altera development software Quarts II .It explains the characters and program structure of VHDL(Very High Speed Integrated Circuit Hardware Description Language,the basic principle and main functions of the automat system,and the design scheme based on VHDL language.The core circuit of the automat system is implemented by VHDL program,compiled and emulate on Quarus II platform of Altera.Finally,through the object codes of the core circuit are downloaded into test instrument,the automat system is realized completely,and the validity of system design is verafiwd by the test platform.The finished automat system has the main functions of proceing the thrown coin,goods choice,purchases abolishing,drawing back the coin,calculating goods in stock

and so on.The whole system development manifests the practicability of designing the numerical control system on the Quartus II software platform with VHDL.Key Words:FPGA,EDA,VHDL,Quarts II,Altera,Vedingmachine 目录 1引言 (1 2硬件系统的设计 (1 2.1芯片的选择 (1 2.2时钟发生器 (1 2.3电源电路 (1 2.4键盘的设计 (2 2.5显示器设计 (2 3软件系统设计 (2 3.1设计思想 (2 3.1.1功能要求 (2 3.1.2总体思想 (2 3.1.3控制状态的设计 (3 3.1.4设计流程图 (3 3.2模块分类 (4 3.2.1投币模块 (4

3.2.2商品选择模块 (5 3.2.3分频模块 (6 3.2.4计数模块 (7 3.2.5出货模块 (7 3.2.6显示模块 (8 3.2.7主控模块 (9 4结果分析与讨论 (11 参考文献 (12 致谢 (13 附录1:硬件原理图 (14 附录2:软件程序 (15 1 引言

自动售货机是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。钱币装置是售货机的核心,其主要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。贮藏售货装置保存商品,接收出售指示信号,把顾客选择的商品送至付货口。一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱装置组成。从西欧、北美、日本和韩国等地区和国家的情况来看,自动售货机在人们日常生活中扮演越来越重要的角色。其产品特点是科技含量高;24 小时服务,售货便利;无需专人盯守,省人工,省成本;售货范围广泛;此外还是一种新颖独

特的广告媒体。目前,随着移动商务的发展,自动售货机作为一种方便、直观的移动商务工具,开始在全球各地迅速普及和发展[1]。

2 硬件系统的设计

本控制系统的硬件外围设备分为:外部存储器,外部电源,晶振信号发生器,以及FPGA芯片,LED外部显示灯,出货装置。

2.1 芯片的选择

本文所用到的FPGA芯片为,Altera生产的EPF10K10LC84 芯片, EPF10K10LC84-4是一种复杂可编程逻辑器件,另外还有其它类型的管脚和封装,选择性强[2]。

2.2 时钟发生器

自动售货机的控制系统需要一个时钟信号,我们选用的是6MHz的时钟信号。其中用两个振荡器以及两个电阻可以完成我们所需要的设定。

2.3电源电路

日常所用到的电源为220V电压的电源,但是本课题中自动售货机所需要的电压为5V,因此我们需要设定一个变压电路来完成所需的电压。在这部分电路我们用到了一个变压器,一个整流桥,一个滤波电路,一个稳压器完成为5V电压的电源。

2.4 键盘的设计

为了完成购物自动售货机必须有购物键,本课题所要求的是五个按键,其中四个是商品选择键(热狗,饮料,汉堡,双层汉堡,剩下的一个按键为初始按键[3]。关于输入按键的信号发生情况将在下文中的软件系统设计中阐述,这里就不多叙述。2.5显示器设计

自动售货机需要一个显示灯,当购物结束后显示器显示找零钱数额。对于显示器的显示数字情况,将在下文软件系统中的显示模块进行阐述。

3软件系统设计

软件系统分为总体思想与模块的分类。 3.1设计思想 3.1.1 功能要求

1.该系统能完成对货物信息的存储、进程控制、钱币处理、余额计算和显示功 能。

2.举例说明:如果自动售货机能够销售4种商品:热狗(1元,汉堡包(4元, 双层汉堡包(8元,饮料(3元数量无限。自动售货机允许投入1元,2 元,5元硬币:当总币值等于顾客需要的商品单价时,机器送出需要的商品:若总币值大于顾客需要的商品单价时,机器除提供所需商品外,并将余币退

出;若总币值小于顾客需要的商品单价时,机器退出顾客投入的硬币。设机 器内1元和2元的找零硬币无限。

3.每次投币的时间有限制,不得超过30秒,在时间到时,总币值不足顾客购买 的商品单价时,自动售货机按不足钱数处理,退还全部硬币。或者在设定时 间内,总币值不足顾客购买的商品单价时,若需要取消交易则可按取消键, 售货机按不足钱数处理,退还全部硬币。

4.当顾客完成一次购买后或按错按钮后,需要设置一个重新开始按钮,使整个

系统恢复到初始状态。

5.顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作[4]。3.1.2 总体思想

自动售货机包括四个商品,依据四种商品分别设为四个按钮,A1,A3,A4,A8。当 顾客选择其中的一种商品时,售货机发送出一个信号按钮不再生效,用一个LED 灯显示。设置三个按钮:a1,a2,a5来表示投入的硬币是1元、2元、5元。当顾客投入的硬币大于或等于售价时将不再接受硬币,用一个LED 灯显示。当顾客确定某种商品且投入了足额的硬币,投币时限到时,投币窗口找零,用七段显示管显示找零数,同时送出商品,指示灯out 亮[5]。

3.1.3 控制状态的设计

此售货机分为三种状态:初始状态,投币状态,找零状态。

1.初始状态:当售货机通电后进入初始状态,顾客购买时,可根据选择 xuan_rg,xuan_yl,xuan_hb,xuan_schb 键购买商品,从而进入下一状态。当顾客 购买错误或不再购买时按下start 重新进入初始状态。

2.投币状态:在这个状态时xuan_rg,xuan_yl,xuan_hb,xuan_schb 键失效。投入钱 (1元,2元,5元,当投入硬币等于或者超过商品价格时进入下一状态。 投币时间 为30秒超过30秒,售货机拒绝接受钱币。

3.找零状态:投币结束,售货机自动判别总钱数,若在时限到来之际,总钱数 少于顾客所需商品的单价,则退出钱币,用LED 显示退钱数。若大于或等于 商品数则通过控制系统找零,用LED 显示找零数,送出商品[6]。

3.1.4 设计流程图

系统设计流程图,如图3-1所示。 图3-1 系统设计流程示意图 是 是 否 否 否 是

热狗 饮料 汉堡 投币

计算金额 金额>物价 继续投币 确认购买 出货找零 退币 结束 双层汉堡 开始 3.2 模块分类

此售货机模块包括:投币处理模块,商品选择模块,投币模块,分频模块,控制器模块,计时模块,LED灯显示模块,找零模块,出货模块,如图3-2所示。

图3-2 模块示意图 3.2.1 投币模块

自动售货机能够自动计算投入的钱币数目,需要提供一个寄存器来记录并保存投入的总币值。此模块有六个输入信号以及两个输出信号:qian1,qian2,qian5为不同数额钱币输入信号;en1为主控模块所发出的信号,当en1信号为1的时候,投币模块开始工作;reset为恢复初始信号,当reset信号为1 的时候投币模块不进行工作;en 为给计时器的输出信号,当en为1的时候计时器开始工作;bi为输出的钱币数目。通过程序所得到的仿真图如下所示[7]。

1.当reset输入为0,输入为5元2元1元时,输出结果为7。仿真结果如图3-3所示。

图3-3 reset输入为0时的仿真结果

2.当reset输入为1时,输入5元,2元,1元,bi输出应为0。仿真结果如图3-4所示。

图3-4 reset输入为1时的仿真结果 3.2.2 商品选择模块

自动售货机的商品选择模块,通过自动售货机上的四个选择按键完成商品选择,在接收到对应四个商品之一的一个选择信号时进行编译,将被选择的商品进行编码,输入到主控模块中,在主控模块中与所接受的钱币进行对与计算。输入信号为a1,a2,

a3,a8。而xuan_rg,xuan_hb,xuan_yl,xuan_schb为四个输出信号,与出货模块连接。reset 与en2信号来自主控模块,当reset为1时模块进入初始状态,进行选择。当en2为1时,商品可以进行选择,当en2为0时,四个商品选择键无效[8]。商品选择模块如图3-5所示。

图3-5 商品选择模块 通过程序所得仿真结果如下: 1.当reset输入为1,en2输入为0,a8输入为1时,d输出应当为0,仿真结果如图3-6所示。

图3-6 reset输入为1,en2输入为0,a8输入为1时的仿真结果

2.当reset输入为0,en2输入为0,a8输入为1时,d输出为0,仿真结果如图3-7所示。

图3-7 reset输入为0,en2输入为0,a8输入为1时的仿真结果

3.当reset输入为0,en2输入为1,a8输入为1时,d输出为8,xuan_schb输出为1,仿真结果如图3-8所示。

图3-8 en2输出为2时的仿真结果 3.2.3 分频模块

分频模块是用来将外来的时钟信号进行分频,由于硬件系统已经知道,选用的时钟信号是由外部的6MHZ的晶振提供的,通过分频模块进行分频以后将得到周期为1HZ的信号[9]。由于仿真所需时间过长,本文选择100.0ns为一周期的信

号,分频后为6.0us为一周期的信号,时钟输入信号为clk,输出信号为newclk,分频模块如图3-9所示。

图3-9 分频模块

通过程序所得到的仿真结果如下: 当clk第15输出为上升沿时,newclk输出为1,仿真结果如图3-9所示。

图3-10 newclk输出为1时的仿真结果 3.2.4计数模块

由于课题要求自动售货机控制系统有定时系统,并限定在30s内完成投币,30s 之后投币无效,因此需要设定一个计数模块对投币时间进行限制。en为接受信号,当投币开始时投币模块发出信号,计数模块开始工作,当计数到30时向控制模块发出t信

号。Clr为控制器发送给计数模块的一个信号,当clr为1时,计数器归零。Clk 为分频模块发送的时钟信号。计数模块如图3-11所示。

图3-11 计数模块 3.2.5 出货模块

出货模块是自动售货机给出相关货物的信号,本课题要求货物为四个商品,因此出货模块有5个输入信号,xuan_rg,xuan_sb,xuan_yl,xuan_schb,为所购商品的输入信号,en为控制模块所给的信号当en=1时出货模块开始工作,然后对顾客所选择货物进行出货[10]。

出货模块有四个输出信号为所选择的货物的输出信号。出货模块如图3.12所示。

图3-12 出货模块 出货模块的仿真结果如下: 1.当输入信号en为1,xuan_rg信号为1时,chu_rg信号为1,仿真结果如图3-13所示。

图3-13 chu_rg信号为1时的仿真结果

2.当输入信号en为0,xuan_rg信号为1时,chu_rg信号为0,仿真结果如图3-14所示。

图3-14 chu_rg信号为0时的仿真结果 3.2.6显示模块

显示模块的作用是对购物结束后的所需找零数目进行显示。找零显示模块的输入端接收来自控制模块的输入信号,输出端外接LED显示灯,由于找零的数目为范围为0至8,因此只需要一个LED显示灯,输出信号为a,b,c,d,e,f,g。找零显示模块如图3-15所示。

图3-15 显示模块

当输入信号di为2时,g输出为1,f输出为0,e输出为1,d输出为1,c输出为0,b输出为1,a输出为1,仿真结果如图3-16所示。

图3-16 di输入为2时的仿真结果 3.2.7 主控模块

主控模块为自动售货机控制系统的核心部分,在主控模块中将输入的钱币数目(b与商品的价格(d进行对比,然后进行找零并发出出货信号。输入信号t为计时信号,当时间超过30s时,商品不再接受货币。Clk为控制系统的时钟信号。输出信号di,c分别为找零显示模块的输入信号与找零信号。en为控制出货模块的信号,当en值为1时,确认出货模块可以输出商品。Start为复位信号,当start值为1时,自动售货机回到初始状态。Clr为计数模块的控制信号,当收货完成后,Clr输出为1,计数模块回到初始状态归零。en1与en2分别为投币模块与商品选择模块的控制信号,当en1为0时,投币模块不工作,当en2为0时商品选择模块不工作。主控模块如图3-17所示。

图3-17 主控模块 主控模块的仿真结果如下: 1.当start输入为0,t输入为0,b输入为5,d输入为4时,c输出为1,clr输出为1,en输出为1,en1输出为1,reset输出为1,仿真结果如图3-18所示。

图3-18c输出为1,clr输出为1,en输出为1,en1输出为1,reset 输出为1时的仿真结果。

2.当start输入为0,t输入为1时,b输入为5,当输入为4时(b>=d,c输出为1,en输出为0,en1输出为0,clr输出为1,en2输出为0,仿真结果如图3-19所示。

图3-19 c输出为1,en输出为0,en1输出为0,clr输出为1,en2 输出为0 时的仿真结果。 4 结果分析与讨论

通过设计简单的自动售货机,详细了解了自动售货机的投币模块,商品选择模块,主控模块等模块的软件设计与实现主要功能的模块的仿真。经过仿真与实践,整个系统的工作稳定可靠,具有较强的适应性,当需要增加商品时,此控制系统只需增加相对的输入信号,硬件原有的电路不应改变,因此在自动售货机行业可以得到广泛的应用。不过缺点是只能完成相对比较简单的自动售货机功能,实现金额计算,发放商品,找零,退币等功能。由于其中是商品存货无限,找零无限,因此不会出现找零钱币与商品存货的不足的情况。解决办法是通过增加模块,与输入信号来解决。

仿真过程中遇到的问题主要有:

1、在仿真过程中由于原有时钟信号分频模块仿真时间过长,因此用频率相对较小的晶振进行代替仿真。

2、仿真过程中找零所得钱币数目不能达到预期效果,通过调整主控模块程序已得到解决。

参考文献

[1] 袁亚恒,周伟.基于VHDL的自动售货机设计[J],武汉理工大学学报,武汉:信息管理工程版, 2007.3 [2] 宋潇,李佩佩,韩莹莹.自动售货机控制设计[J],科技信息,机械与电子,2009.3 [3] 谭卫泽,徐畅.面向FPGA器件的VHDL语言优化设计方法[J],南宁职业技术学院学报.2008.4 [4] 陈志刚.VHDL语言在电路设计中的优化[J], 电子测试.2008.9 [5] 周润雅等.基于QuartusII的FPGA/CPLD数字系统设计实例[M],北京:电子工业出版社,2007.5 [6] 姜雪松,吴钰淳,王鹰.VHDL设计实例与仿真[M],北京:机械工业出版社,2006.3 [7] 徐光军,徐光辉.CPLD/FPGA的开发与应用[M],北京:电子工业出版社,2002.10 [8] PETER R.WILSON.UNDERSTANDING THE FPGA DESIGN FLOW, Electronics world,2008.1 10L.M.Wu; W.B.Hu;N.H.Lai; G.T.Wang The Reconfigurable Embedded Nc System Based On Fpga[M],Key Engineering Materials .2009.1 [9] Mark D.Birnbaum .Eential electronic design automation (EDA.China Machine Pre, 2005.9 [10] Rusdiansyah A, Tsao D B.An integratedmodel of the periodic delivery problems for vending - machine supp ly chains [ J ].Journal of Food Engineering, 2005.7 致谢

本课题在选题及研究过程中得到朱永琴老师的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。

从课题的选择到项目的最终完成,朱老师都始终给予我细心的指导和不懈的支持。在此谨向朱老师致以诚挚的谢意和崇高的敬意。

同时我要感谢同学们对我做毕业设计期间的帮助,由于他们的热情帮助促使我能在规定时间内完成我所做的课题,对于同学们的帮助我深怀感激之情。

附录1:硬件原理图

附录2:软件程序 投币模块主要程序如下: library ieee; use ieee.std_logic_1164.all; entity toubi is

port (a1,a2,a5,en1,clk,reset:in std_logic; bi:out integer range 0 to 15; en:out std_logic; end toubi; architecture a of toubi is signal state:integer range 0 to 1; begin proce variable qian:integer range 0 to 15; begin wait until clk=‘1’and clk\' event;

if reset=‘1’ then state if en1=‘1’ then if a1 =‘1’ then state

end if; when 1=>if en1=‘1’ then if a1=‘1’ then qian:=qian+1;bi

elsif a5=‘1’ then qian:=qian+5;bi

if reset=‘0\' then

if a1=‘1\' and en2=‘1\' then

d

d

d

else d

END fenpi; ARCHITECTURE a OF fenpi IS SIGNAL Q:INTEGER RANGE 0 TO 14; SIGNAL DIVCLK: STD_LOGIC; BEGIN PROCESS(CLK BEGIN IF CLK\'EVENT AND CLK=\'1\' THEN IF Q

port(clk,en,clr: in std_logic; t: out std_logic; end jishu; architecture a of jishu is signal bcd1n: std_logic_vector(3 downto 0; begin if (clr=\'1\' then bcd1n

cd10n

(xuan_rg,xuan_hb,xuan_yl,xuan_schb,en3 : IN STD_LOGIC; chu_rg,chu_hb,chu_yl,chu_schb:OUT STD_LOGIC; END chuhuo; ARCHITECTURE a OF chuhuo IS BEGIN proce begin if en3=\'0\' then chu_rg outp:=\"1111110\"; WHEN 1 =>outp:=\"0110000\"; WHEN 2 =>outp:=\"1101101\"; WHEN 3 =>outp:=\"1111001\"; WHEN 4 =>outp:=\"0110011\"; WHEN 5 =>outp:=\"1011011\"; WHEN 6 =>outp:=\"1111110\"; WHEN 7 =>outp:=\"1011111\";

WHEN 8 =>outp:=\"1111111\"; WHEN 9 =>outp:=\"1111011\"; WHEN OTHERS =>null; END CASE; a if d=0 then current_state

第20篇:自动售货机PLC控制系统指令表的控制程序

黄石理工学院毕业设计(论文)

指令表

LD X0 OR

M200 PLS M0 LD M0 ADD K1 D0 D0 LD X1 OR M201 PLS M1 LD M1 ADD K2 D0 D0 LD X2 OR M202 PLS M2 LD M2 ADD K5 DO D0 LD M8000 CMP K12 D0 M51 CMP K15 D0 M55 LD M52 OR M53 OUT M4 OUT Y7 LD M56 OR M57 OUT M5 LD X3 OR M203 OR Y1 MPS ANI Y3 PLS M103 MPP AND M103 AND M4 ANI Y3 SET M10 LD T0 RST M10 LD M10 OUT TO K70

黄石理工学院毕业设计(论文)

LD M4 ANI M10 OR M10 MPS ANI T1 ANI M11 OUT Y0 MRD ANI T2 AND M10 OUT T1 K5 MPP AND T1 AND M10 OUT T2 K5 LD M10 ANI T0 ANI Y3 MPS ANI Y1 PLS M104 MPP AND M104 AND M5 ANI Y1 SET M11 LD T4 RST M11 LD M11 OUT T4 K70 LD M5 ANI M11 OR M11 MPS ANI T5 ANI M10 OUT Y2 MRD ANI T6 AND M11 OUT T5 K5

黄石理工学院毕业设计(论文)

MPP AND T5 AND M11 OUT T6 K5 LD M11 ANI Y1 ANI T4 OUT Y3 LD M103 AND M4 SUB D0 K12 D0 LD M5 AND M104 SUB D0 K15 D0 LD M205 OR Y14 OUT Y14 LD X5 OR M205 OR Y14 MPS CMP K5 D0 M60 MRD LD M61 OR M62 ANB MPS AND M220 MRD AND T11 PLS M220 MRD ANI T10 OUT Y6 MRD ANI T11 OUT T10 K10 MPP AND T10 OUT T11 K10 MPP

黄石理工学院毕业设计(论文)

AND M60 MPS CMP K2 D0 M65 MRD LD M66 OR M67 ANB MPS AND M221 SUB DO K2 D0 MRD AND T13 PLS M221 MRD ANI T12 OUT Y5 MRD ANI T13 OUT T12 K10 MPP AND T12 OUT T13 K10 MPP AND M65 MPS CMP K1 D0 M80 MRD LD M81 OR M82 ANB MPS AND M222 SUB D0 K1 D0 MRD AND T17 PLS M222 MRD ANI T16 OUT Y4 MRD ANI T17

黄石理工学院毕业设计(论文)

OUT T16 K10 MPP AND T16 OUT T17 K10 MPP AND M80 MPS ZRST M0 M300 MRD ZRST T0 T20 MRD RST D0 MPP RST Y14 END

自动售货机机器维修岗位职责
《自动售货机机器维修岗位职责.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档