国产一区二区三区毛片_亚洲乱码AV中文一区二区_亚洲精品无码专区在线播放_日韩欧美一二_咪咪av影院_欧久久av一区二区

sz518104
級別: 家園常客
精華主題: 0
發帖數量: 927 個
工控威望: 803 點
下載積分: 18565 分
在線時間: 397(小時)
注冊時間: 2009-01-05
最后登錄: 2025-05-06
查看sz518104的 主題 / 回貼
樓主  發表于: 2018-11-20 08:57

結構化文本ST編程,西門子PLC編程語言中叫SCL ,其它任何PLC控制器編程語言還是叫結構化編程ST。
西門子SCL語言


第一章IF:條件執行
IF 分支
IF <條件> THEN <指令>
END_IF;
如果滿足該條件,則將執行 THEN 后編寫的指令。 如果不滿足該條件,則程序將從 END_IF 后的下一條指令開始繼續執行。
IF 和 ELSE 分支
IF <條件> THEN <指令 1>
ELSE <指令 0>;
END_IF;
如果滿足該條件,則將執行 THEN 后編寫的指令。 如果不滿足該條件,則將執行 ELSE 后編寫的指令。 程序將從 END_IF 后的下一條指令開始繼續執行。
IF、ELSIF 和 ELSE 分支
IF <條件 1> THEN <指令 1>
ELSIF <條件 2> THEN <指令 2>
ELSE <指令 0>;
END_IF;
如果滿足第一個條件(<條件 1>),則將執行 THEN 后的指令(<指令1>)。 執行這些指令后,程序將從 END_IF 后繼續執行。
如果不滿足第一個條件,則將檢查第二個條件(<條件 2>)。如果滿足第二個條件(<條件 2>),則將執行 THEN 后的指令(<指令2>)。 執行這些指令后,程序將從 END_IF 后繼續執行。
如果不滿足任何條件,則先執行 ELSE 后的指令(<指令 0>),再執行 END_IF 后的程序部分。
在 IF 指令內可以嵌套任意多個 ELSIF 和 THEN 組合。 可以選擇對 ELSE 分支進行編程。
IF "Tag_1" = 1
THEN "Tag_Value" := 10;
ELSIF "Tag_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_IF

VAR_INPUT
    Start   : BOOL;
    Manual  : BOOL;
    ActVal  : INT;
END_VAR
VAR
    Manual_FM     : BOOL;
    over          : BOOL;
    under         : BOOL;
    equal_to      : BOOL;
    Setpoint_man  : INT := 1000;
    Setpoint      : INT;
    Deviation     : INT;
    y_index       : INT := 12;
    Total         : INT;
END_VAR

VAR_TEMP i : INT; END_VAR

BEGIN
//Simple IF branch
IF Start THEN Setpoint := 1200; END_IF;
IF Manual THEN
    Setpoint := Setpoint_man;
    Q4.0     := TRUE;
END_IF;

//Branch with THEN...ELSE
IF ActVal > Setpoint
    THEN Deviation := ActVal - Setpoint;
    ELSE Deviation := Setpoint - ActVal;
END_IF;


//Branch with ELSIF
IF ActVal > Setpoint
    THEN over  := TRUE;
         under  := FALSE;
         equal_to := FALSE;
    ELSIF ActVal < Setpoint
         THEN 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
    THEN (*rising edge*);
END_IF;
Manual_FM := Manual;    //Correct edge memory bit

//Counting bits set to "1"
Total := 0;
FOR i:=1 TO 32 DO
    IF M[y_index,i] = TRUE
    THEN Total := Total + 1;
    END_IF;
END_FOR;

END_FUNCTION_BLOCK

第二章CASE:創建多路分支
說明:使用“創建多路分支”指令,可以根據數字表達式的值執行多個指令序列中的一個。
表達式的值必須為整數。執行該指令時,會將表達式的值與多個常數的值進行比較。如果表達式的值等于某個常數的值,則將執行緊跟在該常數后編寫的指令。常數可以為以下值:
·        整數(例如,5)
·        整數范圍(例如,15 到 20)
·        由整數和范圍組成的枚舉(例如,10、11、15 到 20)
CASE <表達式> OF
<常量 1>: <指令 1>
<常量 2>: <指令 2>
<常量 X>: <指令 X>; // X>= 3
ELSE <指令 0>;
END_CASE;
例子
CASE #a OF
    0 :
          "Tag_1":= 1;
    1,3,5 :
          "Tag_2":= 1;
    6...10 :
          "Tag_3":= 1;
    16,17,20...25 :
          "Tag_4":= 1;
    ELSE
          "Tag_5":= 1;
