zengyu99
級別: *
精華主題: * 篇
發(fā)帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看zengyu99的 主題 / 回貼
樓主  發(fā)表于: 2009-03-17 11:22
           首先要搞清楚單片機與PLC的異同,首先得明確什幺是單片機,什幺是PLC。對此,我們簡要回顧一下計算機的發(fā)展歷程也許有幫助,按計算機專家的原始定義,計算機系統由五大部分--即控制單元(CU)、算術運算單元(ALU)、存儲器(Memory)、輸入設備(Input)、輸出設備(Output)組成。早期計算機(晶體管的或集成電路的,不包括電子管的)的CU或ALU由一塊甚至多塊電路板組成,CU和ALU是分離的,隨著集成度的提高,CU和ALU合在一塊就組成了中央處理單元(CPU),接著將CPU集成到單塊集成電路中就產生MPU或MCU,出現了如Intel4004、8008、8080,8085、8086、8088、Z80等MPU。此后,MPU的發(fā)展產生了兩條分支,一支往高性能、高速度、大容量方向發(fā)展,典型芯片如:Intel80186、286、386、486、586、P2、P3、P4等,速度從4.7MHz到現在的3.2GHz。另一支則往多功能方向發(fā)展,將存儲器(ROM、PROM、EPROM、EEPROM、FLASH ROM、SRAM等)、輸入/出接口(Timer/Counter、PWM、ADC/DAC、UART、IIC、SPI、RTC、PCA、FPGA等)全部集成在一塊集成電路中而成為SOC(System On a Chip)。依愚之見,這就是當今廣泛應用的單片計算機,簡稱單片機。這一分支可謂品種繁多,位寬從8位到32位,引腳數從6個到幾百個,工作頻率從幾十KHz到幾百MHz,體系結構既有CISC也有RISC,數不勝數。常用的有MCS-51系列、MCS-96系列、PIC系列、AVR系列、ARM7/9系列、TMS320系列、MSP430系列、MOTOROLA眾多的單片機等等。  

    至此,我們可以將計算機核心處理器的發(fā)展劃分為三個階段:板級的CPU、芯片級的MPU和SOC。  

    PLC是什幺呢?PLC的全稱是Programmable Logic Controller(可編過程控制器),剛引入國內時,曾簡稱為PC。后來,IBM-PC獲得廣泛應用,PC成了個人電腦的代名詞,才改為PLC。PLC還有另外的一個意思是Power Line Carrier(電力線載波)。  

    PLC是一種產品,但這種產品有點特別,在沒有下載控制程序之前,它不具備任何控制功能,也就是說,沒有應用程序的PLC是毫無用處的。PLC實際上是專為工業(yè)環(huán)境使用的通用控制平臺,它必須進行二次開發(fā)才能完成最終控制目的,因此,它還需程序編輯/調試軟件的配合。  

    PLC是智能產品,它的核心控制器采用什幺方案呢?板級的CPU肯定是不能考慮的,MPU也要好幾塊集成電路構成,以Z80 MPU為例,需要Z80MPU、PIO、CTC、SIO、EPROM、SRAM等,把這些集成電路安裝在一塊電路板上,這就是早期的單板計算機。這種方案體積太大,不適合現代要求。由此可見,PLC的核心控制器采用單片機是最合適的。  

由此可得出結論:  

1.PLC是建立在單片機之上的產品,單片機是一種集成電路,兩者不具有可比性。  

2.單片機可以構成各種各樣的應用系統,從微型、小型到中型、大型都可,PLC是單片機應用系統的一個特例。  

3.不同廠家的PLC有相同的工作原理,類似的功能和指標,有一定的互換性,質量有保證,編程軟件正朝標準化方向邁進。這正是PLC獲得廣泛應用的基礎。而單片機應用系統則是八仙過海,各顯神通,功能千差萬別,質量參差不齊,學習、使用和維護都很困難。  

    最后,從工程的角度,談談PLC與單片機系統的選用;  

1.對單項工程或重復數極少的項目,采用PLC方案是明智、快捷的途徑,成功率高,可*性好,手尾少,但成本較高。  

2.對于量大的配套項目,采用單片機系統具有成本低、效益高的優(yōu)點,但這要有相當的研發(fā)力量和行業(yè)經驗才能使系統穩(wěn)定、可*地運行。最好的方法是單片機系統嵌入PLC的功能,這樣可大大簡化單片機系統的研制時間,性能得到保障,效益也就有保證。



