跳到主要内容

6.2.2 ST语言语法

6.2.2.1 ST语言

  • ST语言运算符如下表格所示:
序号运算符描述符号举例优先顺序
1括号()(A+B/C)1(Highest)
2调用带返回值的函数函数名(参数表)MAX(X,Y)2
3解除引用^R^3
4一元减--A4
5一元加++A4
6取反(求反码)NOTNOT C4
7幂运算**A**B5
8乘法*A*B6
9除法/A/B6
10模运算MODA MOD B6
11加法+A+B+C7
12减法-A-B-C7
13比较大小<
A<B8
14比较是否相等=A=B8
15比较是否不等<>A<>B8
16"与"运算&
AND
A&B
A AND B
9
17"异或"运算XORA XOR B10
18"或"运算ORA OR B11

表达式

  • 表达式:表达式将在程序运行期间运算,然后返回一个值。一个表达式由操作数(常数、变量、常量或函数调用)和与之搭配的运算符(如*、/、+或-)组成。通过运算符可以将表达式连接在一起或相互嵌套。
  • 运算顺序为相关运算符的优先级、从左到右的顺序、括号
算术表达式
  • 算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。算术表达式可以处理当前CPU所支持的各种数据类型。

算术表达式支持的数据类型如下表格所示:

运算运算符第一个操作数第二个操作数结果
幂运算**浮点数/整型 //底数整数/浮点数 //指数浮点数
一元加或一元减+或-整数/浮点数
TIME/LTIME
-整数/浮点数
TIME/LTIME
乘法*整数/浮点数
TIME/LTIME
整数/浮点数
整数
整数/浮点数
TIME/LTIME
除法/整数/浮点数
TIME/LTIME
整数/浮点数(不等于0)
整数
整数/浮点数
TIME/LTIME
模运算MOD整数整数整数
加法或减法+或-整数/浮点数
TIME
LTIME
TOD
DATE
DT
LTOD
LDATE
LDT
整数/浮点数
TIME,DINT(INT,UINT,SINT,USINT)
LTIME(TIME),LINT(DINT,UDINT,INT,UINT,SINT,USINT)
TIME,DINT(INT,UINT,SINT,USINT)
DINT(INT,UINT,SINT,USINT)
DINT(INT,UINT,SINT,USINT)
LTIME,LINT(DINT,UDINT,INT,UINT,SINT,USINT)
LINT(DINT,UDINT,INT,UINT,SINT,USINT)
LTIME,LINT(DINT,UDINT,INT,UINT,SINT,USINT)
整数/浮点数
TIME
LTIME
TOD
DATE
DT
LTOD
LDATE
LDT
减法-TOD
DATE
DT
LTOD
LDATE
LDT
TOD
DATE
DT
LTOD
LDATE,DATE
LDT
TIME
DINT
DINT
LTIME
LINT
LTINE
关系表达式
  • 关系表达式将两个操作数的值或数据类型进行比较,然后得到一个布尔值。如果比较结果为真,则结果为TRUE否则为FALSE
  • 关系表达式支持的数据类型如下表格所示:
运算运算符第一个操作数第二个操作数结果
比较:
等于、不等于
=、<>整数/浮点数
位串
字符串
TIME、LTIME
日期和时间
整数/浮点数
位串
字符串
TIME、LTIME
日期和时间
BOOL
比较:
小于、小于等于、大于、大于等于
<、≤、>、≥整数/浮点数
位串
字符串
TIME、LTIME
日期和时间
整数/浮点数
位串
字符串
TIME、LTIME
日期和时间
BOOL
  • 比较浮点数时,对于无效运算的运算结果(如,-1的平方根),这些无效浮点数(NaN)的特定数据模式不可比较。
  • STRING比较是对UTF-8编码的字符进行比较;而WSTRING比较则是对UTF-16编码的字符进行比较。在比较过程中,将比较变量的长度及各字符对应的数值。
  • 只能对两个相同数据类型的时间数据,进行比较,系统无法比较无效日期和时间数据模式。
  • 如果两个变量的结构数据类型相同,则可以比较这两个结构化操作数的值。(T3支持此运算)
  • 要比较两个ARRAY数据类型的变量,运算符只能是“=”或“< >”。且需满足以下要求:(T3支持此运算)
    • 元素的数据类型必须相同;
    • 两个ARRAY的维数必须相同;
    • 所有维数的元素数量必须相同,而具体的ARRAY限值(起始下标)无需相同
    • 支持STRUCT数组,但是不支持FB类型数组
  • 2个位串大小比较,比较的是位串对应正整数值大小的比较。位串数据类型可以和正整数进行比较。但不允许和负数进行比较。
逻辑表达式
  • 逻辑表达式由两个操作数和逻辑运算符(AND、OR、XOR)或取反操作数(NOT)组成。
注意
  • 如果两个操作数都是BOOL数据类型,则逻辑表达式的结果也为BOOL数据类型
  • 如果两个操作数中至少有一个是位串,则结果为位串而且结果是由最高操作数的类型决定。
  • 逻辑表达式支持的数据类型如下表格所示:
运算运算符第一个操作数第二个操作数结果
取反(求反码)NOTBOOL
位串
-
-
BOOL
位串
“与”运算AND或&BOOL
位串
BOOL
位串
BOOL
位串
“或”运算ORBOOL
位串
BOOL
位串
BOOL
位串
“异或”运算XORBOOL
位串
BOOL
位串
BOOL
位串
无类型常数的数据类型
  • 无类型常数跟随表达式数据类型隐性转化。常数是整数时,可以跟随整型变量或浮点数变量(或带类型常数) 进行隐形转换。运算结果为“强类型”(确定型类型)

6.2.2.2 ST编程

  • 编程窗口 alt text
  • 编程窗口组成部分:
部分含义
侧栏在侧栏中可以设置书签和断点
行号行号显示在程序代码的左侧
轮廓视图轮廓视图中将突出显示相应的代码部分
代码区在代码区域,可对ST程序进行编辑
绝对操作数的显示在此表格中列出了赋值给绝对地址的符号操作数