首页 理论教育 学习S7-SCL编程语言的方法和技巧

学习S7-SCL编程语言的方法和技巧

时间:2023-06-23 理论教育 版权反馈
【摘要】:樱花,象征着爱情与希望,她浪漫、高雅、质朴、纯洁。人间花语,一往而情深。声明区声明区是逻辑变量、参数、常数以及标号的声明。表7-15 变量、参数和常数的声明的规范和区域注意:表格中“X”表示有效,“-”表示无效。声明的关键字可以用键盘输入,也可用模板插入,常数的模板插入的方法是:单击菜单中的“Insert”→“BlockTem-plate”→“Constant”,在源文件编辑器的工作区就会弹出关键字,如图7-3所示。

学习S7-SCL编程语言的方法和技巧

1.S7-SCL的基本术语

(1)字符

S7-SCL使用ASCII字符子集:字母A~Z(大小写)、数字0~9以及空格和换行符等。此外,还包含特殊含义的字符,见表7-2。

7-2 S7-SCL的特殊含义字符

978-7-111-58358-5-Chapter07-4.jpg

(2)保留字(Reserved Words)

保留字是用于特殊目的关键字,不区分大小写。保留字在编写程序中要用到,不能作为变量使用。保留字见表7-3。

7-3 S7-SCL的保留字

978-7-111-58358-5-Chapter07-5.jpg

(3)标识符(Identifiers)

标识符分配给S7-SCL语言对象的名称,即是给变量或块等分配的名称。标识符可以最多24个字母或者数字组成,其第一个必须是字母或者下划线,不区分大小,但标识符不可为关键字或者标准标识符。

如X1、_001以及Value1都是合法的标识符,而001R(第一个字符是数字)、Array(Array是关键字)及XValue(字符间不能有空格)是非法的标识符。由于不区分标识符,Y1和y1是同一个标识符。

S7-SCL中定义了标准的标识符,分为四大类:块标识符、地址标识符、定时器标识符和计数器标识符。以下详细说明。

1)块标识符(Block Identifier)。块标识符用于块的绝对寻址,与STEP7中的一致,块标识符见表7-4。

7-4 S7-SCL的块标识符

978-7-111-58358-5-Chapter07-6.jpg

2)地址标识符(Address Identifier)。在程序的任何位置,都要用地址标识符对CPU的存储器进行寻址。地址标识符,如I0.0、Q0.0及M0.1等与STEP7中定义的存储器一致,请参考前面的章节。

定时器标识符(Timer Identifier)和计数器标识符(Counter Identifier)均与STEP7中基本一致。其表示方法如T1和C1等。

(4)数字(Numbers)

在S7-SCL中,有多种表达数字的方法,其表达规则如下:

1)数字可以有正负、小数点或者指数表达。

2)数字间不能有空格、逗号和空格。

3)为了便于阅读可以用下划线分隔符,如16#11FF_AAFF与16#11FFAAFF相等。

4)数字前面可以有正号“+”和负号“-”;没有正负号,默认为正数。

5)数字不可超出范围,如整数范围是-32768~+32767。

数字中有整数和实数

整数分为INT(范围是-32768~+32767)和DINT(范围是-2147483648~+214748364),合法的整数表达举例:-18、+188。

实数也称为浮点数,即是带小数点的数,合法的实数表达如2.3、-1.88和1.1e+3(就是1.1×103)。

(5)字符串(Character Strings)

字符串就是按照一定顺序排列的字符和数字,字符串用单引号标注,如‘QQ&360’。

(6)注释(Comment Section)

注释用于解释程序,帮助读者理解程序,不影响程序的执行,下载程序时,注释不会下载到CPU中去。对程序详细的注释是良好的习惯。

注释从“∗(”开始,到“∗)”结束,注释的例子如下:

978-7-111-58358-5-Chapter07-7.jpg

注释还可以用“//”引导,注释长度限制到254个字符,但注释前面必须要有“//”。注释的例子如下:

