0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于PLC編程該選擇那種IEC 61131-3編程語言最適合

jf_f8pIz0xS ? 來源:控制工程網(wǎng) ? 作者:Gary L. Pratt ? 2021-04-14 15:23 ? 次閱讀

編程邏輯控制器PLC)有很多編程語言可供選擇。有種說法,標(biāo)準(zhǔn)的偉大之處在于有很多選擇!盡管這很諷刺,但在IEC 61131-3編程語言中,有多種語言標(biāo)準(zhǔn)可供選擇確實(shí)是一個(gè)優(yōu)勢。

在參加我的培訓(xùn)班時(shí),很多學(xué)生抱著這樣一種心態(tài):選擇最適合自己的語言,然后專門學(xué)習(xí)該語言。上課伊始,他們經(jīng)常會問我會推薦適用哪種語言?;蛘?,“最好的語言是哪個(gè)?”

圖1:IEC 61131-3編程語言提供了適合特定需求的語言。

我沒有回答,問他們一個(gè)問題:“在阿拉伯?dāng)?shù)字中,哪個(gè)數(shù)字最好?”或“英語中,哪個(gè)詞最好?” 再比如:辦公室軟件中,哪個(gè)工具最好?是文檔編輯器、演示文稿編輯器,還是電子表格編輯器?雖然可以使用文檔編輯器創(chuàng)建演示文稿和電子表格,但這是正確的方法嗎?

圖2:該圖比較了在Codesys中實(shí)現(xiàn)復(fù)雜布爾邏輯的不同語言。

使用一種工具實(shí)現(xiàn)多種目的,需要學(xué)習(xí)各種技巧,這是否值得付出?僅學(xué)習(xí)該工具對工作有用的主要功能,是不是更有效?與辦公軟件一樣,為應(yīng)用選擇最佳編程語言是最有效的,可以避免很多麻煩。當(dāng)使用的IEC 61131-3編程語言能夠充分發(fā)揮其語言的優(yōu)勢時(shí),PLC的編程和維護(hù)功能就會得到加強(qiáng)。

梯形圖編程

梯形圖(LD)編程的歷史,可以追溯到大約100年前的繼電器梯形邏輯(RLL),它主要用于描述電氣元件系統(tǒng)(如繼電器、計(jì)時(shí)器和電動機(jī))。在自動化時(shí)代初期PLC逐步替換繼電器和計(jì)時(shí)器時(shí),創(chuàng)建一種用戶熟悉并與被替換的工具相似的編程語言非常重要。

不幸的是,控制器變得越來越強(qiáng)大,能夠?qū)崿F(xiàn)的功能也已經(jīng)遠(yuǎn)遠(yuǎn)超過繼電器和計(jì)時(shí)器,LD語言被用于各種新的場景,而這并不是LD所擅長的,因此效果也不是特別理想。

圖3:該圖顯示了順序功能圖的編程組件。

PLC供應(yīng)商提供新的、更適合PLC和可編程自動化控制器(PAC)應(yīng)用的語言的速度比較緩慢,使這種情況進(jìn)一步惡化。對于源自北美的控制器而言尤其如此,這可以解釋在全球范圍內(nèi),LD持久受歡迎的程度為什么會有所差異。

LD編程的優(yōu)勢是什么?為什么它能持久受歡迎?關(guān)鍵就是圖形化。而通常來說工程師是更傾向于圖形化思維的。

起初,大多數(shù)LD編程的替代方法都是基于文本的語言,這些語言與工程師的圖形化思維不會產(chǎn)生共鳴,其結(jié)果就是不愿從LD轉(zhuǎn)向其它語言。幸運(yùn)的是,這種情況正在發(fā)生變化。

LD仍然是一門偉大的語言,它的初衷是執(zhí)行復(fù)雜的布爾邏輯。在這個(gè)領(lǐng)域內(nèi),LD邏輯易于設(shè)計(jì)且易于調(diào)試。要確定為什么結(jié)果與預(yù)期不符,有多容易?在LD語言中,只需要觀察藍(lán)色實(shí)心觸點(diǎn)的路徑在何處中斷就可以快速獲得答案。

順序功能圖編程

順序功能圖(SFC)是一種圖形語言,非常適合表示狀態(tài)機(jī)(state machine),并且像LD語言一樣,它吸引了工程師的圖形化思維天性。

