Siemens_SCL语句详解_第1页
Siemens_SCL语句详解_第2页
Siemens_SCL语句详解_第3页
Siemens_SCL语句详解_第4页
Siemens_SCL语句详解_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、结构化文本 ST 编程,西门子 PLC 编程语言中叫 SCL ,其它任何 PLC 控制器编程语言还是叫结构化编程 ST。西门子 SCL 语言第一章 IF:条件执行IF 分支IF THEN END_IF;如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行。IF 和 ELSE 分支IF THEN ELSE ;END_IF;如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则将执行 ELSE 后编写的指令。 程序将从 END_IF 后的下一条指令开始继续执行。IF、ELSIF 和 ELSE 分支IF THEN

2、 ELSIF THEN ELSE ;END_IF;如果满足第一个条件(),则将执行 THEN 后的指令()。 执行这些指令后,程序将从 END_IF 后继续执行。如果不满足第一个条件,则将检查第二个条件()。如果满足第二个条件(),则将执行 THEN 后的指令()。 执行这些指令后,程序将从 END_IF 后继续执行。如果不满足任何条件,则先执行 ELSE 后的指令(),再执行 END_IF 后的程序部分。在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。 可以选择对 ELSE 分支进行编程。IF Tag_1 = 1THEN Tag_Value := 10; ELSIF Tag

3、_2 = 1 THEN Tag_Value := 20; ELSIF Tag_3 = 1 THEN Tag_Value := 30; ELSE Tag_Value := 0; END_IF;IF 案例如下:FUNCTION_BLOCK IF TITLE = IF Statement/IF . THEN . ELSE . END_IFVAR_INPUTStart: BOOL;Manual: BOOL;ActVal: INT;END_VARVARManual_FM: BOOL;over: BOOL;under: BOOL;equal_to: BOOL;Setpoint_man: INT := 10

4、00;Setpoint: INT;Deviation: INT;y_index: INT := 12;Total: INT;END_VARVAR_TEMP i : INT; END_VARBEGIN/Simple IF branchIF Start THEN Setpoint := 1200; END_IF;IF Manual THENSetpoint := Setpoint_man;Q4.0:= TRUE;END_IF;/Branch with THEN.ELSEIF ActVal SetpointTHEN Deviation := ActVal - Setpoint;ELSE Deviat

5、ion := Setpoint - ActVal;END_IF;/Branch with ELSIFIF ActVal SetpointTHEN over:= TRUE;under:= FALSE;equal_to := FALSE;ELSIF ActVal SetpointTHEN under:= TRUE;over:= FALSE;equal_to := FALSE;ELSE equal_to := TRUE;over:= FALSE;under:= FALSE;END_IF;/Edge evalaution (rising edge)IF Manual AND NOT Manual_FM

6、THEN (*rising edge*);END_IF;Manual_FM := Manual;/Correct edge memory bit/Counting bits set to 1Total := 0;FOR i:=1 TO 32 DOIF My_index,i = TRUETHEN Total := Total + 1;END_IF;END_FOR;END_FUNCTION_BLOCK第二章 CASE:创建多路分支说明:使用“创建多路分支”指令,可以根据数字表达式的值执行多个指令序列中的一个。表达式的值必须为整数。执行该指令时,会将表达式的值与多个常数的值进行比较。如果表达式的值等

7、于某个常数的值,则将执行紧跟在该常数后编写的指令。常数可以为以下值: 整数(例如,5) 整数范围(例如,15 到 20) 由整数和范围组成的枚举(例如,10、11、15 到 20) CASE OF: : : ; / X= 3 ELSE ; END_CASE;例子CASE #a OF0 :Tag_1:= 1;1,3,5 :Tag_2:= 1;6.10 :Tag_3:= 1;16,17,20.25 :Tag_4:= 1;ELSETag_5:= 1;END_CASE;CASE OF 案例小程序:FUNCTION_BLOCK CASETITLE = CASE StatementsVARExpressi

8、on1: INT;Expression2: INT;Expression3: INT;Day_of_the_week: STRING12;Dat: DATE;ID: INT;Error_number: INT;END_VARVAR_TEMPReturn_jump : INT;END_VARLABELSubroutine; M_1; M_2; M_3; End;END_LABELBEGIN/CASE with simple waiting listCASE Expression1 OF1 : Q4.1 := TRUE;2 : Q4.2 := TRUE;3 : Q4.3 := TRUE; END_

9、CASE;/CASE with value areasCASE Expression2 OF1,2: Q4.4 := TRUE;2,3: Q4.5 := TRUE;ELSE: QB4:= 0;END_CASE;/CASE with gaps in the value areasCASE Expression3 OF1.4: Q5.1 := TRUE;7.9: Q5.2 := TRUE;12.16: Q5.3 := TRUE;ELSE: QB5:= 0;END_CASE;/Determining the day of the week from the DATE format CASE DINT

