找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 36035|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

自己動(dòng)手做一個(gè)PLC

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:99556 發(fā)表于 2015-12-19 19:14 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

我們自己來做一個(gè)PLC(Programmable Logic Controller,即可編程邏輯控制器)怎么樣?就像很多計(jì)算機(jī)專業(yè)的同學(xué)都自己寫過最簡(jiǎn)單的操作系統(tǒng)一樣,作為工控領(lǐng)域的軟件人,怎么能不自己動(dòng)手做個(gè)簡(jiǎn)單的PLC呢?

PLC其實(shí)也是經(jīng)歷了很長(zhǎng)時(shí)間的演變,最早的PLC雖然也是運(yùn)行在單片機(jī)上,但是僅支持指定模塊的編程,而下裝組態(tài)其實(shí)是在傳輸各個(gè)點(diǎn)及各個(gè)點(diǎn)之間的連接信息,再由PLC根據(jù)這些信息在內(nèi)部進(jìn)行解析運(yùn)行。而現(xiàn)在的PLC,大多數(shù)都可以被稱之為軟PLC(也稱Soft PLC),即在PC端便已經(jīng)編譯成二進(jìn)制文件,下載至PLC的過程是拷貝或者燒錄程序的過程,這使得PC的高性能得到了更好的發(fā)揮,我們今天討論的PLC便屬于軟PLC。

如果你想要找我要代碼的話,雖然我自己已經(jīng)嘗試著做過一個(gè)簡(jiǎn)單基本的了,但是不得不說一個(gè)完整的PLC是相當(dāng)?shù)凝嫶蠛蛷?fù)雜,我自己的僅供我自己學(xué)習(xí)使用了,沒有足夠的注釋和文檔去幫助別人了解,故在這里我可以推薦一個(gè)做得還算不錯(cuò)的開源項(xiàng)目(當(dāng)時(shí)我自己嘗試的時(shí)候也借用了這個(gè)項(xiàng)目中不少的組件),這個(gè)開源項(xiàng)目叫做beremiz。

首先讓我們來考慮一下,我自己要做的PLC需要些什么組件呢?

軟件環(huán)境
  • PLC程序IDE,方便開發(fā)人員編寫和調(diào)試程序的人機(jī)界面,支持多種語言的開發(fā)?蛇x的開源項(xiàng)目:
  • PLCEdit:完全按照IEC61131標(biāo)準(zhǔn)開發(fā),所有五種語言均支持,使用Python開發(fā),故可以做到跨平臺(tái)。
  • Beremiz:一套完整的開源PLC解決方案,不過放在這里主要是因?yàn)樗坏褂昧松厦嬲f的PLCEdit,同時(shí)還對(duì)其進(jìn)行了增強(qiáng),使得其增加了重要的在線調(diào)試功能。
  • SoapBox Snap:使用C#+WPF開發(fā)的,僅支持梯形圖一種語言,不過卻已經(jīng)支持了在線調(diào)試功能,含模擬器。
  • 我的解決方案:我使用了Node.js+HTML5開發(fā),僅支持梯形圖一種語言,不支持在線調(diào)試,使用HTML5方案最大的優(yōu)勢(shì)有兩點(diǎn),一是適應(yīng)未來發(fā)展需要,二是類似于家用路由器一樣,可以將網(wǎng)頁嵌入到設(shè)備中,故只要一臺(tái)能瀏覽HTML5網(wǎng)頁的瀏覽器便可以配置PLC。

按照工業(yè)控制領(lǐng)域常用的IEC61131-3標(biāo)準(zhǔn)來看,工業(yè)控制領(lǐng)域程序語言被分為了兩大類五種語言,兩大類是指圖形化編程和代碼編程,圖形化編程中有Ladder(梯形圖),F(xiàn)BD(Function Block Diagram,功能塊圖)和SFC(Sequential Function Chart,序列功能表),而代碼編程有IL(Instruction List,指令集)和ST(Structured Text,結(jié)構(gòu)化文本),具體內(nèi)容我就不展開了,有需要自行百度百科或維基百科。
  • HMI設(shè)計(jì)器,Human-machine interface,即人機(jī)界面,主要用來顯示控制過程中的實(shí)時(shí)數(shù)據(jù),并設(shè)置一些按鍵方便操作員快速控制系統(tǒng)?蛇x方案:
  • Beremiz:使用SVG技術(shù)開發(fā),樣式可擴(kuò)展性強(qiáng),但是邏輯擴(kuò)展性弱。
  • 我的解決方案:使用HTML5技術(shù)開發(fā),不但有豐富的開源編輯器可供選用,而且用戶可以自行嵌入JS邏輯。
  • 編譯器,顧名思義,就是將在IDE環(huán)境中編寫好的程序轉(zhuǎn)換成可以直接運(yùn)行在單片機(jī)上的二進(jìn)制序列?蛇x的開源項(xiàng)目:
  • mat:最全面的開源編譯器,輸入符合其標(biāo)準(zhǔn)的定義文件,并可以支持IL和ST兩種文本語言。使用純C開發(fā),大量使用了宏定義,導(dǎo)致我看代碼看得挺吃力的。
  • Avrian-Jump:一個(gè)非常初級(jí)的梯形圖編輯器,并可以將該梯形圖轉(zhuǎn)譯成ATMega168的二進(jìn)制程序,使用js開發(fā),直接在網(wǎng)頁上操作。
  • 我的解決方案:我的初版解決方案是使用C#語言通過正則表達(dá)式識(shí)別代碼并轉(zhuǎn)成可供執(zhí)行的Python代碼。后來將正則表達(dá)式的方式改為Coco/R,即專門的編譯器生成器。
  • 其他必要的類庫或驅(qū)動(dòng),通常情況主要就是IO的驅(qū)動(dòng),以及通信的協(xié)議棧,當(dāng)然還不能缺少基本的供開發(fā)人員調(diào)用的類庫。很多時(shí)候都是內(nèi)嵌在編譯器中,或者提供足夠的靈活性讓用戶自行開發(fā)。