END_CASE;
CASE OF 案例小程序:
FUNCTION_BLOCK "CASE"
TITLE = 'CASE Statements'

VAR
    Expression1    : INT;
    Expression2    : INT;
    Expression3    : INT;
    Day_of_the_week: STRING[12];
    Dat            : DATE;
    ID             : INT;
    Error_number   : INT;
END_VAR

VAR_TEMP
    Return_jump : INT;
END_VAR

LABEL
    Subroutine; M_1; M_2; M_3; End;
END_LABEL

BEGIN
//CASE with simple waiting list
CASE Expression1 OF
    1    : Q4.1 := TRUE;
    2    : Q4.2 := TRUE;
    3    : Q4.3 := TRUE;
END_CASE;

//CASE with value areas
CASE Expression2 OF
    1,2    : Q4.4 := TRUE;
    2,3    : Q4.5 := TRUE;
    ELSE   : QB4  := 0;
END_CASE;

//CASE with gaps in the value areas
CASE Expression3 OF
    1..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_TO_INT(DATE_TO_DINT(Dat) MOD 7)+1 OF
    1 : 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 number
CASE ID OF
0     : Error_number := 0;
1,3,5 : Error_number := ID + 128;
6..10 : Error_number := ID;
ELSE  : Error_number := 16#7F;
END_CASE;


//"Subroutines"

IF 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 jump from subroutine*);
//...

IF I1.2 THEN Return_jump := 3; GOTO subroutine; END_IF;
M_3: (*Return jump from subroutine*);
//...

GOTO End;            //Jump over subroutine
Subroutine: ;        //Jump to subroutine

//...Statements in the subroutine


//Selection for the return jump
CASE return_jump OF
    1 : GOTO M_1;
    2 : GOTO M_2;
    3 : GOTO M_3;
END_CASE;
//*********************************************************
End: ;

END_FUNCTION_BLOCK
第三章FOR:在計數循環中執行
說明
使用“在計數循環中執行”指令,重復執行程序循環,直至運行變量不在指定的取值范圍內。
也可以嵌套程序循環。 在程序循環內,可以編寫包含其它運行變量的其它程序循環。
通過指令“復查循環條件”(CONTINUE),可以終止當前連續運行的程序循環。通過指令“立即退出循環”(EXIT) 終止整個循環的執行。


FOR i := 2 TO 8 BY 2
    DO "a_array :="Tag_Value"*"b_array";
END_FOR;
FOR 指令案例
FUNCTION_BLOCK "FOR"
TITLE = 'FOR Statement'

//FOR ... TO ... BY ... DO ... END_FOR
//CONTINUE ... EXIT

NAME    : C28FOR
FAMILY  : SCL_Book
AUTHOR  : Berger
VERSION : '1.0'

VAR
    index1 : INT := 4;
    index2 : INT := 6;
    index3 : INT := 8;
END_VAR

VAR_TEMP
    Runtime_variable : INT;
    i, k             : INT;
END_VAR

BEGIN

//Simple FOR loop
FOR Runtime_variable := 0 TO 7 DO
    M[index1,Runtime_variable] := TRUE;
END_FOR;

FOR Runtime_variable := 0 TO 15 BY 2 DO
    M[index2 + Runtime_variable MOD 8, Runtime_variable] := TRUE;
END_FOR;

MD[index1] := 0;
MD[index2] := 0;

(* Set memory bits *)
FOR i := 2 TO 23 DO
  M[i DIV 8,i MOD 8] := TRUE;
END_FOR;

MD[index2] := MD[index1];


//Nested FOR loops
(* Reset memory bits *)
FOR i := 0 TO 2 DO
  FOR k := 0 TO 7 DO
    IF (k < 2 AND i = 0) THEN CONTINUE; END_IF;
    IF (i = 2 AND k > 5) THEN EXIT; END_IF;
    M[i,K] := FALSE;
  END_FOR;
END_FOR;
MW[index3]     := INT_TO_WORD(i);
MW[index3 + 2] := INT_TO_WORD(k);


//FOR loop with step width <> 1
FOR i:=128 TO 142 BY 2 DO
    MW := PIW;
END_FOR;


//Abort FOR loops
FOR Runtime_variable := 0 TO 15 DO
    M[index2,Runtime_variable] := TRUE;
    IF Runtime_variable = 7 THEN CONTINUE;
        ELSIF Runtime_variable = 8 THEN CONTINUE;
    END_IF;
    IF Runtime_variable = 10 THEN EXIT; END_IF;
    M[index2 + 1,Runtime_variable] := TRUE;