10、_TO_INT(DATE_TO_DINT(Dat) MOD 7)+1 OF1 : Day_of_the_week := Monday;2 : Day_of_the_week := Tuesday;3 : Day_of_the_week := Wednesday;4 : Day_of_the_week := Thursday;5 : Day_of_the_week := Friday;6 : Day_of_the_week := Saturday;7 : Day_of_the_week := Sunday; END_CASE;/Assigning an error numberCASE ID O

11、F0 : Error_number := 0;1,3,5 : Error_number := ID + 128;6.10 : Error_number := ID;ELSE: Error_number := 16#7F;END_CASE;/SubroutinesIF I1.0 THEN Return_jump := 1; GOTO subroutine; END_IF; M_1: (*Return jump from subroutine*); /.IF I1.1 THEN Return_jump := 2; GOTO subroutine; END_IF; M_2: (*Return jum

12、p from subroutine*); /.IF I1.2 THEN Return_jump := 3; GOTO subroutine; END_IF; M_3: (*Return jump from subroutine*); /.GOTO End;Subroutine: ;/Jump over subroutine/Jump to subroutine/.Statemen/Selection for the return jumpCASE return_jump OF1 : GOTO M_1;2 : GOTO M_2;3 : GOTO M_3;END_CASE;/*End: ;END_

13、FUNCTION_BLOCK第三章 FOR:在计数循环中执行说明使用“在计数循环中执行”指令,重复执行程序循环,直至运行变量不在指定的取值范围内。也可以嵌套程序循环。 在程序循环内,可以编写包含其它运行变量的其它程序循环。通过指令“复查循环条件”(CONTINUE),可以终止当前连续运行的程序循环。通过指令“立即退出循环”(EXIT) 终止整个循环的执行。FOR i := 2 TO 8 BY 2DO a_array :=Tag_Value*b_array;END_FOR;FOR 指令案例FUNCTION_BLOCK FORTITLE = FOR Statement/FOR . TO . BY

14、. DO . END_FOR/CONTINUE . EXITNAME: C28FORFAMILY: SCL_BookAUTHOR: BergerVERSION : 1.0VARindex1 : INT := 4;index2 : INT := 6;index3 : INT := 8;END_VARVAR_TEMPRuntime_variable : INT;i, k: INT;END_VARBEGIN/Simple FOR loopFOR Runtime_variable := 0 TO 7 DOMindex1,Runtime_variable := TRUE;END_FOR;FOR Runt

15、ime_variable := 0 TO 15 BY 2 DOMindex2 + Runtime_variable MOD 8, Runtime_variable := TRUE; END_FOR;MDindex1 := 0;MDindex2 := 0;(* Set memory bits *)FOR i := 2 TO 23 DOMi DIV 8,i MOD 8 := TRUE;END_FOR;MDindex2 := MDindex1;/Nested FOR loops(* Reset memory bits *)FOR i := 0 TO 2 DOFOR k := 0 TO 7 DOIF

16、(k 5) THEN EXIT; END_IF;Mi,K := FALSE;END_FOR;END_FOR;MWindex3:= INT_TO_WORD(i);MWindex3 + 2 := INT_TO_WORD(k);/FOR loop with step width 1FOR i:=128 TO 142 BY 2 DOMW := PIW;END_FOR;/Abort FOR loopsFOR Runtime_variable := 0 TO 15 DOMindex2,Runtime_variable := TRUE;IF Runtime_variable = 7 THEN CONTINU

17、E;ELSIF Runtime_variable = 8 THEN CONTINUE;END_IF;IF Runtime_variable = 10 THEN EXIT; END_IF;Mindex2 + 1,Runtime_variable := TRUE;END_FOR;MDindex2 := 0;END_FUNCTION_BLOCK第四章 WHILE:满足条件时执行说明使用“满足条件时执行”指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(TRUE 或 FALSE)的表达式。 可以将逻辑表达式或比较表达式作为条件。执行该指令时,将对指定的表达式进行运算。 如果表达式

18、的值为 TRUE,则表示满足该条件;如果其值为 FALSE,则表示不满足该条件。也可以嵌套程序循环。 在程序循环内,可以编写包含其它运行变量的其它程序循环。通过指令“复查循环条件”(CONTINUE),可以终止当前连续运行的程序循环。通过指令“立即退出循环”(EXIT) 终止整个循环的执行。 WHILETag_Value1 Tag_Value2DO Tag_Result:= Tag_Input;END_WHILE;WHILE 案例FUNCTION_BLOCK WHILETITLE = WHILE Statement/WHILE . DO . END_WHILEVAR_INPUTData: BL

19、OCK_DB;END_VARVARRuntime_variable : INT;Dat: DATE;NextWeek: ARRAY1.7 OF DATE;byteindex: INT;bitindex: INT;END_VARVAR_TEMPt_Date : DINT;i, k: INT;END_VARBEGIN/Simple WHILE statementi := 0;WHILEData.DW = 16#FFFF DOi := i + 1;END_WHILE;/Finding the next date that falls at the beginning of the week t_Date := DATE_TO_DINT(Dat);WHILE (t_Date MOD 7)+1 1 DO t_Date := t_Date + 1;END_WHILE;/Saving the date information for the next week FOR i := 1 TO 7 DONextWeek :

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论