硬件環(huán)境
  • MCU,Microcontroller Unit,微處理單元,用于具體執(zhí)行邏輯的部件,必要時(shí)可能還會(huì)承擔(dān)通信、程序更新和日志記錄的工作。
  • 外圍電路,其實(shí)主要說的外圍電路就是IO相關(guān)的電路,不過作為軟件人,這方面不用搞得非常清楚,我們只需要購置一些標(biāo)準(zhǔn)的開發(fā)板,便會(huì)將這些事情都處理的妥妥當(dāng)當(dāng)?shù)摹?/div>

我的解決方案:使用虛擬機(jī)運(yùn)行Linux模擬,以及使用RaspberryPi這類支持運(yùn)行Linux和Python的環(huán)境。

每一個(gè)子項(xiàng)中的解決方案或者開源項(xiàng)目都還會(huì)有很多,在這里,我僅列舉了我使用過和了解過的,相信你可以輕松的通過google搜索到更多的類似開源組件,所以在這里就不一一列舉了。

以上簡(jiǎn)單的介紹了一下自己設(shè)計(jì)的PLC系統(tǒng)的基本組成部分,以及一些可選的開源項(xiàng)目和他們的特性。制作PLC并不是一件簡(jiǎn)單的事情,相信你也無法在看過本文后便輕松的制作出自己那個(gè)PLC,不過我希望可以通過本文讓你了解到,做一個(gè)自己的PLC所需要的部件,以及其實(shí)它也并非高不可攀的。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

來自 22#
ID:476652 發(fā)表于 2021-3-31 14:53 | 只看該作者
就這還有朋友說很厲害,絕對(duì)高手。!只能說一句,有這種認(rèn)識(shí)的伙計(jì),只對(duì)單片機(jī)有所了解,而對(duì)PLC一概不通。所以才會(huì)草草得出這樣的結(jié)論來。
plc價(jià)格很貴,為什么在現(xiàn)在工控行業(yè)不被淘汰,不被單片機(jī)代替掉,究其原因,plc有幾個(gè)特點(diǎn)
1 plc在全球乃至全宇宙已經(jīng)有好幾千萬甚至好幾億的實(shí)際應(yīng)用量了,各種bug已經(jīng)被解決完了。
2 plc已經(jīng)形成了模塊化,標(biāo)準(zhǔn)化,從硬件,軟件都已經(jīng)達(dá)到了一定的水平了。
3 plc從購買,開發(fā),運(yùn)行,這個(gè)過程非常短,
4 plc系統(tǒng)運(yùn)行安全,硬件穩(wěn)定,開發(fā)迅速。
plc的這幾個(gè)方面,是現(xiàn)在哪個(gè)單片機(jī)都沒有達(dá)到的,也是plc很貴,但單片機(jī)無法代替的原因。

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
無效樓層,該帖已經(jīng)被刪除
地板
ID:269447 發(fā)表于 2017-12-31 12:36 | 只看該作者
想法不錯(cuò),PLC的核心其實(shí)還是單片機(jī)
回復(fù)

使用道具 舉報(bào)

5#
ID:260785 發(fā)表于 2018-1-7 11:11 | 只看該作者
絕世好帖!
回復(fù)

使用道具 舉報(bào)

6#
ID:275217 發(fā)表于 2018-1-12 15:00 | 只看該作者
很厲害啊 ,哥哥
回復(fù)

使用道具 舉報(bào)

7#
ID:280298 發(fā)表于 2018-1-27 21:28 | 只看該作者
呃 樓主這個(gè)帖子,水分好大……
回復(fù)

