PLC中ST语言的几种程序流程控制语句

ST语言是IEC61131-3中规定的5中标准语言之一,目前常用见品牌的PLC都支持这种语言(施耐德,AB可以直接选择创建该类型的程序段或者功能块,西门子的略微麻烦一点),ST语言的一个好处是移植性好,各家的ST语言基本都是类似的,所以如果有一个巨牛逼的算法,用ST语言实现是再好不过的了,这样可以很容易的在多个品牌的PLC上移植,当前,有个前提条件是在这个算法中不要使用太多的系统功能块,因为系统功能块往往都是各个品牌比较个性的东西,会给移植带来麻烦。另外,ST语言最适合写一些复杂的算法,个人觉得尤其是对应一些数组的操作,用ST语言是最方便的,当然有梯形图也能实现,不过远没有用ST来的方便。ST语言的语法和pascal非常像,有时候各种语言用多了,就会混,所以这里将ST语言的几种常用控制语句记录下来。

1,IF结构:

基本语法是:

IF bool_expression_1 THEN

<逻辑语句>

ELSIF bool_expression_2 THEN //这两行可选

<逻辑语句>

ElSE //这两行可选

<逻辑语句>

END_IF;

举例:

IF a>b THEN

flag:=1;

ELSIF a<b THEN

flag:=2;

ELSE

flag:=3;

END_IF;

说明:

IF语句和梯形图里的常开常闭指令类似,不太推荐用IF语句写复杂逻辑,bool逻辑还是用梯形图写起来方便也直观,除非对ST语言非常热爱同时对梯形图一点不懂。

2,FOR结构:

基本语法是:

FOR  count:= initial_value  TO final_value BY increment DO

<循环体>

END_FOR;

举例:

sum:=0;

FOR  i:= 2  TO 100 BY 2 DO

sum:=sum+i; //计算0-100内偶数和,包含100

END_FOR;

说明:

BY可后面跟的步长是可选的,如果没有默认为1.

如果要提前退出循环,可以在循环内部增加一个判断条件,配合EXIT语句实现,如下:

FOR  count:= initial_value  TO final_value BY increment DO

IF bool_expression THEN

EXIT;

END_IF;

END_FOR;

3,CASE结构:

基本语法:

CASE numeric_expression OF

selector_1:

<逻辑语句>

……

selector_n:

<逻辑语句>

ELSE

<逻辑语句>

END_CASE;

举例:

CASE num OF

1,2,3:

a:=10;

4:

a:=20;

else

a:=100;

END_CASE;

说明:

CASE语句和其他高级语言中的CASE语句很类似,但是少了break,实际上这里的CASE只会执行第一个满足条件的语句,相当于在每一个选项里自动增加了一个break操作。

4,WHILE结构:

基本语法:

WHILE bool_expression DO

<逻辑语句>

END_WHILE;

举例:

i:=0;

sum:=0;

WHILE i=100 DO

sum:=sum+i;

i:=i+1;

END_WHILE;

说明:

WHILE和FOR几乎是可以通用的,随个人喜好用吧。

基本结构就上面几种,上面的语法参照了AB的资料,不同品牌之间可能略有区别,具体使用可以参考具体品牌的手册。

原文地址:https://www.cnblogs.com/DreamRecorder/p/9288521.html

时间: 2024-11-05 21:47:35

PLC中ST语言的几种程序流程控制语句的相关文章

黑马程序员-------Java基础学习(一)Java中基本的几种程序流程控制

------- android培训.java培训.期待与您交流! ---------- 一.if/else构成的判断结构 if(条件表达式) { 表达式1: } else { 表达式2: } 其含义为,如果if后边的条件表达式为true,则执行表达式1,否则执行表达式2: 相当于之前学到的三元运算符组成的判断结构: (条件表达式)?表达式1:表达式2 其含义为:当括号内的条件表达式逻辑值为true时,执行表达式1,本次运算结束: 当括号内的条件表达式逻辑值为false时,执行表达式2,本次运算结

单片机中C语言的程序与数据存储

单片机中C语言的程序与数据存储 一.五大内存分区: 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等. 2.堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收. 3.自由存储区:就是那些

C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()

本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该输入数据按指定的输入格式被赋给相应的输入项.函数一般格式为:scanf("控制字符串",输入项列表):其中控制字符串规定数据的输入格式,必须用双引号括起,其内容是由格式说明和普通字符两部分组成.输入项列表则由一个或多个变量地址组成,当变量地址有多个时,各变量地址之间用逗号“,”分隔.sca

友点建站系统经过几年的发展通过和客户的交流中发现很多客户现在对程序开发,程序语言这块都非常了解了,都

友点建站系统经过几年的发展通过和客户的交流中发现很多客户现在对程序开发,程序语言这块都非常了解了,都会问一下我们开发网站用的什么语言或者框架? 在此说明一下:我们YouDianCMS建站系统使用的是PHP+MySQL架构 为什么选择PHP+MySQL架构?那就得说说PHP+MySQL架构的优点了. 良好的安全性PHP天生拥有防注入功能,目前***主要来源于***工具,当前的***工具基本上都是针对asp和windows漏洞扫描,针对php和Linux的工具基本不存在.Linux一直是以稳定.高效

2014年最流行的10种程序语言

通过计算机行业记者Nick Diakopoulos的努力,IEEE Spectrum从10个信息源(包括 IEEE Xplore,Google和GitHub等等)获取数据,并通过12个指标加权和组合,来对当今最流行的程序语言进行排名(如下图所示). 排名前十位的依次分别是:Java,C,C++,C#,Python,Java script,Php,Ruby,Sql,Matlab. 如果你不赞成这种取权重的方式,想要看到更多的程序语言,或者在某个特殊领域哪种程序语言占主导地位,比如手机行业,也可以进

没人能把一种程序语言的所有语法和关键字都记住,如果不知道,就查阅参考书

没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就

[PLC]ST语言六:DI/EI/FEND/WDT/FOR/NEXT

一:DI/EI/FEND/WDT/FOR/NEXT 说明:简单的顺控指令不做其他说明. 控制要求:无 编程梯形图: 结构化编程ST语言: 原文地址:https://www.cnblogs.com/automachinengineering/p/9932364.html

PLC常用程序设计语言有哪些?

PLC常用程序设计语言: 在可编程控制器中有多种程序设计语言,它们是梯形图语言.布尔助记符语言.功能表图语言.功能模块图语言及结构化语句描述语言等.梯形图语言和布尔助记符语言是基本程序设计语言,它通常由一系列指令组成,用这些指令可以完成大多数简单的控制功能,例如,代替继电器.计数器.计时器完成顺序控制和逻辑控制等,通过扩展或增强指令集,它们也能执行其它的基本操作.功能表图语言和语句描述语言是高级的程序设计语言,它可根据需要去执行更有效的操作,例如,模拟量的控制,数据的操纵,报表的报印和其他基本程

net开发过程中Bin目录net开发过程中Bin目录下面几种文件

.net开发过程中Bin目录下面几种文件格式的解释 在.NET开发中,我们经常会在bin目录下面看到这些类型的文件: .pdb..xsd..vshost.exe..exe..exe.config..vshost.exe.config 项目发布的时候,往往搞不清楚哪些是需要的,那些是不需要的.那么这些格式的文件到底是干什么用的呢? pdb .pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息.在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么