PLC與單片機的區(qū)別  

    看到網友在討論PLC與單片機的區(qū)別,我也來瞎說幾句: PLC其實就是一套已經做好的單片幾(單片機范圍很廣的喔)系統.  

    PLC的梯形圖你可以理解成是與匯編等計算器語言一樣是一種編程語言,只是使用范圍不同!而且通常做法是由PLC軟件把你的梯形圖轉換成C或匯編語言(由PLC所使用的CPU決定),然后利用匯編或C編譯系統編譯成機器碼!PLC運行的只是幾器碼而已.梯形圖只是讓使用者更加容易使用而已.


    同樣MCS-51單片機當然也可以用于PLC制作,只是8位CPU在一些高級應用如: 大量運算(包括浮點運算),嵌入式系統(現在UCOS也能移植到MCS-51)等,有些力不從心而已.我公司在使用的一套工業(yè)系統就是使用MCS-51單片機做的,不過加上DSP而已,已經能滿足我們要求(我們設備速度較慢,而且邏輯控制為主,但是點數不少喔,128點I/O呢!!),而且同樣使用梯形圖編程,我們在把我們的梯形圖轉化為C51再利用KEIL的C51進行編譯.你沒有注意到不用型號的PLC會選用不同的CPU嗎!!


    當然也可以用單片機直接開發(fā)控制系統,但是對開發(fā)者要求相當高(不是一般水平可以勝任的),開發(fā)周期長,成本高(對于一些大型一點的體統你需要做實驗,印刷電路板就需要一筆相當的費用,你可以說你用仿真器,用實驗板來開發(fā),但是我要告訴你,那樣做你只是驗證了硬件與軟件的可行性,并不代表可以用在工業(yè)控制系統,因為工業(yè)控制系統對抗干擾的要求非常高,穩(wěn)定第一,而不是性能第一,所以你的電路板設計必須不斷實驗,改進).當你解決了上述問題,你就發(fā)現你已經做了一臺PLC了,當然如果需要別人能容易使用你還需要一套使用軟件,這樣你可以不需要把你的電路告訴別人(你也不可能告訴別人).
  以上一些拙見,有說錯的地方請指正,可不要打我喔!也不要罵我喔!我只是想和大家討論一下而已!!!  

    許多人覺得PLC很神秘,其實PLC是很簡單的,其內部的CPU除了速度快之外,其他功能還不如普通的單片機。通常PLC采用16位或32位的CPU,帶1或2個的串行通道與外界通訊,內部有一個定時器即可,若要提高可靠性再加一個看家狗定時器足夠。


    PLC的關鍵技術在于其內部固化了一個能解釋梯形圖語言的程序及輔助通訊程序,梯形圖語言的解釋程序的效率決定了PLC的性能,通訊程序決定了PLC與外界交換信息的難易。對于簡單的應用,通常以獨立控制器的方式運作,不需與外界交換信息,只需內部固化有能解釋梯形圖語言的程序即可。實際上,設計PLC的主要工作就是開發(fā)解釋梯形圖語言的程序。
chenpingyg
機械是柱石,電氣是靈魂.
級別: VIP會員
精華主題: 0
發(fā)帖數量: 1105 個
工控威望: 6705 點
下載積分: 100 分
在線時間: 603(小時)
注冊時間: 2007-01-25
最后登錄: 2017-04-03
查看chenpingyg的 主題 / 回貼
1樓  發(fā)表于: 2009-04-13 07:47
             org    0000h
             ajmp   main
             org    0030h
main:        mov    tmod,#010h
             mov    th0,#100
             mov    tl0,#100
             mov    r5,#00h
             mov    r6,#00h
             mov    r7,#00h
             mov    p0,#11111111b
             setb   tr0
loop:        mov    p3,#11011111b
             mov    p1,#11111111b
             jnb    p1.4,cx1
             jnb    p1.3,cx2
             jnb    p1.2,cx3
             setb   p3.3
             mov    p1,#01111111b
             jnb    p1.4,cx4
             jnb    p1.3,cx5
             jnb    p1.2,cx6
             mov    p1,#10111111b
             jnb    p1.4,cx7
             jnb    p1.3,cx8
             jnb    p1.2,cx9
             ajmp   loop
cx1:         mov    p0,#11111110b
             acall  yan1
             ajmp   loop
cx2:         mov    p0,#11111100b
             acall  yan1
             ajmp   loop
cx3:         mov    p0,#11111000b
             acall  yan1
             ajmp   loop
cx4:         mov    p0,#11110000b
             acall  yan1
             ajmp   loop
cx5:         mov    p0,#11100000b
             acall  yan1
             ajmp   loop
cx6:         mov    p0,#11000000b
             acall  yan1
             ajmp   loop
cx7:         mov    p0,#10000000b
             acall  yan1
             ajmp   loop
cx8:         mov    p0,#00000000b
             acall  yan1
             ajmp   loop
cx9:         mov    p0,#00000000b
             acall  yan1
             mov    p0,#11111111b
             acall  yan1
             ajmp   loop  
            
yan1:        jnb    tf0,yan1
             inc    r5
             cjne   r5,#100,yan1
             mov    r5,#00h
             inc    r6
             cjne   r6,#100,yan1
             mov    r6,#00h
             inc    r7
             cjne   r7,#100,yan1
             mov    r7,#00h
             ajmp   yan1
             ret
             end












              
自己的事情自己做.