使用道具 舉報(bào)

8#
無效樓層,該帖已經(jīng)被刪除
9#
無效樓層,該帖已經(jīng)被刪除
10#
無效樓層,該帖已經(jīng)被刪除
11#
無效樓層,該帖已經(jīng)被刪除
12#
ID:273087 發(fā)表于 2018-8-24 13:48 | 只看該作者
有需要靈動(dòng)微單片機(jī)可聯(lián)系我司
回復(fù)

使用道具 舉報(bào)

13#
無效樓層,該帖已經(jīng)被刪除
14#
ID:395889 發(fā)表于 2018-9-10 10:21 | 只看該作者
厲害厲害, 還是這個(gè)論壇的大神比較多
回復(fù)

使用道具 舉報(bào)

15#
ID:229137 發(fā)表于 2019-8-5 13:56 | 只看該作者
感覺像廣告貼?
回復(fù)

使用道具 舉報(bào)

16#
ID:230559 發(fā)表于 2019-8-13 09:44 | 只看該作者
不知道實(shí)施了沒有?
回復(fù)

使用道具 舉報(bào)

17#
ID:604779 發(fā)表于 2019-8-28 15:45 | 只看該作者
很厲害啊 絕對(duì)高手
回復(fù)

使用道具 舉報(bào)

18#
ID:71883 發(fā)表于 2019-10-11 14:38
樓主你廣告打錯(cuò)啦地方

19#
無效樓層,該帖已經(jīng)被刪除
20#
ID:97678 發(fā)表于 2020-9-22 08:14 | 只看該作者
這個(gè)沒有什么實(shí)質(zhì)內(nèi)容!內(nèi)容不能下載!
回復(fù)

使用道具 舉報(bào)

21#
ID:880192 發(fā)表于 2021-1-24 17:28 | 只看該作者
現(xiàn)在幾大品牌已經(jīng)很成熟了
回復(fù)

使用道具 舉報(bào)

23#
無效樓層,該帖已經(jīng)被刪除
24#
ID:791205 發(fā)表于 2021-8-8 21:36 | 只看該作者
溫柔的郎 發(fā)表于 2021-3-31 14:53
就這還有朋友說很厲害,絕對(duì)高手。!只能說一句,有這種認(rèn)識(shí)的伙計(jì),只對(duì)單片機(jī)有所了解,而對(duì)PLC一概不 ...

你說的都是對(duì)的,PLC成本高,且單片機(jī)無法很好替代,但實(shí)際上我就是利用單片機(jī)的程序模準(zhǔn)化,可視化,數(shù)據(jù)管理統(tǒng)一化,用C語言開發(fā),其于KEIL做到了比PLC開發(fā)更簡(jiǎn)單。。。
回復(fù)

使用道具 舉報(bào)

25#
ID:951974 發(fā)表于 2022-5-7 23:59 | 只看該作者
溫柔的郎 發(fā)表于 2021-3-31 14:53
就這還有朋友說很厲害,絕對(duì)高手。!只能說一句,有這種認(rèn)識(shí)的伙計(jì),只對(duì)單片機(jī)有所了解,而對(duì)PLC一概不 ...

PLC的本質(zhì)上就是單片機(jī), 但是請(qǐng)注意它是已經(jīng)成熟無BUG的單片機(jī), 假如你自己用單片機(jī)做的PLC也能無BUG,那也就是PLC了
回復(fù)

使用道具 舉報(bào)

26#
ID:829010 發(fā)表于 2022-5-8 08:53 | 只看該作者
PLC主要是為工業(yè)控制應(yīng)用設(shè)計(jì),抗干擾能力強(qiáng)。編程使用特定的匯編語言。這些和單片機(jī)不同
當(dāng)然最主要的原因是單片機(jī)太便宜,要不上價(jià)。利潤(rùn)空間太小,都不愿做。
現(xiàn)在有些私人企業(yè)為降低成本,使用訂制PLC。其實(shí)內(nèi)部也還是單片機(jī)
回復(fù)

使用道具 舉報(bào)

27#
ID:712493 發(fā)表于 2022-5-8 09:12 | 只看該作者
1588848 發(fā)表于 2022-5-7 23:59
PLC的本質(zhì)上就是單片機(jī), 但是請(qǐng)注意它是已經(jīng)成熟無BUG的單片機(jī), 假如你自己用單片機(jī)做的PLC也能無BUG, ...

有什么單片機(jī)是沒有BUG的,是電子產(chǎn)品就有缺陷  只是相對(duì)你的應(yīng)用致命不致命而已。
回復(fù)

使用道具 舉報(bào)

