ST语言语法
libing_thinking 2019-09-29 20:04:08 5686 收藏 22
分类专栏: ST 工控
版权
PLC上用的最多的一个是梯形图,它使用起来直观方便,入门容易,非开发人员也可以很快入手,但是处理复杂的逻辑太麻烦;另外一种就是 ST(structed text, 结构化文本)语言,它写起来跟高级语言类似,学过高级语言的开发人员可以很快入手。这两种语言都是IEC 61131-3 中定义的,这个标准中还定义了其他三种语言:顺序功能图、功能块图、指令表。这里主要对ST语言的基本语法进行一些总结,主要基于codesys类的环境测试。
变量类型
基本类型
类型 关键字 位数
位 BIT 1
布尔型 BOOL 1
字节型 BYTE 8
字型 WORD 16
双字型 DWORD 32
长字型 LWORD 64
短整型 SINT 8
无符号短整型 USINT 8
整型 INT 16
无符号整型 UINT 16
双整型 DINT 32
无符号双整型 UDINT 32
长整型 LINT 64
实数 REAL 32
长实数 LREAL 64
字符串类型 STRING 8的倍数,不超过256乘8,默认81乘8
时间戳 TIME 32
时间 TIME_OF_DAY 32
日期 DATE 32
日期时间 DATE_AND_TIME 32
NOTE: 整形、字节型、字型都可以通过.号引出具体bit的值,e.g. i: INT;,那么 i 的第三位可以使用 i.3 引出,它的类型为BIT,可以转化为 BOOL 型。
复合类型
数组
关键字:ARRAY
定义格式:ARRAY[开始索引…结束索引] OF 元素类型;其中包含开始和结束索引值
e.g. aiStatus: ARRAY[1..100] OF INT;
结构体
关键字:STRUCT
定义格式:
TYPE 类型名称:
STRUCT
变量名称:变量类型;
...
END_STRUCT
END_TYPE
1
2
3
4
5
6
联合体
关键字:UNION
定义格式:
TYPE 类型名称:
UNION
变量名称:变量类型;
...
END_UNION
END_TYPE
1
2
3
4
5
6
枚举
关键字:()
定义格式:
TYPE 类型名称:
(变量名称;
...) 基本类型
END_TYPE
1
2
3
4
变量定义
变量名称: 变量类型;
e.g. bEnable: BOOL;
控制语句
条件语句
关键字:IF, ELSIF, ELSE
格式:
IF 条件表达式 THEN
...
ELSIF 条件表达式 THEN
...
ELSE
...
END_IF
1
2
3
4
5
6
7
循环语句
关键字:FOR TO DO END_FOR, WHILE END_WHILE, REPEAT UNTIL END_REPEAT
格式:
FOR 变量:=初始值 TO 目标值 DO
...
END_FOR
WHILE 条件表达式 DO
;
END_WHILE
REPEAT
...
UNTIL 条件表达式
END_REPEAT
1
2
3
4
5
6
7
8
9
10
11
12
CASE语句
关键字:CASE OF
格式:
CASE 变量名称 OF
变量值1:
...
变量值2:
...
...
ELSE
...
END_CASE
1
2
3
4
5
6
7
8
9
跳转语句
EXIT
跳出当前循环,相当于C的 break
CONTINUE
跳出循环的当次执行,与C的continue类似
RETURN
返回,后面程序不再执行,与C的return有一定区别,ST的函数返回值不用RETURN返回,直接函数名接受值
JMP
跳转到指定标签位置,相当与C的goto
POU
POU(Programming Organisation Unit) 是IEC 61131-3 标准中最重要的基本编程单元,它包含如下三种类型
功能块
功能块实现了数据和操作的封装,类似与C++中的类,但调用起来又有很多不同之处,功能块中定义的变量如果没有特别声明为TEMP临时变量,那么都为静态变量
函数
函数对操作进行了封装,与C++中的函数概念类似,函数中定义的变量如果没有特别声明为STAT静态变量,那么都是临时变量
程序
程序就是一段顺序执行的代码,当然里面可以调用其他程序,使用函数、功能块
————————————————
版权声明:本文为CSDN博主「libing_thinking」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/libing_thinking/article/details/101711465