wincc学习技巧.docx

上传人:b****5 文档编号:4844286 上传时间:2022-12-10 格式:DOCX 页数:32 大小:28.24KB
下载 相关 举报
wincc学习技巧.docx_第1页
第1页 / 共32页
wincc学习技巧.docx_第2页
第2页 / 共32页
wincc学习技巧.docx_第3页
第3页 / 共32页
wincc学习技巧.docx_第4页
第4页 / 共32页
wincc学习技巧.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

wincc学习技巧.docx

《wincc学习技巧.docx》由会员分享,可在线阅读,更多相关《wincc学习技巧.docx(32页珍藏版)》请在冰豆网上搜索。

wincc学习技巧.docx

wincc学习技巧

一、组态软件

二、C语言基础

1.WINCC中的语言

Wincc语言由C脚本(C-script)和B脚本(VB-script)组成。

WINCC中C脚本:

(1)C动作(在画布中编辑的程序代码)。

(2)全局脚本编辑器:

项目函数、标准函数和内部函数。

项目函数:

自定义本项目(保护性)

标准函数:

编辑好供C动作调用

内部函数:

(微软)自定义编辑函数在项目函数中

例如:

#pragma()

intNEW_Add(inta;inb)

{

intc;

c=a+b;

returnc;

}

2.WINCC中的(Tag)变量------程序使用的变量(书上P31--35)

变量:

C变量、WINCC变量

C变量:

int(数值型)、char(字符型)、BOOL(布尔型)---也就是二进制(为常用)

WINCC变量:

word(数值型)、char(字符型)、Bit(布尔型)(为常用)

常用变量如下:

布尔型:

SetTagBit(参数1,参数2)、GetTagBit(参数)

数值型:

SetTagWord(参数1,参数2)、GetTagWord(参数)

字符型:

SetTagChar(参数1,参数2)、GetTagChar(参数)

参数1:

变量名。

参数2:

具体要求。

例如参数1为液位,参数2为a

举例1二进制变量“启动”控制电机启停

BOOLa;

a=GetTagBit(“启动”);

if(a==0)

SetTagBit(“启动”,1);

举例2二进制变量“启动”控制电机启停

BOOLa;

staticinti=0;(类似inti;i=0;)

a=GetTagBit(“启动”);

if(a==0)

i++;

两者区别:

不加static加static

启动一次i=1启动一次i=1

启动二次i=1启动二次i=2

启动三次i=1启动三次i=3

启动四次i=1启动四次i=4

3.WINCC中的运算符

3.WINCC中的常用语句

三、变量组态

WINCC中的变量分为:

内部变量、外部变量和C动作(函数中的变量)

1.利用变量进行增减计数

步骤1:

进行画面构建,需要两个按钮和一个输入输出域(属性调整-)(变量、有变化时、输出)。

新建内部变量,命名为“计数”,属性为无符16位。

如下图所示;

步骤2:

在名字为“启动增加”的按钮中-----属性----事件---鼠标左键C动作:

unsignedshorta;

a=GetTagWord("计数");

a++;

SetTagWord("计数",a);

步骤3:

在名字为“启动减少”的按钮中-----属性----事件---鼠标左键C动作:

unsignedshorta;

a=GetTagWord("计数");

a--;

SetTagWord("计数",a);

2.利用变量进行增减计数(带有步长控制),可定义步长

步骤1:

进行画面构建,需要两个按钮和两个输入输出域(属性调整-)(变量为计数、有变化时、输出)步长对应的输入输出域(属性调整-)(变量为步长、有变化时、输入)。

新建2个内部变量,命名为“计数”和“步长”,属性为无符16位。

如下图所示;

步骤2:

在名字为“启动增加”的按钮中-----属性----事件---鼠标左键C动作:

unsignedshorta;

unsignedshortb;

a=GetTagWord("计数1");

b=GetTagWord("步长");

a=a+b;

SetTagWord("计数1",a);

步骤3:

在名字为“启动减少”的按钮中-----属性----事件---鼠标左键C动作:

unsignedshorta;

unsignedshortb;

a=GetTagWord("计数1");

b=GetTagWord("步长");

a=a-b;

SetTagWord("计数1",a);

