02.13 深度理解PLC的工作原理(How PLC works)

工控的小夥伴應該都知道PLC是以循環掃描的方式進行工作的。但是如果要細問幾個問題,估計並不是所有的人都能答上來。比如:循環掃描都有哪些步驟?循環掃描的過程中,數字量和模擬量都要進入緩存區嗎?PLC的程序結構是怎樣的呢?今天這篇文章,我們就來深入討論下PLC的工作原理並回答這幾個問題。

深度理解PLC的工作原理(How PLC works)

在討論PLC的工作原理之前,我們先來看看PLC的程序結構。

PLC的CPU中有兩類程序:一類是操作系統,它由PLC的廠家設計並在出廠前固化到CPU中;另一類是用戶程序,它是由編程人員根據實際需要設計的、完成特定功能的程序;

操作系統預留一些接口(Interface)給用戶程序。通過這些接口,操作系統可以控制用戶程序的執行。一般有兩種接口:主程序接口和中斷程序接口。

主程序接口是正常情況下用戶程序運行的起點。PLC的這種設計思想與計算機編程是一樣的。我們知道,在C語言的編程中,程序的運行起始於Main函數。在Main函數中,按照從上到下的順序依次執行代碼。Main函數是操作系統執行用戶程序的接口。

深度理解PLC的工作原理(How PLC works)

在西門子S7-300/400系列PLC中,程序的運行起始於組織塊OB1。OB1就相當於C語言的Main函數;在S7-200 smart中,更是直接把OB1稱為Main塊。

如果程序比較複雜,還可以把一些常用的功能設計成模塊,以便重複利用。這些小的模塊稱為子程序。

子程序存在於主程序中,操作系統通過調用主程序,就能讓子程序也得到運行。在S7-300/400中,子程序包括FB和FC。

除了主程序接口,PLC還提供中斷程序的接口。比如S7-300/400系列PLC的組織塊OB35(循環中斷)、OB40(硬件中斷)、OB82(診斷中斷)、OB122(IO訪問故障中斷)等等。中斷程序接口中的程序,稱為“中斷處理程序”,中斷處理程序由用戶自己編寫。

PLC在運行的過程中如果檢測到中斷請求,操作系統會暫停當前用戶程序的執行,轉而去尋找中斷程序的接口,以執行相應的中斷處理程序。以S7-300/400為例:當PLC檢測到外圍IO訪問出現故障時,會調用OB122來進行處理。如果此時程序中沒有添加OB122,CPU將會停機;如果添加了OB122但是沒有寫任何代碼(沒有中斷處理程序),CPU將會繼續運行,但是SF燈會亮起,以提示系統存在故障。

中斷的執行是有優先級的,優先級高的中斷會被優先響應;中斷也可以嵌套,這也意味著高優先級的中斷會打斷低優先級的中斷;

從上面描述的主程序接口及中斷程序接口,我們可以看出:操作系統是PLC的大管家,是它控制著用戶程序的執行及中斷的響應。

其實,PLC的操作系統在執行用戶程序之前,還要做一些其它工作,如下圖:

深度理解PLC的工作原理(How PLC works)

PLC在冷啟動或熱啟動後,會執行啟動掃描。在這個步驟中,可以對一些變量進行初始化。啟動掃描僅在每次啟動後執行一次,在S7-300/400系列PLC中,OB100(暖啟動)、OB101(熱啟動)和OB102(冷啟動)是用於啟動掃描的組織塊。

啟動掃描完成後,PLC進入循環掃描的階段。首先進行內部檢查,然後將外部的數字量輸入讀到CPU的輸入緩存區(input image)。這裡要注意,僅讀取數字量輸入信號,不包括模擬量輸入信號。當數字量輸入信號的狀態讀取到輸入緩存區後,便開始執行用戶程序。

在用戶程序執行的過程中,如果需要數字量輸入信號,CPU將會從輸入緩存區中讀取,而不是到外部設備去獲取信號。但是,如果需要模擬量輸入信號,將會直接到外部模擬量傳感器進行讀取。

將數字量輸入信號讀取到輸入緩存區中有以下幾個好處:

  1. 在當前的掃描週期中,信號的值被固定。外部的信號抖動不會干擾程序的執行結果;
  2. 輸入緩存區讀取的速度比直接讀取外部信號值要快的多,有利於程序的快速執行;
  3. 外部的數字量輸入信號只能以“位(bit)”的方式進行訪問,但是當信號讀取到輸入緩存區後,可以“位(bit)”、“字節(byte)”、“字(word)”和“雙字(double word)”等方式進行訪問,程序的編寫更加靈活;

對於數字量輸出信號,用戶程序執行的結果被存放在輸出緩存區(output image)中。當用戶程序執行完成後,操作系統將存放在輸出緩存區的運算結果,刷新到數字量的輸出模塊中。

對於模擬量的輸出,不存放到輸出緩存區,而是會在程序執行的過程中直接將結果輸出到外圍設備中。

好了,關於PLC的程序結構及PLC的循環掃描工作原理就先介紹到這裡。如果你喜歡這篇文章,可以去官網(www.founderchip.com)下載本文PDF版本。


分享到:


相關文章: