ST

(结构化文本语言(ST))

语音

编辑

锁定

讨论

上传视频

本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

结构化文本/结构式文件编程语言(英语:Structured text)也称为ST语言,是为可编程逻辑控制器(PLC)设计的编程语言,是相关的IEC 61131-3标准中支援几种语言之一[1]。结构式文件编程语言是支援块状结构(block structured)的高阶语言,以Pascal为 基础,语法也类似Pascal。所有IEC 61131-3的语言都支援IEC61131通用元素(IEC61131 Common Elements)。其变数及函式呼叫是由IEC61131通用元素所定,因此同一个程式中可以使用IEC 61131-3中的不同语言。

结构式文件编程语言类似于PASCAL及C语言,因此可利用与微电脑及个人电脑相同的程式设计技术,进行阶梯图所难以执行的复杂计算,完成程式的建立。常用的程式及回路可透过FB(功能区块)的建立轻易地重复利用。

中文名

结构化文本/结构式文件编程语言外文名

Structured text

STST的构成

编辑

语音

结构化文本是IEC 61131-3标准支持的五种语言之一,专为可编程逻辑控制器(PLC)设计。它是一种块结构的高级语言,在语法上类似于它所基于的Pascal。所有语言都共享IEC61131公共元素。变量和函数调用由公共元素定义,因此可以在同一程序中使用IEC 61131-3标准中的不同语言。

结构式文件编程语言支援复杂的叙述及巢状指令:

循环(REPEAT-UNTIL; WHILE-DO)

条件式执行(IF-THEN-ELSE; CASE)

函数(SQRT(), SIN())

ST范例

编辑

语音

(* simple state machine *)

TxtState := STATES[StateMachine];

CASE StateMachine OF   1: ClosingValve();

ELSE    ;; BadCase();

END_CASE;// PLC configurationCONFIGURATION DefaultCfg

VAR_GLOBAL

b_Start_Stop  : BOOL;

// Global variable to represent a boolean.

b_ON_OFF      : BOOL;

// Global variable to represent a boolean.

Start_Stop AT %IX0.0:BOOL;

// Digital   input of the PLC (Address 0.0)

ON_OFF     AT %QX0.0:BOOL;

// Digital output of the PLC (Address 0.0). (Coil)

END_VAR

// Schedule the main program to be executed every 20 ms

TASK Tick(INTERVAL := t#20ms);

PROGRAM Main WITH Tick : Monitor_Start_Stop;

END_CONFIGURATIONPROGRAM Monitor_Start_Stop

// Actual Program

VAR_EXTERNAL

Start_Stop  : BOOL;

ON_OFF      : BOOL;

END_VAR

VAR

// Temporary variables for logic handling

ONS_Trig    : BOOL;

Rising_ONS  : BOOL;

END_VAR

// Start of Logic

// Catch the Rising Edge One Shot of the Start_Stop input

ONS_Trig    := Start_Stop AND NOT Rising_ONS;

// Main Logic for Run_Contact -- Toggle ON / Toggle OFF ---

ON_OFF := (ONS_Trig AND NOT ON_OFF) OR (ON_OFF AND NOT ONS_Trig);

// Rising One Shot logic

Rising_ONS := Start_Stop;END_PROGRAM

STST 表达式

编辑

语音

ST 语言中的表达式由运算符和操作数组成。操作数可以是常量、变量、函数调用或另一

个表达式。表达式的计算通过执行具有不同优先级的运算符完成。有最高优先级的运算符先

被执行,然后依次执行下一个优先级的运算符,直到所有的运算符被处理完。有相同优先级

的运算符按从左到右的顺序执行。

STST 指令

编辑

语音

赋值

执行赋值操作时,等号左边是操作数(变量或地址),右边是被赋予的表达式的值。例

如:Var1 := Var2 * 10;

调用功能块

通过写入功能块实例的名字,并且在随后的圆括号中赋给参数值来调用功能块。

举例

变量声明:

TPInst:TP;

VarBOOL1: BOOL;

VarBOOL2: BOOL;

程序:

TPInst(IN:= VarBOOL1,PT:= T#5s);(*参数IN 和PT 设定时钟脉冲的触发信号和高电平

的长度*)

VarBOOL2:=TPInst.Q;(*输出脉冲值Q 赋给变量VarBOOL2*)

返回指令

返回指令可以根据条件退出POU。

IF 指令

使用IF 指令可以检查条件,根据条件执行相应的指令。

语法:

IF THEN

{ELSIF THEN

ELSIF THEN

ELSE

}

END_IF;

其中{}的部分可选。

如果返回TRUE,那么只有被执行,其它的指令不被执行。同样,

从开始,相继执行逻辑表达式,直到其中一个表达式返回TRUE 为止,返回

TRUE 的逻辑表达式对应的指令被执行。

如果没有逻辑表达式生成TRUE,那么只有被执行。

举例

IF temp<17

THEN heating_on := TRUE;

ELSE heating_on := FALSE;

END_IF;

这里,如果温度低于17 度,打开加热器,反之则保持关闭状态。

CASE 指令

使用CASE 指令,可以在结构中用一个相同的条件变量表示几个条件指令。

语法:

CASE OF

:

:

:

:

...

:

ELSE

END_CASE;

CASE 指令根据下面的模型来执行:

如果变量有值,那么被执行。

如果变量没有任何指定的值,那么被执行。

如果变量的几个值都需要执行相同的指令,那么可以把几个值相继写在一起,并且用逗号分

开。这样,就会有相同的执行指令。

如果对于变量的一个范围需要执行相同的指令,可以写入初值和终值,中间用两个点分开。

这样,条件就会有相同的执行。

举例

CASE INT1 OF

1, 5: BOOL1 := TRUE;

BOOL3 := FALSE;

2: BOOL2 := FALSE;

BOOL3 := TRUE;

10..20: BOOL1 := TRUE;

BOOL3:= TRUE;

ELSE

BOOL1 := NOT BOOL1;

BOOL2 := BOOL1 OR BOOL2;

END_CASE;

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