西门子S7-1200 PLC应用技术项目教程(第3版) 课件 3.SCL语言基础宽屏-(LAD+SCL)_第1页
西门子S7-1200 PLC应用技术项目教程(第3版) 课件 3.SCL语言基础宽屏-(LAD+SCL)_第2页
西门子S7-1200 PLC应用技术项目教程(第3版) 课件 3.SCL语言基础宽屏-(LAD+SCL)_第3页
西门子S7-1200 PLC应用技术项目教程(第3版) 课件 3.SCL语言基础宽屏-(LAD+SCL)_第4页
西门子S7-1200 PLC应用技术项目教程(第3版) 课件 3.SCL语言基础宽屏-(LAD+SCL)_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目3SCL语言基础123SCL语言简介SCL语言基础SCL入门实验SCL编程语言简介

SCL(StructuredControlLanguage,结构化控制语言)。这种语言是基于IEC61131-3的国际标准,并获得PLCopen基础级认证。SCL语言为PLC做了优化处理,它不仅仅具有PLC典型的元素(例如输入/输出,定时器,计数器,符号表),而且具有高级语言的特性,例如:循环、选择、分支、数组和高级函数等功能。相对于梯形图编程,SCL语言非常适合于如下任务:复杂数学运算、数据管理、过程优化、配方管理和任务统计等。在TIA博图软件中,SCL、梯形图和FBD可以非常方便地整合在一个组织块、函数或函数块中。SCL语言基础基础知识--标识符标识符是指定给S7-SCL语言对象的名字;即常量、变量、函数/函数块的名字。标识符最多24个字母、数字或下划线组成,可以是任何顺序,但首字符必须是字母或下划线,不能是数字。S7-SCL标识符不区分对大小写。用户定义标识符时,不能使用保留字和标准标识符。例如:A1、A_1、,a1、_XY,都是合法的标识符;1A,ARRAY(数组的标识符),A1(含空格),都是不合法的标识符。SCL语言基础

常用的保留字比如:AND、ARRAY、BYTE、BOOL、CASE、CHAR、CONTINE、CONST、DWORD、DATE、DINT、DIV、DO、ENO、END_IF、END_CASE、END_FOR、END_STRUCT、END_WHILE、EXIT、ELSE、ELSIF、FALSE、FOR、GOTO、IF、INT、MOD、POINTER、REAL、RETURN、STRING、STRUCT、THEN、TIME、TIMER、TO、TRUE、TYPE、VAR、VOID、WHILE、WORD、XOR等,被系统专用,用户不能再定义为标识符。标准标识符,包括:块标识符,例DB0(数据块)、FB1(函数块)、FC1(函数)、OB1(组织块);地址标识符,例:%I0.0、%Q1.0、%MB3,定时器和计数器等标准标识符,用户不能再定义为标识符。基础知识--标识符SCL语言基础基础知识--运算符类型名称运算符优先级赋值运算赋值运算:=11算术运算

一元加+2

一元减-幂运算**3乘*4

除/模MOD整除DIV加+5减-SCL语言基础类型名称运算符优先级关系运算大于>6大于等于>=小于<小于等于<=等于=7

不等于<>逻辑运算非NOT3与AND或&8异或XOR9或OR10括号运算括号()1基础知识--运算符SCL语言基础基础知识--表达式