圖4:基于Codesys連續(xù)功能圖語言,展示了一個(gè)基于塊的編程設(shè)計(jì)示例。

狀態(tài)機(jī)的歷史可以追溯到很多年前,但是直到最近才被用于工業(yè)編程。狀態(tài)機(jī)是表示系統(tǒng)行為的一種非常強(qiáng)大的方法,可用于表達(dá)行為取決于過去歷史記錄的系統(tǒng)邏輯,例如:

1.設(shè)置線圈或復(fù)位線圈;

2.封裝邏輯(布爾反饋);

3.由代碼設(shè)置的內(nèi)部標(biāo)志,用于決定未來的行為。

實(shí)際上,即使是簡單的TON On-Timer和R-Trig one-shot都是狀態(tài)機(jī)。它們的下一個(gè)行為取決于先前的輸入和行為。與其它編碼技術(shù)相比,狀態(tài)機(jī)具有許多優(yōu)勢:

1.它們易于設(shè)計(jì),因?yàn)樗宄孛枋隽讼到y(tǒng)可能的狀態(tài),系統(tǒng)如何在這些狀態(tài)之間轉(zhuǎn)換,系統(tǒng)在這些狀態(tài)下應(yīng)采取的行動。

2.在運(yùn)行時(shí),可以很容易地確定系統(tǒng)處于什么狀態(tài),在該狀態(tài)下正在做什么,以及在什么條件下系統(tǒng)會切換到下一個(gè)狀態(tài)(或者過程中出了什么問題,導(dǎo)致無法切換到下一個(gè)狀態(tài))。

3.促進(jìn)構(gòu)思周密且組織良好的設(shè)計(jì)。這樣可以確保所有可能的事件都已得到妥善處理(就不會有人半夜三更把你從床上叫起來,去修復(fù)無法正確處理異常工況的代碼)。

4.易于確定是否已經(jīng)測試了所有可能事件。只需打印出SFC,并在執(zhí)檢查時(shí)劃掉每個(gè)狀態(tài)和切換條件即可。完成所有工作后,測試就完成了(程序員的置信度為100%)。

如何實(shí)現(xiàn)狀態(tài)機(jī)?

幾乎任何語言都可以實(shí)現(xiàn)狀態(tài)機(jī),但它們都需要特定的編碼技術(shù),包括步(step)、轉(zhuǎn)換(transition)、分支/跳轉(zhuǎn)(branch/jump)和動作(action)。

步描述了系統(tǒng)可以駐留的狀態(tài);轉(zhuǎn)換指示系統(tǒng)何時(shí)應(yīng)從上一步轉(zhuǎn)移至下一步;分支和跳轉(zhuǎn)指示下一步應(yīng)該是什么;動作指定在該步期間(進(jìn)入或退出該步)應(yīng)執(zhí)行的操作。

由于其圖形化屬性和工作的專業(yè)性,SFC語言是狀態(tài)機(jī)最自然的選擇。對于那些需求異常復(fù)雜或要求特別靈活的系統(tǒng),狀態(tài)機(jī)也可以用基于文本的語言來實(shí)現(xiàn)。對于只能使用LD的企業(yè),狀態(tài)機(jī)甚至可以在LD中實(shí)現(xiàn),方法是為每個(gè)狀態(tài)使用一個(gè)線圈,轉(zhuǎn)移邏輯為每個(gè)線圈通電/斷電,將系統(tǒng)從一個(gè)狀態(tài)轉(zhuǎn)移到下一個(gè)狀態(tài),以及利用使用狀態(tài)線圈的獨(dú)立邏輯來執(zhí)行動作。

一些供應(yīng)商還可以用統(tǒng)一建模語言(UML)來實(shí)現(xiàn)狀態(tài)圖,作為SFC的更強(qiáng)大、更靈活的替代方法,但這需要更長的學(xué)習(xí)曲線,而且在工業(yè)控制領(lǐng)域中的接受度有限。

對于狀態(tài)機(jī),語言的選擇是次要的,所用技術(shù)的選擇更重要。在SFC中,該語言強(qiáng)制使用狀態(tài)機(jī)技術(shù)。在其它語言中,使用的技術(shù)取決于工程師制定的規(guī)則。