978-7-111-58358-5-Chapter07-8.jpg

(7)变量(Variables)

在S7-SCL中,每个变量在使用前必须声明其变量的类型,根据不同区域将变量分为三类:局域变量、全局变量和允许预定义的变量。

局域变量在逻辑块中(FC、FB及OB)中定义,只能在块内有效访问,见表7-5。

7-5 S7-SCL的局域变量

978-7-111-58358-5-Chapter07-9.jpg

全局变量是指可以在程序中任意位置进行访问的数据或数据域。

2.S7-SCL的变量和参数声明

(1)变量和块参数的声明

变量和块在使用前,必须要进行单独声明,也就是指定块标识符或者变量以及变量的类型。

变量的声明举例如下:

978-7-111-58358-5-Chapter07-10.jpg

(2)初始化(Initialization)

静态变量和FB的输入及输出参数可以在声明时进行初始化,输入/输出参数为基本数据类型时也可以进行初始化,对于简单的变量用赋值符(:=)即可赋初值。

初始化的应用举例如下:

1)例子1:

978-7-111-58358-5-Chapter07-11.jpg

2)例子2:

978-7-111-58358-5-Chapter07-12.jpg

(3)声明变量范围(Declaring Views of Variable Ranges)

要访问具有不同数据类型的变量,可以使用“AT”关键字定义变量中变量的范围和视图。视图只在块内可见,不包括接口。视图的使用和其他变量一样。

举例如下:

978-7-111-58358-5-Chapter07-13.jpg

3.S7-SCL常数的声明

在S7-SCL中使用常量有:位常量、数值常量(整数和实数)、字符常量和时间常量(日期、时间周期)等。

(1)声明常量的符号(Declaring Symbolic Namesfor Constants)

常量无须声明,但可以在声明区给常量赋符号名,使用“CONST”语句声明常量的符号名。

在简单的表达式中,只有7种运算符,即为:∗∗、+、-、∗、/、DIV和MOD。

举例如下:

978-7-111-58358-5-Chapter07-14.jpg

(2)常量的数据类型定义(Data Types for Constants)

常量的数据类型的定义与算术运算或者逻辑运算的数据类型有关。举例说明如下:

978-7-111-58358-5-Chapter07-15.jpg

常数的数据类型种类和使用示例见表7-6。

7-6 常量的数据类型定义

978-7-111-58358-5-Chapter07-16.jpg

4.运算符

一个表达式代表一个值,它可以由单个地址(单个变量)或者几个地址(几个变量)利用运算符结合在一起组成。

运算符有优先级,遵循一般算数运算的规律。S7-SCL中的运算符见表7-7。

7-7 S7-SCL的运算符

978-7-111-58358-5-Chapter07-17.jpg

5.表达式

表达式是为了计算一个终值所用的公式,它由地址(变量)和运算符组成。表达式的规则如下:

1)两个运算符之间的地址(变量)与优先级高的预算结合。

2)按照运算符优先级进行运算。

3)具有相同的运算级别,从左到右运算。

4)表示前的减号表示该标识符乘以-1。

5)算数运算不能两个或者两个以上连用。

6)圆括号用于越过优先级。

7)算数运算不能用于连接字符或者逻辑运算。

8)左圆括号与右圆括号的个数应相等。

举例如下:

978-7-111-58358-5-Chapter07-18.jpg

(1)简单表达式(Simple Expressions)

在S7-SCL中,简单表达式就是简单的加减乘除的算式。举例如下:

SIMP_EXPRESSION=A∗B+D/C-3∗VALUE1;

(2)算术运算表达式(Arithmetic Expressions)

算术表达式是由算术运算符构成的,允许处理数值数据类型。S7-SCL的算术运算符及其地址和结果的数据类型见表7-8。

7-8 S7-SCL的算术运算符及其地址和结果的数据类型(www.xing528.com)

