2015-05-26 37 views
0

我已經開始使用結構化文本編程邏輯控制器(PLC)。我的背景來自IT或計算機科學。所以我習慣於Java,C#等傳統編程語言......我只是意識到PLC需要不同的思維集。 理解掃描週期...有人能向我解釋更清晰的下面一段我讀ST和傳統的編程語言之間from結構化文本與傳統編程語言

一個重要區別是 程序流控制的性質。一個ST程序將從頭到尾每秒運行多次 次。一個傳統的程序不應該完成,直到完全完成 。

回答

2

這意味着例如:在1秒內PLC程序執行1秒/週期時間。所以,如果你的週期時間是例如1ms,您的程序在一秒鐘內執行1000次。這是主要區別。這是確定性的。這是段落的意思。當它到達最後時它還沒有完成。它會使用更新的過程映像重新啓動。

在,可以說,非PLC程序(如您的PC上),你必須像一個

while(!_end) 
{ 
     /* your code */ 
} 

原則上,PLC的工作原理與此類似。但在您的PC上,不需要在硬時間範圍內循環執行程序,例如500μs。大多數用於PC的應用程序都可以稱之爲「時間不加批判」。最大的區別在於,PLC運行完整程序,在開始下一次運行之前,它會刷新其過程映像(寫入輸出/讀取輸入)。程序執行由所謂的「任務」觸發。此任務負責實時控制您的控制權。我之前提到的過程映像是PLC中所有過程值的總和(如數字I/O,電機驅動值等)。所以你看,這是一種循環,但不像你從c#/ java程序中知道的那樣。

(順便說一句,我不能打開PDF)

+0

很好的解釋 –

4

PLC程序是什麼,你已經知道,它通常有一個主要任務,這是循環執行,即每一次掃描週期不同。然後主任務調用子任務或程序列表,當完成時,主任務再次運行。

掃描週期可以設置爲間隔運行,例如每10ms。然後PLC將更新IO,運行程序,然後在等待下一個觸發器時不執行任何操作。如果你有一個固定的掃描時間,你可以用它來製作非常精確的同步程序,但重要的是你的程序(主任務及其子任務)總是在這段時間內執行。

一些PLC可以設置爲儘可能快地一個接一個地運行掃描週期。掃描時間是可變的,但您仍然需要監視掃描時間以確保程序運行的週期時間相當一致。

我從其他語言到PLC語言的過渡中學到的最重要的教訓之一是保持程序流盡可能順序,因爲任何循環和偏差都會影響執行時間,而執行時間必須始終小於掃描時間。

+0

很好的解釋 –

0

我是PLC程序員。我想用PC來控制PLC,PLC作爲一個啞IO。 PLC編程總是循環和掃描,每個掃描時間爲幾毫秒。 你可以理解ChrisKo說的那句話。

while(1=1) 
{ 
    // code 
} 
3

pboedker和ChrisKo的答案都很好。需要一些額外的警告。

掃描(或掃描時間)可能比您的代碼的執行時間短。在大多數PLC中都有一個「看門狗」來檢測這種情況,並警告你它正在發生。你經常需要設置這個「看門狗」,併爲它設置一個警報/事件處理程序。

瞭解PLC如何執行I/O。有的(如的ControlLogix)是異步的,I/O系統會根據該RPI(請求數據包間隔)讀入到你的控制器內存,並且被寫入了(同RPI)當您更改與代碼中的I/O點。其他(如AutomationDirect的Productivity 2000系列)僅在代碼的完整掃描中寫入輸出。我敢肯定,你可以描述每種情況的專業和缺點,特別是如果你的控制器在重新開始掃描之前沒有完成你的代碼。

PLC的,讓你有不同的代碼塊給你強大的工具,I/O和程序流程管理不同的掃描速率。慢速過程可以慢慢進行掃描,讓您更PLC時間做其他的事情。

+0

感謝給更多額外的解釋 –