步骤4:

如果调整步长,可直接输入

3.利用变量进行电机启动

新建内部变量,命名为“起停”,属性为无符16位。

在名字为“启停”的按钮中-----属性----事件---鼠标左键C动作:

BOOLa;

a=GetTagWord("起停");

if(a==0)

SetTagWord("起停",1);

if(a==1)

SetTagWord("起停",0);

4.利用变量进行windows窗口对象的修改

四、画面组态

5.画面的切换

方法1:

利用直接连接切换单个画面,即为在下图中“单击鼠标改变画面”的部分点击链接到所要去的画面。

组态完毕后,点击按钮即可达到。

方法2:

通过对象名称和画面名称的变量连接打开画面。

在书上P101

方法3:

通过内部函数打开画面。

在按钮属性中事件中鼠标左键中C动作利用软件内部函数输入程序如下:

OpenPrevPicture("画面名称");

6.利用画面窗口显示画面

方法:

SetVisible("画面名称","对象名称",1或0);

SetVisible表示可见度;画面名称表示画面的名字,例如1.pdl等;对象名称表示“画面窗口n”,“画面窗口n”在智能对象中;1或0表示可见或不可见。

步骤:

第一步:

新建三个画面,1.pdl、2.pdl、3.pdl。

目的将2.pdl、3.pdl在1.pdl中通过按钮的控制显示出来;

第二步:

分别在2.pdl、3.pdl中组态一个目标物;

第三步:

在1.pdl中组态两个按钮和两个画面窗口控件(名称为画面窗口1、画面窗口2),在智能对象中找到“画面窗口”,更改画面窗口属性(属性----几何----宽度为246,高度为129;属性---其它---边框改为是,显示改为否,画面名称添加2.pdl或3.pdl);

第四步:

将2.pdl、3.pdl画面的大小调整为和两个画面窗口一样大;

第五步:

进行按钮组态,在按钮属性中事件中鼠标左键中C动作中编写程序如下:

按钮1:

SetVisible("1.pdl","画面窗口1",1);

SetVisible("1.pdl","画面窗口2",0);

按钮2:

SetVisible("1.pdl","画面窗口1",0);

SetVisible("1.pdl","画面窗口2",1);

7.画面窗口属性-----时控显示

这个技巧功能是对上一个的继承,最终结果就是将三个画面循环显示。

步骤:

第一步:

新建四个画面,1.pdl、2.pdl、3.pdl、4.pdl。

目的将2.pdl、3.pdl、4.pdl在1.pdl中通过按钮的时间控制显示出来;(这里并非按钮按下显示,系统运行自动显示)

第二步:

分别在2.pdl、3.pdl、4.pdl中组态一个目标物;

第三步:

在1.pdl中组态一个按钮和三个画面窗口控件(名称为画面窗口1、画面窗口2、画面窗口3),在智能对象中找到“画面窗口”,更改画面窗口属性(属性----几何----宽度为246,高度为129;属性----其它----边框改为是,显示改为否,画面名称添加2.pdl或3.pdl或4.pdl);

第四步:

将2.pdl、3.pdl、4.pdl画面的大小调整为和三个画面窗口一样大;

第五步:

进行按钮组态,在按钮属性中几何中宽度中(假如宽度为70)C动作中编写程序如下:

staticinta=0;

a++;

if(a==1)

{

SetVisible("1.pdl","画面窗口3",1);

SetVisible("1.pdl","画面窗口4",0);

SetVisible("1.pdl","画面窗口5",0);

}

if(a==2)

{

SetVisible("1.pdl","画面窗口3",0);

SetVisible("1.pdl","画面窗口4",1);

SetVisible("1.pdl","画面窗口5",0);

}

if(a==3)

{

SetVisible("1.pdl","画面窗口3",0);

SetVisible("1.pdl","画面窗口4",0);

SetVisible("1.pdl","画面窗口5",1);

a=0;

}

return70;

触发器调整为1S中,即为间隔1S闪烁显示。

8.动画旋转组态(例如风扇转动)

这个技巧是为了组态一个旋转的动画,例如工业上的搅拌机等。

举例如下:

步骤1:

组态基本画面,可以在显示库中寻找,也可以自己绘制。

