PLC中的程序結構詳解


  介紹以下常見的plc程序結構及其特點:
  
  1.國外一些小型可編程控制器程序結構
  
  這些可編程邏輯控制器的用戶程序由主程序、子程序和中斷程序組成。在每個掃描周期中,CPU調用主程序一次。主程序可以調用子程序,小控制系統只能有主程序。中斷程序用於快速響應中斷事件。在中斷事件中
  
  當這種情況發生時,中央處理器將停止執行當時正在處理的程序或任務,並執行用戶編寫的中斷程序。執行中斷程序后,繼續執行暫停的程序或任務。它們的子程序和中斷程序沒有局部變量,子程序沒有輸入輸出參數。
  
  2.西門子S7-200的程序結構
  
  處理圖像輸入/輸出(I/Q)、可變內存V、內存位M、定時器T、計數器C等。屬於全局變量。S7-200程序組織單元(POU)包括主程序、子程序和中斷程序。每個POU都有一個。
  
  它自己的64字節局部變量,只能在其POU中使用。相反,全局變量可以用於每個POU。
  
  以下是子程序可以使用的局部變量:
  
  1)TEMP(臨時變量)是臨時存儲在本地數據區的變量。只有當執行POU時,才能使用定義的臨時變量。執行POU之后,臨時變量的值將不會被保存。
  
  2)輸入是由調用它的POU提供的輸入參數。
  
  3)OUT是返回給調用它的POU的輸出參數(子程序的執行結果)。
  
  4)IN_OUT是一個input _ output參數,其初始值由調用它的POU傳遞給子程序,子程序的執行結果以相同的變量返回給調用它的POU。
  
  主程序和中斷程序的局部變量中只存在臨時變量temp。
  
  帶有輸入、輸出參數和局部變量的子程序易於實現結構化編程,對於長期生產類似設備或生產線的廠家尤其有用。這些制造商的程序員為設備的每個部件或過程功能編寫了大量的通用子程序。即使你不知道子程序
  
  只要知道子程序的功能和輸入輸出參數的含義,就可以通過程序之間的調用,快速“組裝”出滿足不同用戶需求的控制程序。就像用數字集成電路芯片組成復雜的數字電路。
  
  如果一個子程序沒有輸入輸出參數,與調用它的程序之間沒有明確的接口,就很難實現結構化編程。
  
  如果一個子程序中沒有局部變量,只能通過全局變量在它和調用它的程序之間交換數據,子程序內部只能使用全局變量。將子程序和中斷程序移植到其他項目時,需要重新排列它們使用的全局變量,以確保不會有地址沖突。當程序非常復雜,有很多子程序和中斷程序時,重新分配地址的工作量非常大。
  
  如果子程序和中斷程序都有局部變量,並且內部只使用局部變量,不使用全局變量,因為與其他pou沒有地址沖突,那么子程序可以移植到其他項目中,而不需要做任何更改。
  
  3.西門子S7-300/400的程序結構
  
  S7-300/400將子程序分為功能和功能塊。
  
  S7-300/400的功能與S7-200基本相同。它們都有輸入、輸出參數和臨時變量,函數局部數據中的返回值實際上屬於輸出參數。他們沒有專門的存儲區。函數完成后,臨時變量中的數據將不被保存。全局變量可以用來保存函數完成后需要保存的數據,但是會影響函數的可移植性。功能塊是由用戶用其自己的專用存儲區(即后台數據塊)編寫的程序塊。功能塊的輸入和輸出參數以及靜態變量存儲在指定的背景數據中。
  
  全局變量可以用來保存函數執行后需要保存的數據,但是會影響函數的可移植性。
  
  功能塊是用戶用自己的專用存儲區(即后台數據塊)編寫的程序塊。功能塊的輸入輸出參數和靜態變量存儲在指定的后台數據塊中,臨時變量存儲在本地數據棧中。每次調用功能塊時,都應該指定一個后台數據塊。執行功能塊后,后台數據塊中的數據不會丟失,但本地數據棧中的數據不會保存。
  
  功能塊采用類似C++的封裝概念,將程序和數據封裝在一起,移植性好。
  
  S7-300/400的共享數據塊可由所有邏輯塊使用。
  
  4.IEC 61131-3的程序結構
  
  IEC61131-3是可編程邏輯控制器的編程語言標准。IEC61131-3是世界上第一個也是唯一一個工業控制領域的編程語言標准。IEC61131-3有三種POU:程序、功能塊和函數。
  
  函數是具有多個輸入參數和一個輸出參數(返回值)的POU函數。返回值的名稱與函數的名稱相同,需要定義返回值的數據類型。調用具有相同輸入值的函數總是返回相同的結果。函數可以調用其他函數,但不能調用功能塊或程序。具有可定義函數的局部變量是var和VAR_INPUT。
  
  功能塊是具有多個輸入/輸出參數和內部存儲單元的POU,功能塊的輸出參數值與其內部存儲單元的值相關。功能塊可以調用其他功能塊或函數,但不能調用程序。在調用功能塊之前,您必須在要調用該功能塊的POU中為每個調用聲明一個功能塊實例,並且操作系統將為每個調用分配一個專用於該功能塊的存儲區域。
  
  (以上看不明白的童鞋可以看一套plc視頻教程詳細學習一下,其實並不難)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM