西门子SCL常用控制语句解析

news/2025/1/18 5:52:29/

西门子SCL常用控制语句解析

指令

SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的

SCL特殊的指令有以下几种,如图1-3红框中的指令:

图1 读/写存储器

图2 转换操作中的变量

图3 程序控制指令

这里只介绍图3的程序控制指令。

程序控制指令解释

类型程序控制语句说明
选择语句IF-THEN语句用于将程序执行转移到两个备选分支之一 (取决于条件为 True 还是False)判断两个量的真假
选择语句CASE语句用于选择执行 n 个备选分支之一 (取决于变量值,变量值等于2,设定的备选分支等于2的话,就会执行2这个分支。)
选择语句FOR语句只要控制变量在指定值范围内,就重复执行某一语句序列
循环语句WHILE-DO语句只要仍满足执行条件,就重复执行当前一语句序列,
循环语句REPEAT-UNTIL语句重复执行某一语句序列,直到满足终止条件为止
循环语句CONTINUE语句停止执行当前循环迭代
程序跳转EXIT语句无论是否满足终止条件,都会随时退出循环
程序跳转GOTO语句使程序立即跳转到指定标签
程序跳转RETURN语句使程序立刻退出正在执行的块,返回到调用块

程序控制指令是SCL编程的基础,接近高级语言的指令,虽然这些功能通过LAD/FBD也可以实现,但使用SCL编写会更加方便,逻辑条理也更加清晰。

IF 条件执行

说明:使用“条件执行”指令,可以根据条件控制程序流的分支。该条件是结果为布尔值 (True或 False)的表达式。可以将Bool变量、逻辑表达式或比较表达式作为条件。
执行该条件执行指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件根据分支的类型,可以对以下形式的指令进行编程

IF...THEN... 分支:
IF "条件" = 1 THEN  //输入条件,后面需要加上THEN,同时,注意格式,需要空格
"输出" := 1; //注意空格,还有冒号以及分号的使用,必须在英文状态下输入。
END IF; //结束语,也一定要加上。
//还有一种,我们可以在条件那再加上一个条件
IF "条件" = 1 THEN //当条件等于1时,那么输出1就会动作,当条件不为1时,那么输出2就会动作。"输出1" := 1;
else //相反"输出2" := 1;
END_IF;

在这里我建议,如果没有特别的要求,我们的变量表的名称可以化成英文或者是拼音的形式,这样我们在写起来的时候就可很大程度上避免来回切换中英文。

CASE:创建多路分支

说明:使用"创建多路分支"指令,可以根据数字表达式的值执行多个指令序列中的一个。

按如下方式声明此指令:

CASE <变量> OF

<常数1>: <语句1>;

<常数2>: <语句2>;

<常数n>: <语句n>;

ELSE <语句>;

END_CASE;

CASE "状态值" OF   //当状态值等于1时绿色就会TRUE,当等于2时,黄色就会TRUE。//当不等于1或2时红色就会TRUE,1:  // Statement section case 1"绿色":=1 ;"黄色" := 0;"红色" := 0;2:  // Statement section case 2 to 4"黄色":=1  ;"绿色" := 0;"红色" := 0;ELSE  // Statement section ELSE"黄色" := 0;"绿色" := 0;"红色" := 1; ;
END_CASE;
//当表达式的值等于某个常数值时,将执行该常数后的各种指令。
//如果不满足条件,则执行 ELSE 后编写的指令。如果两个值不相等,则执行这些指令。

FOR:在计数循环中执行

说明:使用"在计数循环中执行"指令,重复执行程序循环,直至运行变量不在指定的取值范围内。

也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。

通过指令"复查循环条件"(Continue),可以终止当前正在运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。

用FOR计算数组里面所有数据的和

//计算数组里面所有数据的和
"和" := 0;
FOR "计数" := 0 TO 20 DO"和" := "和" + "数据块_1".数组1["计数"]; // Statement section FOR;
END_FOR;

用FOR计算数组里面所有数据的最大值

通过建立0-20的数组,使用FOR语句循环,在0到20 的数组中,用IF语句判断数组2中的最大值,最终在循环到第20的数组中时,IF判断出最大的值,循环停止,求最大值输出最后的结果。

//计算数组数据中最大的值
FOR "最大值" := 0 TO 20 DO //最大值数据类型为:Int    地址:%MW16,// Statement section FORIF "求最大值" < "数据块_1".数组2["最大值"] THEN  //求最大值数据类型为:int,%MW18// Statement section IF"求最大值" := "数据块_1".数组2["最大值"]; //数据类型:Array[0..20] of Int,END_IF;   END_FOR;

WHILE语句

在满足条件时,要执行的语句。如果不满足条件,则程序将从 END_WHILE 后继续执行。

WHILE "参数1" <= 100 AND "标志位" = 0 DO //当参数1小于100时,并且标志位等于0//WHILE语句开始循环// Statement section WHILE"参数2" := "参数1" + "参数2";     //参数2=参数1+参数2,:=表示传送,将后面的结果传入。"参数1":= "参数1" + 1;             //参数1=参数1+1,EXIT; //表示立即退出循环,如果没有EXIT,那么就会一直在循环中,无法跳出。                           
END_WHILE;
IF "参数1" >= 101 THEN //当参数1大于等于101时,结束循环,// Statement section IF"标志位" := 1;
END_IF;