978-7-111-58358-5-Chapter07-19.jpg

(续)

978-7-111-58358-5-Chapter07-20.jpg

注意:以上表格中,ANY_INT指INT和DINT,而ANY_NUM指INT、DINT和Real的数据类型。

(3)比较运算表达式(Comparison Expressions)

比较运算表达式就是比较两个地址中的数值,结果为布尔数据类型。如果布尔运算的结果为真,则结果为TRUE;如果布尔运算的结果为假,则结果为FALSE。比较表达式的规则如下:

1)可以进行比较的数据类型有:INT、DINT、REAL、BOOL、BYTE、WORD、DWORD、CHAR和STING。

2)对于DT、TIME、DATE、TOD等时间数据类型,只能进行同数据类型的比较。

3)不允许S5TIME型的比较,如要进行时间比较,必须使用IEC的时间。

4)比较表达式可以与布尔规则相结合,形成语句。例如:Value_A>20ANDValue_B<20)。

(4)逻辑运算表达式(Logical Expressions)

逻辑运算符AND、&、XOR和OR与逻辑地址(布尔型)或数据类型为BYTE、WORD和DWORD型的变量结合而构成的逻辑表达式。S7-SCL的逻辑运算符及其地址和结果的数据类型见表7-9。

7-9 S7-SCL的逻辑运算符及其地址和结果的数据类型

978-7-111-58358-5-Chapter07-21.jpg

6.赋值

通过赋值,一个变量接受另一个变量或者表达式的值。在赋值运算符“:=”左边的是变量,该变量接受右边的地址或者表达式的值。

(1)基本数据类型的赋值(Value Assignments with Variables of an Elementary Data Type)

每个变量、每个地址或者表达式都可以赋值给一个变量或者地址。赋值举例如下:

978-7-111-58358-5-Chapter07-22.jpg

978-7-111-58358-5-Chapter07-23.jpg

(2)结构和UDT的赋值(Value Assignments with Variables of the Type STRUCT and UDT)

结构和UDT是复杂的数据类型,但很常用。可以对其赋值同样的数据类型变量、同样数据类型的表达式以及同样的结构或者结构内的元素。应用举例如下:

978-7-111-58358-5-Chapter07-24.jpg

(3)数组的赋值(Value Assignments with Variables of the Type ARRAY)

数组的赋值类似于结构的赋值,数组元素的赋值和完整数组赋值。数组元素赋值就是对单个数组元素进行赋值,这比较常用。当数组元素的数据类型、数组下标以及数组上标都相同时,一个数组可以赋值给另一个数组,这就是完整数组赋值。应用举例如下:

978-7-111-58358-5-Chapter07-25.jpg

978-7-111-58358-5-Chapter07-26.jpg

7.控制语句

S7-SCL提供的控制语句可分为三类:选择语句、循环语句和跳转语句。

(1)选择语句(Selective Statements)

选择语句有IF和CASE,其使用方法和C语言等高级计算机语言的用法类似,其功能说明见表7-10。

7-10 S7-SCL的选择语句功能说明

978-7-111-58358-5-Chapter07-27.jpg

1)IF语句。IF语句是条件,当条件满足时,按照顺序执行;不满足时,跳出,其应用举例如下:

978-7-111-58358-5-Chapter07-28.jpg

2)CASE语句。当需要从问题的多个可能操作中选择其中一个执行时,可以选择嵌套IF语句来控制选择执行,但是选择过多会增加程序的复杂性,降低程序的执行效率。这种情况下,使用CASE语句就比较合适。其应用举例如下:

978-7-111-58358-5-Chapter07-29.jpg

978-7-111-58358-5-Chapter07-30.jpg

(2)循环语句(Loops)

S7-SCL提供的循环语句有三种:FOR语句、WHILE语句和REPEAT语句。其功能说明见表7-11。

7-11 S7-SCL的循环语句功能说明

978-7-111-58358-5-Chapter07-31.jpg

