力控组态实验指导.docx
《力控组态实验指导.docx》由会员分享,可在线阅读,更多相关《力控组态实验指导.docx(25页珍藏版)》请在冰豆网上搜索。
力控组态实验指导
实验一反应釜监控系统的组态设计
一、实验目的
1、掌握组态软件监视窗口各种图形对象的编辑方法;
2、掌握组态软件各种动画连接的方法;
3、掌握组态软件中各种复杂图形对象的组态方法;
4、掌握实时数据库及历史参数的组态方法;
5、掌握自定义主菜单的定义及使用方法;
6、掌握用户组态及用户管理函数的使用的方法。
二、实验设备
计算机、力控PcAuto3.62或以上版本
三、实验内容
1、建立如图1.1所示的反应釜监控窗口;
图1.1反应釜液位监控主窗口
2、运行时,当按下开始按钮,首先将“入口阀门”打开(变为绿色)向反应釜注入液体;当反应釜内液体高度值大于等于100时则关闭“入口阀门”(变为黑色),而打开“出口阀门”(变为绿色),开始排放反应釜内液体,排放过程中,当液位高度值等于0时,则关闭“出口阀门”(变为黑色),重新打开“入口阀门”,如此周而复始地循环;
3、当按下停止按钮,则同时关闭“入口阀门”和“出口阀门”;
4、点击“实时趋势”按钮,则转入液位实时趋势窗口,如图1.2所示;
5、点击“历史趋势”按钮,则转入液位历史趋势窗口,如图1.3所示;
6、点击“报警处理”按钮,则转入液位报警处理窗口,如图1.4所示;
7、点击“退出系统”按钮,退出应用程序。
8、图1.2、1.3、1.4中的相应按钮同上面的说明,而按下“主窗口”按钮时则转入监控窗口,如图1.1所示;
9、图1.4中的“确认所有报警”按钮用于确认当前发生的所有报警。
图1.2反应釜液位实时趋势窗口
图1.3反应釜液位历史趋势窗口
图1.4反应釜液位报警处理窗口
10、组态用户。
11、自定义主菜单,运行时如图1.5所示。
a)自定义主菜单之文件菜单b)自定义主菜单之用户管理
图1.5自定义主菜单
四、实验步骤
1、绘制如图1.1所示监控窗口,并以“监控窗口”为名进行存盘;绘制如图1.2所示监控窗口,并以“实时趋势”为名进行存盘;绘制如图1.3所示监控窗口,并以“历史趋势”为名进行存盘;绘制如图1.4所示监控窗口,并以“报警处理”为名进行存盘。
2、实时数据库组态
在区域0定义模拟量I/O点level,数字量I/O点in_value、out_value、run如图1.6所示。
图1.6实时数据库组态时定义的I/O点
3、定义I/O设备
选取PLC类别下的“仿真PLC”,定义名为“PLC”的I/O设备。
4、数据连接
(1)、将模拟量I/O点level的PV参数连接到I/O设备“PLC”的模拟量输入区的0通道;
(2)、将数字量I/O点in_value的PV参数连接到I/O设备“PLC”的数字量输入区的0通道;
(3)、将数字量I/O点out_value的PV参数连接到I/O设备“PLC”的数字量输入区的1通道;
(4)、将数字量I/O点run的PV参数连接到I/O设备“PLC”的数字量输出区的0通道。
注:
仿真PLC是三维力控公司专门开发的用于演示的一个I/O程序,该程序的工作流程不需要去理解它。
在当前数据连接的情况下,当run的值为“1”时,in_value的值变为1,并且level的值从0开始增加到90多(90多多少是随机的),然后in_value的值变为0,out_value的值变为1,level的值从90多往下变化,变化到接近于0时(具体值也是随机的)in_value的值变为1,out_value的值变为0,如此循环,直到run的值为0时in_value和out_value的值保持为0,level的值不变。
5、实时数据库报警参数和历史参数的组态
对实时数据库点level组态报警参数,可以设置高限报警限值为70,报警优先级为低级;设置高高限报警限值为90,报警优先级为高级。
为了查询反应釜液位的历史值,需要对实时数据库点level组态历史参数,设置level.pv的值在精度变化1%时保存历史值。
6、动画连接
(1)监控窗口的动画连接
A、对填充体组态“百分比填充/垂直”动画连接,其组态参数如图1.7所示。
图1.7填充体垂直百分比填充组态参数对话框
B、对入口阀门(将各线打成组)组态组态“颜色变化”动画连接,其组态参数如图1.8所示。
图1.8入口阀门颜色变化动画连接组态参数对话框
对入口阀门处的两个管道(宽度为10的直线)组态“流动属性”动画连接,其组态参数如图1.9所示。
绿色
图1.9流动属性组态参数对话框
C、对入口阀门及相应管道也分别进行“颜色变化”动画连接和“流动属性”动画连接。
只是这时的条件改变为:
Out_value.pv==1。
D、对“开始”按钮组态“触敏动作/左键动作/按下鼠标”动画连接,这时脚本为:
run.pv=1;
E、对“停止”按钮组态“触敏动作/左键动作/按下鼠标”动画连接,这时脚本为:
run.pv=0;
F、对“退出系统”按钮组态“触敏动作/左键动作/按下鼠标”动画连接,这时脚本为:
exit(0),并将该动画连接定义在E安全区。
G、对“实时趋势”按钮组态“触敏动作/窗口显示”动画连接,选择“实时趋势”窗口,并将该动画连接定义在B安全区;对“历史趋势”按钮、“报警处理”按钮分别组态类似的动画连接,但它们的动画连接分别定义在C、D安全区;
H、对显示液位高度的文本(“####.##”)组态“数值输出/模拟”动画连接,让其显示level.pv的值。
(2)实时趋势窗口的动画连接
该窗口中的各按钮的动画连接可以参考前面的内容,而实时趋势的组态参数对话框如图1.10所示。
(3)历史趋势窗口的动画连接
该窗口中的各按钮的动画连接可以参考前面的内容,而历史趋势的组态参数对话框如图1.11所示。
在运行时可以双击历史趋势弹出时间设置对话框,从而修改需要查看的时间。
图1.10实时趋势组态参数对话框
图1.11历史趋势组态参数对话框
(4)报警处理的动画连接
该窗口中除“确认所有报警”按钮而外的各按钮的动画连接可以参考前面的内容,而“确认所有报警”按钮的“触敏动作/左键动作/按下鼠标”动画连接中的脚本为:
“AlmAckAll(0,0);”,表示确认本地实时数据库中0区域中的当前所有报警。
“报警记录”的组态参数中主要注意设置“区域号”为0,“单元号”为0,“记录格式”页中的“说明”长度为12,其余参数可以采用默认值。
7、脚本编写
编写“应用程序动作脚本”的“进入程序”动作脚本如下:
run.pv=0;//对实时数据库点run的pv参数赋初值
8、自定义满足图1.5所示主菜单。
其中,“打开”、“关闭”、“退出”、“登录”和“注销”等菜单命令可使用系统预定义的菜单命令,而“修改密码”菜单命令使用自定义菜单命令,其脚本为:
userpass($UserName);
“用户管理”菜单命令也使用自定义菜单命令,其脚本为:
Userman();
并将该菜单命令的操作权限定义为:
$UserLevel>=2;
9、组态用户。
定义4个用户,用户名分别为aaa、bbb、ccc、ddd,级别分别为操作工级、班长级、工程师级和系统管理员级,密码分别为:
aaa、bbb、ccc、ddd。
用户aaa的操作安全区为A安全区,用户bbb的操作安全区为A、B安全区,用户ccc的操作安全区为A、B、C安全区,用户ddd的操作安全区为A、B、C、D安全区。
10、使用系统缺省菜单,运行应用程序,检查是否满足图1.1至图1.4的要求。
11、使用自定义主菜单,运行应用程序,检查是否满足图1.5的要求。
12、在步骤10、11符合要求的情况下,使用自定义主菜单,运行应用程序,分别以用户aaa、bbb、ccc和ddd的名义登录,验证用户的操作权限和可操作的安全区,并通过运行系统进行用户的增加和删除操作。
五、实验报告要求
1.写出整个实验步骤的各项工作;
2.回答思考题。
六、思考题
1、如果需要通过按钮改变历史趋势显示的时间,该进行哪些工作?
2、在保持“流动属性/流动速度”为“快”的条件下,为了在运行时使流动速度进一步加快,应该进行哪些工作?
3、PcAuto3.62中安全管理的措施有哪些?
实验二十字路口车辆监控系统的组态设计
一、实验目的
1、进一步掌握组态软件监视窗口的组态方法;
2、掌握组态软件各种变量的使用方法;
3、掌握组态软件脚本程序的使用及编写方法;
4、掌握I/O设备的定义方法;
5、掌握实时数据库的组态及数据连接的方法。
二、实验设备
计算机、力控PcAuto3.62或以上版本、S7-200系列PLC、Step7forMicroWin编程软件
三、实验内容
1.绘制如图2.1所示的监视窗口;
2.在未按下“系统启动按钮”或系统工作时按下“系统停止按钮”,则东西、南北向指示灯均黄灯闪烁,两个方向车辆均可以通行,同时保证不能碰车;
3.按下“系统启动按钮”,则南北向、东西向只能有一个方向有车辆通行,不能通行方向车辆停靠在停车线以外;每一方向按照绿灯、黄灯闪烁、红灯循环变化;
4.指示灯只能通过PLC控制;
5.每个方向按照分钟统计车流量;
图2.1十字路口车辆监控系统示意图
四、实验步骤
1、绘制如图2.1所示监控窗口。
2、定义中间变量:
ewgreen:
东西绿灯,离散型
ewred:
东西红灯,离散型
ewyellow:
东西黄灯,离散型
ewflux:
东西向车流量,整型
ewposition_lr:
东西向车辆由左向右行驶位置控制变量,整型
ewposition_rl:
东西向车辆由右向左行驶位置控制变量,整型
ewi:
东西向单位时间内的车辆数,整型
sngreen:
南北绿灯,离散型
snred:
南北红灯,离散型
snyellow:
南北黄灯,离散型
snflux:
南北向车流量,整型
snposition_du:
南北向车辆由下到上行驶位置控制变量,整型
snposition_ud:
南北向车辆由上向下行驶位置控制变量,整型
sni:
南北向单位时间内的车辆数,整型
itime:
计算车流量计时控制变量,整型
time:
交通灯控制时间变量,整型
3.动画连接
(1)、将南北向指示灯命名为“snlight”;
(2)、将东西向指示灯命名为“ewlight”;
(3)、对南北向指示灯组态“闪烁”动画连接;条件为:
#snlight.fcolor==2016,即灯的颜色为黄色,动作为“或隐或现”,动作频率选择“快”;
(4)、对东西向指示灯组态“闪烁”动画连接;条件为:
#ewlight.fcolor==2016,即灯的颜色为黄色,动作为“或隐或现”,动作频率选择“快”;
(5)、对“系统启动”按钮组态“触敏动作”的“左键动作”动画连接,动作脚本为:
Start_Stop=1;
(6)、对“系统停止”按钮组态“触敏动作”的“左键动作”动画连接,动作脚本为:
Start_Stop=0;
(7)、对四车分别组态“目标移动”的“水平移动”或“垂直移动”动画连接,表达式分别为相应的车辆位置控制变量,值变化范围和位置变化范围分别根据各车在窗口中的位置确定;
(8)、对显示车流量的两个文本“####”分别组态模拟量输出动画连接;
4.脚本编写
(1)、先通过导航器中的“运行系统参数配置”将运行系统的“数据刷新周期”和“动作周期”均设置为100毫秒;如图2.2所示。
(2)、编写应用程序的“进入程序”动作脚本如下:
Start_Stop=0;//系统启动时的初值,南北黄灯亮,东西黄灯亮
snred=0;
sngreen=0;
snyellow=1;
ewred=0;
ewgreen=0;
ewyellow=1;
time=0;//计时变量赋初值
itime=0;
sni=0;//车辆数变量赋初值
ewi=0;
ewposition_lr=0;//四辆车初始位置控制
ewposition_rl=0;
snposition_du=0;
snposition_ud=0;
图2.2运行系统参数配置
(3)、将应用程序的“程序运行周期执行”的周期时间设置为100毫秒,并编写动作脚本如下:
//交通灯控制程序
ifStart_Stop==1then//如果系统启动,则开始计时
iftime<300then//一个周期30秒
time=time+1;
else//一个周期结束,进入下一个周期
time=0;
endif
iftime>=0&&time<=120then//0~12秒内,南北绿灯亮,东西红灯亮
snred=0;
sngreen=1;
snyellow=0;
ewred=1;
ewgreen=0;
ewyellow=0;
endif
iftime>120&&time<=150then//13~15秒内,南北黄灯亮,东西红灯亮
snred=0;
sngreen=0;
snyellow=1;
ewred=1;
ewgreen=0;
ewyellow=0;
endif
iftime>160&&time<=270then//16~27秒内,南北红灯亮,东西绿灯亮
snred=1;
sngreen=0;
snyellow=0;
ewred=0;
ewgreen=1;
ewyellow=0;
endif
iftime>280&&time<=300then//28~30秒内,南北红灯亮,东西黄灯亮
snred=1;
sngreen=0;
snyellow=0;
ewred=0;
ewgreen=0;
ewyellow=1;
endif
else//系统未启动或夜间控制
snred=0;
sngreen=0;
snyellow=1;
ewred=0;
ewgreen=0;
ewyellow=1;
endif
//下面程序根据相应变量值改变南北灯的颜色
ifsnred==1then
#snlight.fcolor=0;
endif
ifsnyellow==1then
#snlight.fcolor=2016;
endif
ifsngreen==1then
#snlight.fcolor=32;
endif
//下面程序根据相应变量值改变东西灯的颜色
ifewred==1then
#ewlight.fcolor=0;
endif
ifewyellow==1then
#ewlight.fcolor=2016;
endif
ifewgreen==1then
#ewlight.fcolor=32;
endif
//下面为车辆位置控制程序
ifStart_Stop==1then//正常工作状态
//东西向由左向右行驶车辆未到停车线
//或东西向由左向右行驶车辆已过停车线但不会和南北向车辆碰撞
//或东西向绿灯亮,,但东西向由左向右行驶车辆在路口位置不会和南北向车辆碰撞
ifewposition_lr<113||ewposition_lr>113||(ewposition_lr>=113&&ewgreen==1&&(snposition_du<153||snposition_du>245)&&(snposition_ud<153||snposition_ud>245))then
ewposition_lr=ewposition_lr+1;
endif
//东西向由右向左行驶车辆未到停车线
//或东西向由右向左行驶车辆已过停车线但不会和南北向车辆碰撞
//或东西向绿灯亮,但东西向由右向左行驶车辆在路口位置不会和南北向车辆碰撞
ifewposition_rl<107||ewposition_rl>107||(ewposition_rl>=107&&ewgreen==1&&(snposition_du<153||snposition_du>245)&&(snposition_ud<153||snposition_ud>245))then
ewposition_rl=ewposition_rl+1;
endif
//南北向由下向上行驶车辆未到停车线
//或南北向由下向上行驶车辆已过停车线但不会和南北向车辆碰撞
//或南北向绿灯亮,但南北向由下向上行驶车辆在路口位置不会和东西向车辆碰撞
ifsnposition_du<75||snposition_du>75||(snposition_du>=75&&sngreen==1&&(ewposition_lr<216||ewposition_lr>346)&&(ewposition_rl<216||ewposition_rl>346))then
snposition_du=snposition_du+1;
endif
//南北向由上向下行驶车辆未到停车线
//或南北向由上向下行驶车辆已过停车线但不会和南北向车辆碰撞
//或南北向绿灯亮,但南北向由上向下行驶车辆在路口位置不会和东西向车辆碰撞
ifsnposition_ud<65||snposition_ud>65||(snposition_ud>=65&&sngreen==1&&(ewposition_lr<216||ewposition_lr>346)&&(ewposition_rl<216||ewposition_rl>346))then
snposition_ud=snposition_ud+1;
endif
else//夜间控制
//东西向行驶车辆不会和南北向车辆在路口相撞
ifewposition_lr<75||((snposition_du<153||snposition_du>270)&&(snposition_ud<153||snposition_ud>270))||ewposition_lr>346then
ewposition_lr=ewposition_lr+1;
ewposition_rl=ewposition_rl+1;
endif
//南北向行驶车辆不会和东西向车辆在路口相撞
ifsnposition_ud<65||((ewposition_lr<216||ewposition_lr>346)&&(ewposition_rl<216||ewposition_rl>346))||snposition_ud>270then
snposition_ud=snposition_ud+1;
snposition_du=snposition_du+1;
endif
endif
//车流量统计
ifewposition_lr>560then//东西向由左向右行驶车辆行驶到终止位置
ewposition_lr=0;
ewi=ewi+1;//东西向车次统计
endif
ifewposition_rl>560then//东西向由右向左行驶车辆行驶到终止位置
ewposition_rl=0;
ewi=ewi+1;//东西向车次统计
endif
ifsnposition_du>444then//南北向由下往上行驶车辆行驶到终止位置
snposition_du=0;
sni=sni+1;//南北向车次统计
endif
ifsnposition_ud>444then//南北向由上往下行驶车辆行驶到终止位置
snposition_ud=0;
sni=sni+1;//南北向车次统计
endif
itime=itime+1;//每隔0.01秒加1
ifitime>=600then//计时1分钟到
itime=0;//重新开始计时
snflux=sni*60;//计算南北向车流量
ewflux=ewi*60;//计算东西向车流量
sni=0;
ewi=0;
endif
注意:
上面程序中关于车辆位置的判断数据取决于窗口中各对象的相对位置,要获得相应数据可以通过绘制直线来度量其象素数。
5、PLC控制交通灯
将上面程序通过调试获得通过后,方可进行下面的工作。
(1)、定义实时数据库模拟量点CON1、CON2,设置小数位数为0;
(2)、定义I/O设备,选取西门子PLCS7-200(PPI),添加设备驱动,设备名为“S7PPI”(可以自行用合法的字符命名),地址应与STEP7Micro/Win编程软件设置的PLC远程地址相一致,如图2.3、图2.4所示;
图2.3STEP7Micro/Win32仿真软件设置的PLC远程地址
图2.4力控组态软件定义S7-200(PPI)I/O设备的地址
(3)、将CON1.PV进行数据连接,连接到PLC的“AB(输出继电器)”,地址:
0,数据格式为:
“BY(8位无符号整数,0~255)”,不要选取“按位存取”,如图2.5所示;
图2.5CON1.PV的数据连接
将CON2.PV进行数据连接,连接到PLC的“MB(位寄存器)”,地址:
0,数据格式为:
“BY(8位无符号整数,0~255)”,不要选取“按位存取”,如图2.6所示;
图2.6CON2.PV的数据连接
(4)、定义整型间接变量Indirect1、Indirect2;
(5)、应用程序的“进入程序”动作脚本中删除“交通灯初始状态设置”程序段以及时间控制变量time的初始值设置语句,而添加如下语句:
@Indirect1=@CON1.PV//变量替换
@Indirect2=@CON2.PV//变量替换
(6)、删除“应用程序周期执行”动作脚本中的“交通灯控制”程序段,但不要删除“交通灯颜色控制”程序段,并添加如下语句:
//间接变量可以按位访问
ewred=indirect1.01;//对应Q0.0为东西向红灯
ewyellow=indirect1.02;//对应Q0.1为东西向黄灯
ewgreen=indirect1.03;//对应Q0.2为东西向绿灯
snred=indirect1.04;//对应Q0.3为南北向红灯
snyellow=indirect1.05;//对应Q0.4为南北向黄灯
sngreen=indirect1.06;//对应Q0.5为南北向绿灯
indirect2.01=Start_Stop;//对应M0.0为系统的起停控制
(7)、将PLC连接计算机,并利用STEP7Micro/Win32仿真软件编制交通灯控制程序,并下载到PLC中运行,PLC控制程序附于后。
(8)、将组态软件联机运行。
五、实验报告要求
1.写出整个实验步骤的各项工作;
2.回答思考题。
六、思考题
1、PLC程序是怎样控制交通灯的?
组态软件如何根据PLC的输出寄存器的值来控制交通灯的?
2、如下表达式中的indirect.01代表的是什么含义?
ewred=indirect1.01;
3、如果希望将车流量保存起来以备以后查阅,还应该完成哪些工作?
附录:
十字路口交通灯监控系统PLC控制程序
NETWORK