REPEAT语句

REPEAT语句先执行循环体,再判断条件是否成立,

#"3" := 0;
REPEAT#"3" := #"3"+2;
UNTIL #"3">100 END_REPEAT;//当执行循环体后,判断条件时候成立若不成立,继续循环,//当条件true时,结束循环。
#"3" := #"4";    
  1. FOR语句循环实现有限次循环

  2. WHLIE语句的条件为真时执行循环体

  3. REPEAT语句的条件为否时执行循环体

GOTO:跳转

说明:使用"跳转"指令,可以从标注为跳转标签的指定点开始继续执行程序。

跳转标签和"跳转"指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。

注意:LAD/FBD语言内的SCL段,不能使用GOTO指令。

跳转标签遵循以下语法规则:

  • 字母(a 至 z,A 至 Z)
  • 字母和数字组合;请必须字母为开始

可按如下方式声明此指令:

GOTO <跳转标签>;

<跳转标签>: <语句>

CASE "状态值" OF  //当状态值为1.2.3中的某个数时,//相应跳转至MyLABEL1,MyLABEL2,MyLABEL3,相反则跳转至MyLABEL4。1:GOTO MyLABEL1 ;  // Statement section case 12:GOTO MyLABEL2// Statement section case 2 to 4;3:GOTO MyLABEL3;ELSE  // Statement section ELSEGOTO MyLABEL4; ;
END_CASE;
MyLABEL1:
"参数1" += 1;
MyLABEL2:
"参数2" += 2;
MyLABEL3:
"参数3" += 3;
MyLABEL4:
"参数4" += 4;
### RETURN:退出块说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。如果该指令出现在块结尾处,则可以跳过。```c
IF "参数3">=5000 THEN// Statement section IFRETURN ;
END_IF;

小结

以上就是西门子SCL语句的程序控制指令,需要灵活多变使用,注意语法格式。


http://www.ppmy.cn/news/320010.html

相关文章

西门子V90伺服驱动器的面板控制

前言 本文主要讲解一下伺服驱动器的面板控制&#xff0c;大致了解它的功能。 一.V90概述&#xff1a; .概述 SINAMICS V90是西门子推出的一款小型、高效便捷的伺服系统。它作为 SINAMICS 驱动系列家族的新成员&#xff0c;与SIMOTICS S-1FL6 伺服电机完美结合&#xff0c;组…

android 屏幕投射功能,安卓手机怎么投射屏幕?

手机游戏、电影十分方便&#xff0c;但有时候一个大屏幕会带给你更好的体验。这里分享下将安卓手机屏幕投射到大屏幕的方法&#xff0c;具体操作方法来了解下吧。 1、DLNA DLNA是一种资历相当老的无线投屏技术&#xff0c;非常常见&#xff0c;基本上是个多媒体App就可以支持。…

手机照片局部放大镜_手机里竟然自带quot;放大镜quot;,很远也感觉近在眼前,真的涨知识了...

我们都知道视力再好的人,看东西的范围也有一个限度,不过像笔者这样近视的人,3米开外不知何物。日常买东西看头顶上的菜单,只能靠手机里面放大镜功能看。其实很多人手机里面自带放大镜功能,只是不知道怎么开启,导致错过这样一个实用的功能。 下面笔者就来教大家开启的方法…

手机屏幕坏了,如何连接电脑取资料?按照这几种办法操作即可

很多朋友喜欢把一些重要的资料和数据储存在智能手机里&#xff0c;但这是有一定风险的&#xff0c;要知道手机的一系列操作都依赖屏幕触控层完成&#xff0c;一旦屏幕损坏&#xff0c;那么就无法导出手机内的资料&#xff0c;本期文章就说说在手机屏幕损坏”的情况下&#xff0…

WebView手机屏幕(图片适应屏幕的宽度)适配的多种方式

WebView手机屏幕&#xff08;图片适应屏幕的宽度&#xff09;适配的多种方式 混合开发中经常使用到WebView&#xff0c;适配如果前端做就省事了&#xff0c;自己做的话需要做适配 需求 1、详情页面包含js Html字符串&#xff0c;需要展示 可能存在的问题 如果包含图片的话…

手机基础知识

像素密度定义 像素密度&#xff08;pixles per inch&#xff09;&#xff0c;也称PPi&#xff0c;即每英寸屏幕所拥有的像素数&#xff0c;像素密度越大&#xff0c;显示画面细节就越丰富。 目前&#xff0c;人眼能识…

手机图片到底要做多宽才可以适应所有手机屏幕的尺寸?

现在移动互联网正搞得风生水起,大伙也不甘示弱,周围的朋友会经常从微信里面发发图片,设计师们也经常制作移动网站和手机APP等,这些过程中大家都会碰到这样一个问题:手机图片到底要做多宽才可以适应所有手机屏幕的尺寸? 最终得出的结果是:想高清显示图片做成1080px通…

苹果手机怎么在照片上添加文字_不管用什么手机,这样操作一下,就能直接给照片添加文字...

不管用什么手机,这样操作一下,就能直接给照片添加文字 我们的生活是越来越离不开手机了,并且手机像素也在不断提高。 当我们外出或者和朋友聚餐时,难免会拍照记录一下这难忘的时刻。 但是很多人不知道,怎样用手机拍出带文字的照片,下面我们一起来学习一下吧! 手机自带拍…