新闻资讯
看你所看,想你所想

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

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

ST的构成

Structured text is one of the five languages supported by the IEC 61131-3 standard, designed for programmable logic controllers (PLCs). It is a high level language that is block structured and syntactically resembles Pascal, on which it is based. All of the languages share IEC61131 Common Elements. The variables and function calls are defined by the common elements so different languages within the IEC 61131-3 standard can be used in the same program.
结构式档案程式语言支援複杂的叙述及巢状指令:
  • 循环(REPEAT-UNTIL; WHILE-DO)
  • 条件式执行(IF-THEN-ELSE; CASE)
  • 函式(SQRT(), SIN())

範例

(* 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

ST 表达式

ST 语言中的表达式由运算符和运算元组成。运算元可以是常量、变数、函式调用或另一
个表达式。表达式的计算通过执行具有不同优先权的运算符完成。有最高优先权的运算符先
被执行,然后依次执行下一个优先权的运算符,直到所有的运算符被处理完。有相同优先权
的运算符按从左到右的顺序执行。

ST 指令

赋值
执行赋值操作时,等号左边是运算元(变数或地址),右边是被赋予的表达式的值。例
如: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
<IF 指令>
{ELSIF <逻辑表达式1> THEN
<ELSE IF 指令1>
ELSIF <逻辑表达式 n> THEN
<ELSE IF 指令 n>
ELSE
<ELSE 指令>}
END_IF;
其中{}的部分可选。
如果<逻辑表达式>返回TRUE,那幺只有<IF 指令>被执行,其它的指令不被执行。同样,
从<逻辑表达式1>开始,相继执行逻辑表达式,直到其中一个表达式返回TRUE 为止,返回
TRUE 的逻辑表达式对应的指令被执行。
如果没有逻辑表达式生成TRUE,那幺只有<ELSE 指令>被执行。
举例
IF temp<17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF;
这里,如果温度低于17 度,打开加热器,反之则保持关闭状态。
CASE 指令
使用CASE 指令,可以在结构中用一个相同的条件变数表示几个条件指令。
语法:
CASE <Var1> OF
<Value1>: <指令1>
<Value2>: <指令2>
<Value3, Value4, Value5>: <指令3>
<Value6 .. Value10>: <指令4>
...
<Value n>: <指令n>
ELSE <ELSE 指令>
END_CASE;
CASE 指令根据下面的模型来执行:
如果变数<Var1>有值<值 i>,那幺<指令i>被执行。
如果变数<Var1>没有任何指定的值,那幺<ELSE 指令>被执行。
如果变数的几个值都需要执行相同的指令,那幺可以把几个值相继写在一起,并且用逗号分
开。这样,就会有相同的执行指令。
如果对于变数的一个範围需要执行相同的指令,可以写入初值和终值,中间用两个点分开。
这样,条件就会有相同的执行。
举例
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;

转载请注明出处海之美文 » ST(结构化文本语言(ST))

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com