1)FOR语句。FOR语句的控制变量必须为INT或者DINT类型的局部变量。FOR循环语句定义了:指定的初值和终值,这两个值的类型必须与控制变量的类型一致。其应用举例如下:

978-7-111-58358-5-Chapter07-32.jpg

2)WHILE语句。WHILE语句通过执行条件来控制语句的循环执行。执行条件是根据逻辑表达式的规则形成的。其应用举例如下:

978-7-111-58358-5-Chapter07-33.jpg

3)REPEAT语句。在终止条件的满足之前,使用REPEAT语句反复执行REPEAT语句与UNTIL之间的语句。终止的条件是根据逻辑表达式的规则形成的。REPEAT语句的条件判断在循环体执行之后进行,即终止条件得到满足,循环体仍然至少执行一次。其应用举例如下:

978-7-111-58358-5-Chapter07-34.jpg

978-7-111-58358-5-Chapter07-35.jpg

(3)程序跳转语句(Program Jump)

在S7-SCL中的跳转语句有四种:CONTINUE语句、EXIT语句、GOTO语句和RE-TURN语句。其功能说明见表7-12。

7-12 S7-SCL的程序跳转语句功能说明

978-7-111-58358-5-Chapter07-36.jpg

1)CONTINUE语句的应用举例。用一个例子说明CONTINUE语句的应用。

978-7-111-58358-5-Chapter07-37.jpg

2)EXIT语句的应用举例。用一个例子说明EXIT语句的应用。

978-7-111-58358-5-Chapter07-38.jpg

3)GOTO语句的应用举例。用一个例子说明GOTO语句的应用。

978-7-111-58358-5-Chapter07-39.jpg

8.S7-SCL块

用户可以在SCL中编写块,如OB、FC、FB和UDT等,也可以调用系统的库内提供各种块,如SFB、SFC等。

(1)S7-SCL块的组成

S7-SCL块一般由以下部分组成:

1)块由关键字、块序号或者块符号名开始标识,如组织块的标识为“ORGANIZATION_BLOCKOB20”。对于FC,也要定义类型,用以确定返回值的数据类型。

2)由关键字“TITLE=”引导可选块标题。

3)可选块注释可以一行或者多行,每行以“//”开始。

4)可选块的属性

5)可选块的系统属性。

6)块的声明区。

7)逻辑块中的语句区或数据块中的赋值区。

8)以关键字结束块。

以下详细说明。

(2)块的开始与结束

根据块的类型不同,块的开始和结束标识符有所不同。不同类型块的开始与结束见表7-13。

7-13 不同类型块的开始与结束

978-7-111-58358-5-Chapter07-40.jpg

注:表格中的“xxx”是块的序号。

(3)块的属性

块的属性包括块的类型、版本、块保护和作者等。块的属性见表7-14。

7-14 表的属性

978-7-111-58358-5-Chapter07-41.jpg

(4)块的注释

可选块注释可以一行或者多行,每行以“//”开始。

(5)块的系统属性

块的系统属性对整个块都有效,其输入规则是在块的开始语句之后立即定义系统属性。块的系统属性的设置由大括号开始,接着最多24个字符的标识符,后接“=:”,然后可以打印字符,用单括号括起来,在本行结束用分号,下一行继续输入,在最后一行加上另外一个大括号。应用举例:

978-7-111-58358-5-Chapter07-42.jpg

(6)声明区

声明区是逻辑变量、参数、常数以及标号的声明。变量、参数和常数的声明有规定的规范,其规范和区域见表7-15。

7-15 变量参数和常数的声明的规范和区域

978-7-111-58358-5-Chapter07-43.jpg

注意:表格中“X”表示有效,“-”表示无效。

声明的关键字可以用键盘输入,也可用模板插入,常数的模板插入的方法是:单击菜单中的“Insert”→“BlockTem-plate”→“Constant”,在源文件编辑器的工作区就会弹出关键字,如图7-3所示。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