28#
ID:712493 發(fā)表于 2022-5-8 09:19 | 只看該作者
993387119 發(fā)表于 2022-5-8 08:53
PLC主要是為工業(yè)控制應(yīng)用設(shè)計(jì),抗干擾能力強(qiáng)。編程使用特定的匯編語言。這些和單片機(jī)不同
當(dāng)然最主要的原 ...

其實(shí)不管PLC怎么設(shè)計(jì),內(nèi)部還是單片機(jī)  或許等級(jí)不一樣  還是單片機(jī) 實(shí)際可以說PLC只不過是用料要求高些的控制器而已,但PLC的優(yōu)勢(shì)不在于多可靠(當(dāng)然可靠也是需要的) 而是模塊化,一致性好,不需要重復(fù)造車  并應(yīng)用門檻降低 應(yīng)用時(shí)間縮短。
回復(fù)

使用道具 舉報(bào)

29#
無效樓層,該帖已經(jīng)被刪除
30#
ID:424501 發(fā)表于 2022-8-26 15:58 | 只看該作者
有道理,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

31#
ID:496636 發(fā)表于 2022-9-12 09:51 | 只看該作者
PLC本身就是單片機(jī),不過性能當(dāng)然比51單片機(jī)強(qiáng)多了,單里面的存儲(chǔ)容量都是十K以上,單片機(jī)才幾K。就西門子的S7-200 PLC,有很多的V存儲(chǔ)器,可以放心的用,還有支持浮點(diǎn)數(shù)運(yùn)算,單片機(jī)要用到浮點(diǎn)數(shù)運(yùn)算,那得STC的32位單片機(jī)了。
低檔的PLC里面刷了個(gè)小型的系統(tǒng),這樣能支持上傳下載自控程序,還有PPI通訊,狀態(tài)燈的顯示。自控程序應(yīng)該都是以語句表的形式加上一些數(shù)據(jù)塊,系統(tǒng)塊下載到PLC里去的。PLC系統(tǒng)就是依照語句表程序逐一解釋執(zhí)行。執(zhí)行前采樣,執(zhí)行后輸出。這樣往復(fù)運(yùn)行。
再發(fā)展,中大型PLC里就有了功能更加強(qiáng)大的系統(tǒng),如果程序中只作了小部分的更改,你完全可以部分下載,不用大動(dòng)干戈,把整個(gè)程序編譯一遍,再下載。同時(shí)也支持PLC運(yùn)行狀態(tài)下的下載,不影響自控系統(tǒng)的運(yùn)行。
PLC最大的優(yōu)點(diǎn)是降低了自控設(shè)計(jì)人員素質(zhì)要求,你學(xué)個(gè)單片機(jī)起碼是大學(xué)水平,PLC初中水平就行了,能編個(gè)梯形圖。要學(xué)好單片機(jī)不容易的,又要會(huì)數(shù)字電路,還要會(huì)模擬電路,還要會(huì)畫電路板,還要會(huì)C語言,用KEIL編單片機(jī)程序,這能出山都是電子工程師的水平。可用PLC初中沒畢業(yè)的電工都能編個(gè)梯形圖。
同樣是大學(xué)生,做一個(gè)自控項(xiàng)目,用PLC搭建,一星期解決,而用單片機(jī)起碼一個(gè)月起。
我們廠有個(gè)老師傅,就用單片機(jī)做化工廠實(shí)驗(yàn)室的自控項(xiàng)目,如控制釜溫、調(diào)節(jié)精餾回流比,還是控制管道壓力穩(wěn)定。萃取過程中對(duì)液體顏色的采集,控制蠕動(dòng)泵流量大小,還有是模擬移動(dòng)床色譜分離自控系統(tǒng)的開發(fā)。等等,還跟電腦進(jìn)行通訊,用VB做上位機(jī),用于顯示控制并歷史記錄。
老師傅不是研究院的,做了二套模擬移動(dòng)床系統(tǒng),他的領(lǐng)導(dǎo)不讓他干了,今年我用S7-200做了個(gè)模擬移動(dòng)床的自控系統(tǒng),建立在人家成熟的硬件和軟件基礎(chǔ)上,憑我這點(diǎn)水平也完成了,明顯降低了人員素質(zhì)的要求。
我們公司用到單片機(jī)的地方,都是安全級(jí)別低的場(chǎng)合,如果是化工車間里的自控系統(tǒng),那是萬萬不能用。
一個(gè)產(chǎn)品,要用上還得各種各樣的認(rèn)證,通過設(shè)計(jì)驗(yàn)證,還是測(cè)驗(yàn)驗(yàn)證,讓對(duì)方認(rèn)可,所以PLC不可替代,不要說國(guó)產(chǎn)兼容的PLC,如果應(yīng)用在普通車間,都是夠用了,但你把它用在電梯還是礦井安全級(jí)別要求高的場(chǎng)所,那是萬萬不可。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表