施耐德PLC初学者入门-ST指令1.指令传统的PLC软件编程语言一般仅支持LD/IL/FBD,ST/SFC/CFC往往需要安装附加的语言包才能支持。SoMachine支持全部的6种编程语言,编程者可以根据实际的需要任意选择编程语言。对于SoMachine编程而言,建议编程者在选择编程语言时应根据实际的编程方便来选择编程语言,而不是在整个程序中仅使用LD.例如,编写算法程序时应优先考虑ST,编写顺序流程时应优先考虑SFC,编写逻辑控制时应优先考虑LD,编写功能块时应优先考虑CFC或FBD.2.MAST任务的选择建议大家优先选择循环任务注意:1)如果为某个循环任务定义的周期过短,则该任务会在写入输出后立即重复,而不会执行其他较低优先级的任务或任何系统处理。这将会影响所有任务的执行并导致控制器超过系统看门狗限制,从而导致系统看门狗例外.2)可以使用GetCurrentTaskCycle和SetCurrentTaskCycle功能通过应用程序获取和设置循环执行任务间隔.3.指令优先级4.ST语言编写:Eg.指令说明1)赋值指令变量:=变量或表达式例如:Var2:=Var1*10;2)IF指令3)IF条件ATHEN表达式A;END_IF例如:IFtemp17THENheating_on:=TRUE;END_IF4)IF条件ATHEN表达式A;ELSE表达式B;END_IF例如:IFtemp17THENheating_on:=TRUE;ELSEheating_on:=FALSE;END_IF;5)IF条件ATHEN表达式A;ELSIF条件BTHEN表达式B;...ELSIF条件N-1THEN表达式N-1;ELSE表达式N;END_IF6)CASE指令语法:CASE控制变量OF数值1:表达式1数值2:表达式2数值3,数值4,数值5:表达式3数值6..数值10:表达式4...数值n:表达式nELSEELSE的表达式END_CASE例子:CASEINT1OF1,5:BOOL1:=TRUE;2:BOOL2:=TRUE;10..20:BOOL3:=TRUE;ELSEBOOL1:=BOOL2:=BOOL3:=FALSE;END_CASE当INT1=1或5时,BOOL1为真;当INT1=2时,BOOL2为真;当INT1=10~20之间的数值时,BOOL3为真;否则,BOOL1、BOOL2、BOOL3均为假。7)For指令语法:FOR循环控制变量:=循环开始时变量值TO循环结束时变量值{BY变量递增步长}DO表达式END_FOR其中,{}内语句可根据需要省略,省略时步长默认为1。例如:FORCounter:=1TO5BY1DOVar1:=Var1*2;END_FOR8)WHILE循环指令语法:WHILE循环条件表达式END_WHILEWHILECounter0DOVar1:=Var1*2;Counter:=Counter-1;END_WHILE9)RepeatREPEAT表达式UNTIL循环结束条件END_REPEATREPEAT表达式UNTIL循环结束条件END_REPEATEg.REPEATVar1:=Var1*2;Counter:=Counter-1;UNTILCounter=0END_REPEAT10)EXIT指令EXIT用于退出FOR循环、WHILE循环、REPEAT循环。11)RETURN指令返回指令,用于根据一定条件退出POU。12)调用运算快指令13)局部变量声明:语法:标识符{AT地址}:类型{:=初始化值};其中大括号{}中为可选部分。例如:kaishi:BOOL;tingzhiAT%MX0.1:BOOL;shujuAT%MW100:INT:=218;