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

这篇具有很好参考价值的文章主要介绍了西门子SCL常用控制语句解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

指令

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

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

图1 读/写存储器

西门子scl,西门子plc,算法,学习

图2 转换操作中的变量

西门子scl,西门子plc,算法,学习

图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)终止整个循环的执行。

西门子scl,西门子plc,算法,学习

用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 FOR
    IF "求最大值" < "数据块_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语句先执行循环体,再判断条件是否成立,

西门子scl,西门子plc,算法,学习

#"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 1

    2:
        GOTO MyLABEL2// Statement section case 2 to 4
        ;
    3:
        GOTO MyLABEL3;
    ELSE  // Statement section ELSE
        GOTO MyLABEL4; ;
END_CASE;
MyLABEL1:
"参数1" += 1;
MyLABEL2:
"参数2" += 2;
MyLABEL3:
"参数3" += 3;
MyLABEL4:
"参数4" += 4;
### RETURN:退出块

说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。

如果该指令出现在块结尾处,则可以跳过。

```c
IF "参数3">=5000 THEN
 // Statement section IF
 RETURN ;
END_IF;

小结

以上就是西门子SCL语句的程序控制指令,需要灵活多变使用,注意语法格式。文章来源地址https://www.toymoban.com/news/detail-577248.html

到了这里,关于西门子SCL常用控制语句解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 西门子S71200PLC编程TCP IP通讯FB功能块:技术解析与应用探讨

    西门子S71200PLC编程TCP IP通讯FB功能块 以字符串的格式直观显示发送接受数据。 自动计算发送数据长度,简化发送不定长数据过程。 接受不定长数据,转化为对应长度的字符串, 在控制过程中,只需要通过比较字符串来获取反馈状态。 西门子S71200PLC编程TCP IP通讯FB功能块:技

    2024年02月03日
    浏览(39)
  • 西门子PLC1500大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序

    西门子PLC1500大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序,2台触摸屏TP1500程序  9个智能远程终端ET200SP Profinet连接  15个Festo智能模块Profinet通讯  10台Fanuc发那科机器人Profinet通讯  3台G120变频器Profinet通讯  2台智能电能管理仪表PAC3200  4个GRAPH顺控程序  图尔克RFID总线模

    2024年01月18日
    浏览(49)
  • 西门子PLC S7-1200程序实例,西门子1200与安川机器人TCP IP通讯

    西门子PLC S7-1200程序实例,博图版本V15 1,西门子1200与安川机器人TCP IP通讯,包含机器人GSD文件; 2,西门子1200控制6轴伺服电机,四台台脉冲控制台达B2伺服,两台PN通讯控制西门子V90伺服电机; 3,两台西门子1200开放式通讯交互数据联动; 4,与4台位移传感器modbus485轮询读取

    2024年04月10日
    浏览(54)
  • 西门子机床联网

    数控面板拍照确认: 此系统为:西门子828D 还有一种情况是面板无任何版本信息,这时就需要进入系统里面再确认。 1、数控面板的后面 X130为网络标号 2、其他位置 其他位置一般是前面位置用网线引出来后做的网口母头,常见在机床数控面板侧面,机床电器柜后面等等。 实

    2024年02月07日
    浏览(45)
  • 西门子200SMART笔记

    上位机 控件库 HslControls SunnyUI 初级课程 传感器接线方式 棕色(BN) + 蓝色(BL) - 黑色(BK) 信号线 NPN型 1M(M)接 +24V PNP型 1M(M)接 0V PLC输出接线 电路图 — 梯形图 过载 停止信号 输入端接常闭 ---- 因为接了常闭 所以输入点有信号 程序中的常开点闭合 程序 中使用常开 KA ===== M / V M:25

    2024年02月06日
    浏览(63)
  • 西门子1513CPU冗余组态

    西门子1513R冗余配置 1、打开博图16软件,新建项目,添加新设备,在弹出的控制器目录下找到CPU 1513R-1 PN硬件,然后系统自动生成PLC_1和PLC_2; 2、打开设备组态中的网络视图,添加接口模块; 3、在硬件目录/ 分布式I/O /ET200SP/ 接口模块/ PROFINET/ IM 155-6 PN HF 目录下找到6ES7 155-6

    2024年02月04日
    浏览(33)
  • 西门子PPI协议开发

    目录   西门子PPI协议开发 1 协议介绍 2 仿真环境 2.1 安装修改仿真软件

    2024年02月09日
    浏览(36)
  • 西门子大型程序fanuc机器人焊装 包括1台 西门子1500PLC程序,2台触摸屏TP1500程序

    西门子大型程序fanuc机器人焊装  包括1台 西门子1500PLC程序,2台触摸屏TP1500程序,9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯 3台G120变频器Profinet通讯 2台智能电能管理仪表PAC3200 4个GRAPH顺控程序 图尔克RFID总线模组通讯 和ME

    2024年02月02日
    浏览(46)
  • 西门子PLC1200自由口通信

    文章目录 前言 自由口通信 二、使用步骤 组态 编程 总结 项目里需要使用PLC和某公司液体泵通信,液体泵采用RS485,支持OEM协议和DT协议,因此PLC采用自由口通信 提示:以下是本篇文章正文内容,下面案例可供参考 扩展了CB1241通信板,RS485连线如下图所示 TRB为+,TRA为-,M为接

    2024年02月07日
    浏览(53)
  • 西门子S7-1200组态PROFINET

    1、首先参照官方给的帮助文档,里面有各种情况下的处理方式和组态教程 S7-1200PROFINET通信 2、如果要组态第三方的 PROFINET gateway,比如PROFINET转RS485网关,就需要按照如下的方法进行操作 以sibotech的TS-181为例 通用串口(两个) / PROFINET网关TS-181 上海泗博自动化 网关厂家会提供

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包