当前位置:文档之家› 基于FPGA自动饮料售货机

基于FPGA自动饮料售货机

基于FPGA自动饮料售货机
基于FPGA自动饮料售货机

自动饮料售货机

目录

1.前言 (1)

2.设计流程图 (2)

3.源代码编写 (3)

4.仿真时序图 (6)

5.分析与总结 (7)

6.参考文献 (7)

1.前言

本人在本科阶段自学了一部分PLC,并运用PLC完成了本科的毕业设计,同在毕业设计课题组的同学选做基于PLC自动饮料售货机的设计,当时对自动饮料售货机的控制系统了解仅限于基于单片机与PLC的控制没有亲自动手去尝试设计。在本学期,全新的接触和学习了FPGA课程,正处于一个FPGA的入门阶段,基于以前的兴趣,该次尝试基于FPGA简单设计自动饮料售货机的一部分控制。本次是采用Quartus II 13.0sp1进行了程序源代码的编写和时序仿真。

图1-1自动饮料售货机内部结构图

图1-2自动饮料售货机内部结构图

2.设计流程图

图2-1自动饮料售货机示意图

图2-2自动饮料售货机流程图

3.源代码编写

/*信号定义:

clk: 表示时钟输入;

rst_n: 为系统复位信号;

half_yuan: 代表投入5角钱币;

one_yuan: 代表投入1元钱币;

half_out: 代表找零信号;

dispense: 代表机器售出一瓶饮料;

collect: 用于提示投币者取走饮料.

seg1: LCDA数码管显示;

seg2: LCDB数码管显示;

seg3: LCDC数码管显示;*/

module SCD(half_yuan ,one_yuan,half_out,collect,dispense,rst_n,clk,seg1,seg2,seg3);

parameter idle=0,half=1,one=2,two=3,three=4; // idle,half,one,two,three代表投入钱币的几种状态

input half_yuan,one_yuan,rst_n,clk;

output collect,half_out,dispense,seg1,seg2,seg3;

reg[2:0]D; //D代表当前时刻投币的状态

reg temp1,temp2;

reg collect,half_out,dispense;

reg [3:0]seg1; reg[3:0]seg2; reg[7:0]seg3;

always @(posedge clk or negedge rst_n)

begin

if (!rst_n)

begin dispense<=0;collect<=0;

half_out<=0;D<=idle;

temp1<=0;temp2<=0;

{seg1,seg2}<=8'b0000_0000;{seg3}<=8'b11111101;end

else

begin temp1<=half_yuan;temp2<=one_yuan; //初始状态赋值

case(D)