圖5:結(jié)構(gòu)引腳可以減少不必要的細(xì)節(jié)和混亂,從而增強(qiáng)了圖表的可讀性。

功能塊圖編程

功能塊圖(FBD)是一種圖形語言,符合工程師的圖形化思維。來自Codesys(以前被稱為3S-Smart Software Solutions)的集成開發(fā)環(huán)境提供了兩種FBD,即傳統(tǒng)的IEC 61131-3 FBD和類似但更靈活的連續(xù)功能塊圖(CFC),CFC還沒有正式成為IEC 61131-3的一部分。CFC是FBD的超集,具有兩大優(yōu)勢:

1.基于塊的功能編程(執(zhí)行布爾和數(shù)學(xué)運(yùn)算);

2.分層設(shè)計(jì)(調(diào)用其它功能和功能塊)。

·基于塊的編程

基于塊的設(shè)計(jì)由預(yù)定義功能組件組成,這些組件連接在一起執(zhí)行布爾邏輯、數(shù)學(xué)計(jì)算或二者兼而有之。當(dāng)輸出是輸入的函數(shù)時(shí)(換句話說,當(dāng)沒有狀態(tài)變量,例如布爾反饋、設(shè)置/復(fù)位線圈或標(biāo)志時(shí)),CFC塊編程非常出色。當(dāng)同時(shí)使用無狀態(tài)功能和基于狀態(tài)的功能時(shí),請結(jié)合使用CFC和SFC。

因?yàn)檫B接性是用功能塊之間的線來表示的,所以很容易理解信息流以及信息是如何沿著其路徑進(jìn)行修改的。如果功能開始變得復(fù)雜,則應(yīng)將其分為較小的、更易于管理的子塊。如果塊之間存在大量連接,則可以將這些線連接至數(shù)據(jù)結(jié)構(gòu)類型的引腳。

結(jié)構(gòu)引腳(structure pin)具有3個(gè)優(yōu)點(diǎn):

1.在層次化結(jié)構(gòu)設(shè)計(jì)中,每個(gè)層次都消除了不必要的細(xì)節(jié),更清晰易于理解;

2.保持較小的功能塊,可以在一頁上查看整個(gè)信息流;

3.允許信息流向上游和下游,以進(jìn)一步減少不必要的細(xì)節(jié)。

對于以前采用LD實(shí)施基于塊或分層功能的PLC程序員來講,CFC提供了一種更為簡潔和靈活的方法。CFC的開發(fā)速度更快,而且對于將來負(fù)責(zé)維護(hù)或改進(jìn)代碼的工程師來說,也更容易理解。

·分層設(shè)計(jì)

分層設(shè)計(jì)是一種從很多簡單的構(gòu)建塊層層設(shè)計(jì)的實(shí)踐。與傳統(tǒng)的扁平化設(shè)計(jì)相比,分層設(shè)計(jì)具有許多優(yōu)點(diǎn):

1.定制;

2.創(chuàng)建;

3.測試與完善;

4.理解和維護(hù);

5.易于復(fù)用。

構(gòu)建塊技術(shù)支持并鼓勵(lì)在層次結(jié)構(gòu)的每個(gè)級別上,展現(xiàn)同等程度的細(xì)節(jié),這就使塊技術(shù)更易于設(shè)計(jì)和理解。這樣,在較高層次的設(shè)計(jì)中,不必因?yàn)檎宫F(xiàn)細(xì)節(jié)而被弄得雜亂無章,這些細(xì)節(jié)只在較低層的設(shè)計(jì)中很重要。在層次結(jié)構(gòu)的每個(gè)級別上,分層CFC設(shè)計(jì)應(yīng)都具有統(tǒng)一的細(xì)節(jié)展示。

使用LD作為構(gòu)建塊語言的傳統(tǒng)方法會存在2個(gè)弊端:

1.信息的低密度導(dǎo)致LD設(shè)計(jì)可能會分布到數(shù)10頁上,很難或不可能看到和理解全局;

2.不同層次的細(xì)節(jié)混雜在同一層次上會十分混亂,這使設(shè)計(jì)難以理解和維護(hù)。

