一、前言
PLC技術漫談是我在2004年左右寫的,主要講PLC的內部原理和應用,另外也對國內外各品牌PLC從技術角度評說,盡管時代久遠,還好PLC技
術沒有什么發展,還可以拿出來給一些初入門的工控人借鑒一下。
大家可能覺得很不憤:“你有什么資格說三道四,咱中國人民從七十年代開始到現在都沒有搞出一個像樣的PLC,好像你已經掌握了什么核心一
樣。”
有沒有資格是一碼事,說不說是另一碼事!我說,你聽!不對的地方, 死命罵!講得對的地方請您合一合!如果您不知道對不對的,請不要出
聲,就當我是對的吧:)
我邊上一憤青跳著說:“你正事不干跑論壇來灌水,是不是有什么陰謀?”

是啊!20年了俺老人家每天從早忙到晚,為什么吃飽了沒事做,跑到這里來顯丑呢?
老毛說:“世上沒有無緣無故的愛也沒有無緣無故的恨”。我給大家講這些東西一是想提升國內對PLC技術研究的熱度,二是把俺這幾年死抱住
不放的平臺研發戰略給大家鼓動鼓動,三是搭著賣點俺們的ECS,省得我不出聲大家都認為我們沒干活:)
這里聲明兩點:
第一、這里講的任何廠商的任何產品的技術都是已公開的專利或者從貴產品的技術手冊和測試表現推理出來的,如有誤導請各廠商技術專家海
K。本人時間有限,記憶力也比較差,倉促之中如果有寫錯的,請大家指出來。
第二、因為我在矩形科技工作,所以所有的例子都會以矩形的產品為例。
笑話歸笑話,下面先講一講我想給大家交流的一些東東!(小編注:內容比較多,將會分幾章發布,敬請關注)
1.前言
2.PLC的簡介和PLC的類型,包括各類型的區別和優缺點,同時瞎猜一猜各廠家的類型;
3.PLC對中國工控行業的意義;
4.產業整合;
5.基本功能的實現和應用;
6.通信功能的實現和應用,以及現場總線技術(Modbus、Profibus、FF、CAN、LonWorks);
7.溫控的實現和應用;
8.運動控制的實現和應用;
9.行業應用
10.雜談

