Object_Pascal_西門子SCL應用_系列2_SCL中的塊_1

來源:互聯網
上載者:User

        哎, 現在真是,有心學習,卻沒有時間啊..........本來昨天打算弄這個的,結果沒有時間啊

        感謝管理員沒有刪除前面的那篇文章。 因此為了兌現我的承諾,繼續SCL的旅程.....

       在此聲明一點: 本系列——即西門子SCL應用——文章,歡迎轉載和指正,但是請務應用於任何商業目的。在部落格園寫

文章,是為了分享和交流,不是為了商業目的。 所以請務將本系列的文章用於任何商業目的。

      不閑扯了,下面開始這一次的SCL旅程:

      上次課程說到了塊的開始和結束的定義, 同時也說到了塊開始的定義部分,今天繼續將塊的有關內容:

4.4.1 塊名
    如系列1的文章描述的,xx_name當做塊名, 參照以下文法:
    
      塊關鍵字                      數字
   DB FB FC OB UDT            n
       標識符
       符號

數字可以是0到65535之間的值, 但是資料區塊標識符DB0 被保留,使用者不能定義和使用
若使用符號名,必須為在Step7中為塊定義一個標識符或符號名
Exp:
函數塊
   FUNCTION_BLOCK  FB10  //利用塊關鍵字定義
   ...
   END_FUNCTION_BLOCK

   FUNCTION_BLOCK  Cotroll_Block  //利用標識符進行定義
   ...
   END_FUNCTION_BLOCK

   FUNCTION_BLOCK  "Control block"  //利用全域符號進行定義
   ...
   END_FUNCTION_BLOCK 

這裡需要說明一點: 利用塊關鍵字和全域符號定義的塊全域可見。

4.4.2 塊的屬性
   塊的屬性即能有的塊特性, 塊的屬性有:
      1)塊的類型
      2)塊的版本
      3)塊的保護特性
      4)塊的作者
      5)塊名
      6)塊的系列名稱:通常用於快速尋找
如下所列:
關鍵字                               作用                                       執行個體
TITLE='可列印字元'             塊的標題                                 TITLE='SORT'
                                       通常用來說明塊功能

VERSION:'數字.數字'          指定塊的版本號碼                          VERSION:'3.01'  
                                      Tip: 資料區塊的版本屬性不             //DB
                                      需要在引號中限定                        VERSION:3.01

KNOW_HOW_PROTECT       塊保護屬性;帶此選項的塊如        KNOW_HOW_PROTECT
                                       編譯成STL語句並將原始碼刪除
                                       後將不能被Step 7的LAD編輯器
                                       開啟

AUTHOR                          作者的名字,主要用來反映一            AUTHOR:Siemens
                                      些作者的相關資訊

NAME                              塊名,用來指定開的名稱                NAME:PID

FAMILY                            塊系列的名稱,如馬達,用於       FAMILY:volcanol
                                      將塊分類儲存。   

使用塊屬性的規則:
1、在塊的定義開始後,用關鍵字直接定義塊屬性
2、標識符最多8個字元

Exp:
FUNCTION_BLOCK   "Start_Motor"
TITLE=電機啟動控制功能塊'   //這個標題會出現在Step 7的資源管理其的注釋列
VERSION='0.01'
KNOW_HOW_PROTECT
AUTHOR:volcnol
NAME:StartM
FAMILY:

4.4.3 塊的注釋
   西門子SCL的的注釋相容Object Pascal的注釋,同時利用TITLE定義的屬性會在LAD
編輯器中出現在塊的注釋中。
用:
     // 表示注釋       

如上面:
   //這個標題會出現在Step 7的資源管理員的注釋列
   TITLE='電機啟動控制功能塊'  

4.4.4  聲明部分
    既然SCL和Pascal語言類似,並且FC本來就是Function函數塊, 那麼函數的聲明
部分在SCL中也是一樣存在的。
    塊的聲明部分用來聲明本地(局部)變數、參數、常量和標號
聲明部分遵循以下幾個規則:
    1)在邏輯塊的聲明部分定義的本地變數、參數、常量和標號的範圍僅在塊內部有效。
    2)要定義全域有效變數或儲存區需要在資料區塊DB中定義
    3)UDT只是提供一個符合的資料類型,如果不用UDT定義使用者變數則UDT不可用

聲明部分的結構:
    聲明部分通過不同的關鍵字定義不同的子區,每個子區包含同類型的變數或資料的聲明,子區
順序不定義,可自由排列。
1) 常量聲明地區
    關鍵字:
       CONST
          聲明列表
       END_CONST
     常量區用來聲明常量,相當於C語言中的const變數。
Exp:
    CONST
       Number      := 10 ;
       TIMEOFDAY1  := TIME#1D_1H_10M_22S_2MS ;
       NAME        := 'SIEMENS' ;
       NUMBER2     := 2 * 5 + 10 * 4 ;
       NUMBER3     := 3 + NUMBER2 ;
    END_CONST
