公司主营:西门子数控,S7-200CN.S7-200smart.S7-300.S7-400.S7-1200.6ES5 ET200 人机界面,变频器,DP总线,MM变频器,6SE70交流工程调速变频器6RA70等系列产品。
产品简介
详细介绍
西门子屏6AV2181-4DB20-0AX0
SIEMENS 交、直流传动装置
控制语句是 SCL 表达式的一种类型,可用于执行以下任务:
● 程序分支
● 重复 SCL 编程代码的某些部分
● 跳转到 SCL 程序的其它部分
● 按条件执行
SCL 控制语句包括 IF-THEN、CASE-OF、FOR-TO-DO、WHILE-DO、REPEAT-
UNTIL、CONTINUE、GOTO 和 RETURN。
一条语句通常占一行代码。可以在一行中输入多条语句,或者可将一条语句断开成多行代码以使代码易于阅读。分隔符(如制表符、换行符和多余空格)在语法检查期间会被忽略
。END 语句可终止控制语句。
以下示例显示的是 FOR-TO-DO 控制语句。(两种形式的代码在语法上均有效。)
FOR x := 0 TO max DO sum := sum + value(x); END_FOR;
FOR x := 0 TO max DO
sum := sum + value(x); END_FOR;
还可以为控制语句提供标签。用语句前的逗点将标签隔开:
Label: <Statement>;
有关完整的 SCL 编程语言参考,请参见 STEP 7 在线帮助。
条件
条件是一个比较表达式或逻辑表达式,其结果为 BOOL 类型(值为 TRUE 或
FALSE)。以下示例显示了各种类型的条件:
#Temperature > 50
#Counter <= 100 #CHAR1 < 'S'
关系表达式
(#Alpha <> 12) AND NOT #Beta 比较和逻辑表达式
5 + #Alpha 算术表达式
条件可以使用算术表达式:
● 如果结果是非零的任何值,则表达式的条件为 TRUE。
● 如果结果为零,则表达式的条件为 FALSE。
从 SCL 程序中调用其它代码块
要调用用户程序中的其它代码块,只需使用参数输入 FB 或 FC
的名称(或地址)。对于 FB,还必须提供 FB 待调用的背景数据块。
<DB 名称> (参数列表) 作为单个背景调用
<#背景名称> (参数列表) 作为多重背景调用
"MyDB"(MyInput:=10, MyInOut:="Tag1");
<FC 名称> (参数列表) 调用
<操作数>:=<FC 名称> (参数列表) 在表达式中调用
"MyFC"(MyInput:=10, MyInOut:="Tag1");
还可将块从导航树中拖动到 SCL 程序编辑器中,然后完成参数分配。
将块注释添加到 SCL 代码
可通过在 (* 和 *) 之间加入注释文本,将块注释添加到 SCL 代码中。可在 (* 和 *) 之间添加任意数目的注释行。SCL 程序块可能包括多个块注释。为方便编程,SCL 编辑器包括一个块注释按钮和通用控制语句:
寻址
与 LAD 和 FBD 一样,SCL
允许用户在用户程序中使用变量地址(符号寻址)或地址。SCL
还允许使用变量作为数组索引。
寻址
%I0.0 在地址之前加上“%"符号。没有“%",STEP 7
将在编译时生成未定义的变量错误。
符号寻址
"PLC_Tag_1" PLC 变量表中的变量
"Data_block_1".Tag_1 数据块中的变量
"Data_block_1".MyArray[#i] 数据块数组中的数组元素
7.5.3.1 使用 PEEK 和 POKE 指令进行索引寻址
SCL 提供 PEEK 和 POKE 指令,可用来从数据块、I/O
或存储器中读取内容或是向其中写入内容。而您提供操作中具体字节偏移量或位偏移量的参数。
说明
与数据块一起使用 PEEK 和 POKE
指令时,必须使用(未的)数据块。同时需要注意 PEEK 和 POKE
指令仅用于传输数据。它们无法识别地址中的数据类型。
PEEK(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_WORD(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_DWORD(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_BOOL(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_, bitOffset:=_in_);
读取引用数据块、I/O 或存储区中由
byteOffset 引用的字节。
引用数据块示例:
%MB100 := PEEK(area:=16#84,
dbNumber:=1, byteOffset:=#i);
引用 IB3 输入示例:
%MB100 := PEEK(area:=16#81,
dbNumber:=0, byteOffset:=#i); // when #i = 3
读取引用数据块、I/O 或存储区中由
byteOffset 引用的字。
示例:
%MW200 := PEEK_WORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
读取引用数据块、I/O 或存储区中由
byteOffset 引用的双字。
示例:
%MD300 := PEEK_DWORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
读取引用数据块、I/O 或存储区中由
bitOffset 和 byteOffset 引用的布尔值。
示例:
%MB100.0 := PEEK_BOOL(area:=16#84,
dbNumber:=1, byteOffset:=#ii, bitOffset:=#j);
下一篇:西门子触摸屏6AV2144-8MC10-0AA0