显示库:

从显示库中调用,若使用,首先将元件导出(注意保存),然后将元件删掉,然后再导入(插入)这个元件,便可以进行调整(折开、组装、编组)注意,编组时必须至少两个一组。

自己绘制:

例如矩形、圆等(注意属性的调整)全选编组。

例如编为4个组:

组1、组2、组3、组4

步骤2:

程序的编写-------在画布属性---几何---宽度(如果此时宽度为800)---C动作:

staticinta=0;

a++;

if(a==1)

{

SetVisible("1.pdl","组1",1);

SetVisible("1.pdl","组2",0);

SetVisible("1.pdl","组3",1);

SetVisible("1.pdl","组4",0);

}

if(a==2)

{

SetVisible("1.pdl","组1",0);

SetVisible("1.pdl","组2",1);

SetVisible("1.pdl","组3",0);

SetVisible("1.pdl","组4",1);

a=0;

}

return800;

步骤3:

触发器的调整,标准周期,250MS

9.动态化------------颜色改变

颜色改变是最基本的动态化的技巧,就是动态对话框的基本功能,利用颜色的变化来完成一个部件的动作或结束。

例如,画布属性---颜色-----动态对话框(事件名称也就是触发器的调整、表达式的填充或者变量、选择表达式结果的展现形式(布尔型或者其它调整颜色))。

10.动态化------------闪烁组态(元件闪烁)

此技巧主要是针对于元件库中的元件来讲。

例如,随便调出一个元件(属性----控件属性-----闪烁样式(4种选择,包括不闪烁-0、不可见-1、阴影-2、实心-3))。

点击后面的灯泡标志,选择动态对话框-----闪烁颜色------布尔型等。

此技巧元件可单独作用,亦可由按钮控制。

11.动态化------------动态填充组态

动态填充组态就是控制元件的动态填充。

例如,新建一个内部变量(命名为level、无符号16位、上限100、下限0、起始值0)、调出一个元件或绘制一个矩形(属性----动态填充改为“是”、填充量改为“0”、点击填充量后面的灯泡标志,直接连接变量level)。

在矩形---几何---宽度(假设宽度为100)----C动作:

(注意触发器调整250毫秒)

(1)填充增加

staticinta=0;

if(a>=100)

a=0;

SetTagWord("level",a);

a++;

return100;

(2)填充减少

staticinta=100;

if(a==100)

a=100;

SetTagWord("level",a);

a——;

return100;

(3)填充增减结合(先增加、再减少)

staticinta=0;

staticintb=0;(方向控制)

if(b==0)

{

if(a>=100)

{

b=1;

}

a++;

}

if(b==1)

{

if(a<=0)

{

b=0;

}

a——;

}

SetTagWord("level",a);

return100;

12.动态化------------对象的移动

对象的移动就是控制元件在画布上水平左右或者垂直上下的移动,亦或沿对角线移动,也可以综合性的各方向的移动。

以小车移动为例进行步骤分析如下:

步骤一:

选中元件----属性----几何(选择位置X、位置Y)----灯泡标志(C动作):

特别注意:

计算移动的距离范围,选出一个起点和一个终点(如果双向起点和终点和互换的)。

计算两点之间的距离。

如果水平移动,计算X之间的距离;如果垂直移动,计算Y之间的距离。

例如,起点X的坐标为500,终点X的坐标为20,那么距离为480。

(水平移动就是不断增加或者不断减少x)

步骤二:

下面以水平移动为例,进行C动作分析:

(1)水平左移(不断减少x)

staticinta=500;

if(a<=0)

a=480;

else

a=a-4;(每次移动的距离,可以自动调整)

return20+a;

(2)水平右移(不断增加x)

staticinta=0;

if(a>=500)

a=0;

else

a=a+4;(每次移动的距离,可以自动调整)

return20+a;

(3)水平左右移动(双向移动)

staticinta=500;

staticintb=0;(方向控制)

if(b==0)

{

if(a<=0)

{

b=1;(调整方向)

}

a=a-4;(每次移动的距离,可以自动调整)

}

if(b==1)

{

if(a>=500)

{

b=0;(调整方向)

}

a=a+4;(每次移动的距离,可以自动调整)

}