編譯器根據資料類型自動檢測常量的資料類型。

2)標號
   標號用來標識GOTO語句的目標,在邏輯塊的聲明部分用符號名聲明
   關鍵字:
     LABEL
         LAB1,LAB2,LAB3;
     END_LABEL
Exp:
     LABEL
       ERR;
     END_LABEL

     在代碼部分
          if devsion=0 then
             goto err;
          end if
3)零時變數
    臨時變數相當於C語言中的局部變數
    關鍵字:
      VAR_TEMP
      ....
      END_VAR
Exp:
      VAR_TEMP
         Add:INT;
         Factor:Real;
      END_VAR

4:靜態變數
   靜態變數是本地變數,其值貫穿所有塊迴圈一直保留。用來存貯功能塊的值,存貯在執行個體資料區塊中。

這個地方定義的變數相當於C語言中的Static變數。在FC定義的靜態變數不具有靜態屬性,這也是FB

和FC間最大的區別。

 關鍵字:
     VAR
     ....
     END_VAR
 Tip:
     在函數FC中聲明的聲明的靜態變數,在編譯時間會儲存在VAR_TEMP地區。

Exp:
    VAR
       Count:INT;
    END_VAR
5、輸入參數
   輸入參數相當於C語言中的形式參數,也相當於Pascal中的形式參數
   關鍵字:
   VAR_INPUT
   ...
   END_VAR
Exp:
   VAR_INPUT
       Estop:BOOL;
   END_VAR;
Tip:
    在DB塊的聲明中和UDT的聲明中,VAR和END_VAR結構被STRUCT和END_STRUCT代替

5:輸出參數
   輸出參數就是FC、FB塊用來輸出的資料介面區
   關鍵字:
   VAR_OUTPUT
     ...
   END_VAR
輸出參數在目前的程式設計語言中算是非常獨特的了, 它可以將FC和FB的計算結果
輸出到一個別的儲存位置。
6:輸入/輸出參數
   輸入輸出參數相當於指標結構, 可以接受實參,並且在經過FC和FB的處理後,其
實參值會被改變。
   關鍵字:
   VAR_IN_OUT
   ....
   END_VAR

4.4.5  語句部分
    語句部分是FB、FC、OB塊的核心部分,通過語句部分實現函數、函數塊和組織塊的功能。
資料區塊的語句部分包含初始設定變數的語句。
  語句規則:
     1)在FC、FB和OB塊中可以使用BEGIN標識語句的開始,也可以不使用。
     2)資料區塊初始設定變數的語句必須用BEGIN標識其開始。
     3)語句的結束部分用塊結束關鍵字標識結束
     4)每個語句必須用分號;標識結束
     5)語句部分使用的標識符必須聲明過
     6)在語句部分可以使用已經定義的標號LABEL
Exp:
   BEGIN     // 利用Begin表示語句開始
      INITIAL_VALUE:=0;
      FINAL_VALUE:=200;  //語句結束用:分號表示單個語句的結束
    SORTE:                    //使用標號
        RESUALT:=SETPOINT;
   END_FUNCTION_BLOCK    //快結束標識符、關鍵字

1)語句的定義
   語句是使用者程式的最小邏輯結構,描述一個執行指定操作的處理器(CPU)指令
2)語句的類型
   指派陳述式: 指定數值給一個變數
   控制語句: 控制語句的執行流程
   調用語句: 調用特定的函數和函數塊(FC、FB塊)
Exp:
   // 指派陳述式的例子
    iLength:= 0 ;

   // 子程式調用的例子
   FB1.DB1 (Temprature:= 10) ; //需要注意FB塊的調用規則
                              //FC可能有傳回值, 傳回值的調用同Pascal語言函
                              //數的調用規則

   // 控制語句的例子
   WHILE iCounter < MAX  DO..
   ......
   END_WHILE;

       不知道園子裡面的朋友對自動化和工業控制有什麼認識,下面給兩個連結,

       大家如果閑著沒事的話可以看看

       第一個連結:

         5軸聯動一次成型的數控機床:

         連結為:http://v.youku.com/v_show/id_XMjM2OTQzMjQw.html

         目前中國在數控機床方面的落後是在是太大了, 在瀋陽有個研究中心、華中數控數控床在國內算是一流的了,

但是和視頻展現的來比的話,差距太大了。 如果做過數控的話,應該知道全自由度的數控難度有多大,一般國外

進口的三軸聯動的機器價格均在1000w以上,華中的數控的大型加工中心價格也在1000w左右。

          其他連結:

          卷取機視頻:http://v.youku.com/v_show/id_XNDYzOTY3OTY=.html

          軋機視頻     http://v.youku.com/v_show/id_XMjY2ODkzOTgw.html

                          http://v.youku.com/v_show/id_XMjE4OTg4MzM2.html

                          http://v.youku.com/v_show/id_XNzcwMzc1OTI=.html      

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.