WinCC课程设计.doc
《WinCC课程设计.doc》由会员分享,可在线阅读,更多相关《WinCC课程设计.doc(9页珍藏版)》请在冰点文库上搜索。
![WinCC课程设计.doc](https://file1.bingdoc.com/fileroot1/2023-5/7/ff4f8b45-b64d-4d96-8e99-e84ca1a842a0/ff4f8b45-b64d-4d96-8e99-e84ca1a842a01.gif)
工业组态课程设计
题目:
基于WinCC的运料小车控制系统监控界面设计
院系:
物理与电气工程学院
班级:
学号:
姓名:
基于WinCC的运料小车控制系统监控界面设计
监控界面如下图所示,画面大小为800×600。
设计任务:
实现小车的自动运料方式与单动运料方式。
单动运料过程:
小车首先位于最左方,在后限位开关指示灯为绿色时,小车车门关闭,小车车厢上的煤为空,此时小车开始启动,向右运行,当运行到漏斗正下方时,前限位开关指示灯由红变绿,漏斗门打开,定时器开始计时7s(70×100ms),小车车门打开,开始卸煤,定时器开始计时5s(50×100ms),卸煤完成,小车停止。
自动运料过程则为单动过程的不断重复。
另外需组态两个按钮,停止按钮与复位按钮,停止按钮用来控制小车在单动与自动运料过程的停止。
复位按钮则用来对小车进行复位,即小车回到如图所示的初始状态下。
设计要求:
1.创建如图所示的过程画面。
2.创建所有使用的内部变量并作变量说明(包括变量的数据类型、名称以及作用,可列作表格写出)。
3.写出4个按钮的左键事件的C动作程序代码。
4.写出全局脚本程序代码(自动运行脚本程序与单动运行脚本程序),并要求写出所用的触发器。
设计如下:
1.创建过程画面如下:
内部变量
数据类型
名称
作用
flag1
二进制
单动标志位
控制单动
flag2
二进制
自动标志位
控制自动
xiaochex
无符号16位
小车位置
控制小车位置
qianxiankaiguan
二进制
前限位开关
限位开关
houxiankaiguan
二进制
后限位开关
限位开关
cheshachuxian
二进制
车沙出现
控制小车沙出现
loudoushanxiaoshi
二进制
漏斗沙
控制漏斗沙出现
T5
无符号16位
定时5S
定时
T7
无符号16位
定时7S
定时
loudoumen
二进制
漏斗门
控制漏斗门
xiaochemen
二进制
小车门
控制小车门
2.所使用的内部变量:
3.个按钮的C动作程序代码:
自动:
SetTagDWord("flag1",1);
单动:
SetTagDWord("flag2",1);
停止:
SetTagDWord("flag1",0);
SetTagDWord("flag1",0);
复位:
SetTagDWord("flag1",0);
SetTagDWord("flag1",0);
SetTagDWord("xiaochex",0);
4.全局脚本程序代码:
单动程序:
#include"apdefap.h"
intgscAction(void)
{DWORDvalue,valueT5,valueT7;
intbit1;
SetTagDWord("T5",50);
SetTagDWord("T7",70);
SetTagDWord("loudoushanxiaoshi",1);
bit1=GetTagDWord("flag1");
while(bit1)
{bit1=GetTagDWord("flag1");
value=GetTagDWord("xiaochex");
value+=10;
if(value>640)
{value=640;
SetTagDWord("xiaochex",value);
SetTagDWord("qianxiankaiguan",1);//前限位开关变色
SetTagDWord("loudoumen",30);//漏斗门开
SetTagDWord("loudoushanxiaoshi",0);//漏斗沙消失
SetTagDWord("cheshachuxian",1);//车沙出现
while(bit1)
{valueT7=GetTagDWord("T7");//定时7S
valueT7-=1;
if(valueT7<=0)
{valueT7=0;
SetTagDWord("T7",valueT7);//车沙出现
SetTagDWord("loudoumen",0);//漏斗门开关
SetTagDWord("loudoushanxiaoshi",1);//漏斗沙出现
SetTagDWord("qianxiankaiguan",0);//前限位开关变还色
while(bit1)
{value=GetTagDWord("xiaochex");
value-=10;
if(value<=0)
{
value=0;
SetTagDWord("xiaochex",value);
while(bit1)
{SetTagDWord("xiachemen",1);//che门开
SetTagDWord("houxiankaiguan",1);//hou限位开关变色
valueT5=GetTagDWord("T5");//定时5S
valueT5-=1;
if(valueT5<=0)
{valueT5=0;
SetTagDWord("cheshachuxian",0);
SetTagDWord("houxiankaiguan",0);//hou限位开关huan色
SetTagDWord("xiachemen",0);
SetTagDWord("flag1",0);
}
SetTagDWord("T5",valueT5);
bit1=GetTagDWord("flag1");
}
}
SetTagDWord("xiaochex",value);
bit1=GetTagDWord("flag1");
}
}
SetTagDWord("T7",valueT7);
bit1=GetTagDWord("flag1");
}
}
SetTagDWord("xiaochex",value);
bit1=GetTagDWord("flag1");
}
return0;
}
自动程序:
#include"apdefap.h"
intgscAction(void)
{DWORDvalue,valueT5,valueT7;
intbit1;
while(bit2)
{
SetTagDWord("T5",50);
SetTagDWord("T7",70);
SetTagDWord("loudoushanxiaoshi",1);
bit1=GetTagDWord("flag2");
while(bit1)
{bit1=GetTagDWord("flag2");
value=GetTagDWord("xiaochex");
value+=10;
if(value>640)
{value=640;
SetTagDWord("xiaochex",value);
SetTagDWord("qianxiankaiguan",1);//前限位开关变色
SetTagDWord("loudoumen",30);//漏斗门开
SetTagDWord("loudoushanxiaoshi",0);//漏斗沙消失
SetTagDWord("cheshachuxian",1);//车沙出现
while(bit1)
{valueT7=GetTagDWord("T7");//定时7S
valueT7-=1;
if(valueT7<=0)
{valueT7=0;
SetTagDWord("T7",valueT7);//车沙出现
SetTagDWord("loudoumen",0);//漏斗门开关
SetTagDWord("loudoushanxiaoshi",1);//漏斗沙出现
SetTagDWord("qianxiankaiguan",0);//前限位开关变还色
while(bit1)
{value=GetTagDWord("xiaochex");
value-=10;
if(value<=0)
{
value=0;
SetTagDWord("xiaochex",value);
while(bit1)
{SetTagDWord("xiachemen",1);//che门开
SetTagDWord("houxiankaiguan",1);//hou限位开关变色
valueT5=GetTagDWord("T5");//定时5S
valueT5-=1;
if(valueT5<=0)
{valueT5=0;
SetTagDWord("cheshachuxian",0);
SetTagDWord("houxiankaiguan",0);//hou限位开关huan色
SetTagDWord("xiachemen",0);
SetTagDWord("flag2",0);
}
SetTagDWord("T5",valueT5);
bit1=GetTagDWord("flag2");
}
}
SetTagDWord("xiaochex",value);
bit1=GetTagDWord("flag2");
}
}
SetTagDWord("T7",valueT7);
bit1=GetTagDWord("flag2");
}
}
SetTagDWord("xiaochex",value);
bit1=GetTagDWord("flag2");
}
bit1=GetTagDWord("flag2");
}
return0;
}