中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 PLC论坛 → 浏览主题: PLC中ST语言的几种程序流程控制语句
发表新帖 回复该主题
回帖:7个,阅读:216 [上一页] [1] [下一页]
* 帖子主题:

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

分享到
31745
jint 管理员
文章数:18097
年度积分:2648
历史总积分:31745
注册时间:2007/8/30
发站内信
发表于:2019/11/6 16:29:24
#0楼
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的资料,不同品牌之间可能略有区别,具体使用可以参考具体品牌的手册。

来源:https://www.cnblogs.com/DreamRecorder/p/9288521.html
温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
6768
fujifa
文章数:2505
年度积分:453
历史总积分:6768
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2019/11/6 20:46:45
#1楼
竟然没有标准里的REPEAT结构。
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
1853
sxjice545
文章数:424
年度积分:869
历史总积分:1853
注册时间:2013/2/23
发站内信
发表于:2019/11/6 22:31:37
#2楼
不错,
几种语句结构较为常用
31745
jint 管理员
文章数:18097
年度积分:2648
历史总积分:31745
注册时间:2007/8/30
发站内信
发表于:2019/11/7 8:53:57
#3楼
回复 #1楼 fujifa
交给你来补充……
温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
1735
机栝
文章数:359
年度积分:983
历史总积分:1735
注册时间:2017/6/12
发站内信
发表于:2019/11/8 14:47:28
#4楼
心塞哦,不知道什么时候才用得上ST哦,编了N年的小型机了
知行合一。
1002
mxh986
文章数:37
年度积分:86
历史总积分:1002
注册时间:2008/5/12
发站内信
发表于:2019/11/12 11:33:04
#5楼
数组如何批量复位
31745
jint 管理员
文章数:18097
年度积分:2648
历史总积分:31745
注册时间:2007/8/30
发站内信
发表于:2019/11/12 11:47:41
#6楼
回复 #5楼 mxh986
另开主帖详细提问哦表情
温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
8392
gjf201337
文章数:2403
年度积分:693
历史总积分:8392
注册时间:2013/11/1
发站内信
三菱电机活动(三)
发表于:2019/11/12 21:26:19
#7楼
高级语言编程还不会
享受生活
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2019 Gkong.com, All Rights Reserved

124.8