而使用結(jié)構(gòu)化文本的CFC分層設(shè)計(jì)可以解決這兩個(gè)問題,同時(shí)保持了LD的圖形特性。這是個(gè)兩全其美的解決方案。

分層設(shè)計(jì)是面向?qū)ο蟮墓I(yè)編程(OOIP)的關(guān)鍵功能。在部署和配置用戶自定義的功能塊以后,CFC編程開始與分布式控制系統(tǒng)DCS)的編程/組態(tài)有點(diǎn)類似,但使用IEC 61131-3程序員可以控制底層的塊。如果某個(gè)塊需要較小的改進(jìn),程序員就可以執(zhí)行此操作,而無需費(fèi)時(shí)費(fèi)力的請DCS供應(yīng)商介入。

完整的分層PLC設(shè)計(jì),可以看作是一棵由分層CFC構(gòu)成主干和分支的樹?;趬K的CFC、SFC、LD和ST填充樹葉所處位置的詳細(xì)功能設(shè)計(jì)。IEC 61131-3語言共同構(gòu)成了一個(gè)團(tuán)隊(duì),該團(tuán)隊(duì)比其各個(gè)部分的功能更強(qiáng)大。

結(jié)構(gòu)化文本編程

盡管LD、SFC和FBD/CFC語言可以出色的完成其任務(wù),但有些運(yùn)算并不適合使用圖形化語言。

一些支持使用結(jié)構(gòu)化文本(ST)語言編程的運(yùn)算包括:

1.迭代運(yùn)算,例如For、While和Repeat;

2.復(fù)雜條件和選擇,例如IF-THEN和CASE;

3.位運(yùn)算,例如按位與、移位、旋轉(zhuǎn);

4.文本字符串運(yùn)算;

5.具有特殊要求或特別復(fù)雜的狀態(tài)機(jī);

6.純粹的面向?qū)ο缶幊蹋ㄕ{(diào)用方法,設(shè)置屬性等)。

有許多很好的教程,可指導(dǎo)工程師從其它基于文本的語言過渡到ST。對于那些完全不熟悉基于文本的語言的人來說,Visual Basic教程是一個(gè)很好的起點(diǎn)。盡管結(jié)構(gòu)化文本基于Pascal編程語言,但它與VB有非常相似,因此可以參考應(yīng)用更廣泛的VB教程。

圖6:此處的分層設(shè)計(jì)是在連續(xù)功能圖編程中實(shí)現(xiàn)的。

使用最合適的語言編程

要?jiǎng)?chuàng)建有效的工業(yè)控制程序,掌握合適的編程語言并知道如何有效使用這些語言非常重要。有很多語言可供PLC選擇,IEC 61131-3編程語言標(biāo)準(zhǔn)也提供了多種選擇。充分利用每種語言的優(yōu)勢效率會更高,而不是學(xué)習(xí)一種語言的各種技巧和變通方法來使其適用于所有應(yīng)用。程序員應(yīng)為應(yīng)用選擇最佳語言。

“為了創(chuàng)建有效的工業(yè)控制程序,掌握合適的語言,并知道如何有效使用這些語言非常重要。”
編輯:lyn

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • IEC
    IEC
    +關(guān)注

    關(guān)注

    2

    文章

    194

    瀏覽量

    28828
  • PLC編程
    +關(guān)注

    關(guān)注

    46

    文章

    245

    瀏覽量

    37304
