1. <del id="sqmd4"></del>
      <object id="sqmd4"></object>
      1. <object id="sqmd4"></object>
          加入收藏 在線留言 聯系我們
          關注微信
          手機掃一掃 立刻聯系商家
          全國服務熱線13185520415
          公司新聞
          如何計算西門子 S7-400 CPU 所需的Local Data 大小
          發布時間: 2024-04-18 10:24 更新時間: 2024-11-24 08:00
          觀看如何計算西門子 S7-400 CPU 所需的Local Data 大小視頻

          如何計算當前程序所需的Local Data 大小并合理設置S7 400 CPU 屬性中的Me mory選項卡中的Local Data,S7 400 CPU 中的Local data 設置不當會導致什么問題?


          Local data 顧名思義為本地數據,在西門子控制器中有一部分內存空間被設置為L 區間,它被用于控制器在運行程序時存儲臨時數據。由于編寫FB/FC 程序的需要和OB 中調用功能塊結構的不同,不同的OB 由于調用不同的FB/FC,因此所需的Local data 的大小各不相同(被調用的FB/FC 將占用當前調用他的OB 塊的Local Data 資源)。在控制器硬件組態中的CPU 屬性設置中,Memory 選項卡用于設置Local data 的分配。如果相應OB 塊實際運行所需的Local data 大于硬件組態中所設置的Local Data 大小,那么相應的程序將無法運行,CPU 將報告INTF 錯誤,甚至更為嚴重的情況下CPU 可能會停止運行。但如果盲目將

          Local Data 的分配設置過大,將會浪費一部分寶貴的CPU 內存空間。

          S7 300CPU 中的Local data 不可修改,每個優先級固定設置為256 bytes,S7- 400 的Localdata 則可以人為修改。由此可以看出正確設置S7400 CPU 的Local Data 的大小非常重要。在控制器硬件組態中CPU 屬性?? Memory 選項卡的Local Data 區域用于設置基于優先級的Local Data(如下圖所示):

          在 PCS7 組態的項目中,在編譯CFC 程序后,系統將會自動計算各OB 塊所需的Local Data 大小,可以通過交叉索引(Chart reference data -Local data,如下圖所示)查詢到。

          而普通的由用戶采用Step7 編程方式編寫的程序,程序功能塊及OB 塊各自的調用結構由用戶自行控制,需要在編寫完整個程序之后自行計算。

          在手動計算 Local Data 時,需要獲取如下信息:

          1. 各OB 塊、FB 塊、FC 塊各自獨立運行時所需的Local Data 大小可以通過如下方式查詢到:在 Block 文件夾中選擇相應功能塊,右鍵屬性?? General -

          Part2 中即可查看到,如下圖所示:

          注:嵌套調用時,上一級功能塊將不會計算其嵌套調用的FB/FC 所需的Local data 大??;在上圖中將不會累加嵌套功能塊所需的Local data 大?。?/p>


          2. 整個程序的調用結構(Call structure)

          由于功能塊不會計算其嵌套調用的功能塊所需到 Local data 大小,因此為了Zui后計算整個OB 所需到Local Data,必須了解整個程序的調用結構。打開任何一個功能塊,點擊左側的Call Structure 即可查詢到,如下圖所示;

          3. 當前程序下所使用的所有OB 的優先級

          由于 CPU 屬性設置中的Local Data 分配基于優先級進行設置,因此需要查看所有當前程序使用的OB 塊的中斷優先級,打開硬件組態中CPU 屬性查看,如下圖所示;

          獲得所有上述信息后,即可計算當前程序所需的Local data 大小。假設當前項目下使用的功能塊及OB 塊上述相關信息如下表所示:

          OB 的調用關系如上圖Pic4 所示。根據調用結構計算,單獨運行各OB 塊時所需的Local data 如下:

          OB1: OB1 + Max(Sum(FB1,FC1), FC1) =26+Max(Sum(100,400), 400)=526

          OB35: OB35 + Sum(FB1,FC1) =26+Sum(100,400)=526

          OB121: OB121=20

          OB122: OB122=20

          Zui終 CPU 屬性中Local data 的設置如下:

          優先級 1 所需Local Data 大小至少為526 + 20 + 20 = 566 bytes;

          優先級 12 所需的Local Data 大小至少為526 + 20 + 20 = 566 bytes;

          注:為什么上述優先級 1 和12 中需要加入兩個 20 呢,因為程序運行的任何位置都有可能會執行OB121、OB122,所以需要加上OB121 和OB122 所需的本地數據。PCS7 中(Pic2所示)進行各優先級所需Local data 大小計算時已經自動加入了這部分的大小。

          具體的計算法則可以歸納為一下幾點:

          1. 從內往外,從低往高;

          即:基于程序的調用結構,從Zui低層、Zui內層逐步往上、往外計算;

          2. 同級取Zui大,內外求和;

          即:程序調用結構中,同層 FB/FC 中所需的Local data 取各所需Local data 中的Zui大值;某一優先級所需的Local Data 大小取所有相同優先級OB 所需的Local Data 的Zui大值;上下調用層級各自所需Local Data 需求和;

          3. 結果疊加OB121(編程錯誤)、OB122(I/O 讀取錯誤);

          即:Zui終計算出的某優先級所需的 Local data 大小需要疊加上OB121、OB122 所需的Local data;


          如果項目中CPU 設置的Local Data 小于程序所需Local Data 大小時會有如下后果:

          1. PCS7 中,如果項目硬件組態設置的CPU 的Local data 大小小于程序所需的Local data大小的情況下,PCS7 項目在編譯時將提示如下相應警告信息:

          2. Step7 編寫的程序則不會校驗Local data 分配的情況,如果實際運行的CPU 中的LocalData 設置小于正在下載的程序所需的Local data 大小,則在下載程序后運行該優先級下的程序時,CPU 將報告INTF 錯誤,該優先級的程序將無法執行,并將觸發OB88(Processinterrupt OB)錯誤中斷。在CPU 的診斷緩沖區中將生成類似如下的診斷信息:


          如果程序中沒有插入 OB88,則CPU 將停止運行;

          在冗余CPU 的情況下,在主CPU 運行,啟動從CPU 時將調用優先級為28 的OB72。如果在優先級為28 的中斷中出現Local Data 不足的情況,則主從CPU 都將停止運行。CPU 的診斷緩沖區將生成類似如下的診斷信息:


          注:任何優先級為 28 的OB 中出現Local data 不足的情況都將導致該OB 無法執行,CPU診斷緩沖區中將報告該OB 無法執行或未裝載的錯誤。如果未裝載該OB 會導致CPU 停止運行,則即便程序中已經加載了這些OB,但由于該OB 出現Local Data 不足而導致無法執行,CPU 仍舊會停止運行

          聯系方式

          • 電  話:13510737515
          • 聯系人:董海波
          • 手  機:13185520415
          • 微  信:13185520415