SetTagWord("level",a);

return20+a;

步骤三:

触发器调整250毫秒

注意:

位置X------水平(左右)移动

位置Y------垂直(上下)移动

高度---------放大或者缩小(上下)

宽度--------拉伸或缩短(左右)

13.动态化------------复杂动画设计

复杂动画设计是动态化画面的主要特色,也是工业画面组态主要部分。

本技巧的展现以混合液的控制系统为例进行论述。

(1)管道中液体流动

步骤一:

在元件库中调用管道。

管道在plantElemer-----pipes-----2270(弯管道)、2206(横放管道)、2180(纵放管道)中寻找。

画出液体流动的三种状态,第一种状态为原始状态,就是没有任何液体流动;第二种和第三中为液体流动的两种不同状态。

三种状态画好并导出到桌面,画好一个就导出一个。

分别命名(0、1、2)(3次)

步骤二:

新建一个变量,命名为“进水”,为无符号16位。

步骤三:

在智能对象中-----状态显示------组态对话框(变量为“进水”、有变化时、增加三页(0、1、2)将三个画面状态拖入0、1、2下面,相对应)。

步骤四:

在状态显示控件-----几何-----宽度(假设宽度为100)---C动作:

staticinta=0;//////或者staticunsignedshorta=0;//三种画面的第0张画面

if(a>2)当循环超过第二张画面,强制回到第一张画面。

a=1;三种画面的第1张画面

SetTagWord("进水",a);变量状态转移,将a变化给“进水”C变量转WINCC变量

a++;

return100;

步骤五:

触发器为标准周期,250或500MS,保存---运行

(2)进水阀控制的管道中液体流动

此技巧和

(1)的区别主要是增加阀门的控制。

即由阀门控制水流的通和断。

对于进水阀门:

步骤一:

在元件库中----plantElemer----valves(阀门)。

(注意导入和导出)

步骤二:

新建一个变量,命名为“进水阀”,为二进制变量。

新建一个变量,命名为“进水”,为无符号16位。

步骤三:

阀门------属性-----背景颜色-----动态对话框(事件名称为变量和触发器的调整为有变化时、表达式为“进水阀”、选择布尔型变量(真----1-----绿、假-----0-----红))。

步骤四:

阀门-----属性-----事件中-----鼠标左键-----C动作:

BOOLa;

a=GetTagBit(“进水阀”);

if(a==1)

SetTagBit(“进水阀”,0);

else

SetTagBit(“进水阀”,1);

对于进水状态显示控件:

在状态显示控件-----几何-----宽度(假设宽度为100)---C动作:

staticinta=0;//////或者staticunsignedshorta=0;/////////a表示水量

BOOLb;

b=GetTagBit(“进水阀”);

if(b==0)//////////////////如果没有按键按下,无液体流动。

{

SetTagWord("进水",0);

return100;

}

if(a>2)////////////////////////如果有按键按下,有液体流动。

a=1;

SetTagWord("进水",a);

a++;

return100;

触发器为标准周期,250或500MS,保存---运行

(3)进水阀和出水阀共同控制的管道中液体流动以及液位的状态显示

进水阀控制如上

(2)

对于出水阀门:

步骤一:

在元件库中----plantElemer----valves(阀门)。

(注意导入和导出)

步骤二:

新建一个变量,命名为“出水阀”,为二进制变量。

新建一个变量,命名为“出水”,为无符号16位。

步骤三:

阀门------属性-----背景颜色-----动态对话框(事件名称为变量和触发器的调整为有变化时、表达式为“出水阀”、选择布尔型变量(真----1-----绿、假-----0-----红))。

步骤四:

阀门-----属性-----事件中-----鼠标左键-----C动作:

BOOLa;

a=GetTagBit(“出水阀”);

if(a==1)

SetTagBit(“出水阀”,0);

else

SetTagBit(“出水阀”,1);

对于出水状态显示控件:

在状态显示控件-----几何-----宽度(假设宽度为100)---C动作:

staticinta=0;//////或者staticunsignedshorta=0;

BOOLb;

b=GetTagBit(“出水阀”);

if(b==0)

{

SetTagWord("出水",0);

return100;

}

