18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> plc工業軟件使用 >> 正文

【STEP7】西門子S7-200SMART中局部變量的類型以及使用方法 創建庫的方法,子程序建成庫

作者:佚名    文章來源:網絡    點擊數:    更新時間:2024/6/8

局部變量(Local variables)指在程序中隻在特定過程或函數中可以訪問的變量。局部變量是相對於(yu) 全局變量而言的。在PLC中局部變量應用不是很多,西門子PLC則引入局部變量,成為(wei) PLC中獨具特色的功能。

局部變量是分配給每個(ge) 子程序的臨(lin) 時存貯區。當子程序被調用時,係統分配局部變量區給子程序;子程序執行完成後,該局部變量區被釋放。釋放時其中存貯的值也同時丟(diu) 失,不能再下一掃描周期再被子程序使用。 

局部變量區的大小為(wei) 64個(ge) 字節,其中最後4個(ge) 字節被係統所占用,實際可供子程序使用的為(wei) 60個(ge) 字節。由於(yu) 局部變量區的數據不能帶到下一掃描周期,因此隻能用於(yu) 存儲(chu) 程序運算中的中間值,可以減少對全局變量區的占用。 

由於(yu) 局部變量區在子程序被調用時才被分配,且分配時並不對數據區進行初始化,所以其初始值是不確定的。因此在程序中用到這些存貯區的值的指令前,必須有對該存貯區地址的賦值操作,否則可能會(hui) 出現錯誤的執行結果。尤其在子程序中存在大量的跳轉指令時,很容易出現漏掉對局部變量賦值的情況,要格外注意。 

每個(ge) 子程序調用的輸入/輸出參數的最大限製是16,如果您嚐試下載的程序超過此一限製,IN和out加起來共16個(ge) 超過16個(ge) 就會(hui) 出錯。使用過程中應注意以下幾點:

1、子程序或者中斷程序不能訪問分配給主程序的局部存儲(chu) 器。子程序不能訪問分配給主程序、中斷程序或者其他子程序的局部存儲(chu) 器。同樣的,中斷程序也不能訪問分配給主程序或子程序的局部存儲(chu) 器。 

2、S7-200 SMART有64個(ge) 字節的局部存儲(chu) 器,其中60個(ge) 可以用作臨(lin) 時存儲(chu) 器或者給子程序傳(chuan) 遞參數。 

3、IN、OUT、IN_OUT變量都會(hui) 與(yu) 外部進行數據交換,所以不需要數據交換時應使用TEMP變量。

下麵講述西門子S7-200SMART中局部變量的類型以及使用方法。

S7-200 SMART提供了四種類型的局部變量,用L表示。

IN:輸入變量。將外部指定位置的參數傳(chuan) 入子程序。

OUT:輸出變量。將子程序的運算結果傳(chuan) 出到外部指定參數位置。 

IN_OUT:輸入輸出變量。將指定位置的外部參數傳(chuan) 導子程序,再由子程序修改後再將結果返回到同樣的地址。 

TEMP:臨(lin) 時保存在局部數據堆棧中的臨(lin) 時變量。一旦POU完全執行,臨(lin) 時變量數值

則無法再用。在兩(liang) 次POU執行之間,臨(lin) 時變量不保持其數值。 

創建方法為(wei) :打開每個(ge) 子程序都會(hui) 彈出對應的變量表,如下圖:

在變量表中選擇要創建的變量類型,輸入符號(英文/中文都行),再選擇正確的數據類型,係統將自動分配對應的變量,局部變量地址是係統根據前麵的地址及數據類型自動分配,不可自行修改。盡量把所有變量創建好後再開始根據分配的變量地址進行編程。萬(wan) 一在編程過程中需要再添加變量,一定要把顯示方式切換成:“僅(jin) 符號”否則插入變量後地址全部變化,程序中原本使用的地址將報錯。

編寫(xie) 好的子程序不僅(jin) 可以被當前項目的調用,還可以建成庫供其它項目調用。在以後的編程中經常會(hui) 出現一些經典的應用,或者經常處理的類似程序,我們(men) 就可以建立成“庫”,碰到類似的用法隻需要直接調用庫進行編程即可。

那麽(me) 庫應該怎麽(me) 建立呢?

