国产一区二区三区毛片_亚洲乱码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
漂泊的石頭人
級別: 家園常客
精華主題: 0
發帖數量: 481 個
工控威望: 614 點
下載積分: 2798 分
在線時間: 211(小時)
注冊時間: 2018-07-17
最后登錄: 2025-05-20
查看漂泊的石頭人的 主題 / 回貼
1樓  發表于: 2018-11-21 21:15
不錯  有沒有視頻的           

主站蜘蛛池模板: 拔插拔插8X8X海外华人免费视频_无码专区亚洲avl_日本黄色片免费播放_亚洲成人精品一区二区三区_国产精品一级在线观看_国产精品无码无在线观看_国语自产偷拍精品视频偷蜜芽_中文字幕亚洲乱码熟女在线萌芽 | 色视频综合无码一区二区三区_69久久精品_91日日夜夜_av精选_亚洲熟妇中文字幕日产无码_久久国产精彩视频_欧美三级做爰全过程_偷拍久久精品视频 | 九色亚洲_国产色a_日本高清免费在线_77成人影院_中文字幕日本人妻久久久免费_绯色av蜜臀av_色999日韩_中国丰满少妇熟乱xxxx | 免费av一级_黄色片一区二区_天天爱天天操天天爽_啪啪一级片_亚洲一区四区_久久久久久久这里只有精品_性高朝大尺度少妇大屁股_99re伊人 | 最近国产中文字幕_av在线免费播_亚洲裸男gv网站_www黄色毛片_四虎现在的网址是什么_欧美国产精品久久久乱码_亚洲一区二区三区四区在线免费观看_av美女网 | 极品人妻大胆尝试50p_国产精品久久久久久久久妇女_欧美精选视频在线观看_91大尺度分娩_久久强奷乱码老熟女_日本h片在线观看免费_性av无码天堂_亚洲AV无码成人精品区 | a级特黄毛片_日韩毛片一区二区三区免费播放_在线导航福利_国产精品国产免费_国产一级做a爱免费视频_国产精品视频一二三区_99热一区_999久久久久久久久久久 | 被按摩师玩弄到潮喷在线播放_免费AV无码不卡在线观看_呦一呦二在线精品视频_久色免费_久久女性裸体无遮挡啪啪_国产一级一区_黄色片一级免费_深夜艹逼逼 | 久久精品亚洲一区二区三区_香蕉快播_蜜桃视频一区二区_一区二区不卡视频_成人在线无码_夫の目の前侵犯新婚人妻在线_无码avav无码中文字幕_国产精品一国产精品最新章节 | 法国1997年的迷宫_日日操夜_精品少妇人妻av免费久久久_freesex牲交18_欧美一区黄_国产精品一_日本a级黄绝片a一级啪啪_亚洲成人信息集中地 | 精品国产品香蕉在线_老版包青天83版在线观看_日本中文在线观看_美女mm131爽爽爽作爱_日本女人一区二区三区_欧美精品免费在线_全免费又大粗又黄又爽少妇片_亚洲欧美国产高清vA在线播放 | 成人片黄网站色大片免费_精品久久久久久国产潘金莲_伊人av影院_日韩一卡2卡3卡4卡乱码免费网站_在线亚洲精品国产二区图片欧美_不卡一区2区_爱逼综合_九色精品视频 | 欧美多毛肥胖老妇做爰_caoporn国产精品免费公开_蜜臀亚洲av永久无码精品老司机_男人狂桶女人高潮嗷嗷叫_精品在线视频免费在线观看视频_亚州福利视频_国产精品视频网_一区二区狠狠色丁香久久婷婷 | 国产视频h_国产日韩视频_日日插天天操_成人宗合_日韩国产一区二区三区四区五区_亚洲AV永久无码精品桃花岛知道_www.日本在线_淫视频网站 | 人间精品视频在线播放_av免费网站大全_国产精品久久久久久久久久久杏吧_男人和女人做爽爽视频_精品无人乱码一区二区三区_久久精品国产亚洲av香蕉_亚洲男人的天堂视频_国产欧美一区二区精品老汉影院 | 亚洲欧美日韩中文字幕二_日产精品久久久久久久_国产一区二区三区高清_国产一级a不收费_亚洲AV无码第一区二区三区_懂色av粉嫩av蜜臀av_国产午夜理论不卡在线观看_天天射色综合 | 麻豆TV入口在线看_国产一区在线导航_青草视频在线免费观看_性色av无码专区一ⅴa亚洲_国产精品com_国产a三级久久精品_久久一区国产_精品国产日韩欧美一区二区 | 麻豆蜜桃AV蜜臀AV色欲AV_懂色aⅴ精品一区二区三区蜜月_潮喷失禁大喷水无码_免费观看激色视频网站在线观看_亚洲砖码砖专无区2023_福利小视频在线观看_久久综合天天_久久免费看少妇高潮a片免费 | 草草爱视频_大片网站久久_99精品久久久久久久免费看蜜臀_男女av在线_亚洲一区欧美二区_欧美丰满熟妇bbbbbb百度_夜夜澡天天碰人人爱AV_国产盗摄偷拍视频 | 高h粗口_日本黄色三级网站_黄色av大全_少妇饥渴偷公乱第一章全文_精品免费久久久国产一区_国产乱人_国产精品久久久国产盗摄_欧美亚洲人成在线 | 国产亚洲三级_蝌蚪自拍网_99热福利_亚洲成aⅴ人在线观看_国产精品伦子XXX视频_麻豆三区_日本大尺度无删减在线观看_女人高潮一级片 | www.99久久久_黄色片网此_欧美色图影院_99久久久无码国产精精品品不卡_成人高潮成人免费观看_99re6热在线精品视频观看_亚洲黄色一区二区_国产成人91 | 午夜影院黄色片_日本aⅴ_午夜免费1000部_在线观看免费成人av_一个人免费观看在线视频www_一级做a爰片久久毛片_亚洲国产中文在线视频_国产亚洲精品线观看动态图 | 51免费看成人啪啪片_亚洲国产二区三区_亚洲精品乱码_亚洲AV无码国产成人_免费观看一二区视频网站_伊人av成人_人妻精品动漫h无码中字_久久极品视频 | 成人欧美一区二区三区在线_97精品伊人久久大香线蕉_亚洲最大看欧美片网站_不卡的一区二区_极品美女一级片_伊人11_东京热T0KY0综合久久_国产vr在线视频一区二区不卡 | 久久国产欧美一区二区_人禽l交免费视频_一色屋精品视频在线观看免费_99久久久无码国产精品免费蜜柚_xxxx欧美丰满大屁股free_人人插人人干_免费在线观看高清视频网站_丰满少妇大尺度慢摇 | 97久久久精品综合88久久_国产一区二区精品久久久不卡蜜臀_午夜小影院_欧美精品亚洲_精品日产卡一卡二卡国色天香_精品国产网址_xvideos一色全网免费视频_国产亚洲精品自在久久 | 日本三级带日本三级带66_综合av在线播放_深夜在线网站_一级片国语_福利姬液液酱喷水_美女人人操_银魂thefinal_日本色清 | 亚洲AV无码成人网站手机观看_中文字幕不卡乱偷在线观看_综合色站导航_亚洲一级图片_青天衙门第一部免费观看_天天搞夜夜骑_在线视频夫妻内射_国产黄色av免费看 | 人与性动交ⅩXXXB_骚片AV蜜桃精品一区_大胸美女白丝被到流水软件_国产精品黄网在线播放_国产欧美视频在线观看_7777免费精品视频_精品国产乱码久久久久久88av_成人在线91 | 精品国产乱码一区_亚洲AV中文无码乱人伦在线视色_天堂爱爱_久操热久操_国产农村妇女野外牲交视频_亚洲一区午夜_精品综合_国产资源免费在线观看 | 品色堂永远免费_俄罗斯大荫蒂女人毛茸茸_国产精品一级在线_亚洲人精品午夜射精日韩_日日网站_成人福利视频网_日韩一区二区三区网站_濑亚美莉av番号大全 | 又湿又紧又大又爽A视频_色八区人妻在线视频免费_玩弄丰满少妇XXXXX性多毛_美女av影视_午夜好爽好舒服免费视频_亚洲一区二区麻豆_97精品在线_日本免费小视频 | 国产一级做a_一个色综合国产色综合_九九九99品牌的特色产品_被男人吃奶跟添下面特舒服_啄木鸟在线_99啪啪_zjzjzjzjzjzjzj视频免费播放_jvid福利在线一区二区 | 91看片官网_欧美线人一区二区三区_九色视频少妇_免费精品国自产拍在线播放_日本黄色片aaaa_暖暖av_亚洲精品久久乱码水蜜桃摄影_中文字幕在线观看国产推理片 | 四色永久网址在线观看_首页国产欧美日韩丝袜_国产丝袜视频一区二区三区_青青国产在线_欧美一a一片一级一片_国产午夜精品视频免费不卡69堂_亚洲伊人一本大道中文字幕_中字一区 | 穿越时空的少女免费观看动漫日语_国产野战无套av毛片_国产精品成人aaaaa网站_A级毛片内射免费视频_魔鬼部队高清国语免费观看_97精品免费公开在线视频_日韩av高清在线播放_国产欧美日韩另类 | 久久精品视频69_国产精品91在线播放_亚洲综合无码一区二区_中文日韩一区二区_日韩一卡二卡三卡四卡免费观在线_国产a级免费观看_国内精品免费视频自在线拍_久久ク成人精品中文字幕 | 日本人浓密BBW_www.爱久久.com_国产高清精品一区_久久久久久久久久久福利观看_国产超碰在线播放_系列国产精品综合在线_翘臀后进少妇大白嫩屁股_国产无码不卡一区二区 | 欧亚精品一区三区免费_欧美一区二区三区久久精品_99精品在线免费观看_小龙女玉足娇喘蕾丝湿润_福利视频你懂的_国产精品国产三级国产不产一地_日本高清视频不卡_色狠狠久久AV五月丁香 | 午夜一区二区三区视频_成年人一级视频_亚洲区自拍区_日韩欧美一二区_青娱乐在线视频播放_国产成人综合亚洲欧美94在线_亚洲综合无码一区二区三区_亚洲精品亚洲人成人网在线播放 |