施耐德PLC的ST指令入门

施耐德PLC的ST指令入门
施耐德PLC的ST指令入门

施耐德PLC的ST指令入门

1.编程语言

传统的PLC软件编程语言,一般仅支持LD/IL/FBD,ST/SFC/CFC,往往需要安装附加的语言包才能支持。SoMachine支持全部的6种编程语言,编程者可以根据实际的需要,任意选择编程语言。对于SoMachine编程而言,建议编程者在选择编程语言时,应根据实际的编程方便来选择编程语言,而不是在整个程序中仅使用LD。例如,编写算法程序时应优先考虑ST;编写顺序流程时应优先考虑SFC;编写逻辑控制时应优先考虑LD;编写功能块时应优先考虑CFC或FBD。

各品牌PLC的编程语言大同小异,各有特色。了解了一个品牌的编程语言,其他品牌的也就能掌握基本的功能。

2.MAST任务的选择

建议优先选择循环任务

注意:

1) 如果为某个循环任务定义的周期过短,则该任务会在写入输出后立即重复,而不会执行其他较低优先级的任务或任何系统处理。这将会影响所有任务的执行,并导致控制器超过系统看门狗限制,从而导致系统看门狗例外。

2)可以使用 GetCurrentTaskCycle 和 SetCurrentTaskCycle 功能通过应用程序获取和设置循环执行任务间隔.

3.指令优先级

4.ST语言编写:

指令说明

注意各指令的标点符号及标点符号的输入格式。1)赋值指令

变量 := 变量或表达式

例如:Var2:=Var1*10;

2)IF指令

1.IF 条件A

THEN 表达式A;

END_IF

例如:

IF temp<17

THEN heating_on := TRUE;

END_IF

2. IF 条件A

THEN 表达式A;

ELSE 表达式B;

END_IF

例如:

IF temp<17

THEN heating_on := TRUE;

ELSE heating_on := FALSE;

END_IF;

3. IF 条件A THEN 表达式A;

ELSIF 条件B THEN 表达式B;

...

ELSIF 条件N-1 THEN 表达式N-1;

ELSE 表达式N;

END_IF

3)CASE指令

语法:

CASE <控制变量> OF

<数值1>: <表达式1>

<数值2>: <表达式2>

<数值3, 数值4, 数值5>: <表达式3>

<数值6 .. 数值10>: <表达式4>

...

<数值n>: <表达式n>

ELSE

END_CASE

例子:

CASE INT1 OF

1, 5: BOOL1 := TRUE;

2: BOOL2 := TRUE;

10..20: BOOL3:= TRUE;

ELSE

BOOL1 := BOOL2 :=BOOL3 :=FALSE;

END_CASE

当INT1=1或5时,BOOL1为真;

当INT1=2时,BOOL2为真;

当INT1=10~20之间的数值时,BOOL3为真;

否则,BOOL1、BOOL2、BOOL3均为假。

4)For指令

语法:

FOR <循环控制变量> := <循环开始时变量值> TO <循环结束时变量值>{BY <变量递增步长>}

DO <表达式>

END_FOR

其中,{}内语句可根据需要省略,省略时步长默认为1。例如:

FOR Counter:=1 TO 5 BY 1 DO

Var1:=Var1*2;

END_FOR

5)WHILE循环指令

语法:

WHILE <循环条件>

<表达式>

END_WHILE

WHILE Counter<>0 DO

Var1 := Var1*2;

Counter := Counter-1;

END_WHILE

6)Repeat

REPEAT <表达式>

UNTIL <循环结束条件>

END_REPEAT

REPEAT <表达式>

UNTIL <循环结束条件>

END_REPEAT

Eg.

REPEAT

Var1 := Var1*2;

Counter := Counter-1;

UNTIL

Counter=0

END_REPEAT

7) EXIT指令

EXIT用于退出FOR循环、WHILE循环、REPEAT循环。

8) RETURN指令

返回指令,用于根据一定条件退出POU。

9)调用运算快指令

10)局部变量声明:

语法:

<标识符> {AT<地址>}:<类型>{:=<初始化值>};其中大括号{}中为可选部分。例如:

kaishi: BOOL;

tingzhi AT %MX0.1: BOOL;

shuju AT %MW100: INT := 218;

相关主题
相关文档
最新文档