1)重命名:首先把編寫(xie) 好具有特殊功能(脈衝(chong) 運算、模擬量換算等)的子程序進行重命名,避免與(yu) 其它項目中子程序重名。我們(men) 把以上例中子程序為(wei) 例,命名為(wei) “指示燈延時啟動”。

2)創建庫文件:在左側(ce) 指令樹中找到“庫”右擊彈出對話框,選擇“創建庫”如左下圖,彈出右下圖對話框:選擇需要建立庫的子程序“指示燈延時啟動”,點擊“添加”;選擇“屬性”對庫進行命名以及指定庫文件存儲(chu) 位置;選擇“保護”,可以對庫文件設置一個(ge) 密碼保護,可以限製閱讀和修改庫程序。設置好後確定,將會(hui) 在知道目錄下生成一個(ge) 庫文件。

庫的創建如下:點擊創建庫後彈出創建庫對話框。

在V2.1之前版本中需要手動添加刪除庫,庫文件可以存儲(chu) 在任何地方。從(cong) V2.2開始將庫集中管理,必須存儲(chu) 在係統設定目錄下,打開新項目刷新即可自動可以顯示。重新安裝軟件或重裝係統前請對庫文件進行備份。

要消除庫和項目之間出現存儲(chu) 器使用衝(chong) 突的可能性,應避免在用戶定義(yi) 庫中使用全局存儲(chu) 器。 可能無法完全消除庫對全局資源的使用;但是,在可能的情況下最大程度地減少此類使用是有必要的。 這裏列出了最小化全局存儲(chu) 器使用的一些方法:

1)盡量用局部存儲(chu) 器代替全局存儲(chu) 器。

通過使用局部存儲(chu) 器,盡量減少庫對全局存儲(chu) 器的依賴性。您還可以直接將局部存儲(chu) 器指定為(wei) 庫指令使用的存儲(chu) 器。

例如:您可能有一個(ge) 計算數值並將該輸出存儲(chu) 在 V 存儲(chu) 單元的子例程的子例程。程序的其餘(yu) 部分則會(hui) 讀取該 V 存儲(chu) 器位置,以便確定計算的結果。 如果您希望將該子例程放入庫,考慮在子例程中增加一個(ge) 輸出OUT參數,並將計算結果存儲(chu) 在該參數中。這樣就無需使用 V 存儲(chu) 單元,並允許您決(jue) 定結果的存儲(chu) 位置。

2)使用臨(lin) 時變量進行計算。

將臨(lin) 時變量用於(yu) 計算和臨(lin) 時結果可盡量減少指令庫對全局存儲(chu) 器的使用。 您在子例程變量表中定義(yi) 的臨(lin) 時變量隻對該子例程有效,不會(hui) 與(yu) 項目衝(chong) 突。

3)需要 V 存儲(chu) 器時,要定義(yi) 符號。

有時您必須在計劃包括在指令庫中的子例程中使用全局 V 存儲(chu) 器。 必要時,應為(wei) 所有 V 存儲(chu) 器聲明符號,並在程序中使用這些符號。 編譯該庫時,編譯器將使用這些符號來決(jue) 定您的庫所需的存儲(chu) 器大小。通用規則是,將包括在庫中的子例程所占用的 V 存儲(chu) 器分組到連續位置中。

以常用的步進脈衝(chong) 數運算為(wei) 例,因為(wei) 使用比較頻繁,可以建立成庫方便以後編程過程中調用。使用全局變量運算,程序如下:

 

如果要將該子程序建成庫,必須給所有全局變量都定義(yi) 符號,否則無法建立庫。建成庫以後編程調用庫時,必須要進行庫存儲(chu) 器分配,右擊左側(ce) 項目樹中“程序塊”選擇“庫存儲(chu) 器分配”,點擊建議地址係統自動分配未使用的存儲(chu) 器供給庫使用。如下圖:

 

 

注意:在編寫(xie) 庫程序時,所用到的V存儲(chu) 區地址必須全部定義(yi) 符號,否則無法創建庫。創建成庫後再次調用該庫進行編程,所用到的V存儲(chu) 器不再是之前編寫(xie) 庫程序的地址,需要重新分配V存儲(chu) 器地址。但是會(hui) 按照之前的地址進行分配,如存儲(chu) 器大小,數據類型及編號之間的規律,所以盡量采用連續的地址進行編程。

Tags:STEP7,SMART,運動控製,多軸  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