END_FOR;
MD[index2] := 0;

END_FUNCTION_BLOCK




第四章WHILE:滿足條件時執行
說明
使用“滿足條件時執行”指令可以重復執行程序循環,直至不滿足執行條件為止。該條件是結果為布爾值(TRUE 或 FALSE)的表達式。 可以將邏輯表達式或比較表達式作為條件。
執行該指令時,將對指定的表達式進行運算。 如果表達式的值為 TRUE,則表示滿足該條件;如果其值為 FALSE,則表示不滿足該條件。
也可以嵌套程序循環。 在程序循環內,可以編寫包含其它運行變量的其它程序循環。
通過指令“復查循環條件”(CONTINUE),可以終止當前連續運行的程序循環。通過指令“立即退出循環”(EXIT) 終止整個循環的執行。 WHILE
      "Tag_Value1" <>"Tag_Value2"
      DO "Tag_Result"
      := "Tag_Input";

END_WHILE;
WHILE 案例
FUNCTION_BLOCK "WHILE"
TITLE = 'WHILE Statement'

//WHILE ... DO ... END_WHILE
VAR_INPUT
    Data  : BLOCK_DB;
END_VAR
VAR
    Runtime_variable : INT;
    Dat              : DATE;
    NextWeek         : ARRAY[1..7] OF DATE;
    byteindex        : INT;
    bitindex         : INT;
END_VAR
VAR_TEMP
    t_Date : DINT;
    i, k    : INT;
END_VAR

BEGIN

//Simple WHILE statement
i := 0;
WHILE  Data.DW = 16#FFFF DO
i := 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 DO
    NextWeek := DINT_TO_DATE(t_Date + i - 1);
END_FOR;

//Finding the first input bit containing "1"
i := 0; k := 0;
WHILE I[i,k] = TRUE DO k := k + 1;
    IF k = 8 THEN k := 0; i := i + 1; END_IF;
    IF i > i + 4 THEN EXIT; END_IF;
END_WHILE;
byteindex := i; bitindex := k;

END_FUNCTION_BLOCK

第五章EXIT:立即退出循環
說明
使用“立即退出循環”指令,可以隨時取消 FOR、WHILE 或 REPEAT 循環的執行,而無需考慮是否滿足條件。在循環結束(END_FOR、END_WHILE 或 END_REPEAT)后繼續執行程序。
該指令將影響其所在的程序循環。

示例

SCL 將以下程序代碼復制到剪貼板。
FOR i := 15 TO 1 BY -2 DO
IF (i < 5)
THEN EXIT;
END_IF;
"DB10".Test := 1;
END_FOR;

如果滿足條件 i < 5,則將取消循環執行。 程序將從END_FOR 后繼續執行。
如果不滿足條件 i < 5,則執行后續的值分配(“DB10”.Test:= 1)并開始一個新循環。 將運行變量 (i) 以 2 進行遞減,并進行檢查該變量的當前值是否在程序中設定的取值范圍之內。如果執行變量 (i) 在取值范圍內,則將再次計算 IF 的條件。

https://mp.weixin.qq.com/s?__biz=MzIzMjQ3MjM0Ng==&mid=2247483932&idx=1&sn=80cfe82cf8f362bf8d2574489d4966b6&chksm=e8952869dfe2a17ffdccbde976c4c3ba71fb7d6e025cb054d1ee1da0701008040239dd9617d3&token=716415798&lang=zh_CN#rd