二、PLC的簡介和PLC的類型
1.簡介
開始想寫內幕,但覺得內幕就太正式了,我也不知道我有沒有耐心寫下去,所以改成了技術漫談,這樣沒責任一點。呵呵呵,請大家支持我吧。
今天要和大家談的是《PLC的簡介和PLC的類型》,對于前一項在該論壇內已有N多人說過了,這些歷史想必大家也很熟了,我也不多花時間了,簡單說來就是1968年美國通用汽車公司想要用新的電器控制裝置來代替繼電器控制裝置以適應生產程序的改變。為此該公司在投標書中提出:
1)編程方便,現場可修改程序;
2)維修方便,采用插件式結構;
3)可靠性高于繼電器控制裝置;
4)數據可直接輸入計算機中;
5)輸入電源可為市電;
6)輸出電源可為市電,負載電流要求2A以上,可直接驅動電磁閥和接觸器等;
7)用戶存儲器容量大于4KB;
8)體積小于繼電器裝置;
9)擴展時原系統改變最小;
10)成本與繼電器控制裝置相比,有一定競爭力。
1969年美國數字設備公司DEC制成了世界第一臺可編程序邏輯控制器PLC,從此PLC成為了工業現場最常用的控制裝置之一。
DEC公司后來被MODICON公司收購,MODICON公司后來又被施耐德公司收購,所以現在施耐德公司宣稱他們是PLC的發明者。
第一代的PLC實現采用的是一種叫2901的bit-slice CPUs ,它的手冊大家可以從網上下載。
如果大家對CPU和MCU有一定的了解,一定知道每一種CPU都有其特定的設計應用方向,PLC需要的CPU有什么特點呢?
第一代PLC處理器的基本要求:
1)邏輯執行能力強;
2)有很強的位處理能力,有特殊的指令能方便對存儲器進行位的讀寫和操作;
3)符合原來繼電器控制并行處理的習慣(注:大多數CPU都是串行處理的)
同時有這么一個基本的情況:
1)80%的PLC只需要很小的點數(1到128 I/O);
2)78%的PLC的I/O是數字;
3)80%的PLC應用只需要調用20種基本的指令。
2901是與4004(1971)同一代的古董,其中最有名的就是AMD公司在1969開發的AM2901,它在位處理方面有很多特點,比較適合PLC當時的需求,到現在大多數的硬PLC還在使用類似2901架構的新一代的位處理器。
簡單說來當時的PLC由一塊位處理器+程序存儲器+數據存儲器+IO+電源組成,這也是現在大多數PLC的核心。當時為了能讓原來使用繼電器控制裝置的電氣工程師能盡快的學會PLC的使用,所以設計了梯形圖語言。
2.PLC的技術分類:
經過三十多年的發展,現在PLC現在有許多的變種,但實現的方式主要分為硬PLC和軟PLC兩大類:
硬PLC分為并行垂直掃描和串行橫向掃描兩類,軟PLC分為編譯型、解釋型(虛擬機)兩類。
2.1硬PLC
硬PLC是PLC的傳統形式,直到現在大多數主流廠商的高端產品都是硬PLC,因為現在PLC對通信和數據運算能力的要求越來越高,所以大多數硬PLC都采用雙處理器結構,一塊通用處理器負責維護、通信、IO訪問、功能塊運算,另一塊位處理器負責執行邏輯指令,這也就是為什么高端的像AB的ControlLogix系列速度能達到0.01us/指令,大家可能覺得這有什么了不起的,不就是100MIPS嘛,現在P4都到4G了。
這是大大不同的,因為指令的粒度不同,運用的范圍也不同。PLC的一個功能塊其實相當于C語言里面的一個函數,也就是說塊頭比較大,與CPU的指令不是同一個維度。
剛說了硬PLC架構大多有兩塊處理器,也有可能一塊芯片內帶兩塊的功能,其中一塊通用處理器一塊位處理器。位處理器負責處理邏輯,通用處理器負責通信、驅動、功能塊運算等其它工作。同時硬PLC又分為并行垂直掃描和串行橫向掃描兩種。目前使用兩種處理方式的廠商都有,雙方的區別在于,并行垂直掃描的優點是:
1)速度快(理想情況下并行掃描比串行掃描快掃描矩陣的行數倍比方說矩形的V80標稱速度是0.2us/指令,但她比同樣是0.2us/指令的其它使用串行掃描的PLC理論上可以快7倍);
2)可以支持在線編程;
3)編程軟件可以省掉大部分的編譯工作。
相反串行掃描的優點是
1)比較符合軟件工程師的思維習慣;
2)單網絡大小不受并行掃描矩陣大小的限制。
大家如果有興趣可以拆一兩塊PLC,比方說三菱的Q系列,施耐德的昆騰等,里面常會有一塊標有該廠商的MCU,這一塊就是他們的位處理器。同時大家可以去國家專利局下載一下各大PLC廠商的專利,其中在硬PLC方面大家的技術其實是差不多的,只是大家都故意把自己的技術說得更模糊,這樣一方面可以保護自己的技術,另一方面可以很方便的通過專利認證。
注:這里說的并行處理,并不是說所有的指令都是并行處理的,主要是省掉了與指令和非指令并且或指令是并行的。
硬PLC的技術我不多說了,我貼一個十年前設計的硬解題處理器架構圖,內行的人也許可以看得懂。
2.2軟PLC
軟PLC架構大多只有一塊通用處理器,軟PLC的出現主要基于這么一個考慮:通用MCU的價格越來越低性能越來越高。特別是解釋型的虛擬機架構在DCS上面得到了多年的運用,所以在前幾年大家紛紛推出了自已的軟PLC。
目前國內大多數小型PLC都是軟PLC,使用的MCU主要是日立的H8,西門子的C164系列,然后其它低檔的大多是89C51了。在實現上面大多數小PLC都采用編譯型,因為小PLC大多采用的是低檔低速的MCU,沒有足夠的資源的成本去采用解釋型的運算。相反中大型的軟PLC有不少是采用解釋型的處理方式,比方說現在商用ISAGRAF、KW、一方梯隊等都可以根據用戶的需要選取是編譯型還是解釋型。
通常硬PLC要比編譯型的軟PLC快10~100倍,而編譯型的速度要比解釋型的速度快3~10倍。大家大都知道C語言與BASIC的區別,C語言就是編譯型的語言,BASIC就是解釋型的語言。在軟PLC里面也同樣存在兩種類似的實現方式。
那么用那種方式更好一些呢?
這不能這么簡單的說好與壞,如果是DCS或者中大型的PLC采用凌動以上的CPU那么速度就不是關鍵了,更重要的是功能和靈活性,那么采用解釋型可以很好的解決在線編程和自定義功能塊等功能。相反如果在小型PLC里面,成本和性能成為了關鍵矛盾,如何在低成本的情況下達到最高的性能成為了關鍵,同時小型PLC大多不需要很復雜的功能,所以真編譯本來應該是最好的選擇,但因為可靠性不好做,所以反而是解釋型大行其道。
國外小型軟PLC有采用西門子的C164和日立的H8,特別日立的H8有豐富的位指令,可以比較好的解決軟PLC的瓶頸位處理速度慢的問題,而PLC大多數情況下又都是位處理。國內的軟PLC除了幾家從國外仿制技術或貼牌的其它的大多使用SMT32,在實現上面編譯型和解釋型都有,如何區分是編譯型還是解釋型呢,其實只要看速度就行了,如果單指令速度比較慢的大多是解釋型,反之是編譯型。
編譯型的實現,簡單說就是先將PLC的指令和功能塊都用C語言或者匯編語言編寫成函數庫,然后再用C語言寫一個框架代碼,用戶用梯型圖編寫完程序后,梯型圖編譯器將生成一個框架文件,將所有指令的函數替代,并調用C編譯器,最后生成單片機的二進制文件,下載到控制器,由控制器執行。剛說過其中有一個框架代碼,這個框架代碼內就實現通信、IO驅動、管理等功能。而邏輯都由函數庫的指令組合完成,如果大家有編譯原理的基礎,一聽就會明白,這其實是回避了PLC開發里面最麻煩的一個問題,也就是編譯工具。
解釋型的實現,簡單說就是一個虛擬機架構,廠商定義了一種虛擬機指令,其實這個虛擬機就相當于一個軟CPU,它也有它的指令,它的指令比方說是IEC61131-3要求的指令等。虛擬機在運行時從代碼中逐一取回指令并通過一個查找表跳轉到對應的指令去運行,如果大家對早期的大型機電腦有了解,那么一定會知道,當時的大型機資源很寶貴,一般是很多位程序員合用一臺大型機比方說PDP系列,程序員編寫完程序后通過終端把自己的程序錄進大型機排隊運行。因為大型機的廠商不同,各廠商的機器碼也不同,所以大家都在大型機上運行一個虛擬機來統一程序員對口的指令。
2.3PLC技術的選擇和對比:
矩形剛開始控制器研發時,做的是軟PLC(2001年PPC31系列中型PLC),采用的是解釋型實現,這在中大型的DCS或PLC方面是合適的,但如果要考慮性價比就比較痛苦了,特別是解釋型,國內外采用解釋型的小型PLC速度一般都相當慢,比方說光洋的好幾個系列以及國內大多數新出來的小型PLC。當然并不是說解釋型的就不好,只是要達到同樣性能情況下需要更高的CPU成本和存儲器成本。
后來在經過一段時間后我們又開發編譯型的軟PLC(2003年PPC22系列中型PLC)這個系列主要的特點是相對于解釋型速度要快很多,同時可以很方便的由用戶來增加新的功能塊,只需要將用戶編寫的C函數當成一個功能塊來調用就可以了。目前國內有些國產PLC和部分進口的PLC是采用這種技術的,PPC22使用的是486的一顆工業SOC芯片成本比較高,主要是用在工程和大型設備上,相反國內許多小型PLC是用89C51做的真編譯,如果用的是標準頻率12M的51話,你會很顯意的看到廠商標稱他們的PLC布爾指令執行速度是1us/指令。
當04年矩形準備開始進入設備配套小型PLC時,我們深入的研究了大多數已有的小型PLC廠商的技術結構和實現方式,發現如果不采用硬PLC結構將無法滿足在低成本的情況下提供更高的性能,同時要想實在運行態在線編程,更只能采用并行垂直掃描硬PLC結構。比如像三菱中型的A系列和Q系列都是硬PLC結構,其中A和Q系列都是并行垂直掃描硬PLC,同樣采用并行垂直掃描硬PLC結構的還有AB的大多數PLC,除了它的一種小型PLC外。西門子的S7-300也是硬PLC,但S7200是一種軟PLC。在了解完后我們還對各家PLC的編解碼格式做了一些分析,基本上大同小異,只是為了防止有知識產權的麻煩而有意錯分開編碼格式。在與小型PLC V80的開發過程中,我們還開發了同樣是硬PLC結構的PPC11中型PLC,兩者采用同樣的軟硬件結構,只是功能和性能有一些區別。
所以我們應該說不同的技術應該用到不同的地方,技術上沒法說哪一種更好,但從PLC的主流來說硬PLC有著不可替代的性能優勢(遠比標稱速度上的優勢要大很多),現在許多PLC廠商像西門子、三菱、AB都有自己的軟PLC,但是他們的主流高端產品還都是硬PLC,這里面的細節說起來可能不是一兩天能說完的,簡單說來就是可靠性和性價比的區別。日本東芝公司自動化事業部的一位專家介參事長與我有過幾次比較深的技術交流,他說到東芝下一代的綜合控制器仍然是硬PLC結構,比較特別的是他們將多塊處理器模塊可以運行在同一架構內,一塊處理器模塊處理PLC,一塊處理DCS,一塊處理PC,一塊處理運控,四者之間可以共享數據,各編各的程序,相互之間互通又不影響,還是蠻有意思的。
三、小結
PLC開發的核心點在于一個穩健的硬件平臺+高效的執行架構+成熟的編譯器,這些核心技術不太方便講太多,過兩年PLC技術通俗化了后,我們再專門寫本書來剖析我們這些年的開發成果以及得失。國內從事PLC研究的同志們也可以給我來信來電,我們交流交流。
暈倒,太久沒整理了,寫起來有點暈,不知道該講多深,所以有些亂,請大家見諒,接下來幾章我一定講得通俗易懂一點。