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

QQ登錄

只需一步,快速開(kāi)始

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

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

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

我們自己來(lái)做一個(gè)PLC(Programmable Logic Controller,即可編程邏輯控制器)怎么樣?就像很多計(jì)算機(jī)專業(yè)的同學(xué)都自己寫過(guò)最簡(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的過(guò)程是拷貝或者燒錄程序的過(guò)程,這使得PC的高性能得到了更好的發(fā)揮,我們今天討論的PLC便屬于軟PLC。

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

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

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

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

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

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

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

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


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

使用道具 舉報(bào)

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:269447 發(fā)表于 2017-12-31 12:36 | 只看該作者
想法不錯(cuò),PLC的核心其實(shí)還是單片機(jī)
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

7#
ID:273087 發(fā)表于 2018-8-24 13:48 | 只看該作者
有需要靈動(dòng)微單片機(jī)可聯(lián)系我司
回復(fù)

使用道具 舉報(bào)

8#
ID:395889 發(fā)表于 2018-9-10 10:21 | 只看該作者
厲害厲害, 還是這個(gè)論壇的大神比較多
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

12#
ID:97678 發(fā)表于 2020-9-22 08:14 | 只看該作者
這個(gè)沒(méi)有什么實(shí)質(zhì)內(nèi)容!內(nèi)容不能下載!
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

19#
ID:424501 發(fā)表于 2022-8-26 15:58 | 只看該作者
有道理,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

20#
ID:496636 發(fā)表于 2022-9-12 09:51 | 只看該作者
PLC本身就是單片機(jī),不過(guò)性能當(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)該都是以語(yǔ)句表的形式加上一些數(shù)據(jù)塊,系統(tǒng)塊下載到PLC里去的。PLC系統(tǒng)就是依照語(yǔ)句表程序逐一解釋執(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語(yǔ)言,用KEIL編單片機(jī)程序,這能出山都是電子工程師的水平。可用PLC初中沒(méi)畢業(yè)的電工都能編個(gè)梯形圖。
同樣是大學(xué)生,做一個(gè)自控項(xiàng)目,用PLC搭建,一星期解決,而用單片機(jī)起碼一個(gè)月起。
我們廠有個(gè)老師傅,就用單片機(jī)做化工廠實(shí)驗(yàn)室的自控項(xiàng)目,如控制釜溫、調(diào)節(jié)精餾回流比,還是控制管道壓力穩(wěn)定。萃取過(guò)程中對(duì)液體顏色的采集,控制蠕動(dòng)泵流量大小,還有是模擬移動(dòng)床色譜分離自控系統(tǒng)的開(kāi)發(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),那是萬(wàn)萬(wàn)不能用。
一個(gè)產(chǎn)品,要用上還得各種各樣的認(rèn)證,通過(guò)設(shè)計(jì)驗(yàn)證,還是測(cè)驗(yàn)驗(yàn)證,讓對(duì)方認(rèn)可,所以PLC不可替代,不要說(shuō)國(guó)產(chǎn)兼容的PLC,如果應(yīng)用在普通車間,都是夠用了,但你把它用在電梯還是礦井安全級(jí)別要求高的場(chǎng)所,那是萬(wàn)萬(wàn)不可。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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