ST 语言编程手册
目录
1. ST 基本原理 .......................................................................................................... 6
1.1 语言描述 .......................................................................................................... 6
1.1.1 语法图 ....................................................................................................... 6
1.1.2 语法图中的块 ............................................................................................. 6
1.1.3 规则的意义(语义) .................................................................................. 7
1.2 基本元素的语言 ................................................................................................ 7
1.2.1 ST 字符组 .................................................................................................. 7
1.2.2 ST 中的标识符 ........................................................................................... 8
1.2.2.1 标识符的规则 ....................................................................................
1.2.2.2 标识符举例 ........................................................................................
1.2.3 预留标识符 ................................................................................................ 9
1.2.3.1 保护标识符 ......................................................................................
1.2.4 数字和布尔值 ........................................................................................... 16
1.2.4.1 整数 .................................................................................................
1.2.4.2 浮点数 .............................................................................................
1.2.4.3 指数 .................................................................................................
1.2.4.4 布尔值 .............................................................................................
1.2.4.5 数字的数据类型 ...............................................................................
1.2.5 字符串 ..................................................................................................... 18
1.3 ST 源文件的结构 ............................................................................................ 19
1.3.1 语句 ......................................................................................................... 20
1.3.2 注释 ......................................................................................................... 21
1.4 数据类型 ........................................................................................................... 22
8
9
10
16
17
17
17
18
1.4.1 基本数据类型 ........................................................................................... 22
1.4.1.1 基本数据类型 ..................................................................................
22
1.4.1.2 基础数据类型的值的范围限制 ......................................................... 24
1.4.1.3 普通的数据类型 ...............................................................................
25
26
1.4.1.4 基础系统数据类型 ...........................................................................
1.4.2 用户定义的数据类型 ................................................................................ 26
1.4.2.1 用户定义的数据类型 ........................................................................
26
1.4.2.2 用户定义的数据类型的语法(类型声明) ....................................... 27
28
1.4.2.3 基础派生或派生的数据类型 .............................................................
1.4.2.4 派生数据类型 ARRAY ....................................................................
29
1.4.2.5 派生的数据类型—枚举 ...................................................................
30
1.4.2.6 派生的数据类型 STRUCT (结构) ................................................. 31
1.4.3 技术目标数据类型 .................................................................................... 33
1.4.3.1 技术目标数据类型的描述 ................................................................
1.4.3.2 轴属性的继承 ..................................................................................
1.4.3.3 技术目标数据类型的例子 ................................................................
1.4.4 系统数据类型 ........................................................................................... 36
1.5 变量声明 ........................................................................................................ 36
33
34
35
1.5.1 变量声明的语法 ....................................................................................... 36
1.5.2 所有变量声明的概述 ................................................................................ 38
1.5.3 变量或数据类型的初始值 ......................................................................... 39
1.6 赋值和表达式 ................................................................................................. 42
1.6.1 赋值 ......................................................................................................... 43
1.6.1.1 赋值的语法图 ..................................................................................
43
1.6.1.2 基础数据类型的变量的数值指定 ...................................................... 44
1.6.1.3 串基础数据类型的变量数值指定 ...................................................... 44
1.6.1.4 位数据类型的变量的数值指定 ......................................................... 45
1.6.1.5 派生的枚举数据类型的变量的数值指定 ........................................... 47
1.6.1.6 派生的阵列数据类型的变量的数值指定 ........................................... 47
1.6.1.7 派生的 STRUCT 数据类型的变量数值指定 ..................................... 47
48
49
53
61
61
62
67
69
75
1.6.2 表达式 ..................................................................................................... 48
1.6.2.1 表达式结果 ......................................................................................
1.6.2.2 表达式的解释顺序 ...........................................................................
1.6.3 运算对象 .................................................................................................. 49
1.6.4 算术表达式 .............................................................................................. 50
1.6.4.1 算术表达式的例子 ...........................................................................
1.6.5 关系表达式 .............................................................................................. 53
1.6.6 逻辑表达式和位串行表达式 ...................................................................... 55
1.6.7 运算符的优先级 ....................................................................................... 56
1.7 控制语句 ........................................................................................................ 57
1.7.1 IF 语句 ..................................................................................................... 57
1.7.2 CASE 语句 .............................................................................................. 59
1.7.3 FOR 语句 ................................................................................................ 60
1.7.3.1 处理 FOR 语句 ................................................................................
1.7.3.2 FOR 语句规则 .................................................................................
1.7.3.3FOR 语句例子 ..................................................................................
1.7.4WHILE 语句 .............................................................................................. 62
1.7.5REPEAT 语句 ........................................................................................... 63
1.7.6EXIT 语句 ................................................................................................. 63
1.7.7RETURN 语句 .......................................................................................... 64
1.7.8WAIFORCONDITION 语句 ....................................................................... 64
1.7.9GOTO 语句 .............................................................................................. 66
1.8 数据类型转换 ................................................................................................. 66
1.8.1 基础数据类型转换 .................................................................................... 66
1.8.1.1 隐式数据类型转换 ...........................................................................
1.8.1.2 显式数据类型转换 ...........................................................................
1.8.2 补充的转换 .............................................................................................. 70
2.功能,功能块和程序 ............................................................................................. 70
2.1 创建和调用功能和功能块 ................................................................................ 71
2.1.1 定义功能 .................................................................................................. 71
2.1.2 定义功能块 .............................................................................................. 72
2.1.3FC 和 FB 的声明部分 ................................................................................ 72
2.1.4FB 和 FC 部分的语句 ................................................................................ 74
2.1.5 功能和功能块的调用 ................................................................................ 75
2.1.5.1 参数转移的原则 ...............................................................................
76
2.1.5.2 转移给输入参数的参数 ....................................................................
2.1.5.3 参数转移给 in/out 参数 ....................................................................
77
2.1.5.4 参数转移到输出参数(仅对 FB ) .................................................... 78
2.1.5.5 参数访问时间 ..................................................................................
78
78
2.1.5.6 调用一个功能 ..................................................................................
79
2.1.5.7 调用功能块(实例调用) ................................................................
2.1.5.8 在 FB 外访问 FB 输出参数 ..............................................................
80
81
2.1.5.9 在 FB 外访问 FB 输入参数 ..............................................................
2.1.5.10FB 调用时的错误源 ........................................................................
81
2.2 功能和功能块的比较 ....................................................................................... 82
2.2.1 例子说明 .................................................................................................. 82
2.2.2 带注释的源文件 ....................................................................................... 83
2.3 程序 ............................................................................................................... 84
2.4 表达式 ............................................................................................................ 86
3.在 SIMOTION 中 ST 的集成 .................................................................................. 88
3.1 源文件部分的使用 .......................................................................................... 88
3.1.1 源文件部分的使用 .................................................................................... 88
3.1.1.1interface 部分 ...................................................................................
3.1.1.2implementation 部分 ........................................................................
3.1.1.3 程序组织单元( POU ) ...................................................................
3.1.1.4 功能( FC) .....................................................................................
3.1.1.5 功能块( FB) .................................................................................
3.1.1.6 程序 .................................................................................................
3.1.1.7 表达式 .............................................................................................
3.1.1.8 声明部分 ..........................................................................................
3.1.1.9 语句部分 ..........................................................................................
3.1.1.10 数据类型定义 ................................................................................
3.1.1.11 变量声明 ........................................................................................
3.1.2 在 ST 源文件之间的导入和导出 ............................................................... 97
88
90
90
91
91
92
93
93
94
94
95
3.1.2.1 单元标识符 ......................................................................................
97
3.1.2.2 一个导出单元的 interface 部分 ........................................................ 98
3.1.2.3 一个导出单元的例子 ........................................................................
98
3.1.2.4 在一个导入单元的 USES 语句 ........................................................ 99
3.1.2.5 一个导入单元的例子 ......................................................................
100
3.2 在 SIMOTION 中的变量 ................................................................................ 101
3.2.1 变量模型 ................................................................................................ 101
3.2.1.1 单元变量 ........................................................................................
103
3.2.1.2 不保留的单元变量 .........................................................................
104
3.2.1.3 保持单元变量 ................................................................................
105
3.2.1.4 本地变量(静态和临时变量) ....................................................... 106
3.2.1.5 静态变量 ........................................................................................
108
109
3.2.1.6 临时变量 ........................................................................................
3.2.2 全局设备变量的使用 .............................................................................. 110
3.2.3 变量类型的存储范围 .............................................................................. 111
112
3.2.3.1 存储区域的例子,有效关于 KernelV3.1 ........................................
3.2.3.2 本地数据栈变量的存储要求( kernel V3.1 或更高) ...................... 115
3.2.4 变量初始化的时间 .................................................................................. 117
3.2.4.1 保留全局变量的初始化 ..................................................................
3.2.4.2 不保留的全局变量的初始化 ...........................................................
3.2.4.3 本地变量的初始化 .........................................................................
3.2.4.4 静态编程变量的初始化 ..................................................................
3.2.4.5 功能块实例的初始化 ......................................................................
117
118
119
120
121
3.2.4.6 技术目标的系统变量的初始化 ....................................................... 121
3.2.4.7 全局变量的版本 ID 和下载时的初始化 ........................................... 122
3.2.5 变量和 HMI 设备 .................................................................................... 123
3.3 访问输入和输出(过程图像, I/O 变量) ...................................................... 125
3.3.1 访问输入和输出的概述 ........................................................................... 125
3.3.2 直接访问和过程图像访问的重要特征 ...................................................... 126
3.3.3 直接访问和循环任务的过程图像 ............................................................. 127
3.3.3.1 直接访问和循环任务的过程图像的 I/O 地址的规则 ....................... 128
3.3.3.2 为直接访问和循环任务的过程图像创建一个 I/O 变量 .................... 129
3.3.3.3 输入 I/O 地址的语法图 ...................................................................
130
131
3.3.3.4 可能的 I/O 变量的数据类型 ...........................................................
3.3.4 背景任务的固定过程图像的访问 ............................................................. 131
3.3.4.1 背景任务的固定过程图像的绝对访问(绝对 PI 访问) .................. 132
3.3.4.2 一个绝对过程图像访问的标识符语法 ............................................ 133
3.3.4.3 背景任务的固定过程图像的符号访问(符号 PI 访问) .................. 134
3.3.4.4 可能的符号 PI 访问的数据类型 ......................................................
135
3.3.4.5 符号 PI 访问的例子 ........................................................................
135
3.3.4.6 为访问背景任务固定过程图像而创建一个 I/O 变量 ....................... 135
3.3.5 访问 I/O 变量 ......................................................................................... 136
3.4 使用库 .......................................................................................................... 136
3.4.1 编辑一个库 ............................................................................................ 137
3.4.2 库的 know-how 保护 .............................................................................. 138
3.4.3 从库中使用数据类型,功能和功能块 ...................................................... 139
3.5 相同的标识符和命名空间的使用 ................................................................... 140
3.5.1 相同的标识符的使用 .............................................................................. 140
3.5.2 命名空间 ................................................................................................ 142
3.6 参考数据 ...................................................................................................... 145
3.6.1 交叉对照表 ............................................................................................ 146
3.6.1.1 创建一个交叉对照表单 ..................................................................
3.6.1.2 交叉对照表的内容 .........................................................................
3.6.1.3 交叉对照表的使用 .........................................................................
3.6.2 程序结构 ................................................................................................ 147
3.6.2.1 程序结构的内容 .............................................................................
3.6.3 代码属性 ................................................................................................ 148
3.6.3.1 代码属性内容 ................................................................................
3.7 控制预处理器和 pragma 编辑 ....................................................................... 149
3.7.1 控制一个预处理器 .................................................................................. 149
146
146
147
148
149
150
153
3.7.1.1 预处理器语句 ................................................................................
3.7.1.2 预处理器语句的例子 ......................................................................
3.7.2 属性控制编辑器 ..................................................................................... 154
3.8 跳转语句和标签 ............................................................................................ 156
4.错误源和程序调试 ...............................................................................................157
4.1 避免错误和有效编程的注释 .......................................................................... 157
4.2 程序调试 ...................................................................................................... 157
4.2.1 程序测试的模式 ..................................................................................... 157
4.2.1.1SIMOTION 设备模式 ......................................................................
4.2.1.2life-sign 监视的重要信息 .................................................................
157
159
4.2.1.3life-sign 监视参数 ...........................................................................
4.2.2 符号浏览器 ............................................................................................ 161
4.2.2.1 符号浏览器的属性 .........................................................................
4.2.2.2 使用符号浏览器 .............................................................................
4.2.3 在 watch 表中监视变量 .......................................................................... 163
4.2.3.1 在 watch 表中的变量 .....................................................................
4.2.3.2 使用 watch 表格 ............................................................................
4.2.4 程序运行 ................................................................................................ 164
160
161
161
163
163
165
166
168
169
4.2.4.1 程序运行:显示代码位置和调用路径 ............................................ 164
4.2.4.2 参数调用栈程序运行 ......................................................................
165
165
4.2.4.3 程序运行工具栏 .............................................................................
4.2.5 程序状态 ................................................................................................ 165
4.2.5.1 程序状态的属性 .............................................................................
4.2.5.2 使用状态程序 ................................................................................
4.2.5.3 程序状态的调用路径 ......................................................................
4.2.5.4 参数调用路径状态程序 ..................................................................
4.2.6 断点 ....................................................................................................... 169
169
4.2.6.1 设置断点的普通步骤 ......................................................................
170
4.2.6.2 设置 debug 模式 ............................................................................
171
4.2.6.3 定义 debug 任务组 ........................................................................
172
4.2.6.4debug 任务组参数 ..........................................................................
173
4.2.6.5debug 表格参数 ..............................................................................
173
4.2.6.6 设置断点 ........................................................................................
4.2.6.7 断点工具栏 ....................................................................................
175
4.2.6.8 定义一个单独断点的调用路径 ....................................................... 175
177
4.2.6.9 断点调用路径 /任务选择参数 ..........................................................
4.2.6.10 定义所有断点的调用路径 ............................................................
178
4.2.6.11 每个 POU 所有断点的调用路径 /任务选择参数 ............................ 179
180
4.2.6.12 激活断点 ......................................................................................
4.2.6.13 显示调用栈 ..................................................................................
181
182
4.2.6.14 断点调用栈参数 ...........................................................................
4.2.7 追溯 ....................................................................................................... 182
1. ST 基本原理
此章节描述了 ST中的语言资源和使用方法。请注意此章节中描述了功能、功能块和任务
控制系统。一个完整正式的语言描述包括语法图。
1.1 语言描述
在本手册的下列章节中语法图用作语言描述的基础, 为你提供了对 ST语法结构的新认识。
1.1.1 语法图
语法图是对语法结构的图形式的阐述。结构是由一系列的规则描述组成。可以基于现有
的规则生成新的规则。
上图中的语法图需从左至右读。需要注意下列规则结构:
●序列:块的序列
●选项:可以跳过的语句
●迭代:一个或多个语句的重复
●替代: Branch
1.1.2 语法图中的块
块是基本元素。下图显示了代表块而使用的符号类型。
要更多解释的基本元素
由更多的语法图解释的复合单元
当输入源文本时需要注意格式化规则和非格式化规则。比如:把语法图中的块或元素转
化为源文本(见帮助中的语言描述,第 291 页)
1.1.3 规则的意义(语义)
规则能仅代表语言的格式结构。意义(语义)一般不明显。由于这个原因,如果意义很
关键,则需要在规则旁边写上额外的信息。
●如果同类型的元素意义不同,需要附上额外的命名。例如,额外指定每个十进制字符串
元素—年,月或日(见 308 页)。名称表示了用途
● 重要的限制也列出。 如:整数规则中对于— (负号),标明负号只能在 SINT, INT, and DINT
数据类型之前出现(见 308 页)
1.2 基本元素的语言
ST语言的基本元素包括 ST字符组 , 根据 ST字符组(如:语言命令)创建的预留标识符,
自定义的标识符和数字。
ST 字符组合预留标识符都是基本的元素( terminals ),因为是无需另外的规则来描述。
自定义的标识符和数字不是 terminals,因为它们是由另外的规则来描述。
在语法图中,终端是由圆形或者椭圆形符号来表示,但是复合单元由长方形来表示(见
语法图中的块,第 72 页)。下列内容是主要终端的节选,作为全局预览,参考基本元素
(terminals ,第 294 页)
1.2.1 ST 字符组
ST使用 ASCII字符组中的下列字母和数字
●从 A 到 Z 的大小字母
●从 0 到 9 的阿拉伯数字
字母和数字是最常用的字符。例如,标识符是字母,数字和下划线的组合。下划线是特
殊的字符之一。
特殊字符在 ST中有特定的含义(见第 291 页的正式语言描述和第 294 页的基本元素)
1.2.2 ST 中的标识符
标识符的 ST中的名称。这些名称可以根据系统来定义,例如语言命令等。但是,名称可
以是用户定义,比如常量、变量或功能。
1.2.2.1 标识符的规则
标识符是由字母( A 到 Z,a 到 z)、数字( 0 到 9)或单独的下划线随意组成,但是首字
符必须是字母或者下划线。大小写字母没有区分(比如,在编辑器中
样的)。
Anna 和 AnNa 是一
一个正式的标识符可以由以下的语法图表示:
命名时,最好选用唯一的、有意义的命名,以便解释程序。
图表中的语法图声明了一个标识符的首字符必须是字母或者下划线。下划线必须跟着字
母或数字。如:不允许连续有两根或以上的下划线。下划线可以跟着任意或者一系列的
数字,下划线或字母。在这唯一的例外是两条下划线可能不会同时出现。