组态王监控简易自动售货机控制系统的设计文档格式.docx
《组态王监控简易自动售货机控制系统的设计文档格式.docx》由会员分享,可在线阅读,更多相关《组态王监控简易自动售货机控制系统的设计文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
(6)具有销售数量和销金额的累加功能。
(7)利用组态王6.53建立对简易售货机的监控画面,能实时监控简易自动售货机的销售情况。
1.4简易自动售货机监控系统设计的基本思路
上位机组态王监控画面和下位机PLC程序不必一口气完成,可以分步进行设计。
PLC程序设计思路如下:
编写硬币识别程序,识别投入硬币面值并保存,
编写数码管显示程序,能显示投入的钱数,
编写指示灯程序,自动判断投入钱数点亮相应指示灯,
编写售货程序,当投入钱数足够购买货物时,可选择购物,
编写计时程序,作指示灯亮灭的计时,
编写记录程序,能记录销售信息。
各步程序的编写都是基于上一步完成的程序上,最后修善可得完整的控制程序。
组态王监控画面设计思路如下:
建立监控主画面,设置相应变量及动画效果,
建立报表、报警等画面,并完成相关设置。
组态王各画面要美观形象、易于切换。
2简易自动售货机监控系统
2.1下位机PLC程序
2.1.1PLC的I/O点定义
PLC的I/O点定义如表2.1.1。
表2.1.1PLC的I/O点分配
定义点
功能
输入
X0
启动
X1
投币1元
X2
投币5元
X3
投币10元
X4
选择咖啡
X5
选择可乐
X6
复位
输出
Y1
咖啡指示灯
Y2
可乐指示灯
Y3
找钱指示灯
Y10~Y17
7段数码管
(1)ABCDEFG
Y20~Y27
7段数码管
(2)ABCDEFG
2.1.2PLC梯形图程序设计
梯形图是用的最多的PLC图形编程语言。
梯形图语言是在传统电器控制系统中常用的接触器、继电器等图形表达符号的基础上演变而来的。
它与电器控制线路图相似。
继承了传统电器控制逻辑中使用的框架结构、逻辑运算方式和输入输出形式,具有形象、直观、实用的特点。
因此,这种编程语言为广大电气技术人员所熟知,是应用最广泛的PLC的编程语言,是PLC的第一编程语言。
本论文选用三棱可编程控制器(PLC)FX系列,可用PLC程序设计软件GXDeveloperVersion编辑PLC梯形图程序如图2.1.2(有“*”之后的文字为注释语言):
*当D10>
15,M3=1;
当D10=15,M4=1;
当D10<
15,M5=1
*D10=D10+10
*D10=D10+5
*D10=D10+1
*D10/10=D20……D21
12,M0=1;
当D10=12,M1=1;
12,M2=1
*D10=D10-12
*D10=D10-15
*M7上升沿触发触点
*X4、X5下降沿触发触点
图2.1.2PLC梯形图程序
2.1.3PLC梯形图程序指令说明
如表2.1.3,列出了部分程序指令。
表2.1.3PLC梯形图程序指令(部分)
指令类型
指令助记符名称
举例说明
基本指令
SET(置位)
令元件自保持ON
[SETY0]
当X0=1,Y0置位(ON)
RST(复位)
令元件自保持OFF
[RSTY0]
当X1=1,Y0复位(OFF)
功能指令
INC(P)
二进制加1
[INCPD0]
当X0由0变1时,D0中的二进制数自动加1
ADD(P)
二进制加法
[ADDPD0D1D2]
当X0由0变1时,
D0+D1=D2
(二进制数相加)
DEC(P)
二进制减1
[DECPD0]
当X0由0变1时,D0中的二进制数自动减1
SUB(P)
二进制减法
[SUBPD0D1D2]
D0-D1=D2
(二进制数相减)
DIV
二进制除法
[DIVD0D1D2]
当X0=1时,
D0/D1=D2……D3
(二进制数相除)
CMP
比较
[CMPD0K1M0]
当D0>
1,M0=1;
当D0=1,M1=1;
当D0<
1,M2=1
SEGD
七段码译码
[SEGDD0K2Y0]
当X0=1时,D0中的低4位所确定的十六进制数(0~F)经K2Y0所连接的七段码进行显示
2.2上位机组态监控画面
2.2.1组态王软件
组态王软件是一种通用的工业监控软件,它融过程控制设计、现场操作以及工厂资源管理于一体,将一个企业内部的各种生产系统和应用以及信息交流汇集在一起,实现最优化管理。
它基于MicrosoftWindowsXP/NT/2000操作系统,用户可以在企业网络的所有层次的各个位置上都可以及时获得系统的实时信息。
采用组态王软件开发工业监控工程,可以极大地增强用户生产控制能力、提高工厂的生产力和效率、提高产品的质量、减少成本及原材料的消耗。
它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。
组态王软件结构由工程管理器、工程浏览器及运行系统三部分构成。
工程管理器:
工程管理器用于新工程的创建和已有工程的管理,对已有工程进行搜索、添加、备份、恢复以及实现数据词典的导入和导出等功能。
工程浏览器:
工程浏览器是一个工程开发设计工具,用于创建监控画面、监控的设备及相关变量、动画链接、命令语言以及设定运行系统配置等的系统组态工具。
运行系统:
工程运行界面,从采集设备中获得通讯数据,并依据工程浏览器的动画设计显示动态画面,实现人与控制设备的交互操作。
组态王与I/O设备
组态王软件作为一个开放型的通用工业监控软件,支持与国内外常见的PLC、智能模块、智能仪表、变频器、数据采集板卡等(如:
西门子PLC、莫迪康PLC、欧姆龙PLC、三菱PLC、研华模块等等)通过常规通讯接口(如串口方式、USB接口方式、以太网、总线、GPRS等)进行数据通讯。
组态王软件与IO设备进行通讯一般是通过调用*.dll动态库来实现的,不同的设备、协议对应不同的动态库。
工程开发人员无须关心复杂的动态库代码及设备通讯协议,只须使用组态王提供的设备定义向导,即可定义工程中使用的I/O设备,并通过变量的定义实现与I/O设备的关联,既简单又方便。
本论文选用组态王6.53软件设计简易售货机组态画面。
2.2.2售货机主画面
新建工程,工程名称为“简易售货机”。
新建画面,画面名称“售货机主画面”。
售货机主画面如图2.2.2
(1)所示,售货机表面由按钮、指示灯、文字、多边形图形、点位图等组成。
画面是经过各种图形的堆叠,组合而成,具体如图2.2.2
(2)。
图2.2.2
(2)售货机主画面
图2.2.2
(2)售货机主画面分解图
在画面中,选择对象后,单击右键,在弹出的选项中选择“图素位置——图素前移(图素后移)”,可以设置各单元图的层次。
利用工具箱中的“显示画刷类型——过渡色类型”可以设置不同的视觉效果。
利用工具箱中的调色板,可设置单元图颜色(部分不可调色除外)。
在工具菜单下,单击“点位图”选项,然后在画面空白地方随意画出一小方块区域,右键单击这小方块,在弹出选项中选择“从文件中加载”,然后就可以从电脑中插入你想要的图片。
售货机画面中的咖啡瓶、可乐瓶、半岛咖啡图标等都是用这种方式插入的图片。
2.2.3定义I/O设备
程序在实际运行中是通过I/O设备和下位机交换数据的,当程序在调试时,可以使用仿真I/O设备模拟下位机向画面程序提供数据,为画面程序的调试提方便。
组态王提供一个仿真PLC设备,用来模拟实际设备向程序提供数据,供用户调试。
本论文选用仿真PLC(串口类设备)作为组态画面连接I/O设备。
图2.2.4数据词典
2.2.4数据词典
在数据词典下新建相关变量,如图2.2.4。
2.2.5售货机主画面动态设置
(1)硬币:
分别双击三个硬币按钮,在弹出的“动画连接”对话框钩选“按下时”选项,在弹出的“命令语言”框中分别输入命令语言:
1元:
if(\\本站点\启动系统==1)
{
if(\\本站点\定时6秒1==0&
&
\\本站点\定时6秒2==0)
\\本站点\投币1元=1;
}
5元:
\\本站点\投币5元=1;
10元:
\\本站点\投币10元=1;
(2)指示灯:
分别双击咖啡、可乐、找零三个指示灯,在弹出的“指示灯向导”对话框中,“变量名(离散量):
”栏分别输入“\\本站点\咖啡指标灯”、“\\本站点\可乐指标灯”、“\\本站点\找钱指标灯”。
(3)按钮:
分别双击咖啡、可乐、复位、启动四个按钮,在弹出的“动画连接”对话框钩选“按下时”选项,在弹出的“命令语言”框中分别输入命令语言:
咖啡:
{
if(\\本站点\实时钱数2>
=12)
{
if(\\本站点\定时6秒2==0)
\\本站点\选择咖啡=1;
\\本站点\咖啡指标灯=1;
\\本站点\定时6秒1=1;
}
}
可乐:
=15)
if(\\本站点\定时6秒1==0)
\\本站点\选择可乐=1;
\\本站点\可乐指标灯=1;
\\本站点\定时6秒2=1;
复位:
{\\本站点\复位=1;
启动:
\\本站点\启动系统=1;
(4)显示:
双击“¥”右边的“###”,在弹出的“动画连接”对话框钩选“模拟值输出”选项,在弹出的“模拟值输出连接”的“表达式”栏中输入:
\\本站点\实时钱数2
(5)投币口:
分别双击三个长方图形(在分解图中标有编号1、2、3的三个长方图形),在弹出的“动画连接”对话框钩选“闪烁”和“隐含”选项,在弹出的“闪烁连接”对话框设置分别为
1:
闪烁条件:
\\本站点\投币1元==1
闪烁速度:
100毫秒/隔
2:
\\本站点\投币5元==1
3:
\\本站点\投币10元==1
在弹出的“隐含连接”对话框设置分别为
条件表达式:
表达式为真时:
显示
(6)退币口:
退币口中“1元”硬币由三个部分组成(文字“1元”、一个椭圆和一个椭圆按钮),分别双击这三个部分,在弹出的“动画连接”对话框钩选“闪烁”和“隐含”选项,在弹出的“闪烁连接”对话框设置都为
\\本站点\找钱指标灯==1
在弹出的“隐含连接”对话框设置都为
(7)售货口:
一个咖啡瓶和一个可乐瓶图片,分别双击这两张图片,在弹出的“动画连接”对话框钩选“隐含”选项,在弹出的“隐含连接”对话框设置分别为:
\\本站点\计数1>
1
\\本站点\计数2>
(8)挡片1和挡片2是分别用来遮挡一瓶咖啡和一瓶可乐的,分别双击这两个挡片,在弹出的“动画连接”对话框钩选“闪烁”和“隐含”选项,在弹出的“闪烁连接”对话框设置分别为:
挡片1:
\\本站点\定时6秒1==1
800毫秒/隔
挡片2:
\\本站点\定时6秒2==1
在弹出的“隐含连接”对话框设置分别为:
(9)分别双击售货机主画面左边的“##”或“###”,在弹出的“动画连接”对话框钩选“模拟值输出”选项,在弹出的“模拟值输出连接”的“表达式”栏中输入的内容与其左边文字有对应关系,具体如表2.2.5(9):
表2.2.5(9)
实时币数
实时售出
历史币数
历史售出
1元
\\本站点\投入1元币数
——
\\本站点\投入1元总币数
5元
\\本站点\投入5元币数
\\本站点\投入5元总币数
10元
\\本站点\投入10元币数
\\本站点\投入10元总币数
咖啡
\\本站点\单次咖啡销量
\\本站点\咖啡总销量2
可乐
\\本站点\单次可乐销量
\\本站点\可乐总销量2
历史投钱总数
\\本站点\历史投钱总数
实时退币数
\\本站点\单次应退币数
历史退币数
\\本站点\历史退币总数
营业额
实时
\\本站点\单次营业额
历史
\\本站点\营业总额2
(10)画面属性命令语言
在售货机主画面随意一处单击右键,在弹出选项中选择“画面属性”,则弹出“画面属性”对话框,单击“命令语言…”,在弹出的“画面命令语言”对话框,将右上角“每3000毫秒”改为“每1000毫秒”,在“存在时”输入框中输入下面命令语言:
if(\\本站点\定时6秒1==1)
\\本站点\计数1=\\本站点\计数1+1;
if(\\本站点\计数1==1)
{\\本站点\咖啡指标灯=0;
\\本站点\找钱指标灯=1;
\\本站点\实时钱数2=\\本站点\实时钱数2-1;
if(\\本站点\计数1==2)
{\\本站点\咖啡指标灯=1;
if(\\本站点\计数1==3)
if(\\本站点\计数1==4)
\\本站点\实时钱数2=\\本站点\实时钱数2-1;
}
if(\\本站点\计数1==5)
if(\\本站点\计数1==6)
if(\\本站点\计数1==7)
{\\本站点\找钱指标灯=0;
\\本站点\计数1=0;
\\本站点\定时6秒1=0;
\\本站点\投入1元币数=0;
\\本站点\投入5元币数=0;
\\本站点\投入10元币数=0;
\\本站点\单次咖啡销量=0;
\\本站点\单次可乐销量=0;
\\本站点\单次营业额=0;
\\本站点\实时钱数2=0;
if(\\本站点\定时6秒2==1)
\\本站点\计数2=\\本站点\计数2+1;
if(\\本站点\计数2==1)
{\\本站点\可乐指标灯=0;
if(\\本站点\计数2==2)
{\\本站点\可乐指标灯=1;
if(\\本站点\计数2==3)
{\\本站点\可乐指标灯=0;
if(\\本站点\计数2==4)
if(\\本站点\计数2==5)
if(\\本站点\计数2==6)
if(\\本站点\计数2==7)
{\\本站点\找钱指标灯=0;
\\本站点\计数2=0;
\\本站点\定时6秒2=0;
if(\\本站点\复位==1)
0)
\\本站点\找钱指标灯=1;
if(\\本站点\计数3==0)
\\本站点\单次应退币数=\\本站点\实时钱数2;
\\本站点\历史退币总数=\\本站点\历史退币总数+\\本站点\单次应退币数;
\\本站点\计数3=\\本站点\计数3+1;
if(\\本站点\计数3==1)
{\\本站点\实时钱数2=\\本站点\实时钱数2-1;
if(\\本站点\计数3==2)
if(\\本站点\计数3==3)
if(\\本站点\计数3==4)
if(\\本站点\计数3==5)
if(\\本站点\计数3==6)
if(\\本站点\计数3==7)
\\本站点\计数3=0;
\\本站点\找钱指标灯=0;
\\本站点\复位=0;
(11)应用程序命令语言
打开“工程浏览器——简易售货机”——“命令语言”,双击“应用程序命令语言”,则弹出“应用程序命令语言”对话框,将右上角“每3000毫秒”改为“每55毫秒”,在“运行时”输入框中输入下面命令语言:
if(\\本站点\启动系统==1)
if(\\本站点\投币1元==1)
\\本站点\投入1元币数=\\本站点\投入1元币数+1;
\\本站点\投入1元总币数=\\本站点\投入1元总币数+1;
\\本站点\实时钱数2=\\本站点\实时钱数2+1;
\\本站点\投币1元=0;
if(\\本站点\投币5元==1)
\\本站点\投入5元币数=\\本站点\投入5元币数+1;
\\本站点\投入5元总币数=\\本站点\投入5元总币数+1;
\\本站点\实时钱数2=\\本站点\实时钱数2+5;
\\本站点\投币5元=0;
if(\\本站点\投币10元==1)
\\本站点\投入10元币数=\\本站点\投入10元币数+1;
\\本站点\投入10元总币数=\\本站点\投入10元总币数+1;
\\本站点\实时钱数2=\\本站点\实时钱数2+10;
\\本站点\投币10元=0;
{
if(\\本站点\选择咖啡==1)
\\本站点\实时钱数2=\\本