圖形只需很少的培訓(xùn),即可由控制工程師和工廠技術(shù)人員使用OOIP
2021-06-09
您應(yīng)該買入還是賣出廣告股票?趕快下載這個炒股神器,智能提示買賣點!
工業(yè)控制軟件工程對于高度可靠且易于廣泛使用的用戶有獨特的要求。這就是為什么圖形語言一直是工控編程的主體,而工控工程師往往在采用它們之前成熟了計算機科學(xué)的最新趨勢(例如,符號尋址和數(shù)據(jù)結(jié)構(gòu)在進入工控之前已經(jīng)成熟。年)更多信息可在真工鏈獲取。
面向?qū)ο缶幊蹋∣OP)在 1990 年代開始被計算機科學(xué)家使用,但由于其復(fù)雜性和缺乏支持的圖形語言環(huán)境,其在工業(yè)控制領(lǐng)域的應(yīng)用一直很緩慢。幸運的是,工業(yè)軟件供應(yīng)商已經(jīng)開始解決這些問題,并在沒有任何復(fù)雜性的情況下為控制領(lǐng)域提供了許多 OOP 的好處。
本文將展示其中一個工具的示例,展示工程師如何通過掌握一小部分 OOP 概念來利用這些優(yōu)勢,并展示使用對象進行編程如何成為控制基于對象的自然而直觀的技術(shù)。物理世界。
工業(yè)控制中OOP的定義
在“面向?qū)ο缶幊蹋∣OP)”一詞的解釋中,工業(yè)控制界和計算機科學(xué)界往往是不同的。為了避免本文中的混淆,我們將工業(yè)控制解釋為面向?qū)ο蟮墓I(yè)編程(OOIP),并區(qū)分如下:
面向?qū)ο缶幊?(OOP)
包括完整的計算機科學(xué) OOP 功能
主要基于文本
通常是受過高等教育的計算機科學(xué)家領(lǐng)域
面向?qū)ο蟮墓I(yè)編程 (OOIP)
使用封裝、實例化和抽象概念將功能塊 (FB) 實例化為其他 FB 的能力
以圖形為主
控制工程師和工廠技術(shù)人員只需很少的培訓(xùn)即可使用。
OOIP的演變
在工業(yè)自動化的早期,編程是固定的。我們讀取輸入,縮放輸入,對輸入生成警報,執(zhí)行控制算法以生成輸出,對輸出執(zhí)行警報,縮放輸出,并使用內(nèi)存映射 I/O 寫入輸出(如圖所示)圖1)。后來有空了,我們合并了一些重復(fù)的代碼,但其實過程還是很簡單的。
廣告明星服務(wù)人山人海!砍10次,3分鐘打到極致,只等你!圖 1:原始扁平化編程風(fēng)格
當(dāng)控制軟件開始適應(yīng)多個任務(wù)時,工業(yè)程序員采用了集中式面向任務(wù)的方法。這種方法將操作劃分為單獨的任務(wù),然后一系列集中處理對程序中的標(biāo)簽執(zhí)行每個單獨的操作。第一個任務(wù)將讀取所有輸入,第二個任務(wù)將縮放所有輸入,下一個任務(wù)將在縮放點上執(zhí)行警報,依此類推,如圖 2 所示。
圖 2:面向任務(wù)的編程風(fēng)格
這種集中的面向任務(wù)的方法比平面方法有很大的改進,但是在向程序添加新功能時,它需要修改每個任務(wù)。此外數(shù)據(jù)結(jié)構(gòu)用面向?qū)ο蠓椒ㄅcc++描述,面向任務(wù)的編程常常使得在控制代碼中查看信息流和理解因果關(guān)系變得困難。這些缺點使得程序設(shè)計更加困難,工廠技術(shù)人員也難以維護(尤其是年輕的團隊成員,他們在OOP中學(xué)習(xí),對面向任務(wù)的編程不滿意)。
圖 3:面向?qū)ο蟮木幊田L(fēng)格
OOIP,如圖3 所示,轉(zhuǎn)變了面向任務(wù)的流程。這個函數(shù)不是分散在許多任務(wù)中,而是包含在“對象”中。由于工業(yè)控制工廠是由對象(例如:電機、傳送帶、閥門和傳感器)組成的,面向?qū)ο蟮木幊淌枪I(yè)控制的自然選擇……甚至可能比最初為 OOP 創(chuàng)建的計算機編程還要多!實際上,可以將控件的對象設(shè)計成與工廠中的對象相對應(yīng),使控制程序開始看起來與工廠設(shè)計非常相似,如圖4所示。 使用正確的控制圖編輯器,工廠設(shè)計圖和控制圖可以在同一張圖中!
圖 4:在 OOIP 中,控制設(shè)計是根據(jù)與物理工廠或設(shè)備設(shè)計中的對象相匹配的對象構(gòu)建的。
要實現(xiàn)OOIP,控制工程師只需要掌握兩個關(guān)鍵的OOP概念:封裝和實例化。
包裝形式
封裝允許創(chuàng)建對象,其中包含控制其匹配工廠對象所需的所有函數(shù)和數(shù)據(jù)。用戶不需要知道或理解底層實現(xiàn)......他們只是使用它!一個很好的比喻是汽車發(fā)動機。發(fā)動機封裝了活塞、閥門、軸承和許多其他物體和復(fù)雜的功能。駕駛員不需要知道發(fā)動機是如何工作的,他們只需要了解發(fā)動機的界面并與之交互:啟動按鈕和油門踏板。
出現(xiàn)在圖 4 左下方并在圖 5 中有詳細說明的模塊是 OOIP 封裝的一個很好的例子。該模塊封裝了模擬輸入的所有復(fù)雜性,包括縮放、鉗位、濾波、放大、變化率報警和高/低報警。程序員只關(guān)心塊的配置(_CI左端的輸入)和程序的輸出(和)。程序員不需要理解或擔(dān)心底層的復(fù)雜性。放下它并使用它......就像汽車中的發(fā)動機一樣。
圖 5:模擬輸入功能塊
實例化
實例化是聲明和使用一個對象的多個副本而不制作對象副本的能力。在-3 中,這些對象被稱為“功能塊”。功能塊是數(shù)據(jù)類型,就像整數(shù)或?qū)崝?shù)是數(shù)據(jù)類型一樣。通過以與聲明整數(shù)實例完全相同的方式聲明它們來創(chuàng)建功能塊的“實例”。在幕后,編譯器為功能塊的每個實例中的變量分配唯一的內(nèi)存,其方式與為實例分配內(nèi)存的方式完全相同。而且,正如您可以聲明無限數(shù)量的整數(shù)(最大存儲容量)一樣,您也可以聲明無限數(shù)量的特定功能塊實例。
圖 6:在連續(xù)函數(shù)圖編輯器中實例化對象
我喜歡在培訓(xùn)課程中使用的類比是福特野馬,如圖 7 所示。1964 年的福特野馬是車輛的“類型”(完全相同)整數(shù)是日期“類型” )。在創(chuàng)建它的實例之前,您無法駕駛 1964 年福特“Type”(以完全相同的方式,除非您聲明它,否則您無法使用它)。因此,指示福特裝配線為您創(chuàng)建 1964 年福特野馬實例的工單類似于指示編譯器為您分配內(nèi)存的語句。這樣數(shù)據(jù)結(jié)構(gòu)用面向?qū)ο蠓椒ㄅcc++描述,您車道上的 1964 年 Ford 就成為這種數(shù)據(jù)類型的實例。
圖 7:功能塊
但是正如您可以聲明(并且編譯器可以為其分配內(nèi)存)許多整數(shù)一樣,工廠可以制造“車輛”類型“的許多實例。這樣,您的鄰居就可以擁有自己的 1964 年 Ford ,它完全獨立于您的。它們的功能完全封裝在物體的每一個實例中(無法承受潛在的量子糾纏)。
接下來是
本系列的第 2 部分將展示如何使用其他三個概念:抽象、接口和嵌套將較低級別的對象組裝成更復(fù)雜的對象,以及如何重用這些概念從一組對象構(gòu)建整個工廠或機器?;緲?gòu)建塊。它還將展示如何將 I/O 映射到分布在整個設(shè)計中的對象,如何向?qū)ο筇砑訁?shù)輸入以增強其可重用性,以及如何創(chuàng)建中央配置服務(wù)以允許從單個 CSV 管理這些參數(shù)。文件或 SQL 數(shù)據(jù)庫。
總結(jié)
工具供應(yīng)商開始向控制工程師提供OOIP的優(yōu)勢。為了利用這些好處,控制工程師只需要掌握兩個關(guān)鍵的 OOP 概念:封裝和實例化。有了這些知識,控制工程師就可以將工廠對象的功能封裝成匹配的控制對象,然后將這些對象實例化,創(chuàng)建一個類似于工廠設(shè)計的控制設(shè)計。 OOIP 不僅使設(shè)計易于構(gòu)建,還使工廠技術(shù)人員可以輕松地對設(shè)計進行故障排除,并便于未來的控制工程師進行維護。正如工業(yè)控制領(lǐng)域采用了其他最好的通用軟件進步一樣,面向?qū)ο蟮墓I(yè)編程也遵循相同的模式。 OOIP顯然是控制工程的未來,振工鏈的工業(yè)自動化平臺。