if(a>2)

a=1;

SetTagWord("出水",a);

a++;

return100;

触发器为标准周期,250或500MS,保存---运行

对于液位的设定:

步骤一:

在标准对象中-----矩形(或者其它)进行属性调整(大小、颜色和管道液体同色)。

步骤二:

新建一个变量,命名为“液位”,为无符号16位。

上限100,下限0,起始值0。

步骤三:

矩形------属性------填充(动态填充改为“是”、填充量改为0其后面的灯泡标志-----直接连接变量“液位”(有变化时))。

步骤四:

矩形----属性-----几何-----宽度(假设为100)-----C动作如下:

staticinta=0;//////或者staticunsignedshorta=0;

BOOLb;

BOOLc;

a=GetTagWord(“液位”);

b=GetTagBit(“进水阀”);

c=GetTagBit(“出水阀”);

if(b==1)

a++;

if(c==1)

a--;

SetTagWord("液位",a);

return100;

步骤五:

触发器为250MS。

(标准周期)

(4)增加设定值的控制

本技巧是对(3)中液位部分的调整。

增加设定值。

使水位恒定在设定值所定在的位置。

对于液位的调整:

步骤一:

新建变量,命名“设定值”,无符号16位。

连接输入输出域输入设定值(变量为设定值、类型为输入、有变化时)。

步骤二:

程序修改------矩形----属性-----几何-----宽度(假设为100)-----C动作如下:

staticunsignedshorta;

staticunsignedshortd;

BOOLb;

BOOLc;

a=GetTagWord(“液位”);

d=GetTagWord(“设定值”);

b=GetTagBit(“进水阀”);

c=GetTagBit(“出水阀”);

if(a>d)

{

SetTagBit("出水阀",1);

a--;

}

if(a

{

SetTagBit("进水阀",1);

a++;

}

if(a==d)

{

SetTagBit("进水阀",0);

SetTagBit("出水阀",0);

}

SetTagWord("液位",a);

return100;

步骤三:

触发器为250MS。

(标准周期)

(5)增加急停方式的控制(了解)

步骤一:

新建变量“急停”,二进制变量。

按钮------事件-------鼠标-------C动作(按下,两个地方同时停下)

14.操作控制权限(保护权限)

15.字符串的应用

16.日期与时间的设置--------正确的提取日期和时间

方法1:

利用控件显示(直接显示),如图所示;

方法2:

利用程序显示

步骤一:

提取系统日期和时间;

变量管理-----添加新的驱动连接,如下图所示;

建立日期和时间变量,命名“date和time”,date(在“选择”中格式为日期、8位字符集、MM-DD-YYYY),time(在“选择”中格式为时间、8位字符集、HH-MM-SS),如下图所示:

分别建立对应的输入/输出域(在“组态对话框”中:

对应变量、有变化时,输出)如下图所示。

注意:

输入/输出域属性调整(输出格式:

字符串)

步骤二:

建立内部变量,命名“shijian”,建立相应的输入/输出域(在“组态对话框”中:

对应变量(shijian)、有变化时,输出)如下图所示。

注意:

输入/输出域属性调整(输出格式:

字符串)

步骤三:

将日期和时间相连;

在第二个时间对应的输入/输出域-----属性----几何-----高度(假设高度为40)----------

--C动作:

(触发器为500MS)

chara[20],b[20];

charaa[10],bb[10];

inti;

chartemp;

char*p;

p=GetTagChar("date");

strcpy(a,p);

for(i=0;i<5;i++)

{

aa[i]=a[i];

bb[i]=a[i+5];

}

aa[5]='\0';

bb[5]='\0';

for(i=0;i<4;i++)

{

temp=bb[i];

bb[i]=bb[i+1];

bb[i+1]=temp;

}

strcat(bb,aa);

strcpy(a,bb);

p=GetTagChar("time");

strcpy(b,p);

strcat(a,"");

strcat(a,b);

SetTagChar("shijian",a);

return40;

程序分析:

黑色程序部分:

能达到目的,但是显示西方格式(11-16-2013),不符合中国人审美习惯,故加蓝色部分程序,用于调整日期显示(2013-11-16)。

13.日期与

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1