其實際,PLC就是一個完整bai的單片機係統du,你可以把它形像化為一zhi個功能專一的單片機開發板dao.
這個單片機開發板由電源+單片機+繼電器或MOS管+端子等等組成.
現在的PLC,多用32位單片機,也有16位,早很多年前的PLC,還有用8位的,比如西門子曾經用的是51單片機.
而梯形圖燒錄到PLC後內正常運行,是因為PLC的開發軟件,把梯形圖通過電腦運算,轉換成了二進製的機器語言,然後燒錄的PLC內部的單片機或者PLC內部的Flash裏去了,這點,和你用單片機編程沒有什麽特別區別.
而你在編寫單片機的時候,一般來說是需要硬件圖的,我說的是一般,有一種情況不用,那就是,有人把單片機的底層給編寫好的,你不需要關心底層驅動是怎麽實現的,隻需要知道怎麽用就行了.在這種情況下,你不需要知道硬件如何實現,就不需要看硬件電路.
舉例:
unsigned char Output_Y00 = 0,Output_Y01 = 0;
//-----這是底層函數-------------------------------------
void Output_Process(void)
{
if(Output_Y00) P1_0 = 0;//---打開第一路輸出
else P1_0 = 1;//---關閉第一路輸出
if(Output_Y01) P1_4 = 0;//---打開第二路輸出
else P1_4 = 1;//---關閉第二路輸出
}
上麵的例子,在編程的時候,如果是分層編程,即一個人寫邏輯,一個人寫底層,你是看不到那個
Output_Process()的存在的,因為編寫底層的人給封裝起來了,你可能隻看到一個庫.
但是他同時也給你留下了接口,就是 Output_Y00,Output_Y01,你通過這兩個變量,就能操作
輸出口的驅動,同樣的道理,什麽AD,DA,串口,都是一個樣,把底層封裝起來,然後由另一個人操作接口變量就行了
這就是單片機分層編程的概念.
而PLC也是基於這種概念,PLC廠商已經把底層做好,並且封裝起來了,你在電腦上的梯形圖,隻是做邏輯控製,等你做好了,翻譯成特定的代碼,再聯合廠商做好的底層,一直編譯成二進製機器碼,下載到PLC的單片機裏.
編程bai語言是思想不一樣。梯形圖是拷貝繼電器係du統而來的,它用的最多的是常開zhi、常閉等dao通斷概念。C語言可是沒有導通,關閉,常開、常閉的東西。梯形圖裏有步進指令,並行處理等,C語言裏沒有。為什麽單片機不那樣做?那你得問問什麽PLC要那麽做了。因為它最初設計出來是給電工看的,就是那些懂繼電器係統的工程師,但是它們不懂什麽計算機語言啊,而單片機就不同了,懂得單片機的幾乎都懂計算機,沒有人再去學繼電器係統。如果你要問為什麽PLC不用C語言編寫程序,我覺得這確實是一個值得討論的問題。