ST语言编程手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ST语⾔编程⼿册
ST语⾔编程⼿册
⽬录
1. ST基本原理 (6)
1.1语⾔描述 (6)
1.1.1语法图 (6)
1.1.2语法图中的块 (7)
1.1.3规则的意义(语义) (7)
1.2基本元素的语⾔ (7)
1.2.1 ST字符组 (7)
1.2.2 ST中的标识符 (8)
1.2.2.1标识符的规则 (8)
1.2.2.2标识符举例 (9)
1.2.3预留标识符 (9)
1.2.3.1保护标识符 (10)
1.2.4数字和布尔值 (16)
1.2.4.1整数 (16)
1.2.4.2浮点数 (17)
1.2.4.3指数 (17)
1.2.4.4布尔值 (17)
1.2.4.5数字的数据类型 (18)
1.2.5字符串 (18)
1.3 ST源⽂件的结构 (19)
1.3.1语句 (20)
1.3.2注释 (21)
1.4数据类型 (22)
1.4.1基本数据类型 (22)
1.4.1.1基本数据类型 (22)
1.4.1.2基础数据类型的值的围限制 (24)
1.4.1.3普通的数据类型 (25)
1.4.1.4基础系统数据类型 (26)
1.4.2⽤户定义的数据类型 (26)
1.4.
2.1⽤户定义的数据类型 (26)
1.4.
2.2⽤户定义的数据类型的语法(类型声明) (27) 1.4.2.3基础派⽣或派⽣的数据类型 (28)
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技术⽬标数据类型的描述 (33)
1.4.3.2轴属性的继承 (34)
1.4.3.3技术⽬标数据类型的例⼦ (35)
1.4.4系统数据类型 (36)
1.5变量声明 (36)
1.5.1变量声明的语法 (37)
1.5.2所有变量声明的概述 (38)
1.5.3变量或数据类型的初始值 (39)
1.6赋值和表达式 (43)
1.6.1赋值 (44)
1.6.1.1赋值的语法图 (44)
1.6.1.2基础数据类型的变量的数值指定 (45)
1.6.1.3串基础数据类型的变量数值指定 (45)
1.6.1.4位数据类型的变量的数值指定 (46)
1.6.1.5派⽣的枚举数据类型的变量的数值指定 (48) 1.6.1.6派⽣的阵列数据类型的变量的数值指定 (48) 1.6.1.7派⽣的STRUCT数据类型的变量数值指定 (49) 1.6.2表达式 (49)
1.6.
2.1表达式结果 (50)
1.6.
2.2表达式的解释顺序 (50)
1.6.3运算对象 (51)
1.6.4算术表达式 (51)
1.6.4.1算术表达式的例⼦ (54)
1.6.5关系表达式 (54)
1.6.6逻辑表达式和位串⾏表达式 (56)
1.6.7运算符的优先级 (57)
1.7控制语句 (58)
1.7.1 IF语句 (58)
1.7.2 CASE语句 (60)
1.7.3 FOR语句 (61)
1.7.3.1处理FOR语句 (62)
1.7.3.2 FOR语句规则 (62)
1.7.3.3FOR语句例⼦ (63)
1.7.4WHILE语句 (63)
1.7.5REPEAT语句 (64)
1.7.6EXIT语句 (64)
1.7.7RETURN语句 (65)
1.7.8WAIFORCONDITION语句 (65)
1.7.9GOTO语句 (67)
1.8数据类型转换 (67)
1.8.1基础数据类型转换 (68)
1.8.1.1隐式数据类型转换 (68)
1.8.1.2显式数据类型转换 (70)
1.8.2补充的转换 (71)
2.功能,功能块和程序 (71)
2.1创建和调⽤功能和功能块 (72)
2.1.1定义功能 (72)
2.1.2定义功能块 (73)
2.1.3FC和FB的声明部分 (73)
2.1.4FB和FC部分的语句 (75)
2.1.5功能和功能块的调⽤ (76)
2.1.5.1参数转移的原则 (76)
2.1.5.2转移给输⼊参数的参数 (77)
2.1.5.3参数转移给in/out参数 (78)
2.1.5.4参数转移到输出参数(仅对FB) (79) 2.1.5.5参数访问时间 (79)
2.1.5.6调⽤⼀个功能 (79)
2.1.5.7调⽤功能块(实例调⽤) (80)
2.1.5.8 在FB外访问FB输出参数 (81)
2.1.5.9在FB外访问FB输⼊参数 (82)
2.1.5.10FB调⽤时的错误源 (82)
2.2功能和功能块的⽐较 (83)
2.2.1例⼦说明 (83)
2.2.2带注释的源⽂件 (84)
2.3程序 (85)
2.4表达式 (87)
3.在SIMOTION中ST的集成 (90)
3.1源⽂件部分的使⽤ (90)
3.1.1源⽂件部分的使⽤ (90)
3.1.1.1interface部分 (90)
3.1.1.2implementation部分 (92)
3.1.1.3程序组织单元(POU) (92)
3.1.1.4功能(FC) (93)
3.1.1.5功能块(FB) (93)
3.1.1.6程序 (94)
3.1.1.7表达式 (95)
3.1.1.8声明部分 (95)
3.1.1.9语句部分 (96)
3.1.1.10数据类型定义 (96)
3.1.1.11变量声明 (97)
3.1.2在ST源⽂件之间的导⼊和导出 (99)
3.1.2.1单元标识符 (99)
3.1.2.2⼀个导出单元的interface部分 (100)
3.1.2.3⼀个导出单元的例⼦ (100)
3.1.2.4在⼀个导⼊单元的USES语句 (101)
3.1.2.5⼀个导⼊单元的例⼦ (102)
3.2在SIMOTION中的变量 (103)
3.2.1变量模型 (103)
3.2.1.1单元变量 (105)
3.2.1.2不保留的单元变量 (106)
3.2.1.3保持单元变量 (107)
3.2.1.4本地变量(静态和临时变量) (108)
3.2.1.5静态变量 (110)
3.2.1.6临时变量 (111)
3.2.2全局设备变量的使⽤ (112)
3.2.3变量类型的存储围 (113)
3.2.3.1存储区域的例⼦,有效关于KernelV3.1 (114)
3.2.3.2本地数据栈变量的存储要求(kernel V3.1或更⾼) (118) 3.2.4变量初始化的时间 (119)
3.2.
4.1保留全局变量的初始化 (119)
3.2.
4.2不保留的全局变量的初始化 (120)
3.2.
4.3本地变量的初始化 (122)
3.2.
4.4静态编程变量的初始化 (122)
3.2.
4.5功能块实例的初始化 (123)
3.2.
4.6技术⽬标的系统变量的初始化 (123)
3.2.
4.7全局变量的版本ID和下载时的初始化 (124)
3.2.5变量和HMI设备 (125)
3.3访问输⼊和输出(过程图像,I/O变量) (127)
3.3.1访问输⼊和输出的概述 (127)
3.3.2直接访问和过程图像访问的重要特征 (128)
3.3.3直接访问和循环任务的过程图像 (130)
3.3.3.1 直接访问和循环任务的过程图像的I/O地址的规则 (131) 3.3.3.2为直接访问和循环任务的过程图像创建⼀个I/O变量 (132) 3.3.3.3输⼊I/O地址的语法图 (133)
3.3.3.4可能的I/O变量的数据类型 (134)
3.3.4背景任务的固定过程图像的访问 (134)
3.3.
4.1背景任务的固定过程图像的绝对访问(绝对PI访问) (135) 3.3.4.2⼀个绝对过程图像访问的标识符语法 (136)
3.3.
4.3背景任务的固定过程图像的符号访问(符号PI访问) (137) 3.3.4.4可能的符号PI访问的数据类型 (138)
3.3.
4.5符号PI访问的例⼦ (138)
3.3.
4.6为访问背景任务固定过程图像⽽创建⼀个I/O变量 (138) 3.3.5访问I/O变量 (139)
3.4使⽤库 (140)
3.4.1编辑⼀个库 (140)
3.4.2库的know-how保护 (141)
3.4.3从库中使⽤数据类型,功能和功能块 (142)
3.5相同的标识符和命名空间的使⽤ (143)
3.5.1相同的标识符的使⽤ (143)
3.5.2命名空间 (145)
3.6参考数据 (148)
3.6.1交叉对照表 (149)
3.6.1.1创建⼀个交叉对照表单 (149)
3.6.1.2交叉对照表的容 (149)
3.6.1.3交叉对照表的使⽤ (150)
3.6.2程序结构 (150)
3.6.2.1程序结构的容 (151)
3.6.3代码属性 (151)
3.6.3.1代码属性容 (152)
3.7控制预处理器和pragma编辑 (152)
3.7.1控制⼀个预处理器 (152)
3.7.1.1预处理器语句 (153)
3.7.1.2预处理器语句的例⼦ (156)
3.7.2属性控制编辑器 (157)
3.8跳转语句和标签 (159)
4.错误源和程序调试 (160)
4.1避免错误和有效编程的注释 (160)
4.2程序调试 (160)
4.2.1程序测试的模式 (160)
4.2.1.1SIMOTION设备模式 (160)
4.2.1.2life-sign监视的重要信息 (162)
4.2.1.3life-sign监视参数 (163)
4.2.2符号浏览器 (164)
4.2.2.1符号浏览器的属性 (164)
4.2.2.2使⽤符号浏览器 (164)
4.2.3在watch表中监视变量 (166)
4.2.3.1在watch表中的变量 (166)
4.2.3.2使⽤watch表格 (167)
4.2.4程序运⾏ (167)
4.2.4.1程序运⾏:显⽰代码位置和调⽤路径 (167) 4.2.4.2参数调⽤栈程序运⾏ (168)
4.2.4.3程序运⾏⼯具栏 (168)
4.2.5程序状态 (169)
4.2.
5.1程序状态的属性 (169)
4.2.
5.2使⽤状态程序 (170)
4.2.
5.3程序状态的调⽤路径 (172)
4.2.
5.4参数调⽤路径状态程序 (173)
4.2.6断点 (173)
4.2.6.1设置断点的普通步骤 (173)
4.2.6.2设置debug模式 (174)
4.2.6.3定义debug任务组 (174)
4.2.6.4debug任务组参数 (176)
4.2.6.5debug表格参数 (176)
4.2.6.6设置断点 (177)
4.2.6.7断点⼯具栏 (178)
4.2.6.8定义⼀个单独断点的调⽤路径 (179)
4.2.6.9断点调⽤路径/任务选择参数 (181)
4.2.6.10定义所有断点的调⽤路径 (181)
4.2.6.11每个POU所有断点的调⽤路径/任务选择参数 (183)
4.2.6.12激活断点 (184)
4.2.6.13显⽰调⽤栈 (185)
4.2.6.14断点调⽤栈参数 (186)
4.2.7追溯 (186)
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是⼀样的)。
⼀个正式的标识符可以由以下的语法图表⽰:
命名时,最好选⽤唯⼀的、有意义的命名,以便解释程序。
图表中的语法图声明了⼀个标识符的⾸字符必须是字母或者下划线。
下划线必须跟着字母或数字。
如:不允许连续有两根或以上的下划线。
下划线可以跟着任意或者⼀系列的数字,下划线或字母。
在这唯⼀的例外是两条下划线可能不会同时出现。