资源描述
*,第一讲,TwinCAT PLC,概述,TwinCAT PLC是基于 Beckhoff 系列可编程现场总线控制器PFC的编程开发系统与可视化图形监控工具软件。,TwinCAT 符合IEC 61131-3国际标准,提供标准的开发环境与基于该标准的5种程序设计语言:,指令表布尔助记符程序设计语言IL:Instruction List,梯形逻辑程序设计语言LD:Ladder Diagram,功能块程序设计语言FBD: Function Block Diagram ,顺序功能流程图程序设计语言SFC:Sequential,Function Chart,结构化文本程序设计语言ST:Structured Text,IEC 61131-3标准是PLC编程语言的国际标准。,TwinCAT PLC编程语言符合该标准的规定。,依照这个标准,一个程序包含以下几个局部:,l 数据结构,l POUs,l 全局变量,常规的编程语言都包含标识符,地址,类型,注释及常数。,TwinCAT PLC,功能:,第一讲,TwinCAT PLC,概述,丰富的程序功能指令,TwinCAT PLC提供了位逻辑运算、整数与浮点数运算、定时器与计数器功能、比较与赋值功能、移位与循环功能、数据类型转换功能、 PID功能等大量丰富的程序功能指令。 此外, 用户还可以根据特定需要编写自己的功能块、子程序。,离可在线程序仿真,用户应用程序计算机中进行仿真执行,无须将其下载到PFC中,方便用户对程序的测试与修改并节省了开发时间。,在线监视,在程序离线仿真或联机运行的过程中, 用户可以在TwinCAT PLC中以文本或图形的方式监视程序运行状态及数据变化情况。,诊断与调试,在程序离线仿真或联机运行的过程中,用户可以通过在程序中设置断点、逐步执行程序、手动为变量赋值的方式对程序进行诊断与调试。,编程工具组件:,第一讲,TwinCAT PLC,概述,用户手册,通讯电缆,软件光盘及授权,系统要求,:,计算机:Intel Pentium或更高,操作系统:MS-Windows 9X/NT 4.0/2000/XP,内存:16MB RAM Windows 9X ,64MB RAM Windows NT 4.0,至少10MB本机硬盘空间,鼠标,2倍速以上光驱,RS232串行口,通讯电缆,RS232,POU包括函数Function、功能块Function Block、程序Program三种类型。,每一个POU包含两局部:变量声明局部与程序指令局部。程序指令局部由五种语言IL、LD、SFC、FBD、ST之一编写。,IEC标准功能块包含在“standard.lib函数库文件中,每一个工程均默认加载standard.lib。,某一POU可在另一POU中被调用,程序中不允许递归调用但是可以简接的完成递归。,变量声明局部,程序指令局部,TwinCAT PLC以工程Project的方式管理用户的应用程序,所有的工程数据存在有一个工程名称的文件中,一个工程包含如下组件:POU、数据类型、程序资源、函数库与可视化元素。一个新的工程的第一个POU,系统会自动的给定名称MAIN,这是程序的起点相当于C程序中的主函数。从这里开始,就可以调用其他的POU。,TwinCAT PLC中的POUprogram organize unit 程序组织单元,1、函数Function,TwinCAT PLC,中,的,POU,Function作为一类POU,包含一局部程序,这局部程序可以在主程序中被屡次调用, Function在被调用时返回一个数据。,Function在基于脚本的程序设计语言如ST中可以作为表达式中的一个操作数;在基于图形的程序设计语言如FBD中以图形的方式调用。,在声明一个Function后,需要指定该Function所返回的数值的数据类型。,Function的名字为该Function的输出变量结果。,Function不具有内部条件,当用相同的参数屡次调用某一Function时,该Function总是返回相同的数据。,变量声明局部:,FUNCTION Fct: INT,VAR_INPUT,PAR1:INT;,PAR2:INT;,PAR3:INT;,END_VAR,程序指令局部:,LD PAR1,MUL PAR2,DIV PAR3,ST Fct,INT,:,function返回的,数据类型,Fct: Function名,声明输入变量,Fct=(PAR1*PAR2/PAR3),函数的调用,第二讲,TwinCAT PLC,中,的,POU,在IL中调用:,LD,7,FCT 2,4,ST,Result,在FBD中调用:,Fct,PAR3,PAR2,PAR1,7,2,4,Result,在ST中调用:,Result:=Fct(7,2,4);,2、功能块Function Block,第二讲,TwinCAT PLC,中,的,POU,功能块作为一类POU,包含一局部程序,这局部程序可以在主程序中被屡次调用, 功能块在被调用时输出一个或多个数据。与Function不同,功能块没有返回值。,功能块以调用其实例Instance的方式执行。功能块的实例需在POU的变量声明局部进行声明。实例可以声明为局部实例或全局实例。,功能块的实例可以在程序或其他功能块的变量声明局部声明,不允许在函数的变量声明局部声明。函数不允许调用功能块,功能块实例的输入输出变量可以在POU中设置,内部变量在调用时对于用户是不可见的。,功能块的所有变量的数据在被调用后保存直至下一次调用;以同样的参数屡次调用功能块,功能块不一定会输出相同的数据。,变量声明局部:,FUNCTION_BLOCK FUB,VAR_INPUT,PAR1:INT;,PAR2:INT;,END_VAR,VAR_OUTPUT,MULERG:INT;,VERGL:BOOL;,END_VAR,程序指令局部:,LD PAR1,MUL PAR2,ST MULERG,LD PAR1,EQ PAR2,ST VERGL,声明输入变量,声明输出变量,MULERG=PAR1*PAR2,PAR1=PAR2,VERGL=TRUE,PAR1PAR2,VERGL=FALSE,功能块的调用程序调用功能块或功能块相互调用,第二讲,TwinCAT PLC,中,的,POU,程序声明局部:,PROGRAM AWL,VAR,QUAD:BOOL;,INSTANZ:FUB; *声明功能块的实例*,ERG:INT:=0; *声明变量并赋初值*,END_VAR,在IL中调用:,CAL,INSTANZ(PAR1:=5,PAR2:=5),LD,INSTANZ.VERGL,ST,QUAD,LD,INSTANZ.MULERG,ST,ERG,在ST中调用:,INSTANZ(PAR1:=5,PAR2:=5);,QUAD:= INSTANZ.VERGL;,ERG:=INSTANZ.MULERG;,在FBD中调用:,FUB,INSTANZ,PAR1,PAR2,MULERG,VERGL,5,5,QUAD,ERG,3、程序Program与PLC_PRG,第二讲,TwinCAT PLC,中,的,POU,程序作为一类POU,在执行过程中输出一系列数据。在一个工程中,程序属于全局元素。,程序可以被调用,但不能在函数中调用程序。与功能块不同,程序的调用不通过实例。,程序中所有变量的数据在被调用执行后保存直至下一次执行。与功能块不同,调用功能块只是改变该功能块一个实例中的变量的数据。,MAIN是工程中系统预定义的一个特殊的程序。 MAIN每一循环周期被系统调用执行一次,相当于一个单任务程序的主程序。,MAIN 在用户建立一个新工程时由系统自动加载。,当用户在工程中进行了多任务管理的相关设置后,系统可以不需要MAIN 。否那么,用户不要删除MAIN或改变其程序名。,变量声明局部:,PROGRAM PRGExample,VAR_OUTPUT,PAR:INT;,END_VAR,程序指令局部:,LD PAR,ADD 1,ST PAR,程序的调用,第二讲,TwinCAT PLC,中,的,POU,在IL中调用:,CAL,PRGExample,LD,PRGExample.PAR,ST,ERG,在ST中调用:,PRGEample;,ERG:= PRGEample.PAR;,在FBD中调用:,PRGEample,ERG,PAR,第三讲,TwinCAT PLC,数据类型,布尔型,BOOL: 真 TRUE 与 假 FALSE ,占用1位Bit地址空间,整型,类型,下限,上限,占用地址空间,BYTE,0,255,8 Bit,WORD,0,65535,16 Bit,DWORD,0,4294967295,32 Bit,SINT,-128,127,8 Bit,USINT,0,255,8 Bit,INT,-32768,32767,16 Bit,UINT,0,65535,16 Bit,DINT,-2147483648,2147483647,32 Bit,UDINT,0,4294967295,32 Bit,实型,第三讲,TwinCAT PLC,数据类型,字符串型,STRING: 字符型数据的宽度在变量声明时指定,假设没有指定,系统默认宽度为80个字符。每个字符占一个字节8 Bit的地址空间。,举例:str:STRING(35)=This is a String;,又称浮点型。,REAL,: 占32Bit地址空间,日期 / 时间,第三讲,TwinCAT PLC,数据类型,类型,DATE,从1970-01-01开始以秒计算,占32 Bit地址空间,举例,低16 Bit,高16 Bit,D#1970-01-01,16#0000,16#0000,D#1970-01-02,16#5180,16#0001,D#1999-04-28,16#4F80,16#3726,D#2000-01-01,16#4380,16#386D,DATE_AND_TIME,或,DT,从1970-01-01 00时00分00秒开始以秒计算,占32 Bit地址空间,举例,低16 Bit,高16 Bit,DT#1970-01-01-00:00:00,16#0000,16#0000,DT#1970-01-01-00:00:01,16#0001,16#0000,DT#1999-04-29-11:59:00,16#4984,16#3728,DT#2000-01-01-00:00:01,16#4381,16#386D,日期 / 时间,第三讲,TwinCAT PLC,数据类型,类型,TIME,以毫秒计算,占32 Bit地址空间,举例,低16 Bit,高16 Bit,T#10s0ms,16#2710,16#0000,T#1440m0s0ms或T#1d,16#5C00,16#0526,T#60m0s0ms,16#EE80,16#0036,T#8052m18s3ms,或T#5d14h12m18s3ms,16#19D3,16#1CCC,TIME_OF_DAY,或,TOD,从00时00分00秒开始以毫秒计算,占32 Bit地址空间,举例,低16 Bit,高16 Bit,TOD#15:36:10.340,16#1764,16#0359,TOD#11:38,16#09C0,16#09C0,TOD#00:00,16#0000,16#0000,TOD#00:00:00.100,16#0064,16#0000,数组,第三讲,TwinCAT PLC,数据类型,TwinCAT PLC支持1维、2维、3维数组,数组声明语法如下:,:ARRAY.,.,.OF;,举例:,arr1:ARRAY1.5OF INT:=1,2,3,4,5;,arr2:ARRAY1.2,3.4OF INT:=1,3(7); * 1,7,7,7 *,arr3:ARRAY1.2,2.3,2.4OF INT:=2(0),4(4),2,3; * 0,0,4,4,4,4,2,3 *,数组元素的引用:,index1,index2,index3,举例:,Arr21,3,第四讲,TwinCAT PLC,变量声明与硬件寻址,1、,变量的声明,语法:AT:=;,内的局部为可选项,“Identifier :变量名,“Address:变量的地址I、Q、M,“Type :变量数据类型,“Initialization :变量的初始值,注意:,变量名不允许包含空格与特殊字符,不能与关键字相同;变量名不区分大小写,允许包含至多一个下划线;变量名最大为32个字符。,在声明过程中可以为变量赋初值,如果省略,系统默认初始值为“0。,使用“AT关键字可以将变量连接到硬件地址。连接到硬件地址的变量只能是POU的局部变量或全局变量,而不允许是POU的输入,输出变量。,2、POU,变量声明,TwinCAT PLC的POU包括声明局部, POU程序中使用的变量与常量需要在该局部进行声明全局变量除外,包括:,输入变量,Input Variable,输出变量,Output Variable,输入/输出变量, Input/ Output Variable ,局部变量,Local Variable ,保持变量,Retain Variable ,第四讲,TwinCAT PLC,变量声明与硬件寻址,2、POU,变量声明,第四讲,TwinCAT PLC,变量声明与硬件寻址,输入变量:在关键字“VAR_INPUT与“END_VAR之间声明,声明的变量作为POU的输入变量。调用POU时可以为输入变量赋值。,举例:,VAR_INPUT,in1:INT;,END_VAR,输出变量:在关键字“VAR_ OUTPUT与“END_VAR之间声明,声明的变量作为POU的输出变量。POU被调用时输出一个或多个数据。,举例:,VAR_OUTPUT,out1:INT;,END_VAR,2、POU,变量声明,第四讲,TwinCAT PLC,变量声明与硬件寻址,输入/输出变量:在关键字“VAR_IN_OUT与“END_VAR之间声明,声明的变量作为POU的输入/输出变量。变量的输入值不能为常量。,举例:,VAR_IN_OUT,inout1:INT;,END_VAR,局部变量:在关键字“VAR与“END_VAR之间声明,声明的变量作为POU的局部变量。外部程序不能操作POU的局部变量。,举例:,VAR,loc1:INT;,END_VAR,2、POU,变量声明,第四讲,TwinCAT PLC,变量声明与硬件寻址,保持变量:在关键字“VAR_RETAIN与“END_VAR之间声明。系统保存变量的数据,如果系统断电,数据也不会丧失。当系统上电,程序运行时,系统根据被保存的数据的状态运行程序。,举例:,VAR_RETAIN,rem1:INT;,END_VAR,3、全局,变量声明,声明方式与在POU中声明相同,请详见“第八讲 TwinCAT PLC程序资源的“全局变量 局部。,4、POU,常量声明,第四讲,TwinCAT PLC,变量声明与硬件寻址,在POU声明局部的关键字“VAR_CONSTANT与“END_VAR之间声明。,语法::=;,“Identifier :常量名,“Type :常量类型,“Initialization :常量的值,举例:,VAR_CONSTANT,con1:INT:=12;,END_VAR,5、全局,常量声明,第四讲,TwinCAT PLC,变量声明与硬件寻址,声明方式与在POU中声明相同,6、程序注释,在POU的声明局部与程序局部可以为程序添加注释文本,在POU的声明局部,IL与ST语言程序局部的每一行后添加程序注释,格式为*注释文本*,举例:,VAR,INSTANZ:FUB; *声明FUB功能块的实例INSTANZ*,END_VAR,在FBD与LD语言程序局部中,通过使用“Insert 下拉菜单中的“Comment命令添加注释;在SFC语言程序局部中,通过“Step Attributes添加注释。,7、PFC,硬件寻址,第四讲,TwinCAT PLC,变量声明与硬件寻址,说明,可编程总线适配器PFC的过程映像分为输入、输出量局部;在TwinCAT PLC中,分别以“%I与“%Q表示。在TwinCAT PLC中,I/O模块的地址排列遵循“模拟量地址在前,数字量地址在后的规律,即无论PFC节点中的I/O模块的物理排列顺序如何,模拟量模块的地址在前,数字量模块的地址在后。,在TwinCAT PLC中,地址的排列以“字16位为单位。在“%I地址区中,从%IW0开始,先为模拟量输入地址,后为数字量输入地址;在“%Q地址区中,从%QW0开始,先为模拟量输出地址,后为数字量输出地址。在模拟量地址中,I/O地址根据模拟量模块的物理安装顺序排列;在数字量地址中,I/O地址根据数字量模块的物理安装顺序排列。,此外,PFC的内部存储器以“%M表示,内部存储器地址的排列以“字16位为单位,从%MW0开始排列。,在POU中,可以使用硬件地址如“%IW0 ,“%QW1.0编程也可以使用变量编程。假设使用变量编程,需要在POU变量声明局部进行变量的声明。,7、PFC,硬件寻址,第四讲,TwinCAT PLC,变量声明与硬件寻址,在 TwinCAT PLC中,硬件地址由“%、地址范围、地址长度与数字组成。,地址范围:,地址长度:,I,Input,X,Single Bit,Q,Output,None,Single Bit,M,Memory location,B,Byte (8 Bit),W,Word (16 Bit),D,Double word (32 Bit),举例:,%,IX2.0,:,%,IW215,:,%,QB7,:,%MD48,:,输入地址第2字第0位,输入地址第215字,输出地址第7字节,内存地址第48双字,7、PFC,硬件寻址,第四讲,TwinCAT PLC,变量声明与硬件寻址,PFC,地址分布:,地址长度,地址,Bit,0.0 0.7,0.7 0.15,1.0 1.7,1.8 1.15,254.0 254.7,254.8 254.15,255.0 255.7,255.8 255.15,Byte,0,1,2,3,508,509,510,511,Word,0,1,254,255,DWord,0,127,注意:,I/O模块的地址排列遵循“模拟量地址在前,数字量地址在后的规律,即无论PFC节点中的I/O模块的物理排列顺序如何,模拟量模块的地址在前,数字量模块的地址在后。,位以字的宽度存储,访问某一位可以使用“%MX5.0 的方式,即内存地址第5字第0位。,第五讲,TwinCAT PLC,POU程序设计语言,1、指令表布尔助记符程序设计语言IL,布尔助记符程序设计语言是用布尔助记符来描述程序的一种程序设计语言。布尔助记符程序设计语言与计算机中的汇编语言非常相似,采用布尔助记符来表示操作功能。,IL语言程序由一系列指令构成,每一条指令包括一个操作符与一个或多个操作数。,在程序的每一行起始出可以设置标签Label,在每行指令后可以添加注释文本Comment。,1、指令表布尔助记符程序设计语言IL,第五讲,TwinCAT PLC,POU程序设计语言,修饰符:,C:用于JMP、CAL、RET语句,如果该指令前的表达式结果为“真,那么执行该指令。,N:用于JMP、CAL、RET语句,如果该指令前的表达式结果为“假,那么执行该指令。,N:在其他语句中用于操作数布尔量取反。,用户使用“Insert下拉菜单中的相关命令可以在指令中插入操作符、操作数、函数与功能块。,IL操作符:,操作符,可用修饰符:,注释:,LD,N,将操作数结果写入缓存,ST,N,将运算结果写入操作数,S,置位布尔操作数,R,复位布尔操作数,1、指令表布尔助记符程序设计语言IL,操作符,可用修饰符:,注释:,AND,N,位逻辑“与”运算,OR,N,位逻辑“或”运算,XOR,N,位逻辑“异或”运算,ADD,“加”运算,SUB,“减”运算,MUL,“乘”运算,DIV,“除”运算,GT,大于,GE,大于等于,EQ,等于,NE,不等于,LE,小于等于,第五讲,TwinCAT PLC,POU程序设计语言,1、指令表布尔助记符程序设计语言IL,第五讲,TwinCAT PLC,POU程序设计语言,操作符,可用修饰符:,注释:,LT,小于,JMP,C,N,跳转到“Label”,CAL,C,N,调用程序或功能块,RET,C,N,返回,举例:,操作符:,LD,ANDN,JMPC,LDN,ST,mark:,LD,ST,操作数:,TRUE,BOOL1,mark,BOOL2,ERG,BOOL2,ERG,注释:,(*将“TRUE存入缓存*),(*取“BOOL1反,与“TRUE做与运算*),(*如果结果为“True,跳转到“mark*),(*取“BOOL2反,存入变量“ERG中*),(*取“BOOL2,存入变量“ERG中*),2、梯形逻辑程序设计语言LD,第五讲,TwinCAT PLC,POU程序设计语言,梯形逻辑程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。这种程序设计语言采用因果关系来描述事件发生的条件和结果。每个梯级网络是一个因果关系。在梯级网络中,描述事件发生的条件表示在左面,事件发生的结果表示在后面。,梯形图由一系列的梯级网络构成,每一个梯级网络包含触点、输出线圈、功能块等元素。,2、梯形逻辑程序设计语言LD,第五讲,TwinCAT PLC,POU程序设计语言,元素:,标识:,注释:,常开触点,| |,如果指定地址信号状态为“1”,则触点闭合,反之触点断开。,常闭触点,| / |,如果指定地址信号状态为“1”,则触点断开,反之触点闭合。,输出线圈,( ),线圈前运算结果为“1”,输出状态为“1”,反之输出状态为“0” 。,置位输出线圈,( S ),线圈前运算结果为“1”,输出状态为“1”,反之信号状态不变。,复位输出线圈,( R ),线圈前运算结果为“1”,输出状态为“0”,反之信号状态不变。,串联结构:相当于位逻辑的“与运算。,并联结构:相当于位逻辑的“或运算。,输出线圈不允许串联结构,2、梯形逻辑程序设计语言LD,第五讲,TwinCAT PLC,POU程序设计语言,在梯形逻辑程序设计语言中允许以图形的方式使用系统运算符与POU,运算符与POU可以在梯级网络中间使用如图1,也可以在梯级网络右侧以“使能的方式使用如图2。,图1,注:在此种方式下,要求运算符或POU所连接的变量为布尔型。,图2,注:“EN为该运算符或POU的使能端,如果前面运算结果为“1,那么使能端激活,程序执行;反之程序不执行。,2、梯形逻辑程序设计语言LD,第五讲,TwinCAT PLC,POU程序设计语言,用户使用“Insert下拉菜单中的相关命令可以在梯级网络中插入运算符、POU、触点、线圈和程序注释等,使用“Extras下拉菜单中的相关命令可以设置常开/常闭触点,置位/复位线圈。,用户可以使用工具栏在梯级网络插入触点、线圈及串联/并联结构。,插入串联触点,插入并联触点,插入输出线圈,常开触点/常闭触点切换,插入置位线圈/复位线圈,3、功能块程序设计语言FBD,第五讲,TwinCAT PLC,POU程序设计语言,功能模块图程序设计语言是采用功能模块来表示模块所具有的功能,不同的功能模块有不同的功能。它有假设干个输入端和输出端,通过软连接的方式,分别连接到所需的其它端子,完成所需的运算或控制功能。,FBD包含一系列程序网络,每个网络以图形的方式表示逻辑或数学运算, POU的调用。,3、功能块程序设计语言FBD,第五讲,TwinCAT PLC,POU程序设计语言,使用FBD工具栏:,对当前运算符添加输入端,对当前运算符或POU的赋值输出端添加另一个赋值输出端,同一运算结果可以输出至两个变量,插入运算符,插入赋值指令Assign,用于为运算符或POU的输入/输出变量或其他变量赋值。,插入跳转指令Jump,插入返回指令Return,插入函数调用,插入功能块或程序调用,运算符或POU的输入/输出变量或其他变量布尔型取反,变量置位/复位,3、功能块程序设计语言FBD,第五讲,TwinCAT PLC,POU程序设计语言,用户使用“Insert下拉菜单中的相关命令可以在梯级网络中插入运算符、POU、赋值指令、跳转指令、返回指令和程序注释等,使用“Extras下拉菜单中的相关命令可以设置变量取反,变量置位/复位。,注意:,用户应用程序的开发可以在IL、LD、FBD3种程序设计语言之间相互切换。,操作方法:选中所需切换的POU,使用“Project-“Object-“Convert命令,在“Convert Object对话框中选择所需切换的程序设计语言。,4、结构化语句程序设计语言ST,第五讲,TwinCAT PLC,POU程序设计语言,结构化语句描述程序设计语言是用结构化的描述语句来描述系统中各种变量之间的各种运算关系,完成所需的功能或操作的一种程序设计语言。,结构化语句描述程序设计语言是一种类似于高级语言的程序设计语言。在大中型的可编程序控制器系统中,常采用结构化语句描述程序设计语言来描述控制系统中各个变量的关系。,ST与IL同属于基于文本的程序设计语言,但是由于ST采用了类似于高级语言的程序结构,在开发较复杂的应用程序时更为简便快捷。,4、结构化语句程序设计语言ST,第五讲,TwinCAT PLC,POU程序设计语言,赋值表达式运算符优先级:,括号,函数调用,指数运算,取负数,取反,乘除运算,求余数,加减运算,比较运算,等于,不等于,逻辑与,逻辑异或,逻辑或,(),EXPT,-,NOT,* , /,MOD,+ , -, ,=,=,AND,XOR,OR,优先级,最高,最低,注意:,优先级相同的运算符运算顺序为“从左至右 。,4、结构化语句程序设计语言ST,第五讲,TwinCAT PLC,POU程序设计语言,赋值语句:,Var1=Var2*10,;,IF 语句:,IF,THEN,;,ELSIF,THEN,;,:,ELSIF,THEN,;,ELSE,;,END_IF,CASE 语句:,CASE,OF, : ;, : ;, : ;, : ;,ELSE,;,END_CASE,4、结构化语句程序设计语言ST,第五讲,TwinCAT PLC,POU程序设计语言,FOR 语句:,FOR, := ,TO, ,BY, ,DO,;,END_FOR,WHILE 语句:,WHILE,;,END_WHILE,REPEAT 语句:,REPEAT,;,UNTIL,END_REPEAT,RETURN 语句:,RETURN,;,EXIT 语句:,EXIT,;,5、功能表图程序设计语言SFC,第五讲,TwinCAT PLC,POU程序设计语言,功能表图程序设计语言是用功能表图来描述程序的一种程序设计语言。采用功能表图的描述,控制系统被分为假设干个子系统,便于程序的分工设计和检查调试。,SFC采用较为灵活的程序结构,可节省程序设计时间和调试时间, SFC常用于系统的规模校大,程序关系较复杂的场合。,5、功能表图程序设计语言SFC,第五讲,TwinCAT PLC,POU程序设计语言,在SFC程序设计语言中,程序由一系列的步骤Step组成,程序进程的执行取决于Step之间的执行条件Transition。,Step由行为 Action 与标识 Flag 组成,其中Action是一段由IL、LD、FBD、ST或SFC编写的程序 ; Flag用于显示该Step是否被激活的一个系统内部变量。,Entry Action: 在Step被激活之前执行一次的程序。,Exit Action: 在Step结束之前执行一次的程序。,执行条件Transition是一个布尔量数据类型的变量、地址、常数或具有布尔量数据类型结果的表达式。,Step,Transition,Action,Flag,Entry Action,Exit Action,SFC程序,5、功能表图程序设计语言SFC,第五讲,TwinCAT PLC,POU程序设计语言,使用SFC工具栏:,在之前插入,Step,在之后插入,Step,在右边插入程序进程选择分支,在左边插入程序进程选择分支,在右边插入程序进程并联分支,在左边插入程序进程并联分支,插入跳转指令,插入,Transition,与跳转指令,用户使用“Insert下拉菜单中的相关命令可以在程序中插入Entry Action与Exit Action,用户使用“Extras下拉菜单中“Zoom Action/ Transition可以对程序中的Action或Transition进行编辑。,连续功能图程序设计语言CFC,第五讲,TwinCAT PLC,POU程序设计语言,CFC是基于图形的程序设计语言,与FBD类似, CFC采用功能模块来表示模块所具有的功能,不同的功能模块有不同的功能。它有假设干个输入端和输出端,通过软连接的方式,分别连接到所需的其它端子,完成所需的运算或控制功能。,在CFC程序设计语言中,所有的程序元素包括输入、输出、POU、跳转指令、程序注释等没有位置要求。放置程序元素后,用户用鼠标将各个元素连接起来,构成程序的执行进程。在连接后移动程序元素,连接线自适应程序元素的位置。,6、连续功能图程序设计语言CFC,第五讲,TwinCAT PLC,POU程序设计语言,使用CFC工具栏:,插入输入元素,插入输出元素,插入运算符或POU,插入跳转指令,插入标签Label,插入返回指令,插入程序注释,运算符或POU的输入/输出变量或其他变量布尔型取反,变量置位/复位,为运算符或POU添加使能输入端EN与使能输出端ENO,注意:,插入运算符或POU时,系统默认为“AND运算符,用户可更改为所需的运算符或POU 。,当运算符或POU的EN端为“0,那么该运算符或POU的程序不执行,ENO端为“0。,当运算符或POU的EN端为“1,该运算符或POU的程序执行,执行无误,ENO端为“1;执行有误,ENO端为“0。,第六讲,TwinCAT PLC,运算符,WAGO-I/O-PRO 32支持所有IEC标准的运算符,运算符无须在工程中声明。,应用:,运算符:,数学运算,加、减、乘、除、余数、三角函数、绝对值、指数、对数,位逻辑运算,与、或、非、异或,移位/循环,左移位、右移位、左循环、右循环,比较,大于、大于等于、小于、小于等于、等于、不等于,其它,调用、数据类型转换、取地址,注意:,当用户在LD或FBD中使用运算符时,系统默认插入“AND加法运算符,用户可以根据需要输入所需的运算符。,使用运算符时需注意运算符应用的数据类型应该与变量的数据类型一致。,第七讲,TwinCAT PLC,函数库,1、函数库的管理,用户新建一个工程后,系统自动加载库“STANDARD.LIB,用户可以通过使用“Insert- “ Additional Library加载其它库;使用“Edit-“Delete从当前工程中删除库。,函数库文件的默认路径为:?,WAGO-I/O-PRO 32LIB2,用户使用“Window下拉菜单中的“Library Manager命令可以翻开“Library Manager 窗口。,函数库由一系列函数与功能块构成,可以在整个工程中调用。,2、STANDARD.LIB 库元素,第七讲,TwinCAT PLC,函数库,应用:,函数/功能块:,触发功能块,上升沿触发、下降沿触发,定时器功能块,延时接通定时器、延时断开定时器、延时脉冲定时器,计数器功能块,增1计数器、减1计数器、增1减1计数器,字符串处理函数,插入、删除、替换、连接、取字符,双稳态功能块,SR、RS,注意:,同使用运算符一样,请注意库中函数或功能块对变量数据类型的要求。,2、UTIL.LIB 库元素,第七讲,TwinCAT PLC,函数库,应用:,函数/功能块:,BCD转换,INT to BCD、 BCD to INT,位/字节处理函数,8bits to Byte、 Byte to 8bits 、取双字中的某1位、给双字的某1位赋值,数学运算,积分、导数、统计,信号发生器,三角波、锯齿波、方波、正弦波、余弦波,模拟量处理,滞后处理、高低限报警,第八讲,TwinCAT PLC,程序资源,TwinCAT PLC程序资源包括如下几项:,全局变量,Global Variables,PLC配置,PLC Configuration ,任务配置,Task Configuration,采样轨迹,Sampling Trace,查看与配方管理器,Watch and Receipt Manager,1、全局变量Global Variables,第八讲,TwinCAT PLC,程序资源,在POU变量声明局部所声明的变量或功能块实例只能在自身的程序中被访问,而在全局变量中声明的元素可以被工程中所有的POU访问。,变量的声明方式与在POU中声明相同,举例:,根本型:,VAR_GLOBAL,PAR1:INT;,PAR2:INT;,PAR3:INT;,END_VAR,保持型:,VAR_GLOBAL,RETAIN,PAR1:,INT,;,PAR2:,INT,;,PAR3:,INT,;,END_VAR,RETAIN:系统保存变量的数据,如果系统断电,数据也不会丧失。当系统上电,程序运行时,系统根据被保存的数据的状态运行程序。,常量:,VAR_GLOBAL CONSTANT,con1:,INT,:=12;,END_VAR,变量配置Variable Configuration,第八讲,TwinCAT PLC,程序资源,在功能块的声明局部可以对变量的地址进行不完整的配置,不完整局部用“*表示。如果在程序中调用了该功能块的实例,那么可以在“Variable Configuration中对于该实例的变量配置地址。,注意:,进行变量配置时保证“程序 . 实例 . 变量的路径正确。,在功能块声明局部与变量配置局部,变量的地址类型输入/输出与数据类型相符。,举例:,功能块声明局部:,FUNCTION_BLOCK locio,VAR,loci AT %I*:BOOL;,loco AT %Q*:BOOL;,END_VAR,程序声明局部:,PROGRAM PLC_PRG,VAR,Hugo:logio;,END_VAR,变量配置局部:,VAR_CONFIG,PLC_PRG.Hugo.loci AT %IX0.0:BOOL;,PLC_PRG.Hugo.loco AT %QX0.0:BOOL;,END_VAR,2、PLC配置PLC Configuration ,第八讲,TwinCAT PLC,程序资源,从以下图所示“Coupler Selection对话框的产品目录中选择所使用的PFC,当用户使用“Online下拉菜单中的Login命令,系统将用户程序下载到所选的PFC中。,3、任务配置Task Configuration,第八讲,TwinCAT PLC,程序资源,在多任务系统中,任务管理用于控制系统的程序执行过程。在任务管理中一个任务的执行取决于其优先级与执行条件。,优先级Priority:031,“0“最高,31最低。,执行条件Requirement:分为周期执行与触发执行两种执行条件。,周期执行:任务每隔一段时间周期执行一次,需要用户设置执行周期。,触发执行:一个BOOL型变量的上升沿触发任务执行,需要用户设置一个全局变量作为触发条件。,第八讲,TwinCAT PLC,程序资源,“Taskattributes对话框,用户使用“Insert下拉菜单中的“Insert Task命令或“Append Task命令,系统显示“Taskattributes对话框,如以下图所示:,Name项:,输入任务名,Priority项:,指定任务优先级031,Interval项:,指定任务执行周期,Single项:,指定任务执行触发变量,Select按钮:,选择触发变量,注意:,如果一个任务没有指定其执行条件,那么该任务的执行只取决于其优先级。,如果一个任务同时指定了执行周期与触发变量,那么该任务的执行只取决于执行周期而忽略触发变量。,“Program Call对话框,第八讲,TwinCAT PLC,程序资源,用户选择所添加的任务后使用“Insert下拉菜单中的“Insert Program Call命令或“Append Program Call命令,系统显示“Program Call对话框,如以下图所示:,在此对话框中,键入在该任务中所要调用程序的程序名或者通过点击“Select按钮选择所要调用的程序,如果所调用的程序需要输入参数,可以在该对话框中指定。,举例:program2(invar=:17),4、采样轨迹Sampling Trace,第八讲,TwinCAT PLC,程序资源,程序中变量的采样数据储存在的一段缓存中,在“Sampling Trace中以曲线轨迹的形式显示缓存中的变量采样数据。,最多20个变量可以同时采样,每个变量最大采样数为500个,采样周期或采样条件可以人为设定。采样数据的曲线轨迹可以图形或文本的方式保存。,“Trace Configuration对话框,第八讲,TwinCAT PLC,程序资源,用户使用“Extras下拉菜单中的“Trace Configuration命令,系统如下图对话框。,在该对话框中,用户进行如下设置:,指定需要采样的程序变量最多20个,设定终止采样触发变量数字量或模拟量,设置终止采样触发条件上升沿、下降沿,设置数据记录周期以毫秒计算,设置数据记录曲线轨迹的显示方式单次、连续、手动,5、查看与配方管理器Watch and Receipt Manager,第八讲,TwinCAT PLC,程序资源,用户使用该项功能可以集中查看程序中的变量数据。此外,在“Watch and Receipt Manager中用户还可以预先设置多个变量的数据值并同时传送到PFC中。,添加变量语法如下:,. :=,用户使用“Insert下拉菜单中“New Watch List命令可以添加多个配方列表。使用“Extras下拉菜单中“Save Watch List与“Load Watch List命令可以保存或加载其它配方列表。,当 用户设置了变量的数据值后,在联机情况下使用“Extras下拉菜单中的“Write Receipt命令将概数据值传送到PFC中。,第九讲,TwinCAT PLC,可视化元素,TwinCAT PLC提供了可视化功能,用户可以在计算机中以图形的方式查看程序执行过程中变量的变化情况并且通过图形的方式为变量赋值。,用户在离线状态下绘制一系列的图形元素,将图形元素的相关属性颜色、文本、位移、旋转角度、触发等与变量的数值相关联。在联机运行情况下,图形元素的相关属性根据变量数值的变化而变化。,使用绘图工具栏:,选择图形元素,绘制矩形,绘制圆角矩形,绘制椭圆形,绘制多边形,绘制多段直线,绘制弧线,插入位图,插入其它可视化元素,“Shape属性与“Text属性,第九讲,TwinCAT PLC,可视化元素,用户使用“Extras下拉菜单中的“Configure命令,系统显示“Regular Element Configuration对话框。,用户在“Shape属性选项中可以设置图形元素的形状:矩形、圆角矩形、椭圆形。,用户在“Text属性选项中可以设置图形元素中的静态文本及其文本的对齐方式与文本字体。,“Color属性与“Motion absolute属性,第九讲,TwinCAT PLC,可视化元素,用户在“Color属性选项中可以设置图形元素的静态填充色、静态边框色。,此外,用户可以设置图形元素关联某一布尔变量数值而变化的填充色、变框色。,用户在“Motion absolute属性选项中可以设置图形元素中的X轴位移、Y轴位移、显示比例、旋转角度的属性所关联的变量。,“Motion relative属性与“Variables属性,第九讲,TwinCAT PLC,可视化元素,用户在“Motion relative属性选项中可以设置图形元素的上、下、左、右4个边缘的位置属性所关联的变量。,用户在“Variables属性选项中可以设置图形元素中的显示/隐藏、颜色变化、动态文本属性所关联的变量。,“Input属性与“Text for Tooltip属性,第九讲,TwinCAT PLC,可视化元素,用户在“Input属性选项中可以设置图形元素的鼠标点击触发变量、鼠标点击切换画面、鼠标点击执行其它程序、允许键盘输入变量值的属性及其相关联的变量。,用户在“Text for Tooltip属性选项中可以设置图形元素的提示性文本。,首先,使用编程电缆将计算机的RS 232串行通讯口与PFC的编程口连接请注意不要进行带电插拔。,编写程序后,使用Resources选项中的PLC Configuration选项,指定所使用的可编程总线控制器的型号。然后使用“Online下拉菜单中的Login命令,将应用程序下载到所选的PFC中。下载程序后,WAGO-I/O-PRO 32C处于与PFC的联机状态,如果需要在计算机上仿真运行程序,那么选中Online下拉菜单中的Simulation Mode选项,然后使用“Online下拉菜单中的Login命令,即进入程序仿真状态。,在处于联机状态或程序仿真状态时,使用Online下拉菜单中的Run命令即可运行程序。联机状态时,PFC中程序运行;仿真状态时,程序在计算机中仿真运行。,第十讲,下载程序与刷新程序存储器,在WAGO-I/O-PRO 32中使用Online下拉菜单中的Flash命令,刷新程序存储器FLASH ROM,将程序固化在程序存储器中。如果不使用Flash命令,PFC断电后程序不能保存。也可以通过上述方法修改PFC中的程序。,下载程序并刷新程序存储器之后,断开计算机与PFC的连接,将PFC的程序运行开关拨到“运行位置,程序即可运行。,第十一讲,TwinCAT PLC,编程实例,在本实例中,应用TwinCAT PLC编写一个控制水位的程序:,图中水池水位为05米,要求水位大于4米停止进水泵停止,小于4米开始进水启动泵,从而到达控制水位的目的。,为了防止水位波动而使泵频繁地开启而损坏设备,采用以下控制方案:,水位大于4.1米时延迟3秒后泵停止,水位回落4.1米以下泵不启动,直至水位小于3.9米。,水位小于3.9米时延迟3秒后泵启动,水位上升3.9米以上泵不停止,直至水位大于4.1米。,1、建立一个新工程,第十一讲,TwinCAT PLC,编程实例,用户使用“File下拉菜单中的“New命令,在“New POU对话框中选择“FBD编程语言,然后点击“OK按钮。这样即新建一个工程。不要改变系统默认的“PLC_PRG程序名。,注意:,用户不要改变系统默认的“PLC_PRG程序名。,2、,硬件选型与寻址,第十一讲,TwinCAT PLC,编程实例,硬件,订货号,数量,地址,可编程总线适配器,750-815(MODBUS,RS485),1,模拟量输入模块,750-466(2AI 420mA),1,IW0,IW1,数字量输出模块,750-502(2DO 24VDC),1,QX0.0,QX0.1,终端模块,750-600,1,编程电缆,750-920,1,注:,750-466 AI模块的输入值为一个整数,占一个字16 bits的地址。对应420mA输入信号,输入值为“032767 。,在程序中需要将“032767 的整数输入值转换为“0.05.0 的浮点数工程值。,3、,变量声明,第十一讲,TwinCAT PLC,编程实例,在本例中需要声明如下变量:,模拟量输入变量整形/1Word 输入地址,数字量输出变量布尔型/1Bit 输出地址,液位实际值变量浮点型/1DWord 内存地址,2个延时接通定时器TON实例,在PLC_PRG的声明局部中声明变量:,PROGRAM PLC_PRG,VAR,level AT%IW0:INT;,levelgcz AT%MD0:REAL;,pump
展开阅读全文