基于PLC的售货机控制系统设计

目 录

摘要 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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/newlw/article/details/129851669