自动售货机组态监控设计.docx
《自动售货机组态监控设计.docx》由会员分享,可在线阅读,更多相关《自动售货机组态监控设计.docx(24页珍藏版)》请在冰豆网上搜索。
自动售货机组态监控设计
第七章监控组态软件与PLC应用总体设计
第一节自动售货机PLC控制与监控组态设计
一、仿真系统组成
本仿真系统由上位机和下位机两部分组成。
上位机利用PC机,下位机利用松下的FP1系列可编程控制器FP1-C24。
上位机内装北京力控组态软件FORCECONTROL2.6和松下编程软件FPWIN-GR。
组态软件FORCECONTROL用以制作仿真画面、编写仿真程序并与下位机进行通信。
FPWIN-GR是松下可编程序控制器与PC机联机的编程支持工具,利用它可以实现程序输入、程序注释、程序修改、程序编译、状态监控和测试以及设置系统寄存器和PLC各种参数等。
二、自动售货机功能分析
1.自动售货机的基本功能
售货机基本功能:
对投入的货币进行运算,并根据货币数值判断是否能购买某种商品,并做出相应的反应。
2.仿真实验系统中售货机的分析
售货机的全部功能是在上位机上模拟的,其部分硬件由计算机软件模拟代替。
如钱币识别系统可以用按压某个“仿真对象”输出一个脉冲直接给PLC发布命令。
1)实验状态假设
a自动售货机只售8种商品;
b.自动售货机可识别10元、5元、1元、5角、1角硬币;
c.自动售货机可退币10元、5元、1元、5角、1角硬币;
d.自动售货机有液晶显示功能;
f.实验中售货机忽略了各种故障以及缺货等因素。
2)一次交易过程分析
a.初始状态:
由电子标签显示各商品价格,显示屏显示友好界面,此时不能购买任何商品。
b.投币状态:
按下投币按钮,显示投币框,按下所投币值,显示屏显示投入、消费、余额数值,当所投币值超过某商品价格时,相应商品选择按钮发生变化,提示可以购买。
c.购买状态:
按下可以购买的“选择”按钮,所选的商品出现在出货框中,同时显示屏上的金额数字根据消费情况相应变化。
取走商品后出货框消失。
d.退币状态:
按下退币按钮,显示退币框,同时显示出应退币值及数量。
按下确认钮,则恢复初始状态。
三、设计任务的确定
上位机与下位机之间的任务分工:
上位机主要用来完成仿真界面的制作工作;下位机则主要用来完成PLC程序的编写。
在进行PLC程序的编写时需要先分配PLC的I/O点,确定上、下位机的接口。
然后,对上位机和下位机分别进行设计工作。
最后,进行上位机设计结果与下位机设计结果的配合工作,经调试后完成整个系统的设计。
一方面,仿真的自动售货机接受PLC的控制指令并完成相应的动作;另一方面,仿真界面中的仿真自动售货机的运行,都是由界面所提供的命令语言来完成的。
四、程序设计部分
1.程序设计说明
仿真程序的编写利用了力控组态软件FORCECONTROL2.6。
下位机程序的编制则是利用松下PLC专用编程软件FPWIN-GR完成的。
2.PLC程序设计
把一次交易过程分为几个程序块:
运行初期电子标签价格的内部传递;投币过程;价格比较过程;选择商品过程;退币过程。
1)运行初期电子标签价格的内部传递程序的设计
仿真系统运行初期的任务:
①要由PLC向仿真画面相应对象传递已经存储好的价格;
②给投入显示、消费显示及余额显示寄存器清零;
③给存储退币币值的存储器清零。
程序编制过程中,要用到运行初期闭合继电器R9013、16位数据传送指令F0,同时在上位机FORCECONTROL中,必须定义相应的变量,来实现与PLC程序的对接。
电子标签价格内部传递变量表:
运行初期电子标签价格的内部传递程序:
系统初始化时,通过运行初期闭合继电器R9013在第一次扫描时将数值传递给上位机。
通过指令F0给WR1~WR11及SV0~SV4赋初值。
2)投币过程
每投下一枚硬币,投入显示将增加相应的币值,余额也增加同样的币值。
投币过程变量表:
投币过程梯形图:
在上图中,当按下投入一角时,相当于让R200接通,之所以用一个微分指令,就是要只在接通时检测一次,不能永远加下去。
投入一角要使投入显示、余额显示都相应增加相同数值,加法由16位加法指令F20实现的。
投入五角、一元、五元、十元,原理同上。
3)价格比较过程
价格的比较要贯穿实验过程的始终,只要余额大于某种商品价格时,就需要输出一个信号,提示可以购买。
这里用选择灯来代表此信号。
价格比较过程变量表
价格比较梯形图:
本图中,在程序执行过程中,R9010始终保持闭合,是16位数据比较指令,F60用来比较余额和商品的价格,R900A是大于标志,R900B是等于标志。
当余额大于等于某种商品价格时,程序使相应的指示灯闪烁表示可以购买该种商品。
4)选择商品过程
当投入的币值可以购买某种商品时,按下相应的“选择”按钮即可在出货框中出现该种商品,同时消费显示栏中显示出已经消费掉的金额,余额也将扣除已消费的币值,接着余额继续与价格比较,判断是否能继续购买。
出现在出货口的商品在没有取走前,一直保持显示状态,用鼠标点击该商品代表已经取走,出货口中的商品隐藏。
选择商品过程变量表
选择商品梯形图:
在选择商品的过程中:
一是要使商品出现在出货框中,二是要实现内部货币的运算。
如:
按下选择01商品键,相当于给R205加一个信号(只接受一次脉冲,所以用DF微分指令),当Y0接通(01商品灯亮)时,则系统显示可以购买01商品。
由于取01商品R230是常闭触点,故Y8输出,代表在出货框中出现01商品,购买成功。
当按下取01商品按钮时,R230断开,不能输出Y8,代表01商品被取走。
内部币值的计算和是否取走商品无关,只要按下选择按钮,并且可以购买此商品就要从余额中扣除相应的金额,显示消费的币值。
加法由F20指令实现,减法由F25指令实现。
5)退币过程
在退币过程中,最主要的是要完成退币的运算过程,根据结果输出相应的钱币,退币结束时还要给程序中使用到的某些寄存器重新赋零。
退币过程变量表
说明
上位机FORCECONTROL变量
对应PLC地址
退币按钮
TENTER
R20F
退币0.1元
TB$1.PV
SV4
退币0.5元
TB$5.PV
SV3
退币1元
TB$10.PV
SV2
退币5元
TB$50.PV
SV1
退币10元
TB$100.PV
SV0
退币确任按钮
TUIBIOK.PV
R0
退币过程梯形图:
退币过程:
在按下退币按钮(即R20F接通)时执行,同样也用到一个微分指令,在接收到信号时产生一次开关脉冲,进而执行一次其下面的指令。
F32是除法指令,第一次将余额的币值除以1000,商存储于SV0中,作为退币10元的输出值。
余数则存储于特殊数据寄存器DT9015中,下次将不能被1000(10元)整除的余数除以500(5元),商存储于SV1中,余数继续下传,直至被1角除过,由于所投币值最小是1角,并且商品价格也确定在整角,所以最终能被1角整除。
在程序的初始化时曾给WR13、WR15、WR17、WR19和WR20赋零,WR13、WR15、WR17、WR19和WR20是程序的中间量。
退币过程结束后,PLC要将寄存器中的数值置回原定的初值0,完成一次交易,防止下一次交易时出错。
数据初始化梯形图:
程序中分别将投入显示、消费显示、余额显示、10元存储、5元存储、1元存储、5角存储和1角存储清零,还将中间量WR13、WR15、WR17、WR19和WR20清零。
五、仿真界面的设计
1.售货机背景的设计
售货机背景是一个不动的画面,可以利用图片处理的方法按照制定样式的功能画出售货机的整体。
2.显示屏部分的设计
图中的欢迎字符是可以闪烁变化的,‘aaaa’字符可以用来显示系统的时间。
交易过程中的币值显示画面如下图:
3.电子标签的设计
电子标签用来显示程序中传递上来的价格,其中要有可以定义的字符,设计出的标签为
。
其中的字符‘J.03’表示可以显示03商品价格的变量。
4.按钮的设计
“选择”按钮的设计要反映出可以购买和不可购买时的差异,所以其中也要有可以变化的字符。
设计如右图
,其中字符‘选择’在满足条件以后可以闪烁变色。
按钮均可以动作。
5.投退币提示框的设计
投、退币提示框中要有可以投入的硬币、确认按钮以及框架,其中硬币、确认按钮和字符‘a’均是可以定义的变量。
投币提示框
退币提示框
6.出货框的设计出货框
出货框中要有01至08商品的示意图以及框架。
其中的商品在满足条件后可以出现,鼠标点击后可以消失,是可定义的变量。
出货框
六、仿真界面中各变量的定义
仿真程序上的各部分若实现仿真功能,就必须定义成相应的变量,再与PLC程序中的软继电器相匹配,这样才能实现PLC的控制功能。
1.中间变量
中间变量的作用域为整个应用程序,不限于单个窗口。
中间变量适于作为整个应用程序动作控制的全局性变量、全局引用的计算变量或用于保存临时结果。
该仿真实验系统中有3个中间变量:
⑴poiwindows:
该变量是控制显示屏的。
poiwindows=1:
显示屏进入投币交易状态;
poiwindows=0:
显示屏返回初始欢迎状态。
⑵poiwinJB:
该变量是控制投币框的。
poiwinJB=1:
显示投币框;
poiwinJB=0:
投币框消失。
⑶poiwinTB:
该变量是控制退币框的。
poiwinTB=1:
显示退币框,
poiwinTB=0:
退币框消失。
2.数据库变量
当要在界面上显示处理数据库中的数据时,需要使用数据库变量。
一个数据库变量对应数据库中的一个点参数。
数据库变量的作用域为整个应用程序。
数据库变量有三种:
实型数据库变量、整型数据库变量和字符数据库变量。
仿真系统中有56个整型数据库变量,分别对应PLC程序中的56个软继电器。
3.仿真界面与PLC程序的配合定义
⑴初始状态
poiwindows=0:
显示屏显示初始欢迎状态。
以01商品为例,电子标签中的字符‘J.01’对应的变量JG01.PV与PLC程序中的地址WR4相匹配,WR4中存储的数据为250,如何让字符显示2.50元呢?
方法:
在开发系统(Draw)中,双击字符‘J.01’,来到“动画连接”画面,选择“数值输出”中的“模拟”项,键入‘JG01.PV/100’即可,由250到2.50实际是计算机来完成的。
其它的价格也是如此显示的。
动画连接画面
⑵投币状态
当投币时,按下“投币”提示字,出现投币框。
如何定义“投币”呢?
双击汉字“投币”,来到“动画连接”画面,选择“触敏动作”中的“左键动作”,在“动作描述”框中作如下定义:
按下鼠标时,poiwinJB=1,poiwinJB这个变量是控制投币框的,当poiwinJB=1时,出现钱币和提示框;poiwinJB=0,钱币和提示框隐藏。
下面分别定义提示框和钱币以及“确认”按钮。
双击提示框,来到“动画连接”画面,选择“显示/隐藏”项,定义poiwinJB==1时显示,各硬币也用同样的方法定义,“确认”按钮也同样定义,这样就使在按下汉字“投币”时,变量poiwinJB=1,从而出现投币框,以及硬币等。
定义了投币框的显示状态,用鼠标点击代替了实际过程中的钱币投入动作,最重要的任务是投币运算,下面介绍钱币的定义方法。
以十元为例:
双击十元硬币,来到“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述中如下定义:
按下鼠标时,poiwindows=1;TR$100.PV=1;释放鼠标时,TR$100.PV=0;动作描述画面下图所示。
动作描述画面
其中poiwindows=1,是让显示屏不再显示友好界面,来到交易界面;
TR$100.PV=1时给PLC发出一个接通信号,由于TR$100.PV对应的PLC地址是R204,使得R204继电器导通,转而执行相应的加十元程序。
同样定义其它钱币,注意其对应的PLC软继电器。
最后还要定义“确认”按钮。
要实现的功能是按下“确认”按钮时,所有的钱币以及投币提示框均消失。
这里作如下定义:
双击“确认”按钮,来到“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述中作如下定义:
按下鼠标时,poiwinJB=0;
poiwinJB=0时,所有的钱币以及投币提示框均消失,这是由计算机控制的内部变量。
投币以后,显示屏要及时反映出投币情况,同时“选择”指示也要相应变化(闪烁、变色)。
下面来定义显示屏和“选择”按钮。
显示屏要显示3种数据,分别为:
投入显示、消费显示、余额显示。
三种显示均用力控软件自带的附件—数码管来显示。
先在工具箱中点击“选择子图项”,在子图库中找到仪表中的数码管,放在显示屏中,作为投入显示,再复制两个,分别作为消费显示、余额显示。
双击数码管来到数码管属性设置画面,在表达式中作如下定义:
poiTR001.PV/100,poiTR001.PV连接的是PLC程序中的WR1软继电器,是用来存储投入显示数据的,除以100同样是为了PLC数据计算的方便。
这样就可用数码管来显示投入的币值。
同样定义消费显示,余额显示。
数码管的属性设置画面如图所示:
“选择”按钮要根据余额的数值发生闪烁和变色。
定义过程如下:
双击“选择”按钮,来到“动画连接”画面,在“颜色相关动作”中选择“闪烁”项,分别定义属性和频率,在变量选择项中选择相应的指示灯变量。
以01商品的选择指示灯为例,在变量选择项中选择D01.PV==1,满足条件时指示灯变色。
这样就定义好了投币状态的上位机仿真变量,配合PLC程序可以实现投币功能。
下图是一幅投币时的画面,投入6.60元,还未买商品,注意看显示屏的显示以及选择按钮的变化,此时还不能购买06号商品(价格12元)。
⑶购买状态
定义了投币状态,就可以购买商品了。
当选择指示灯变色以后,按下它,将会在出货口处出现我们要买的商品。
以01商品为例:
定义“选择”按钮:
双击“选择”按钮,来到“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述中如下定义:
按下鼠标时XZ01.PV=1;释放鼠标时,XZ01.PV=0。
XZ01.PV与PLC程序中的R205相对应,按下可以购买商品的选择键,转而执行相应的PLC程序同时消费显示增加相应的币值,余额显示减少相应的币值,此时还要在出货口处出现相应的商品。
用“显示/隐藏”功能来定义在出货口中出现的商品。
双击出货口处的小商品,来到“动画连接”画面,选择“显示/隐藏”项,定义CX01.PV==1时显示。
定义画面下图所示。
出货口框架的隐藏/显现是用程序来控制的。
当有一种商品出现在出货口,就会显示框架;当全部商品均消失后框架隐藏。
程序如下图所示。
图中R210是控制出货口框架是否出
现的继电器。
⑷退币状态
当按下“退币”按钮时,PLC要进行退币运算。
所以按下“退币“按钮就要与PLC通讯,执行退币计算。
下面来定义退币按钮。
双击“退币”按钮,出现“动画连接”画面,选择“触敏动作”中的“左键动作”,动作描述为:
按下鼠标,poiwinJB=0;poiwinTB=1;Tenter.PV=1。
释放鼠标,Tenter.PV=0;内部变量poiwinJB=0是让投币框消失,poiwinTB=1是让退币框出现,Tenter.PV与PLC程序中的R20F对应。
退币框中要有五种硬币,还要有表示硬币个数的数字。
由于计算中采用的算法使得退币时按照币值大小顺序退币,例如退五元,只退一个五元,而不退五个一元。
定义表示硬币个数的变量只用一位数即可。
在退币时,要退出的硬币及个数显示,而不退的硬币隐藏。
以十元为例,定义钱币时,双击十元硬币,出现动画连接画面,选择“显现/隐藏”项,在“可见性定义”对话框中作如下图的定义。
其它硬币定义方法同上。
定义钱币个数:
双击十元硬币个数字符“a”,出现“动画连接”画面,选择“数值输出”中的“模拟”项,作下图的定义。
同时钱币个数也要定义是否隐藏,定义方法和定义钱币相同。
定义“确认”键时,按下”确认”键,代表取走了所有硬币,完成此次交易,因此退币“确认”键的定义很重要。
双击“确认”键,出现“动画连接”画面,选择“触敏动作”中的“左键动作”,在动作描述栏中定义如下:
按下鼠标
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。
只是给PLC一个微分信号,不能将R0永远置为1。
还有一点要注意,“确认”键也要有隐藏的时候,定义方法同钱币。
定义退币框架:
按下“退币”按钮后就会出现退币框架。
可以这样定义:
双击退币框架,来到“动画连接”画面,选择“显现/隐藏”项,在“可见性定义”表达式中定义poiwinTB==1时显现即可。
七、数据连接
1.定义I/O设备
数据库是从I/O驱动程序中获取过程数据的,而数据库同时可以与多个I/O驱动程序进行通信,一个I/O驱动程序也可以连接一个或多个设备。
下面创建I/O设备。
1)在Draw导航器中双击“实时数据库”项使其展开,选择“I/O设备驱动”项使其展开,在展开项目中选择“PLC”项双击使其展开,然后继续选择厂商名“松下电工”并双击使其展开后,选择项目双击并按下图定义。
2)单击“完成”按钮返回,在“松下电工”项目下面增加了一项“PLC001”。
如果要对I/O设备“PLC001”的配置进行修改,双击项目“PLC001”,会再次出现PLC001的“I/O设备定义”对话框。
若要删除I/O设备“PLC001”,用鼠标右键单击项目“PLC001”,在弹出的右键菜单中选择“删除”。
2.数据连接
刚刚创建了一个名为“PLC001”的I/O设备,而且它连接的正是假想的PLC设备。
现在的问题是如何将已经创建的多个数据库点与PLC联系起来,以使这些点的PV参数值能与I/O设备PLC进行实时数据交换,这个过程就是建立数据连接的过程。
由于数据库可以与多个I/O设备进行数据交换,所以必须指定哪些点与哪个I/O设备建立数据连接。
为方便起见,将数据列表整理成如下表所示。
模拟I/O表
3.运行
保存所有组态内容,然后关闭所有力控程序,包括:
Draw、DbManager等。
将自动售货机的PLC程序下传到PLC装置中并让其执行,切换到离线状态,然后再次启动力控工程管理器,选择本工程,并单击“进入运行”按钮启动整个运行系统。
在运行中,可以按照实际自动售货机的功能来操作,以检验所编程序的正确与否。