![cover](https://img-blog.csdnimg.cn/90defeb499a74c2d977086ad3d7ef6b6.png)
基于PLC的售货机控制系统设计
当投入硬币的币值超过可乐的价格3元,这时可乐、雪碧指示灯亮,提示消费者可以购买这两种饮料,当投入的币值超过4元但小于5.5元时,只有加多宝和营养快线的指示灯不亮,当投入的货币的币值超过6元时,所有商品的指示灯会亮,提示消费者可以五种商品中的任意一种。(4)饮料自动售货机的软件设计:完成投币,货物选择,取货,退币等流程图的设计,梯形图程序的编写,仿真调试,分别设计出工作流程图,根据流程图使用GX d
目 录
摘要 I
Abstract II
1 绪论 1
1.1研究背景及意义 1
1.2自动售货机的简介 1
1.2.1自动售货机的发展历史 1
1.2.2自动售货机的定义 2
1.2.3自动售货机的组成以及分类 3
1.3自动售货机的研究现状 4
1.4课题研究内容 9
1.4.1 自动售货机的功能要求 9
1.4.2研究内容及方法 10
2自动售货机的机械结构设计 11
2.1 箱体的组成 11
2.2出货机构的设计 11
2.2.1出货方式 11
2.1.2弹簧的选型设计 13
2.1.3出货托盘与后挡板设计 15
2.1.4驱动电机的选型设计 15
2.3货币识别的设计 16
2.3.1 硬币的识别原理 16
2.3.2 纸币的识别原理 17
2.4自动售货机的取物箱的设计 18
3自动售货机的硬件设计 19
3.1元器件的选型 19
3.1.1继电器的选型 19
3.1.2按钮、指示灯的选型 20
3.1.3主控单元的选型 20
3.1.4 PLC的功能 21
3.1.5 PLC的I/O口分配 22
3.2元器件的布置图 24
4 自动售货机的软件设计 25
4.1 自动售货机的控制系统 25
4.2 自动售货机的程序部分 26
4.2.1 程序中用到的部分指令 26
4.2.2 自动售货机的控制程序 26
4.3 程序的仿真 28
结论 32
致谢 33
参考文献 34
附录 36
附录1 36
附录2 39
1.4课题研究内容
1.4.1 自动售货机的功能要求
假如售货机中现存放有5种饮料,价格分别是可乐3元,雪碧3元,加多宝5.5元,果粒橙4元,营养快线6元。当投入硬币的币值超过可乐的价格3元,这时可乐、雪碧指示灯亮,提示消费者可以购买这两种饮料,当投入的币值超过4元但小于5.5元时,只有加多宝和营养快线的指示灯不亮,当投入的货币的币值超过6元时,所有商品的指示灯会亮,提示消费者可以五种商品中的任意一种。假如消费者此时按下可乐按钮,自动售货机内部进行减法的运算,从所投入的货币总值中减去可乐的价格的同时启动可乐货道内弹簧连接的电机,使可乐掉入到出货口,消费者可从出货口取到饮料。同样的,购买其他的商品也是一样的状态。操作完成后如果不再购买并且还剩余零钱,可按下退币按钮,自动售货机则开始进行退币操作,在退回相应的货币后,然后在程序中进行清零,完成此次购买交易。
由此看来,自动售货机每进行一次售货交易,内部程序要涉及加法运算、减法运算,同时还需要货币识别系统和货币传动,加法运算和减法运算是所有售货机都具有的功能,而实现货物的售卖以及退币找零要需依赖货币运行系统。
自动售货机的操作属性主要包括四个过程,分别为:
投币过程;价格比较过程 ;选择商品过程 ;退币过程。
通过操作过程可将自动售货机分为5个状态:
启动状态;投币状态;可购买显示状态;购买状态;退币状态。
在初始状态下,自动售货机内部各元件都处于复位状态,等待投币操作。
在投币状态下,货币识别装置能够识别5角、1元的硬币, 5元、10元的纸币,投币完成后,所能够买饮料的指示灯就会亮起,显示能够购买的饮料。
在购买状态下,按下所需商品对应的按钮,其它可选商品的指示灯灭掉。驱动电机在接收到信号后启动操作,然后所选商品从货道中掉落,消费者可从取物口处拿到商品。
在退币状态下,完成购买后按下退币按钮,自动售货机自动进行找零。
以上过程就是自动售货机一个完整的工作过程。
1.4.2研究内容及方法
设计完成自动售货机的机械结构设计,机械结构包括箱体外观,货物的货道,货物出货机构等几大部分。箱体的外观主要有商品的展示部分,各种按钮,进币口,退币口等组成。货物的货道包括三个部分:上面是货物的商品投入口,中间是商品的通路,是储存货物部分,下部上商品的出货装置,包括装置和出口调节板两部分。 根据查阅比较发现主要运用的出货方式有弹簧推动式,出货准确率高实时性强,但存储货物少,电机功率大。
硬件电路包括,PLC,货币识别装置,商品选择按钮,各种指示灯,各种继电器等。控制系统主要采用三菱PLC控制。钱币的识别主要包括钱币币值的识别,货币币值的分类存储以及退币机构部分组成。控制系统采用的控制方法为PLC控制,这种控制系统是售货机在消费者选择商品后往里面投入钱币后接收到识币信号到退币找零后的一整个电控系统,根据销售商品的种类和投入钱币数额的大小来确定I/O点数,确定系统所需PLC型号,设计I/O接线图。根据自动售货机的功能来确定钱币识别器,商品选择按钮,传感器等。根据饮料售货机的购物流程,完成元器件布置图和接线图。
(4)饮料自动售货机的软件设计:完成投币,货物选择,取货,退币等流程图的设计,梯形图程序的编写,仿真调试,分别设计出工作流程图,根据流程图使用GX developer软件建立工程输入程序,画出梯形图,再对程序进行编译,然后启动仿真进行调试。
[Pass]
PassSet:
PassFlag TYPE_BOOL FALSE
[App]
Project:
CpuType TYPE_STRING "FX2N(C)"
ProjectComment TYPE_STRING ""
AutoSave TYPE_BOOL FALSE
[Prt]
DlgLabel:
FBVariableCheck TYPE_DWORD10 0
GlobalCheck TYPE_DWORD10 1
FBDevCommentLineCheck TYPE_DWORD10 0
FBStatementnoteCheck TYPE_DWORD10 0
SupplConMode TYPE_DWORD10 0
FBDevComOption TYPE_DWORD10 0
FBDevCommentLine TYPE_DWORD10 0
FBCheck TYPE_DWORD10 0
LocalCheck TYPE_DWORD10 1
FBDevComCheck TYPE_DWORD10 0
FBPrintMode TYPE_DWORD10 0
DlgCmnt:
RangeOption TYPE_DWORD10 0
UsingPrintCheck TYPE_DWORD10 1
EquipNameCheck TYPE_DWORD10 1
ProgramLeaf TYPE_STRING "MAIN"
CommentLeaf TYPE_STRING ""
UsingCoilCheck TYPE_DWORD10 0
DlgDmem:
PrintClass TYPE_DWORD10 0
ZeroPrintCheck TYPE_DWORD10 0
PrintStyle TYPE_DWORD10 0
RangeOption TYPE_DWORD10 0
ProgramLeaf TYPE_STRING "MAIN"
DlgDuse:
BlockRangeOption TYPE_DWORD10 0
BlockTo TYPE_DWORD10 -1
RangeOption TYPE_DWORD10 0
ProgramCommentCheck TYPE_DWORD10 0
UsingPrintCheck TYPE_DWORD10 1
CommonCommentCheck TYPE_DWORD10 0
BlockFrom TYPE_DWORD10 -1
EquipNameCheck TYPE_DWORD10 0
DeviceCommentCheck TYPE_DWORD10 0
ProgramLeaf TYPE_STRING "MAIN"
UsingMatrixCheck TYPE_DWORD10 1
ProgramSelect TYPE_DWORD10 1
DlgLadr:
PointUsingPositionOption TYPE_DWORD10 0
CommonCommentCheck TYPE_DWORD10 0
DeviceCommentCheck TYPE_DWORD10 0
ProgramLeaf_Multi_1 TYPE_STRING "MAIN"
LadderDevCommentLineCheck TYPE_DWORD10 0
PointUsingNoSpaceCheck TYPE_DWORD10 0
RangeTo TYPE_DWORD10 -1
StatementNoteCheck TYPE_DWORD10 0
NopLFPrintCheck TYPE_DWORD10 0
ProgramCommentCheck TYPE_DWORD10 0
CoilUsingNoSpaceCheck TYPE_DWORD10 0
LadderDevCommentLine TYPE_DWORD10 0
LadderPrintCheck TYPE_DWORD10 1
RangeFrom TYPE_DWORD10 -1
EquipNameCheck TYPE_DWORD10 0
PointUsingRangeOption TYPE_DWORD10 0
CmntDispOption TYPE_DWORD10 0
CoilUsingCheck TYPE_DWORD10 0
PointUsingCheck TYPE_DWORD10 0
CoilUsingRangeOption TYPE_DWORD10 0
PointUsingNoSpaceRow TYPE_DWORD10 0
BlockPageCheck TYPE_DWORD10 1
EquipNameOption TYPE_DWORD10 0
NonCommentPrintCheck TYPE_DWORD10 0
MacroPrintFormatCheck TYPE_DWORD10 0
DeviceLadderPrintCheck TYPE_DWORD10 0
SupplConMode TYPE_DWORD10 0
RangeOption TYPE_DWORD10 0
DlgPcpu:
PcRasCheck TYPE_DWORD10 0
PositionCheck TYPE_DWORD10 0
SerialCheck TYPE_DWORD10 0
ProgramCheck TYPE_DWORD10 0
PcFileCheck TYPE_DWORD10 0
DousaCheck TYPE_DWORD10 0
MultiCpuCheck TYPE_DWORD10 0
PcSystemCheck TYPE_DWORD10 1
SfcCheck TYPE_DWORD10 0
MemCapaCheck TYPE_DWORD10 1
BootFileCheck TYPE_DWORD10 0
DeviceCheck TYPE_DWORD10 1
XyAllotCheck TYPE_DWORD10 0
IoAllotCheck TYPE_DWORD10 1
BuiltinEthernetPortCheck TYPE_DWORD10 0
PcNameCheck TYPE_DWORD10 1
SafetyCheck TYPE_DWORD10 0
DlgMELSAP:
BlockRangeOption TYPE_DWORD10 0
BlockParamCheck TYPE_DWORD10 0
SupplConMode TYPE_DWORD10 1
CommentListCheck TYPE_DWORD10 1
CmntDispOption TYPE_DWORD10 0
SFCCheck TYPE_DWORD10 1
SupplTransCheck TYPE_DWORD10 0
StepTransCheck TYPE_DWORD10 0
SupplStepTransCheck TYPE_DWORD10 1
SupplDevCommentCheck TYPE_DWORD10 0
StepTransMode TYPE_DWORD10 0
BlockListCheck TYPE_DWORD10 1
BlockFrom TYPE_DWORD10 -1
BlockTo TYPE_DWORD10 -1
SFCColumns TYPE_DWORD10 3
SupplStepCheck TYPE_DWORD10 0
DlgSFC:
BlockListCheck TYPE_DWORD10 1
SupplConMode TYPE_DWORD10 0
SFCCheck TYPE_DWORD10 1
SFCDevCommentLine TYPE_DWORD10 0
SupplDevCommentCheck TYPE_DWORD10 0
SupplStepCheck TYPE_DWORD10 1
EquipNameOption TYPE_DWORD10 0
NoteListCheck TYPE_DWORD10 1
BlockParamCheck TYPE_DWORD10 0
StepTransMode TYPE_DWORD10 0
BlockRangeOption TYPE_DWORD10 0
CmntDispOption TYPE_DWORD10 0
SupplEquipCheck TYPE_DWORD10 1
CommentListCheck TYPE_DWORD10 1
SupplTransCheck TYPE_DWORD10 1
BlockTo TYPE_DWORD10 -1
SFCColumns TYPE_DWORD10 2
BlockFrom TYPE_DWORD10 -1
StepTransCheck TYPE_DWORD10 1
SFCDevCommentLineCheck TYPE_DWORD10 0
DlgPaper:
MarginLeft TYPE_DWORD10 2000
OrderPnet TYPE_DWORD10 0
PlurlMlib TYPE_DWORD10 0
PlurlPcpu TYPE_DWORD10 0
PlurlSFC TYPE_DWORD10 0
Format TYPE_DWORD10 2
OrderProj TYPE_DWORD10 11
OrderList TYPE_DWORD10 5
PlurlSDT TYPE_DWORD10 0
PlurlLabel TYPE_DWORD10 0
MarginTop TYPE_DWORD10 2500
OrderST TYPE_DWORD10 0
OrderCmnt TYPE_DWORD10 7
PlurlDuplex TYPE_DWORD10 0
OrderDini TYPE_DWORD10 0
OrderDmem TYPE_DWORD10 8
PlurlPnet TYPE_DWORD10 0
PlurlMELSAP TYPE_DWORD10 0
HeaderCheck TYPE_DWORD10 0
PlurlProj TYPE_DWORD10 0
PrimaryValue TYPE_DWORD10 1
OrderDuplex TYPE_DWORD10 0
PlurlSysMon TYPE_DWORD10 0
PlurlList TYPE_DWORD10 0
PlurlTitle TYPE_DWORD10 0
OrderTEL TYPE_DWORD10 12
OrderDuse TYPE_DWORD10 9
OrderLadr TYPE_DWORD10 4
OrderMELSAP TYPE_DWORD10 0
PlurlST TYPE_DWORD10 0
PlurlCmnt TYPE_DWORD10 0
OrderCuse TYPE_DWORD10 10
PlurlDini TYPE_DWORD10 0
PlurlDmem TYPE_DWORD10 0
MarginBottom TYPE_DWORD10 2500
OrderSysMon TYPE_DWORD10 0
OrderLabel TYPE_DWORD10 0
OrderTcvl TYPE_DWORD10 6
PlurlTEL TYPE_DWORD10 0
PlurlDuse TYPE_DWORD10 0
PlurlLadr TYPE_DWORD10 0
Position TYPE_DWORD10 2
MarginRight TYPE_DWORD10 2000
PlurlCuse TYPE_DWORD10 0
FooterCheck TYPE_DWORD10 0
OrderMlib TYPE_DWORD10 0
OrderPcpu TYPE_DWORD10 2
OrderSFC TYPE_DWORD10 3
OrderSDT TYPE_DWORD10 0
OrderTitle TYPE_DWORD10 1
PlurlTcvl TYPE_DWORD10 0
DlgSysMon:
SysMonDataLeafPath TYPE_STRING ""
DlgCuse:
BlockFrom TYPE_DWORD10 -1
ProgramSelect TYPE_DWORD10 1
EquipNameCheck TYPE_DWORD10 0
BlockRangeOption TYPE_DWORD10 0
UsingPrintCheck TYPE_DWORD10 1
BlockTo TYPE_DWORD10 -1
UsingCoilCheck TYPE_DWORD10 1
RangeOption TYPE_DWORD10 0
CommonCommentCheck TYPE_DWORD10 0
DeviceCommentCheck TYPE_DWORD10 0
UsinJointCheck TYPE_DWORD10 1
ProgramCommentCheck TYPE_DWORD10 0
UsingMatrixCheck TYPE_DWORD10 1
ProgramLeaf TYPE_STRING "MAIN"
DlgPnet:
MelEtherCheck TYPE_DWORD10 0
MelMiniCheck TYPE_DWORD10 0
CcLinkCheck TYPE_DWORD10 0
DlgTcvl:
UsingPrintCheck TYPE_DWORD10 1
StackTimerValueCheck TYPE_DWORD10 0
EquipNameCheck TYPE_DWORD10 0
ProgramLeaf TYPE_STRING "MAIN"
CounterValueCheck TYPE_DWORD10 0
CommonCommentCheck TYPE_DWORD10 0
DeviceCommentCheck TYPE_DWORD10 0
ProgramCommentCheck TYPE_DWORD10 0
TimerValueCheck TYPE_DWORD10 1
DlgST:
RangeTo TYPE_DWORD10 -1
RangeOption TYPE_DWORD10 0
RangeFrom TYPE_DWORD10 -1
DlgTEL:
A6telCheck TYPE_DWORD10 0
TelnoCheck TYPE_DWORD10 1
Q6telCheck TYPE_DWORD10 0
DlgDini:
FigureInteger TYPE_DWORD10 -1
RangeOption TYPE_DWORD10 0
PrintClass TYPE_DWORD10 0
ZeroPrintCheck TYPE_DWORD10 0
PrimaryValueCheck TYPE_DWORD10 1
PrimaryRangeCheck TYPE_DWORD10 1
UsingMatrixCheck TYPE_DWORD10 0
PrintStyle TYPE_DWORD10 0
DlgList:
ProgramLeaf TYPE_STRING "MAIN"
RangeTo TYPE_DWORD10 -1
NonlfPrintCheck TYPE_DWORD10 0
EquipNameCheck TYPE_DWORD10 0
StatementListCheck TYPE_DWORD10 0
RangeFrom TYPE_DWORD10 -1
MacroPrintFormat TYPE_DWORD10 0
PStatementListCheck TYPE_DWORD10 0
ProgramLeaf_Multi_1 TYPE_STRING "MAIN"
ListCheck TYPE_DWORD10 1
DeviceListCheck TYPE_DWORD10 0
ProgramCommentCheck TYPE_DWORD10 1
IStatementListCheck TYPE_DWORD10 0
DeviceCommentCheck TYPE_DWORD10 0
CommonCommentCheck TYPE_DWORD10 1
NonPrintCheck TYPE_DWORD10 0
RangeOption TYPE_DWORD10 0
StatementNoteCheck TYPE_DWORD10 1
NoteListCheck TYPE_DWORD10 0
DlgPttl:
ExistCheck TYPE_DWORD10 0
FrameCheck TYPE_DWORD10 1
DlgMlib:
MacroDataLeafPath TYPE_STRING ""
LibraryDataLeafPath TYPE_STRING ""
LibraryDataLeaf TYPE_STRING ""
MacroDataLeaf TYPE_STRING ""
PrintOption TYPE_DWORD10 0
DlgDuplex:
OperationMode TYPE_DWORD10 1
Tracking TYPE_DWORD10 1
Gui:
ActivePrintItem TYPE_DWORD10 5
[Cmnt]
CommInfo:
CommCmntNo TYPE_WORD10 0
CmntLength TYPE_WORD10 32
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)