表达式,是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合。表达式在程序运行期间进行运算,然后返回一个值。一个表达式由操作数(如常数、变量或函数调用)和与之搭配的运算符(如*、/、+或-)组成。通过运算符可以将表达式连接在一起或相互嵌套。SCL语言基础基础知识--表达式表达式将按照下列因素定义的特定顺序进行运算:相关运算符的优先级,优先级数越小越优先;同等优先级运算符的运算顺序按照从左到右的顺序进行;赋值运算的计算按照从右到左的顺序进行;括号优先级最高。表达式有算术表达式、关系表达式和逻辑表达式三种类型。例:“X*Y+3”为算术表达式;“X>Y”为关系表达式;“XANDNOTY”为逻辑表达式。SCL语言基础基础知识--表达式--算术表达式算术表达式是最常用的表达式,又称为数值表达式。它是通过算术运算符来进行运算的数学公式。算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。算术运算符可以处理当前CPU所支持的各种数据类型。如果在该运算中有2个操作数的数据类型不同,那么运算结果的数据类型同长度大的数据类型一致,如:Int+DInt=DInt、USInt+UDInt=UDInt、Int+Real=Real、Real+LReal=LReal。算术表达式如:A*B+X/Y-3SCL语言基础基础知识--表达式--关系表达式关系表达式是用关系运算符将操作数连接起来的式子。关系表达式的运算结果是一个布尔值(BOOL)。如果关系成立,结果为真,可以用TRUE(或1)表示;否则,关系不成立,结果为假,可以用FALSE(或0)表示。关系表达式:a>b;A>20ANDB<20;X<>(YANDZ)SCL语言基础基础知识--表达式--逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。逻辑表达式的值是一个逻辑值,即“true”或“false”。可以用数字“1”表示“真”,以数字“0”表示“假”。逻辑表达式:"MyTag1"ANDNOT"MyTag2"

;XANDNOTYSCL语言基础基础知识--数组数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素。用于区分数组的各个元素的数字编号称为下标。在SCL中定义一维数组Array[lo..hi]oftype例如:Array[0..9]ofbyte,表示定义了一个一维数组,数组共10个元素,数组元素类型为字节类型。SCL语言基础基础知识--赋值运算赋值运算,是将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。函数名称也可以作为表达式。赋值运算将调用该函数,并返回其函数值,赋给左侧的变量。赋值运算的数据类型取决于左边变量的数据类型。右边表达式的数据类型必须与该数据类型一致。赋值运算的计算按照从右到左的顺序进行。SCL语言基础基础知识--赋值运算单赋值运算:执行单赋值运算时,仅将一个表达式或变量分配给单个变量。例如:a:=b;多赋值运算:执行多赋值运算时,一个指令中可执行多个赋值运算。例如:a:=b:=c;此时,将执行以下操作:b:=c;a:=b;组合赋值运算:执行组合赋值运算时,可在赋值运算中组合使用操作符"+"、"-"、"*"和"/"。例如:a+=b;此时,将执行以下操作:a:=a+b;多次组合赋值运算:a+=b+=c*=d;此时,将按以下顺序执行赋值运算:c:=c*d;b:=b+c;a:=a+b;SCL语言基础1)"MyTag1":="MyTag2";变量赋值2)"MyTag1":="MyTag2"*"MyTag3";表达式赋值3)"MyTag":="MyFC"();调用一个函数,并将函数值赋给"MyTag"变量4)#MyStruct.MyStructElement:="MyTag";将一个变量赋值给一个结构元素5)#MyArray[2]:="MyTag";将一个变量赋值给一个ARRAY元素6)"MyTag1"-="MyTag2"+="MyTag3";"MyTag2"和"MyTag3"相加,将相加的结果赋值给操作数"MyTag2",再从"MyTag1"中减去"MyTag2",计算结果将赋值给"MyTag1"。基础知识--赋值运算SCL语言基础基础知识--注释注释是程序设计的基本要素,用于程序的解释,更好地帮助读者理解程序,注释不生成代码,不影响程序的执行。注释可以分行注释和块注释两种方式。注释可以分行注释和块注释两种方式:行注释:

#a:=0//给变a赋初值行块注释:(*这是一个星三角降压启动的函数,星型启动转换到三角形运行的时间,为输入参数,需从函数调用时,进行参数传递*)SCL基本指令SCL基本控制语句选择语句(IF语句和CASE语句)循环语句(FOR语句、WHILE语句和REPEAT语句)跳转语句(CONTINUE语句、EXIT语句、GOTO语句和RETURN语句)选择语句--IF语句①IF<表达式>THEN<语句>END_IF;SCL基本指令【例1】按下启动按钮,电机启动;按下停止按钮,电机停止。(相当于实现“启-保-停”功能)IF"启动"THEN"电机":=1;END_IF;IF"停止"THEN"电机":=0;END_IF;选择语句--IF语句IF<表达式>THEN语句1ELSE

