PLC编程之ST语言

  • 1,IF结构:
  • 2,FOR结构:
  • 3,CASE结构:
  • 4,WHILE结构:

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

基本语法参考链接:参考链接

1,IF结构:

基本语法是:

IF bool_expression_1 THEN<逻辑语句>
ELSE IF bool_expression_2 THEN //这两行可选<逻辑语句>
ElSE //这两行可选<逻辑语句>
END_IF;

举例:

IF a>b THENflag:=1;ELSE IF a<b THENflag:=2;ELSEflag:=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 DOsum:=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 OF1,2,3:a:=10;4:a:=20;
elsea:=100;
END_CASE;

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

4,WHILE结构:

基本语法:

WHILE bool_expression DO<逻辑语句>
END_WHILE;

举例:

i:=0;
sum:=0;
WHILE i=100 DOsum:=sum+i;i:=i+1;
END_WHILE;

基本结构就上面几种,不同的软件之间可能会有细小差别。

举例:
变量定义:

PROGRAM STStructTest001TYPEstudent:STRUCTgender : ARRAY[1..10] OF BOOL;age : ARRAY[1..10] OF USINT;class : ARRAY[1..10] OF INT;score : ARRAY[1..10] OF  INT;END_STRUCT;END_TYPEVAR//stu : ARRAY[1..10] OF student;stu1: student;num : INT;boy : UINT;girl: UINT;ageSum : UINT;scoreSum : UINT;i : INT;start : bool;aveAge : REAL;aveScore : REAL;END_VAR

代码:

IF start THEN    num := 10;boy := 0;girl := 0;ageSum := 0;scoreSum := 0;FOR i:=1 to num BY 1 DOIF stu1.gender[i]=TRUE THENboy := boy + 1;ELSE girl := girl + 1;END_IF;ageSum := ageSum + stu1.age[i];scoreSum := scoreSum + INT_TO_UINT(stu1.score[i]);END_FOR;
END_IF;aveAge := ageSum / num;
aveScore := aveScore / num;END_PROGRAM

PLC编程之ST语言相关推荐

  1. 大型欧姆龙PLC NJ系列ST语言Ethercat总线24轴 伺服电池生产线欧姆龙PLC程序大型程序NJ系列

    大型欧姆龙PLC NJ系列ST语言Ethercat总线24轴 伺服电池生产线欧姆龙PLC程序大型程序NJ系列 ST语言EtherCat总 线控制24个伺服轴大型程序电池生产线 包括PLC NJ-140 ...

  2. 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序

    欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序 PLC通过EtherCat总线连接IS620N伺服 伺服轴已经写 ...

  3. 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制 24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序

    欧姆龙 PLC 程序NJ ST语言EtherCat总线控制 24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序 PLC通过EtherCat总线连接IS620N伺服 伺服轴已经 ...

  4. 大型欧姆龙PLC NJ系列ST语言Ethercat总线24轴

    大型欧姆龙PLC NJ系列ST语言Ethercat总线24轴 伺服电池生产线欧姆龙PLC程序大型程序NJ系列 ST语言EtherCat总 线控制24个伺服轴大型程序电池生产线 包括PLC NJ-140 ...

  5. 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线

    欧姆龙 PLC 程序NJ ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序 PLC通过EtherCat总线连接IS620N伺服 伺服轴已经写 ...

  6. 欧姆龙PLC NJ系列ST语言EtherCat总线控制24个伺服轴大型程序电池生产线

    欧姆龙PLC NJ系列ST语言EtherCat总线控制24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序 PLC通过EtherCat总线连接IS620N伺服 伺服轴已经写好F ...

  7. 三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置

    三菱PLC程序 三菱F5U 系列PLC程序,ST语言编程,配触摸屏程序,恒压测试设备,可递增,可一直保持恒压,递增的阶梯和递增的先后顺序都可在触摸屏上设置,有监控曲线和历史记录,PLC采用ST语言进行 ...

  8. iOS编程之C语言简介

    开篇为什么要先学习C语言 对于零基础开发的人来说先学习C语言,是不错的选择,目前iOS开发的主要编程语言是Objective-C 和 swift,除此之外,你还要了解C语言,iOS有些系统类库是用C语 ...

  9. linux socket通信编程之c语言(客户端和服务器程序)

    最近在学习socket编程,在网上找到一个很好的实例,于是按自己的想把代码修改了一下,算半原创了~~~~ 要保存起来常复习呀~~~ /// //服务器端代码:server.c /// //本文件是服务 ...

  10. 桌面端编程之C++语言的知识架构

    桌面端编程使用最多的编程语言之一就是C++,本部分将以C++作为代表来介绍桌面端编程.C++是常年稳居TIOBE编程语言排行榜前五的主流编程语言,在IT界被广泛使用,特别是在需要与底层硬件打交道的场合 ...

最新文章

  1. oftp-2协议服务器,科普:Oasis自研通信协议与互联网分层架构
  2. [异常笔记] zookeeper集群启动异常: Cannot open channel to 2 at election address ……
  3. Store Kit Guide(In App Purchase)翻译
  4. iOS:给图片置灰色
  5. 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集
  6. Web表单提交之disabled问题
  7. 等价类划分测试用例设计方法
  8. json转map几种方法
  9. Android,App 常用图标尺寸规范
  10. python云计算有哪些岗位_云计算就业前景怎么样,包括哪些岗位,各岗位主要工作是什么?...
  11. 渐进式Express源码学习6-独孤求败
  12. 初学java者写家庭收支账本
  13. 密码学的骰子——随机数
  14. ACM 海贼王之伟大航路(深搜剪枝)
  15. 百度大脑开放日召开,安全生产智能视频监控解决方案用AI助力生产安全防控
  16. gun/linux more 搜索功能
  17. 第14讲:Python使用加法和乘法运算符操作列表
  18. Java程序设计--Java入门(一)
  19. 十大杠杆炒股平台浅谈股票短线买入时机
  20. 《小团队项目管理》第二问 --- 项目经理是救火队长?

热门文章

  1. c# 导入PKCS1和PKCS8密钥
  2. vcpkg如何全面卸载和重新安装包
  3. Android中X5WebView详解
  4. 计算机专业英语大作业,专业英语大作业
  5. python打印九九乘法表代码
  6. iOS录音及播放全解
  7. 原画学习步骤,零基础一步步学原画
  8. Python爬虫批量下载PDF文档
  9. bim 水利枢纽 运维_BIM技术与现代化建筑运维管理
  10. coreldraw怎么打印荣誉证书_教你如何打印大于A4尺寸的荣誉证书和奖状