<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ST語言概述 - - - - - - ST(結構化文本)是一種通用的高級文本語言,其語法類似于Pascal語言。 適用于包含數值分析或復雜算法的程序。 它可以在程序中,功能或功能塊的主體中????使用,以及用于描述SFC元素內的動作和轉換。 根據IEC 61131-3,關鍵字必須以大寫字母輸入。 空格和制表符不影響語法;可以在任何地方使用它們。 ST中的表達式與Pascal中的表達式完全相同: \[ 變量\] := \[值\]; 它們的執行順序是從右到左。 表達式由操作數和運算符組成。 操作數是文字,變量,結構化變量,結構化變量的組成部分,函數調用或直接地址。 # ◇ 1. 數據類型 根據IEC 61131-3標準,ST語言支持全部必需的類型集,類似于經典編程語言。 整數類型:SINT(字符),USINT(無符號字符),INT(短整數),UINT(無符號整數),DINT(長整數),UDINT(無符號長整數),LINT(64位整數),ULINT(64位整數,無簽字)。 有效類型為:REAL(浮點型),LREAL(雙精度型)。 特殊類型BYTE,WORD,DWORD,LWORD分別是8位,16位,32位和64位長度的位串。 ST中沒有位字段。 可以逐位直接訪問位串。 例如: a.3:= 1; (*設置*變量的第3位) 布爾類型BOOL可以為TRUE或FALSE。 在物理上,BOOL類型的變量可以對應一位。 字符串STRING是字符串,而不是數組。 可以使用標準運算符比較和復制字符串。 例如: strA:= strB; 有一組用于處理字符串的標準函數(請參見附錄2,"帶有STRING類型的變量的字符串操作"一節)。 IEC標準中的特殊類型定義為持續時間(TIME),一天中的時間(TOD),日歷日期(DATE)和時間點(DT)。 表3.1列出了與上述類型相對應的默認值。 表3.1-IEC 61131-3數據類型的默認值 數據類型值BOOL,SINT,INT,DINT,LINT0 USINT,UINT,UDINT,ULINT0 BYTE,WORD,DWORD,LWORD0 REAL0.0 TIMET#0S DATED#0001-01-01 TIME*OF*DAYTOD#00:00 00 DATE*AND*TIMEDT#0001-01-01-00:00:00 STRING''(空字符串) 默認情況下,所有變量都初始化為零。 聲明變量時,可以顯式指定其他值。 例如: str1:STRING:='Hello world'; 在某些情況下,開發軟件模塊時,可以方便地使用類型概括。 一組數據類型的一般命名。 這些概括在表3.2中給出。 表3.2-IEC 61131-3數據類型概括 ANY ANY\_BITANY\_NUMANY\_DATETIME STRING 和其他數據類型 BOOL BYTE WORD DWORD LWORDANY\_INTANY\_REALDATE TIME*OF*DAY DATE*AND*TIME INT SINT DINT LINTUINT USINT UDINT ULINTREAL LREAL ## ◇ 1.1. 語言設計 ST語言構造包括: - 算術運算; - 邏輯(按位)操作; - 比較操作; - 賦值操作; - IF-ELSEIF-ELSE結構; - FOR循環 - DO WHILE循環 - REPAET UNTIL循環 - CASE分支 編寫算術表達式時,允許使用括號來表示計算順序。 編寫表達式時,允許使用變量(局部和全局)和常量。 ## ◇ 1.2. 算術運算 算術運算包括: - " +"-加法; - "-"-減法; - " \*"-乘法; - " /"-除; - " Mod"是整數除法的余數。 表3.4中顯示了表達式中運算的優先級(優先級越高,執行操作越早)。 邏輯(按位)操作 這些操作包括: " OR"-邏輯(按位)加法; " AND"-邏輯(按位)乘法; " XOR"-邏輯(按位)"異或"; " NOT"-邏輯(按位)取反。 比較運算 支持以下比較操作: " ="-比較是否相等; " <>"-不平等的比較; ">"-比較更多; "> =-比較不少; " <"-比較少; " <="-不再進行比較。 比較的結果總是使用BOOL類型的值。 賦值 為了指示賦值,使用了雙符號":="。 表達式的左右部分必須包含相同類型的操作數(不提供自動類型轉換)。 在表達式的左側(接收側)只能使用變量。 右側可以包含表達式或常量。 表3.4顯示了執行上述操作的優先級。 表3.4-操作優先級 操作優先級對照1 加,減2 乘法,除法3 OR4 與,異或5 NOT6 一元減7 函數調用8 建設IF-ELSEIF-ELSE 使用大括號和方括號來描述某些語言構造很方便。 據信: 花括號中的表達式可以連續使用零次或多次。 方括號中的表達式是可選的。 IF-ELSEIF-ELSE構造具有以下格式: IF <布爾表達式> THEN <語句列表> \[ ELSEIF <布爾表達式> THEN <語句列表>\] \[ ELSE <聲明列表>\] END\_IF; 例如: 如果Var <> 0 然后變量:= 1 ELSEIF Var> 0 然后變量:= 0; ELSE Var:= 10; END\_IF; 該設計允許嵌套,即 在一個IF內可以再有一個,依此類推。 例如: 如果Var> 10 THEN 如果Var < +> 然后變量:= 10; ELSE Var:= 0; END\_IF; END\_IF; 周期 用于設置具有固定迭代次數的循環。 設計格式如下: FOR <控制變量>:= <表達式1>到<表達式2> \[ BY \]做 <聲明清單> END\_FOR; 指定循環條件時,假定<控制變量>,<表達式1> ... <表達式3>的類型為INT。 如果循環變量的值超過值,則循環將退出。 例如: 對于i:= 1到10乘2 DO k:= k \* 2; END\_FOR; BY運算符指定循環變量的增量(在這種情況下,每次循環時,我將增加2)。 如果未指定BY運算符,則增量為1。例如: 對于i:= 1 TO k / 2 DO var:= var + k; k:= k-1; END\_FOR; 在循環內部,可以使用其他循環,IF和CASE語句。 EXIT語句可用于退出循環(任何類型)。 例如: 對于i:= 1到10乘2 DO k:= k \* 2; 如果k> 20 THEN EXIT; END\_IF; END\_FOR; 注1:表達式 ... 是在進入循環之前計算的,因此,在這些表達式中的任何一個中更改變量的值都不會更改迭代次數。 例如: 01:k:= 10; 02:對于I:= 1 TO k / 2 DO 03:k:= 20; 04:END\_FOR; 在第3行中,變量k被更改,但是該循環仍將僅執行五次。 注2:循環變量的值可以在循環體內改變,但是在下一次迭代開始時,將根據循環條件設置該變量的值。 例如: 01:對于我:= 1至5 02:我:= 55; 03:END\_FOR; 在第一次通過時,I的值將等于1,然后在第2行中將其更改為55,但是在第二次通過時,I的值將等于2-根據循環條件的下一個值。 循環周期 它用于確定帶有先決條件的循環。 循環將一直運行,直到WHILE子句中的表達式返回TRUE。 設計格式如下: WHILE <布爾表達式> DO <聲明清單> END\_WHILE; 在每次迭代時檢查的值。 如果表達式返回FALSE,則循環將結束。 例如: k:= 10; 當k> 0時 i:= I + k; k:= k –1; END\_WHILE; 在循環內部,可以使用其他循環,IF和CASE語句。 為了盡早終止循環,請使用EXIT運算符(請參見FOR循環說明中的示例)。 重復直到循環 它用于確定具有后置條件的循環。 當UNTIL子句中的表達式返回FALSE時,循環將結束。 換句話說:循環將執行直到滿足UNTIL子句中的條件。 設計格式如下: REPEAT <聲明清單> UNTIL <布爾表達式>; END\_REPEAT; 例如: k:= 10; REPEAT i:= i + k; k:= k-1; 直到k = 0; END\_REPEAT; 在循環內部,可以使用其他循環,IF和CASE語句。 為了盡早終止循環,請使用EXIT運算符(請參見FOR循環說明中的示例)。 施工case 該設計用于組織從一系列值中進行選擇。 設計格式如下: case<表達式> CASE*ELEMENT {CASE*ELEMENT} \[ ELSE <聲明列表>\] END\_CASE; CASE*ELEMENT是值列表,以逗號分隔。 列表項可以是整數或整數范圍。 范圍設置如下BEGIN*VAL .. END\_VAL。 如果當前值不屬于任何CASE\_ELEMENT,則控制權將轉移到ELSE子句。 如果未指定ELSE子句,則不會采取任何措施。 的值只能是整數。 例如: 01:CASE k OF 02:1: 03:k:= k \* 10; 04:2..5: 05:k:= k \* 5; 06:i:= 0; 07:6,9..20: 08:k:= k-1; 09:其他 10:k:= 0; 11:i:= 1; 12:END\_CASE; 第4行包含一系列值。 如果k的值屬于數字段\[2,5\],則將執行第5和第6行。 第7行使用值列表。 如果值k等于6或屬于數字段\[9,20\],則將執行第8行。 如果k <1或6 20,則將執行第10行和第11行(在這種情況下,ELSE子句將起作用)。 指定值列表時,必須滿足以下條件: 同一CASE中的一組值不應重疊; 指定值范圍時,該范圍的開始應小于其結束。 表3.5顯示了CASE構造的正確和錯誤記錄代碼的示例。 為處理每種CASE情況而提供的操作可以使用循環,IF語句和CASE語句。 表3.5-CASE施工記錄 記錄不正確 正確記錄 01:CASE k OF 02:1: 03:k:= k \* 10; 04:2..5: 05:k:= k \* 5; 06:i:= 0; 07:5,9..20: 08:k:= k-1; 09:其他 10:k:= 0; 11:i:= 1; 12:END\_CASE; 第4行和第7行的范圍相交 01:CASE k OF 02:1: 03:k:= k \* 10; 04:2..5: 05:k:= k \* 5; 06:i:= 0; 07:6,9..20: 08:k:= k-1; 09:其他 10:k:= 0; 11:i:= 1; 12:END\_CASE; 01:CASE k OF 02:1: 03:k:= k \* 10; 04:2..5: 05:k:= k \* 5; 06:i:= 0; 07:6,20..9: 08:k:= k-1; 09:其他 10:k:= 0; 11:i:= 1; 12:END\_CASE; 在第7行中,值的范圍設置不正確。 01:CASE k OF 02:1: 03:k:= k \* 10; 04:2..5: 05:k:= k \* 5; 06:i:= 0; 07:6,9..20: 08:k:= k-1; 09:其他 10:k:= 0; 11:i:= 1; 12:END\_CASE; 在ST上編寫程序時,可以使用標準和用戶定義的功能以及功能塊。 - - - - - - [< 前頁](SFC.html) [回目錄](_index.html) [后頁 >](IL.html) ![](images~/theme_switcher.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看