idle: if ({temp1,half_yuan}==2'b10) //0元状态下检测下降沿

begin D<=half;

{seg1,seg2}<=8'b0000_0101;{seg3}<=8'b1111_1101; //数码管显示

dispense<=0;collect<=0;half_out<=0;end //循环时输出置0

else if ({temp2,one_yuan}==2'b10)

begin D<=one;

{seg1,seg2}<=8'b0001_0000;{seg3}<=8'b1111_1101;

dispense <=0;collect<=0;half_out<=0;end

基于plc的自动售货机程序设计

题目:基于plc的自动售货机程序设计 1 PLC的硬件组成 PLC的硬件主要由中央处理器(CPU)、存储器、输入单元、输出单元、通信接口、扩展接口、电源等几部分组成。其中,CPU是PLC的核心;输入单元/输出单元是CPU 与现场输入/输出设备之间的接口电路;通信接口用于连接编程器、上位计算机等外部设备,其硬件构成图如图1-1。 图1-1 PLC硬件结构图 2 PLC控制自动售货机的主要硬件及选型 2.2.2自动售货机I/O点的分配 输入/输出单元通常也称I/O单元或I/O模块,是PLC与工业生产现场之间的连接部件。PLC通过输入接口可以检测被控对象的各种数据,以这些数据作为PLC对被控对象进行控制的依据;同时PLC又通过输出接口将处理的结果送给被控对象,以实现控制目的。本次自动售货机I/O点的分配表如表3-1所示。 输入信号PLC地址输出信号PLC地址 找零按钮x0 找零y0 一元饮料按钮x1 咖啡出口y1 五元饮料按钮x2 汽水出口y2 十元元饮料按钮x3 汽水指示灯y3 咖啡饮料按钮x4 咖啡指示灯y4

2.2.3自动售货机的I/O接口图 此次自动售货机的I/O接口如图3-1所示,SB2-SB7是物品选择按钮,当投入货币物品绿灯亮(Q1.0-Q1.5)。按下SB2-SB7其中一个,对应的KM线圈得电,电机转动出相应的物品(Q0.1-Q0.6);当有物品售完,其行程开关断开,物品绿灯不亮并同时向总部发送物品销售完的信息;当购买物品总值低于投入总值时,可按找零按钮SB1后KM1得电,电机转动找零(Q0.0)。 图3-1自动售货机PLC控制I/O接口图 4.1.2 数学运算指令 在梯形图中,整数、双整数与浮点数的加、减、乘、除指令(见表4-2)分别执行下列运算:IN1+IN2=OUT,IN1-IN2=OUT,IN1*IN2=OUT,IN1/IN2=OUT。 在语句表中,整数、双整数与浮点数的加、减、乘、除指令分别执行下列运算:IN1+OUT=OUT,OUT-IN1=OUT,IN1*OUT=OUT,OUT/IN2=OUT。 表4-2 加减乘除指令

自动售货机管理程序

1引言 21世纪,我们已经进入了信息时代,计算机的使用大大方便了我们的日常生活,超市和网上购物已经不能满足我们对便利生活的要求,不能随时随地购物的缺点不能克服的。在此情况下,就需要一个程序化的自动售货机来满足人们日常生活的需求。在C语言的平台下实现,用户可以方便的进行各项购物操作。 C语言是一种程序设计语言,早在20世纪90年代,C语言表现出了强劲的生命力,C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此可以广泛地移植到了各类型计算机上,从而形成了多种版本的C语言。 采用输入函数和输出函数方式,可以完成对待售物品的名称、数量、价格的输出、顾客所选物品的输入、以及其它购物信息显示。

在对自动售货机管理程序进行需求分析的过程中,需要确定系统的主要功能,对程序开发的主要目的、程序的使用领域和有关该程序开发的软硬件环境进行详细的分析。下面从系统概述、功能模块描述两个方面进行需求分析。 2.1程序概述 自动售货机管理程序是运行于Windows系统下的应用软件,主要用于对待售商品的品名、价钱、数量、生产日期、保质期、编号进行输出等操作。 2.2功能需求 自动售货机管理程序为路边的行人提供了一个随时随地进行购物的平台,给消费者提供了一个简单友好的购物窗口,功能需求如下: (1)输出模块 程序在消费者购物前将所售商品的品牌输出以供消费者选择品牌,然后将消费者选择的品牌下的商品信息输出让消费者选择所需的商品,最后输出“请你付款班级”提示消费者完成购物。 (2)输入模块 让将消费者选定的商品的编码输入程序中然后进行价格的输出,以上述的方式让消费者把购物数量输入进程序中,最后将消费者付款金额输入,进而完成找钱。 (3)返回模块 如果消费者所输入的商品编码自动售货机上没有,则程序自动跳转到商品品牌的选择,提示消费者输入正确的商品编码。并且如果消费者输入的购买数量大于库存数量,程序将自动返回到商品的数量选择界面下,还有如果消费者的付款金额小于消费金额时,程序将自动返回到付款界面。 (4)找钱模块 将消费者付款金额进行判断后,进行一定运算后按50元、20元、10元、1元的分类分别找对。 程序由上述几个模块组成,能帮助消费者以自助的方式完成所需商品的购买并且有效地减少购物时间。另外还能节省售货者的管理时间,大大的提高管理的效率。

简单自动售货机VerilogHDL程序

自动售货机VerilogHDL程序 一个简单的自动售卖饮料机的程序。该机器具有投币,显示余额,购买六种饮料,退钱等功能,为了更具实用性,增添了饮料选择允许提示和投币允许提示的功能。具体形容,可投入一元、五元、十元和二十元面值的钱币,显示出当前的余额,并根据当前的余额提示能购买哪些饮料,选择某种饮料,则输出选定的饮料,同时余额减去相应的金钱。若选择退钱,机器就退出所有的钱,余额清零。 下图为功能示意图: 程序的状态表:

程序中包含了一个状态机,定义了一个任务(task)和函数(function),用该任务调用了该函数,使用若干分支语句,详见附后源程序和测试程序。 附上程序编译仿真图:

源程序如下: `define one 3'b001 `define five 3'b010 `define ten 3'b011 `define twenty 3'b100 module automart(money,state,moneyout,coinable,adrkable,bdrkable, cdrkable,drkout1,drkout2,drkout3,drkout4,drkout5, drkout6,coin,clk,reset,moneyback,choice1,choice2, choice3,choice4,choice5,choice6); input[2:0] coin;//投币输入,分为1、5、10、20元四种输入 input clk,reset,moneyback,choice1,choice2,choice3,choice4, choice5,choice6;//moneyback为退钱输入,choice1~6是饮料选择output moneyout,coinable,adrkable,bdrkable,cdrkable,drkout1, drkout2,drkout3,drkout4,drkout5,drkout6; //依次为退钱输出,投币许可提示,饮料选择许可,6种饮料输出output[2:0] state;//状态记录 output[7:0] money;//余额显示 reg[7:0] money; reg[2:0] state; reg moneyout,coinable,backable,adrkable,bdrkable,cdrkable; parameter A=3'b000, B=3'b001, C=3'b010,D=3'b011, E=4'b100; assign drkout1=choice1&adrkable;

自动售货机控制系统的设计最终版

精品文档 课程设计任务书 PLC控制系统设计设计题目:饮料自动售货机 学院:机械工程学院 机械测控专业: 班级: 姓名: 组员: 指导老师:

精品文档 摘要】【本文介绍了自动售货机的基本原理以及工作流程,然后以一 次交易过程为例,把交易过程分为几个程序块,然后分别对程序块进行编程。具体说明了可编程序控制器在自动售货机中的作用。程序涉及到了自动售货机工作的绝大部分过程。利用PLC控制的自动售货机提高了系统的稳定性,保证自动售货机能够长期稳定运行。 关键词:自动售货机;可编程序控制器;梯形图 Abstract:This paper introduces the basic principles of vending machines, as well as workflow, and then to a transaction process as an example, the transaction process is divided into several block, and then the block were programmed. Specify the PLC in the role of vending machines. Procedures related to the work of the vast majority of vending machine process. PLC control of the use of vending machines enhance the stability of the system to ensure that vending machines capable of long-term stable operation.

自动售货机系统源代码

#include #include #include #include "goods.h" bool GetCharge(int Sum,int Money); void Getsmalcharge(int Money,int *ChargeNum); int KouLing(); char ChooseJieMian(); char SaleCenter(); void loadGoodsFromFile(Goods* gs); char ManageCenter(); void KunCun(); void Sale(); void ShangJia(); void TongJiFun(); Goods goods[3]; TongJi tj[3]; void init(){ for(int i = 0; i < 3; ++i){ tj[i].jrxl = 0; tj[i].jrzje = 0; } } void main() { //初始化 init(); int op = 0; //读取商品信息 loadGoodsFromFile(goods); char c = ChooseJieMian(); while(true) { system("cls"); if( c == '1'){ c = SaleCenter(); }else if(c == '2'){ op = KouLing(); if(op == 1){ //进入管理界面 c = ManageCenter();

//system("pause"); } else if(op == 0){ //进去销售界面 c = SaleCenter(); } } } } //---------------------------------------------------- /** * @return 1销售界面2管理界面 */ char SaleCenter() { char state='N'; int Sum=0; char Pro = 'd'; // printf("\n********************************\n"); while(true) { state='N'; Sum=0; while(!(Pro == 'c' || Pro == 'a' || Pro == 'b' || Pro == 'q')) { system("cls"); printf("\n\t*******************************************"); printf("\n\t*********顾客您好,请选择商品**************\n"); printf("\n\t·a·商品%s ·b·商品%s ·c·商品%s ·q·管理\n",goods[0].name,goods[1].name,goods[2].name); printf("\n\t -%d- -%d- -%d- (单位:件)",goods[0].totalCount,goods[1].totalCount,goods[2].totalCount); printf("\n\t*******************************************\n\t\t"); Pro = getchar(); } if(Pro == 'q') break; switch(Pro) {

自动售货机C++程序设计

#include using namespace std; class Shop{ public : void shop(); float money(); float choose(); void out(); void con(); int a,b,c,d,v; }; void Shop::out(){ cout<<"该商品已售完\n\t\t1、购买其他商品\n\t\t2、退出"<>money; //输入 if (money!=0.5&&money!=1&&money!=2&&money!=5&&money!=10) {cout<<"请投入可接受面额!"<

cout<<"已投入金额: "<>a; switch(a){ case 1:{ if(f<=0){ out(); cin>>v; if(v==1){ shop(); continue; } if (v==2)exit(-1);} if(sum>=2) {f--;}change=sum-2; }break; case 2:{ if(g<0){ out(); cin>>v; if(v==1){ shop(); continue; } if (v==2)exit(-1); } if(sum>=2) {g--;}change=sum-2; }break; case 3:{ if(h<0){ out(); cin>>v; if(v==1){ shop(); continue;}

自动售货机代码

自动售货机控制电路设计 程序功能 本系统简单的完成了对街头自动售货机的一个模拟,算是一个小型售货机,可以完成简单的商品选择与投币处理,及输出找零等一系列流程。 调试和解决方案 调试步骤 具体的调试步骤如下: ①运行Quartus II,建立新的工程。 ②建立文本文件V erilog HDL File。在文件中写入程序。保存,编译。 ③分配管脚。保存,编译。 ④将生成的.sof文件写入FPGA试验箱中。 ⑤根据要求选择几种买东西的可能情况,在实验箱上实验,观察记录结果。调试现象 ⑴选择买1.5元的商品,投5元的金额,调试现象如下: ①选择1.5元商品 ②按下5元投币键 ③LED显示找零情况和商品。 ⑵选择1.5元的商品,投1元的金额,调试现象如下: ①选择1.5元的商品, ②按下1元的投币键, ③找零显示1元,退回所投的钱,蜂鸣器响。 测试成功

使用仪器 1.电脑一台,安装了ModelSim软件和QuartusII软件。 2.FPGA试验箱一个,内有2组4位共阳极数码管,6个LED灯。 程序代码 //先选择物品并投币 module seller(clock,reset,s1,s2,s3,s4,s5,s6,s7,LED,buzzer,prc1,cs1,prc2,cs2); //clock时钟信号,reset确认信号和复位信号 //LED代表售出标志,buzzer蜂鸣器报警标志金额不够 //prc1数码管显示商品价格,prc2数码管显示找零 //cs表示数码管片选,cs1 选择控制商品价格显示,cs2 选择控制找零显示 //s1:投币5角 s2:投币一元s3:投币五元 //s4:购买五角商品s5:购买一元商品s6:购买一元五角商品s7:购买二元商品input clock,reset,s1,s2,s3,s4,s5,s6,s7; output LED,buzzer,prc1,cs1,prc2,cs2; reg buzzer; reg [3:0] LED,cs1,cs2; reg [7:0] prc1,prc2;//a.b.c.d.e.f.g.dp reg [7:0] divtime=8'b0; reg [28:0] deltime=29'b0; always @( posedge clock)//控制片选信号的选择 begin divtime=divtime+1; end always @( posedge clock) begin deltime=deltime+1; if(deltime[28]==1'b1) begin deltime=29'b0; end if(reset) begin deltime=29'b0; end end always @( posedge clock) begin LED=4'b1111;//all LED ON buzzer=1'b0;//蜂鸣器不响

完整版PLC课程设计(自动售货机)

目录 摘要 (1) 1 绪论 (2) 1.1 设计任务 (2) 1.2 设计要求 (2) 1.3 PLC可编程控制器简介 (3) 1.3.1 PLC的基本概念 (3) 1.3.2 PLC的基本结构 (3) 2 总体设计和系统框图 (4) 2.1 控制程序流程图设计 (4) 2.2 控制程序时序图设计 (4) 2.3 控制程序设计思路 (5) 3 设计方案 (6) 3.1 PLC与上位监控软件通讯 (6) 3.2 上位监控系统组态设计 (7) 3.2.1 仿真系统组成 (7) 3.2.2 仿真实验的售货分析 (7) 3.3 系统变量定义及分配表 (8) 4 系统仿真和调试 (9) 4.1 硬件和软件调试 (9) 4.2 梯形图 (10) 总结 (14) 致谢 (15) 参考文献 (16)

摘要 本文简要介绍了PLC可编程控制器的基本概念和基本结构,又简要分析了自动售货机的基本功能及工作方式。设计了一个基于PLC的自动售货机控制系统。 本设计使用三菱公司开发的可编程控制器实现对自动售货机的控制,设计了1元、5元和10元三种投币方式。自动售货机内有12元、15元和20元三种商品,当投入币值大于或等于商品价格时,则可以购买该商品。当自动售货机内还有剩余钱额时,则可以实现退币功能。设计实现了货币的自动加、减和比较功能。 关键词:自动售货机;PLC;可编程控制器

1 绪论 1.1 设计任务 设计一台完整的销售汽水和咖啡的自动售货机,具有硬币识别、币值累加,自动售货、自动找钱功能,此售货机可接受的硬币为1元、5元和10元。有三个钱币输入按钮,X0代表1元,X1代表5元,X2代表10元,当投入的硬币总值超过12元时,汽水指示灯Y3亮。当投入的硬币超过15元时,汽水指示灯Y3和花茶指示灯Y4亮。当投币超过20元时,汽水和花茶及咖啡指示灯Y5都亮。如果要汽水则按汽水按钮X3,这时汽水输出指示灯Y3亮,输出汽水,然后汽水指示灯闪烁,5 s后停止。如果要花茶则按花茶按钮X4,这时花茶输出指示Y4亮,输出花茶,然后花茶指示灯闪烁,5s后停止。如果要咖啡,则按咖啡按钮X5,这时咖啡输出指示灯Y5亮,输出咖啡,然后咖啡指示灯闪烁,5s 后也自动停止。当要完汽水、花茶或咖啡时,如有多余的钱,则找钱指示灯Y10亮,如果多余钱超过10元则找钱口Y7自动退出余额,2s 后停止,如果少于十元则找钱口Y8自动退出余额。X6为手动复位按钮。 1.2 设计要求 随着科技的发展和社会的进步, 自动化商业机械有了越来越广泛的应用, 自动售货机作为自动化商业机械的代表被广泛用于公共场所。人们通过自动售货机可以买到食品、香烟、饮料、报纸、票、卡甚至鲜花和小宠物等物品。自动售货机实现了商品需求化、性能多样化的发展, 又由原来只能出售有限商品品种, 转变为继百货公司、超级市场、便民店之后,以消费者与售货机“一对一”自动售货的无店铺销售业态。自动售货, 给人们的生活带来了极大的方便。自动售货机的新奇、文明、高档、灵活方便等深受广大市民青睐。 售货机的最基本功能就是对投入的货币进行运算,并根据货币数值判断是否能购买某种商品,并做出相应的反映。因此,售货机应能够辨识机内包含的商品:售货机应该能够显示已投入的币值,以及再投入货币累计显示;同时提示可以购买的商品(或商品的编号)。当按下选择商品的按钮时,售货机进行减法运算,从投入的货币总值中减去该商品的价格,同时起动相应的电机,提取该商品到出货口,此时售货机继续等待外部命令,如继续交易,则同上,如果此时不再购买,则按下退币按钮,售货机进行退币操作,退回相应的货币,并在程序中清零,完成此次交易。

(完整word版)自动售货机合作协议

自动售货机合作协议 甲方: 地址: 乙方: 地址: 经双方协商,本着诚信、平等、互利、双赢的合作原则,双方就自动售货机合作事宜达成如下协议: 一、合作内容: 1、甲方向乙方提供设备摆放场地,指定在(地 址)。 2、乙方在甲方指定地点的办公区域及职工生活区 放置台自动售货机,自动售货机型号为:。 二、合作期限 1、协议期限为自2018 年月日起至20 年 月日止,共年。 2、协议期满后若乙方有意续约,应于合同期满前30日书面通知甲方,甲方同意续约的,双方重新签订合作协议。 三、合作费用及付款方式 1、乙方每台自动售货机支付甲方管理服务费 元/年/台,合计费用为元/年,该费用在签订合同后15日内按年度支付给甲方,此后每年度开始15日内乙方应将本年度费用支付给甲方,甲方收到该费用后15个工作日内开具发票给乙方。

2、在自动售货机运行期间产生的电耗,用电度表计量方式进行结算,电度表由乙方自行安装,计费标准为 1 元/度电,每月查表一次,乙方按照实际度数按约定收费标准支付电费给甲方,甲方收到电费后开具收据给乙方(电表数以双方确认数据为准)。 四、双方权责 (一)甲方权责: 1、甲方管理人员如发现自动售货机损坏及故障,应及时通知乙方,并为乙方的维修工作提供便利,甲方不承担赔偿责任。 2、如因甲方生产经营需调整自动售货机摆放位置的,甲方有权要求乙方在收到甲方通知后日内将自动售货机按要求搬迁至指定位置。 3、如因法律、政策、不可抗力以及甲方上级主管机关要求、产业结构调整等原因致使本协议不能继续履行,甲方有权解除协议且不视为违约,甲方无需对乙方进行赔偿或补偿。 4、免费为乙方配货车辆提供进出场地服务。 (二)乙方权责: 1、乙方负责自动售货机的购买、运作,自动售货机所有权属乙方所有,乙方拥有本协议的自动售货机型号的独家经营权。 2、乙方需按甲方指定位置摆放自动售货机,并提供相关联络人员和服务电话,以及时处理甲方或相关用户的投诉,对自动售货机及时进行日常维护、清洁。 3、乙方人员在进行安装、补货、维修等工作时应严格遵守甲方的各项规章制度,服从甲方管理。

自动售货机——单片机——程序,PROTUES仿真

兰州理工大学 信号检测与处理课程设计 设计题目自动售货机控制器的设计 学院电气工程与信息工程学院 专业班级10级自动化5班 学号10220526 姓名 指导教师刘仲明 时间2013 年春学期

目录 第一章绪论 (2) 1.1设计任务和要求 (2) 1.1.1设计任务 (2) 1.1.2设计要求 (2) 1.2工作原理 (2) 1.3设计思路和功能 (2) 第二章方案论证 (4) 2.1 方案设计 (4) 2.2.1方案1 (4) 2.1.2方案2 (4) 2.1.3方案3 (5) 2.2 方案比较 (5) 第三章硬件设计 (7) 3.1 设计思路 (7) 3.2 硬件设计方案 (8) 3.3 硬件设计概要 (8) 3.3.1 货币投入和选择货物 (8) 3.3.2 显示部分 (10) 3.3.3 货物输出与退币部分 (11) 第四章软件设计 (12) 4.1 整体设计思路 (12) 4.2 系统流程图 (12) 4.3 软件程序 (14) 4.4 软件仿真与调试 (20) 4.4.1 Proteus简介 (20) 4.4.2 仿真结果 (20) 第五章设计总结 (26)

5.1调试结果 (26) 5.2调试问题 (26) 总结 (27) 参考文献 (28)

摘要 自动售货机是劳动密集型的产业构造向技术密集型社会转变的产物。本文设计了一种以AT89C51单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案论证、硬件设计、软件设计和结果仿真,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择独立按键模拟货物选择端,选择LED和继电器模拟货物输出,实现了货物的掉出以及货币数的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。 关键词:自动售货机控制系统 89C51单片机 第一章绪论

自动售货机控制系统的设计(最终版)

课程设计任务书 设计题目:饮料自动售货机PLC控制系统设计 学院:机械工程学院 专业:机械测控 班级: : 组员: 指导老师:

【摘要】 本文介绍了自动售货机的基本原理以及工作流程,然后以一次交易过程为例,把交易过程分为几个程序块,然后分别对程序块进行编程。具体说明了可编程序控制器在自动售货机中的作用。程序涉及到了自动售货机工作的绝大部分过程。利用PLC控制的自动售货机提高了系统的稳定性,保证自动售货机能够长期稳定运行。 关键词:自动售货机;可编程序控制器;梯形图 Abstract:This paper introduces the basic principles of ven ding machines, as well as workflow, and then to a transactio n process as an example, the transaction process is divided i nto several block, and then the block were programmed. Spe cify the PLC in the role of vending machines. Procedures rela ted to the work of the vast majority of vending machine proc ess. PLC control of the use of vending machines enhance the stability of the system to ensure that vending machines cap able of long-term stable operation. Key words:Vending machines; PLC; Ladder Diagram 一.PLC的概述

饮料自动售货机控制程序

饮料自动售货机控制程序 饮料自动售货机结构示意图。在该机中有两种已经配制好的饮料储液桶,一种为汽水,另一种为橙汁,分别由两个电磁阀控制放入杯中的饮料品种。 1. 控制要求 (1) 自动售货机可投入1角、5 角、1元的硬币。 (2) 当投入的硬币总值超过2 元时,汽水指示灯亮;当投入的硬 币总值超过3元时,汽水及橙汁指 示灯亮。 (3) 当汽水指示灯亮时,按放汽水按钮,则排出汽水,8 s 后, 自动停止。在这段时间内,汽水指示灯闪烁。 (4) 当橙汁按钮指示灯亮时,按放橙汁按钮,则排出橙汁,8 s 后,自动停止。在这段时间内橙汁指示灯闪烁。 (5) 若投入硬币总值超过按钮所需的钱数(汽水2元,橙汁3元)时,找钱指示灯亮,并找出多余的钱。 自动饮料售货机PLC 的输入/输出点分配表 主要设计思路:将1角、5角、1元的信息传入数据寄存器D 中。将投票过程中的投票数据进行累加并存入数据寄存器D 中,并与2元、3元进行比较。若数据寄存器D 中数据大于2元,则汽水指示灯亮;若数据寄存器D 中数据大于3元,则汽水和橙汁指示灯均发亮。根据以上思路,设计出饮料自动售货机PLC 控制梯形图及指令语句表,如图6-18所示。 程序设计说明。在图6-18(a)和(b)中:第2逻辑行为传输数据程序;第3逻辑行至第8逻辑行为数据累加程序;第9逻辑行至第12逻辑行为数据比较时间间隙程序;第13逻辑行与第14逻辑行为汽水指示灯和橙汁指示灯驱动程序;第15逻辑行至第20逻辑行为汽水电磁阀和橙汁电磁阀驱动程序;第21逻辑行至第25逻辑行为找钱比较程序;第26逻辑行至第30逻辑行为找钱、复位程序。 接通电源后,第1逻辑行中特殊标志位存储器SM0.1闭合一个扫描周期,使内部标志位存储器 M0.0闭合一个扫描周期。 由于内部标志位存储器M0.0接通一个扫描周期,因而第2逻辑行中的M0.0的常开触点也闭合一个扫描周期,1角、5角、1元的信息被传送至内部标志位存储器的字地址MW10、 汽水桶投票口电磁阀杯子

自动售货机系统程序

Coin类: #include #include #include using namespace std; class 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; class Product { public: /** Constructs a product with a given name, price and quantity

自动售货机VHDL程序与仿真

自动售货机VHDL程序与仿真 (1)自动售货机VHDL程序如下: --文件名:pl_auto1.vhd。 --功能:货物信息存储,进程控制,硬币处理,余额计算,显示等功能。 --说明:显示的钱数coin的以5角为单位。 --最后修改日期:2004.3.23。 library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity PL_auto1 is port ( clk:in std_logic; --系统时钟 set,get,sel,finish: in std_logic; --设定、买、选择、完成信号 coin0,coin1: in std_logic; --5角硬币、1元硬币 price,quantity :in std_logic_vector(3 downto 0); --价格、数量数据 item0 , act:out std_logic_vector(3 downto 0); --显示、开关信号 y0,y1 :out std_logic_vector(6 downto 0); --钱数、商品数量显示数据 act10,act5 :out std_logic); --1元硬币、5角硬币 end PL_auto1; architecture behav of PL_auto1 is type ram_type is array(3 downto 0)of std_logic_vector(7 downto 0); signal ram :ram_type; --定义RAM signal item: std_logic_vector(1 downto 0); --商品种类 signal coin: std_logic_vector(3 downto 0); --币数计数器 signal pri,qua:std_logic_vector(3 downto 0); --商品单价、数量 signal clk1: std_logic; --控制系统的时钟信号begin com:process(set,clk1) variable quan:std_logic_vector(3 downto 0); begin if set='1' then ram(conv_integer(item))<=price & quantity;act<="0000"; --把商品的单价、数量置入到RAM elsif clk1'event and clk1='1' then act5<='0'; act10<='0'; if coin0='1' then if coin<"1001"then coin<=coin+1; --投入5角硬币,coin自加1 else coin<="0000"; end if; elsif coin1='1' then if coin<"1001"then coin<=coin+2; --投入1元硬币,coin自加2 else coin<="0000"; end if; elsif sel='1' then item<=item+1; --对商品进行循环选择 elsif get='1' then --对商品进行购买

自动售货机C语言程序

#include #define list "%d....%c...%4.1fY uan.....%dleft\n",goods[i].number,goods[i].name,goods[i].price,goods[i].q uantity float M;//M作为钱 int A=1,B=1;//A为数量标记,B为金钱标记,1表示有,0表示没有 struct goods//定义出物品清单 { int number; char name; float price; int quantity; }goods[4]={{1,'A',0.5,5},{2,'B',4,5},{3,'C',11,5},{4,'D',2,5}}; struct money//定义出钱,数量用于记录补钱的某值张数 { float money; int mount; }money[8]={{100,0},{50,0},{20,0},{10,0},{5,0},{1,0},{0.5,0},{0.1,0}}; void main() { void change(float m);//声明找钱模块 int sell(int n,float m,int a,int b);//声明出售模块 int i,n;//i用于循环显示商品列表,n用于记录输入的货号 float m1;//m1用于加钱 for(i=0;i<4;i++) printf(list); printf("input money first!\n"); scanf("%f",&M); loop1:printf("you have %.1f\nnow you can choose the goods number,you can use 0 to leave\n",M); scanf("%d",&n); if(n==0) change(M); else//确认用户是选择高开还是买东西 {loop2:sell(n,M,1,1); if(A==0)//货没有了怎么办 {printf("there is no goods %d left\nyou have %.1f\ninput goods number,you can use 0 for leave\n",n,M); scanf("%d",&n); if(n==0) change(M); else {A=1; B=1;//要将标记归位 goto loop2;

C语言自动售货机代码

#include #include #include void GetltemName(char *item, FILE *file); int GetltemPrice(FILE *file); void AcceptMoney(int price); //symbolic constant definitions #define CAPACITY 10//max number itemavailable to vend int main(void){char name[CAPACITY][20]={0}; int price[CAPACITY]={0}; FILE *stockfile; int i,Nitems,choice; int listend; stockfile=fopen("pricelist.txt","r"); if(stockfile==NULL){printf("Error initialising vend: pricelist.txt not opened");}else {//read stock from file listend=0; Nitems=0; do {price[Nitems]=GetltemPrice(stockfile); GetltemName(name[Nitems],stockfile); if(price[Nitems]>0){Nitems++;}else {listend=1;}}

while(NitemsNitems-1); printf("%s seleted.\n",name[choice]); AcceptMoney(price[choice]); printf("\nEnjoy your %s.\n",name[choice]);}fclose(stockfile); return 0;}void GetltemName(char *item,FILE *file){int len; if(feof(file)){item[0]='\0';}else {fgets(item,20,file); len=strlen(item); if(item[len-1]=='\n'){item[len-1]='\0';}}}void AcceptMoney(int price){int money=0,coin,left; printf("Please pay %d p. 10p,5p,2p,1p accepted. No change given.\n\n",price); do {left=price; printf("Price: %d, paid: %d, to pay:

自动售货机软件系统的设计与实现

自动售货机软件系统的设计与实现设计人

目录 一自动售货机需求分析 1.1实验设计分工—————————————————————————1 1.2产品介绍——————————————————————————— 1 1.3产品面向的用户群体——————————————————————1 1.4产品应当遵循的标准或规范——————————————————— 1 1.5产品范围——————————————————————————— 1 1.6产品的系统需求———————————————————————— 1 1.7产品的非功能性需求—————————————————————— 2 二概要设计说明 2.1引言——————————————————————————————3 2.2总体设计————————————————————————————4 2.3接口设计————————————————————————————5 2.4运行设计————————————————————————————6 2.5系统出错处理设计————————————————————————6 三详细设计说明 3.1引言——————————————————————————————7 3.2程序系统的结构—————————————————————————7 3.3自动售货机AVM(主程序)设计说明————————————————8 3.4投币模块设计说明————————————————————————10 3.5物品栏处理模块设计说明—————————————————————10 3.6购物车处理模块设计说明—————————————————————11 3.7出货模块说明——————————————————————————12 四测试分析报告 4.1引言——————————————————————————————13 4.2测试概要————————————————————————————14 4.3对软件功能的结论————————————————————————15 4.4分析摘要————————————————————————————16 五项目开发总结报告 5.1引言——————————————————————————————17 5.2实际开发结果——————————————————————————18 5.3开发工作评价——————————————————————————19 5.4经验与教训———————————————————————————20

相关主题
文本预览
相关文档 最新文档