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

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

  <逻辑语句>

ELSE IF bool_expression_2 THEN //这两行可选

  <逻辑语句>

ElSE //这两行可选

  <逻辑语句>

END_IF;

 

举例:

  IF a>b THEN

       flag:=1;

  ELSE IF 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的资料,不同品牌之间可能略有区别,具体使用可以参考具体品牌的手册。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值