收藏 人收藏

    評論

    相關(guān)推薦

    plc編程語言編程相關(guān)技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關(guān)編程技巧是工業(yè)自動化領(lǐng)域中不可或缺的知識。 一、PLC
    的頭像 發(fā)表于 10-21 16:56 ?141次閱讀

    plc編程語言有哪幾種

    編程邏輯控制器(PLC)是一種廣泛應(yīng)用于工業(yè)自動化領(lǐng)域的電子設(shè)備,用于實(shí)現(xiàn)對生產(chǎn)過程的控制和管理。PLC編程語言是實(shí)現(xiàn)控制邏輯的關(guān)鍵工具
    的頭像 發(fā)表于 08-25 10:07 ?332次閱讀

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語言是一種高級編程語言,
    的頭像 發(fā)表于 08-25 10:05 ?693次閱讀

    PLC編程方式及編程語言

    在工業(yè)自動化領(lǐng)域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強(qiáng)大的控制功能和靈活的編程方式而得到了廣泛應(yīng)用。PLC
    的頭像 發(fā)表于 06-27 14:08 ?516次閱讀

    PLC編程語言和C語言的區(qū)別

    在工業(yè)自動化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。
    的頭像 發(fā)表于 06-14 17:11 ?2121次閱讀

    PLC常用編程語言有哪些

    語言多種多樣,每種語言都有其獨(dú)特的特點(diǎn)和適用場景。本文將詳細(xì)介紹PLC常用的編程語言,包括梯形圖(LD)、指令表(IL)、功能模塊圖(FBD
    的頭像 發(fā)表于 06-14 16:58 ?970次閱讀

    如何選擇最適合你的UV LED固化機(jī)?

    在現(xiàn)代化的工業(yè)生產(chǎn)中,UV LED固化機(jī)以其高效、環(huán)保、節(jié)能等諸多優(yōu)點(diǎn),逐漸成為了固化工藝的首選設(shè)備。然而,市場上的UV LED固化機(jī)種類繁多,性能各異,如何選擇最適合自己需求的固化機(jī)呢?本文將為您
    的頭像 發(fā)表于 05-18 14:19 ?287次閱讀
    如何<b class='flag-5'>選擇</b><b class='flag-5'>最適合</b>你的UV LED固化機(jī)?

    PLC順序功能圖(SFC)編程深入解析

    稱為順序功能圖 (SFC) 的圖形編程語言IEC 61131-3 標(biāo)準(zhǔn)化。圖表從上到下閱讀,塊用于表示步驟、轉(zhuǎn)換和功能。這種
    發(fā)表于 03-21 11:45 ?8630次閱讀
    <b class='flag-5'>PLC</b>順序功能圖(SFC)<b class='flag-5'>編程</b>深入解析

    plc編程語言與c語言的聯(lián)系 c語言PLC有什么區(qū)別

    PLC編程語言與C語言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對自動化控制系統(tǒng)的特殊計(jì)算機(jī)。
    的頭像 發(fā)表于 02-05 14:21 ?3599次閱讀

    plc編程入門基礎(chǔ)知識 plc編程語言有幾種

    PLC(Programmable Logic Controller)是可以根據(jù)預(yù)設(shè)邏輯程序自動控制工業(yè)過程的電子設(shè)備。PLC編程語言是與PLC
    的頭像 發(fā)表于 02-04 15:55 ?1439次閱讀

    plc編程語言有幾種,一般常用有哪些

    PLC(可編程邏輯控制器)是一種用于自動化控制系統(tǒng)的電子設(shè)備,它使用特定的編程語言來控制和監(jiān)視機(jī)器或過程。常見的PLC
    的頭像 發(fā)表于 02-01 14:31 ?3467次閱讀

    plc常見的編程語言有哪幾種

    PLC(可編程邏輯控制器)常見的編程語言有五種,被稱為IEC 61131-3標(biāo)準(zhǔn)
    的頭像 發(fā)表于 01-24 17:59 ?5443次閱讀

    淺談PLC 5種標(biāo)準(zhǔn)的編程語言

    IEC 1131-3編程語言IEC工作組 對世界范圍的PLC廠家的
    發(fā)表于 11-15 11:14 ?754次閱讀
    淺談<b class='flag-5'>PLC</b> 5種標(biāo)準(zhǔn)的<b class='flag-5'>編程</b><b class='flag-5'>語言</b>

    使用ADA4899-1做單位增益和放大電路,最適合的電路是怎么設(shè)置的?

    請問使用ADA4899-1做單位增益和放大電路(10倍)時(shí)候,最適合的電路是怎么設(shè)置的,能分別提供一下電路嗎?
    發(fā)表于 11-15 06:58

    虹科資訊 | 10月智能制造行業(yè)動態(tài)回顧

    的重要性被不斷強(qiáng)調(diào)。 (一)虹科動態(tài) IEC 61131-3國際工程師培訓(xùn) 虹科與主導(dǎo)制定IEC 61131-3?標(biāo)準(zhǔn)的PLCopen合作開展培訓(xùn),以行業(yè)廣泛應(yīng)用的運(yùn)動控制為核心內(nèi)容,
    的頭像 發(fā)表于 11-01 17:40 ?344次閱讀