语句2END_IF;SCL基本指令【例2】编写一个点动的程序,按下点动按钮,电机启动运行;释放点动按钮,电机停止。IF"点动"THEN"电机":=1;ELSE"电机":=0;END_IF;选择语句--IF语句IF<表达式1>THEN语句1ELSIF<表达式2>THEN语句2ELSIF<表达式3>THEN语句3...ELSE语句nEND_IF;SCL基本指令选择语句--IF语句SCL基本指令【例3】当温度小于0°C,黄灯亮;0°C~30°C,绿灯亮;大于30°C,红灯亮。

IF#温度<0THEN#黄灯:=1;

ELSIF#温度<30THEN#绿灯:=1;

ELSE#红灯:=1;END_IF;选择语句--CASE语句SCL基本指令CASE<变量>OF<常数1>:<语句1><常数2>:<语句2>......<常数n>:<语句n>ELSE<语句>END_CASE;参数数据类型存储区说明<变量>整数位序列I、Q、MD、L与设定的常数值进行比较的值。TIAPORTALV16开始支持位序列数据类型的变量<常数>位序列

若为位序列,则常数可以为以下值:二进制数(例如:2#10);八进制数(例如:8#77);十六进制数(例如:16#AD);未定型的常数(例如:1000)整数作为指令序列执行条件的常数值。常数可以为以下值:整数(例如:5);整数范围(例如:15~20);由整数和范围组成的枚举(例如:10,11,15~20)<语句>

当表达式的值等于某个常数值时,将执行该常数后的指令,然后程序将从END_CASE之后继续执行。如果表达式的值与所有设定的常数都不相等,则执行ELSE后编写的指令。ELSE是一个可选项,可以省略。选择语句--CASE语句SCL基本指令选择语句--CASE语句SCL基本指令【例4】下面是CASE语句的例子:

CASE“Tag_value"OF

0:“Tag_1”=1;

1,3,5:“Tag_2”=1;

2,4,6:“Tag_3”=1;

7..10:“Tag_4”=1;

16,17,20..25:“Tag_5”=1;

ELSE“Tag_6”=1;

END_CASE;选择语句--CASE语句SCL基本指令“Tag_value"01,3,52,4,67,8,9,1016,17,20,21,22,23,24,25其他“Tag_1”1-----“Tag_2”-1----“Tag_3”--1---“Tag_4”---1--“Tag_5”----1-“Tag_6”-----1循环语句--FOR语句SCL基本指令FOR<运行变量>:=<起始值>TO<结束值>BY<增量>DO<语句>;END_FOR;如果增量为1,可以简写为:FOR<运行变量>:=<起始值>TO<结束值>DO

<语句>;END_FOR;FOR循环语句,可以通过"复查循环条件"(Continue)语句,终止当前正在运行的程序循环。通过"立即退出循环"(Exit)语句终止整个循环的执行。循环语句--FOR语句SCL基本指令【例5】

FOR#i:=2TO6BY2DO

#a[#i]:=#T_value*#b[#i];

END_FOR;若数组元素#b[2]、#b[4]、#b[6]的值分别为1、2、3,#T_value的值为10,则数组元素#a[2]、#a[4]、#a[6]分别为:10、20、30。循环语句--WHILE语句SCL基本指令WHILE<条件>DO<语句>END_WHILE;执行该语句时,将对指定的表达式进行运算。如果表达式的值为True,则表示满足该条件,执行循环体内的语句;如果其值为False,则表示不满足该条件,退出循环,执行END_WHILE后面的语句。循环语句--WHILE语句SCL基本指令【例6】求1+2+3+...+100的和,程序如下:“SUM”:=0;“I”:=1;WHILE“I”<=100DO“SUM”:=“SUM”+“I”;“I”:=“I”+1;

END_WHILE;循环语句--REPEAT语句SCL基本指令当不满足条件时,执行REPEAT循环,直到条件满足时退出循环。如果表达式的值为True,则表示满足该条件;如果其值为False,则表示不满足该条件。REPEAT语句先执行循环,然后在判断条件,因此,即使满足终止条件,至少也会执行一次循环内的语句REPEAT语句的语法格式如下:REPEAT<语句>UNTIL<条件>END_REPEAT;循环语句--REPEAT语句SCL基本指令【例7】某企业共有50种产品,数组#N_array存放产品序号,在数组中查找序号为1000的产品,如果查到,则产品序号赋给变量#number,如果数组中查不到该序号,则变量#number赋0。

#index:=0;

REPEAT

#index:=#index+1;

UNTIL#index>50OR#N_array[#index]=1000

END_REPEAT;

IF#index>50THEN

#number:=0;

ELSE#number:=#index;

END_IF;跳转语句跳转语句:CONTINUE语句、EXIT语句、GOTO语句、RETURN语句SCL基本指令循环终止CONTINUE终止本次循环执行,继续执行下次循环EXIT退出整个循环函数/函数块终止RETURN退出正在执行的函数/函数块,返回调用处跳转执行GOTO跳转至标号处执行跳转语句--CONTINUE语句CONTINUE语句也称“复查循环条件语句”,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。CONTINUE语句用在FOR、WHILE或REPEAT循环中。语句格式为:CONTINUE;SCL基本指令跳转语句--CONTINUE语句SCL基本指令【例8】把100~200之间的不能被3整除的数,放到组数Array中。

程序如下:

#I:=0;

FOR#N:=100TO200DO

IF#NMOD3=0THEN

CONTINUE;

END_IF;

#Array[#I]:=#N;

#I:=#I+1;

END_FOR;跳转语句--EXIT语句EXIT语句也称为"立即退出循环"语句,可以随时取消FOR、WHILE或REPEAT循环的执行,而无需考虑是否满足条件,并在循环结束,执行END_FOR、END_WHILE或END_REPEAT后继续执行程序。语句格式为:EXIT;SCL基本指令跳转语句--EXIT语句SCL基本指令【例9】数组Array共20个元素,给前十个元素赋初值100,后十个元素的值保持不变。程序如下:

FOR#I:=0TO10DO

IF(#I>=10)THEN

EXIT;

END_IF;

#Array[#I]:=100;

END_FOR;跳转语句--CONTINUE语句和EXIT语句的区别SCL基本指令CONTINUE只结束本次循环,而不是终止整个循环的执行;而EXIT语句是结束整个循环过程,不再判断执行循环的条件是否成立。WHILE<条件1>DO<语句>...IF<条件2>THEN

CONTINUE;END_IF;...END_WHILE;WHILE<条件1>DO<语句>...IF<条件2>THEN

CONTINUE;END_IF;...END_WHILE;跳转语句--CONTINUE语句和EXIT语句的区别SCL基本指令跳转语句--GOTO语句SCL基本指令一般GOTO语句的格式如下:GOTO<跳转标签>;...

<跳转标签>:<语句>GOTO语句,也称跳转语句,可以使程序跳转到指定的标号处,开始继续执行程序。跳转标签和"跳转"指令必须在同一个程序块中。在一个程序块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。跳转语句--GOTO语句SCL基本指令【例10】判断INT类型的变量#A的值,如果大于27648,则报警变量ALARM为1,否则报警变量ALARM为0,电机输出MOTOR始终为1,程序如下:IF#A>27648THENGOTOL1;ELSE#ALARM:=0;GOTOL2;END_IF;L1:#ALARM:=1;L2:#MOTOR:=1;跳转语句--RETURN语句SCL基本指令RETURN语句的一般格式为:RETURN;RETURN语句也称块退出语句,用于终止当前的程序块(OB、FC、FB)的执行,并返回到上一级的块调用处继续执行程序。如果RETURN语句出现在块结尾处,则可以忽略RETURN语句。跳转语句--RETURN语句SCL基本指令【例11】当检测到错误标志信号#FLAG_ERROR时,退出当前函数,程序如下所示:

IF#FLAG_ERROR<>0THEN

RETURN;

END_IF;如果#FLAG_ERROR操作数的信号状态不为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论