主站蜘蛛池模板: 麻豆影视网_国产成人综合色视频精品_亚洲国产精品久久久久久久久久_岛国毛片在线观看_无码色偷偷亚洲国内自拍_欧美日韩一区二区三区久久精品_91精品麻豆日日躁夜夜躁_法国性xxxx精品hd | 亚洲第一淫片_色网站免费视频_亚洲欧美aⅴ..._a黄色片网站_少妇被躁爽到高潮无码人狍大战_青青青视频免费_在线看片免费人成视频大全_亚洲人成色7777在线观看不卡 | 青苹果乐园高清免费播放_国产午夜亚洲精品一区_成人做爰A片免费看视频暗夜_国产亚洲精久久久久久_亚洲成a人片_日本成本人片视频免费_亚洲午夜无码久久久久小说_男女a级毛片 | 蜜臀影院_亚洲一区二区三区91_欧洲AV色爱无码综合网_精品日产卡一卡二卡麻豆_亚洲AV最新在线网址尤物_免费看的国产视频网站_一区二区网站_特级黄色一级毛片 | 玖玖色在线观看_久久久国产精品黄毛片_日韩人妻无码潮喷中文视频_日本一区二区三区四区不卡视频_青青操国产_一级看片免费视频_夜夜激情网_凸凹隐藏撒尿xxxx偷拍 | 人与性动交ⅩXXXB_骚片AV蜜桃精品一区_大胸美女白丝被到流水软件_国产精品黄网在线播放_国产欧美视频在线观看_7777免费精品视频_精品国产乱码久久久久久88av_成人在线91 | 精品国产一区二区免费不卡_久久久久久久久久99_国产精品无码素人福利免费_国产三级生活片_国精一区二区_国产小福利_久久中文字幕无码专区_日韩精品国产精品 | 亚洲超碰97人人做人人爱_国产精品日日做人人爱_久久精品夜色国产亚洲av_人妻体内射精一区二区_久久久精品波多野结衣_最新91在线视频_久久9色_国产成视频在线观看 | 国产精品久久久天天影视_强乱中文字幕在线播放不卡_亚洲日韩精品A∨片无码加勒比_国产精品第1页_4455永久在线观看_伊人久久婷婷综合五月97色_亚洲国产毛片_一级h片 | 日韩经典AV在线观看_中文无码日韩欧免费视频_捆绑白丝粉色jk震动捧喷白浆_日本慰安所一级毛片在线播放_亚洲精品久久久乳夜夜欧美_97浪潮性色91久久久美川_亚洲蜜桃精久久久久久久久久久久_最新中文字幕av | 国产精品久久一_国产乱码精品一区二区三区黄瓜的功能_亚洲一区二区三区色_国产成人综合精品三级_激情久爱免费视频在线_在线天堂中文最新版_久久草在线精品_免费观看黄网站 | 成人久久18免费观看_色69av_激情欧美在线观看_国语自产偷拍精品视频偷_91插插影库_天天躁日日躁狠狠躁av麻豆男男_国产精品久久久久久网站_成人欧美一区 | 久久不见久久见免费影院_日韩第一页_最新国产拍偷乱偷精品_久久激情五月丁香伊人_av网页在线播放_色丁香av_日日夜夜免费精品视频_亚洲乱码精品久久久久 | 久久久久久国产免费视网址_亚洲尺码一区二区三区_国产精品专区一_免费一级片在线_免费女人高潮流视频在线_avtt在线观看_亚洲精品国偷拍自产在线_国产成人av综合 | 亚洲国产一区在线_日韩久久久一区二区_99久久国产综合精品五月天_h视频在线观看网站_91精品啪在线观看国产日本_不卡无在线一区二区三区_亚洲色WWW永久网站_毛片在线看看 | 妇女性内射冈站HDWWWOOO_亚洲av无码av日韩av网站_青草欧美亚洲a视频在线_福禄影院午夜伦_亚洲美女影院_日日操操_国产偷窥熟女精品视频大全_国产在线一区二区三区AV | 天天综合日日夜夜_日日鲁夜夜如影院_99re视频热这里只有精品7_日本一区二区三区四区_国产做A爰片久久毛片A片白丝_97天堂_99视频在线_国产成人精品免费视频大全最热 | 亚洲AV最新在线网址18禁_巨熟乳波霸若妻在线播放_少妇福利视频_WWW亚洲精品久久久_亚洲精品国产成人久久av盗摄_久久精品亚洲一区二区三区画质_涩涩爱97_成人免费视频无码专区 | 9porny九色视频自拍_色WWW永久免费视频_亚洲激情久久久_日本伊人影院_WWW色情成人免费视频_一区二区在线观看不卡_国产精品8888_请别相信她免费观看高清章若楠 | 日本亚洲欧美高清专区vr专区_国产69av_国产亚洲露脸在线观看_天天干成人网_黄色的视频免费_国产精品久久久久久久久图文区_中文在线中文字幕_一级毛片网 | 国产成人91视频_在线观看第一区_国产精品交换_日本四虎_国精品午夜福利视频不卡麻豆_人妻无码高清一区_久草热线视频_色网免费 | 日本亚洲欧美高清专区vr专区_国产69av_国产亚洲露脸在线观看_天天干成人网_黄色的视频免费_国产精品久久久久久久久图文区_中文在线中文字幕_一级毛片网 | 国产自主偷在线视频_日本中出在线播放_日本xx18_每日更新在线观看视频_亚洲最新网站_色8久久久噜噜噜久久_在线日本欧美_亚洲Av永久无码精品黑人 | 色欲色欲久久综合网_人妻暴雨中被强制侵犯在线_亚洲国产AⅤ综合网_狠狠色综合播放一区二区_久久精品久久精品久久39_午夜一级做a爰片久久毛片_久久重口味视频_国产最新毛片 | 一本精品999爽爽久久久_久久av.com_最近最新中文字幕h_国产精品国产三级国产专播一_最近免费中文字幕大全高清_久久毛片一区二区三区_三年片免费观看大全国语_欧美精品无码久久久 | 国产视频h_国产日韩视频_日日插天天操_成人宗合_日韩国产一区二区三区四区五区_亚洲AV永久无码精品桃花岛知道_www.日本在线_淫视频网站 | 欧美午夜伦理_曰本人做爰大片免费观看一老师_一级黄免费看_日本一二区不卡_九色视频网站入口_日韩毛毛片_在线观看欧美一区二区三区_日韩亚洲不卡线 | 亚洲日韩国产成网在线观看_69久久久_伊人久久精品无码麻豆一区_亚洲欧美日韩在线观看a三区_日本网站在线_av在线免费观看国产_最近免费中文字幕大全高清MV_性欧美长视频免费观看不卡 | 国产精品久久久成人一区二区三区_香港经典A毛片免费观看特级_伊人丁香五月婷婷综合激情四射网_99久久婷婷国产综合精品青牛牛_日韩一区二区三区观看_国产成人无码aa精品一区_91影音_国产精品一区2区三区内射 一本精品999爽爽久久久_久久av.com_最近最新中文字幕h_国产精品国产三级国产专播一_最近免费中文字幕大全高清_久久毛片一区二区三区_三年片免费观看大全国语_欧美精品无码久久久 | 91久久精品国产一区二区三区_一本大的之伊人_国产免费观看视频_一级片aaa_国产国在线线免费费_久久精品国产亚洲αv忘忧草_WWW国产精品内射熟女_2012中文字幕在线视频 | 色婷婷天堂_亚洲网色_国产成人久久AV免费_av狼论坛_国产xxwwxxww视频_吉林小伟无套gay_久久免费看a级毛毛片_欧美猛交 | 一区视频在线免费观看_久久天天躁夜夜躁狠狠_亚洲精品一级_成人性生交大片看1_xxx国产精品视频xxx软件_免费人妻无码不卡中文字幕系列_97超碰免费人人看人人_亚洲午夜一二三区视频 | 久在草视频_乱码一区二区_飘雪在线高清观看视频动漫_日本高清视频免费在线观看_久久亚洲一区二区三区四区_亚洲欧洲av在线_精品国产AV无码一区二区三区_免费黄色在线观看视频 | 久久人人爽人人爽人人片av高清_国产九九九精品_视频一区二区三区在线_艹逼逼网站_新版天堂资源在线_日本精品视频一区二区三区_色婷婷xxx_四虎视频影院www1515 | 成人久久18免费观看_色69av_激情欧美在线观看_国语自产偷拍精品视频偷_91插插影库_天天躁日日躁狠狠躁av麻豆男男_国产精品久久久久久网站_成人欧美一区 | 99视频内射三四_禁忌的恋爱关系在线观看_亚洲成年_91精品啪在线观看国产_久久精品99久久香蕉国产色戒_午夜影院黄色一级片_亚洲AV成人无码网站18禁_黄色片免费大全 | 91超碰刺激偷拍_国内精彩免费自拍视频在线观看网址_欧美内射深插日本少妇_97zyz成人免费视频_麻豆成人在线_欧美日韩精品久久免费_免费看黄色一级视频_91视频麻豆视频 | 一区中文字幕_欧美日本免费观看_国产在线无码一区二区三区视频_欧美视频一二三_精品视频在线一区二区三区观看_日本淫视频_久久精品国产字幕高潮_亚洲AV日韩AV一区谷露 | 国产精品久久久久久麻豆一区_四虎激情网_又大又粗欧美黑人A片_国产精品乱码高清在线看_中文精品在线_久久久裸体_美女视频黄的免费视频网页_国产国产人免费视频成 | 亚洲乱亚洲乱妇19p_色肉色伦交国产69精品_欧洲吸奶大片在线看_四虎免费看黄_国产人妻精品午夜福利免费_在线观看免费视频精品_黄网www_婷婷91 | 亚洲性色av日韩在线观看_国产成人精品无码片区在线观看_国产精品操女人_av官网在线播放_国产内射露脸在线观看_久久2018_日韩97_国产精品毛片久久久久久久av |