• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    多核PLC編程研究

    2017-03-21 23:37:14董喆
    電腦知識(shí)與技術(shù) 2016年33期
    關(guān)鍵詞:編譯器梯形圖梯級(jí)

    董喆

    摘要:PLC,即可編程邏輯控制器,廣泛應(yīng)用于工業(yè)生產(chǎn)中的自動(dòng)化控制、信息采集環(huán)節(jié)。目前單核PLC逐漸難以應(yīng)對(duì)復(fù)雜的工業(yè)場(chǎng)景,多核處理器PLC有異構(gòu)等特性,在性能、功耗、響應(yīng)和計(jì)算能力方面有顯著優(yōu)勢(shì)。本文旨在分析多核處理器PLC的優(yōu)勢(shì)與編程方案。

    關(guān)鍵詞:可編程邏輯控制器;異構(gòu)多核系統(tǒng)

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)33-0198-02

    1 背景

    1.1 PLC的誕生與發(fā)展

    PLC全稱是Programmable Logic Controller,即可編程控制器,最早出現(xiàn)于20世紀(jì)60年代,伴隨著微處理器(MPU)和超大規(guī)模集成電路技術(shù)的發(fā)展迅速成長(zhǎng)。至20世紀(jì)80年代,歐美開始使用微處理器作為PLC的中央處理單元,確立了PLC的哈佛結(jié)構(gòu)。哈佛結(jié)構(gòu)用不同的存儲(chǔ)器分別存儲(chǔ)程序指令和數(shù)據(jù),這樣使得數(shù)據(jù)和程序指令的讀取可以同時(shí)進(jìn)行,具有較高的執(zhí)行效率。

    上世紀(jì)末,IEC 61131成為PLC國際標(biāo)準(zhǔn),以及微處理器技術(shù)飛速發(fā)展,PLC在體系結(jié)構(gòu)上,就是多核化和異構(gòu)化的發(fā)展趨勢(shì)。

    本世紀(jì)以來,PLC編程逐漸走向標(biāo)準(zhǔn)化,利用統(tǒng)一的編程標(biāo)準(zhǔn),可以突破不同PLC平臺(tái)的限制,方便地進(jìn)行PLC程序移植;基于標(biāo)準(zhǔn)編寫的程序,甚至可以在PLC與非PLC平臺(tái)之間移植。

    1.2 多核PLC前景

    多核處理器突破了單核處理器發(fā)展的瓶頸,異構(gòu)為多核帶來了更多優(yōu)點(diǎn)[1]:

    1)控制邏輯簡(jiǎn)單:?jiǎn)蝹€(gè)核心處理的任務(wù)類型單一;

    2)高主頻:全局信號(hào)少,減少了線延遲;

    3)強(qiáng)擴(kuò)展性:各核處理特定任務(wù),可以針對(duì)單個(gè)核心升級(jí)擴(kuò)展而不影響其他任務(wù);

    4)低功耗:多核體系中區(qū)分核內(nèi)時(shí)鐘和跨核時(shí)鐘,降低驅(qū)動(dòng)負(fù)載。

    傳統(tǒng)PLC大都采用分時(shí)任務(wù)操作系統(tǒng),把CPU劃分為多個(gè)時(shí)間片,每個(gè)任務(wù)輪流占用CPU;操作系統(tǒng)也有優(yōu)先級(jí)策略,可以滿足高響應(yīng)速度需求的進(jìn)程優(yōu)先占用;但時(shí)間片是基本的執(zhí)行單位,操作系統(tǒng)進(jìn)行任務(wù)切換也需要開銷,所以響應(yīng)速度只能局限在毫秒級(jí)。

    當(dāng)前PLC應(yīng)用在更大規(guī)模的問題上,數(shù)據(jù)和計(jì)算量都有了量級(jí)的提升,在更高精尖的領(lǐng)域,也需要更高的響應(yīng)速度,單核PLC的分時(shí)系統(tǒng)已經(jīng)難以滿足求。多核PLC中,采用分核操作系統(tǒng)實(shí)現(xiàn),將特定任務(wù)分配給特定的核心執(zhí)行,每個(gè)核心采用分時(shí)策略;對(duì)于需要快速響應(yīng)的任務(wù),通常可以使用專門的核心進(jìn)行通信;大量的計(jì)算和數(shù)據(jù)流,可以交給多個(gè)IO核心與計(jì)算核心并形完成。為了實(shí)現(xiàn)多個(gè)核心的協(xié)調(diào),多核PLC系統(tǒng)往往會(huì)有一個(gè)主核心,完成控制和協(xié)調(diào)工作。通過這種多核心任務(wù)分發(fā),減輕單個(gè)核心的負(fù)載,對(duì)整個(gè)系統(tǒng)的計(jì)算能力和響應(yīng)速度有很大的提升,是突破單核PLC性能瓶頸的方案。

    2 PLC圖形編程模型

    PLC大多數(shù)情況是面向非軟專業(yè)件開發(fā)人員,所以通常采用圖形化界面,無需代碼,直觀展示邏輯。PLC編程中通常使用梯形圖方式來表示器件,下面介紹一種PLC梯形圖編程的設(shè)計(jì)思路。

    2.1 梯形圖檢查

    梯形圖是用戶編程的圖形接口,需要進(jìn)行基本的檢查,類似于普通程序編譯器中的語法檢查[2]。檢查過程如圖1。

    短路判斷:記錄兩并連線之間的元件個(gè)數(shù)N,如果N=0,則判斷為短路。

    斷路判斷:沿著電路遍歷元件,并對(duì)經(jīng)過的元件設(shè)立標(biāo)志位VISITED=TRUE;梯形圖中存在VISITED=FALSE的元件,即可判斷其斷路。

    2.2構(gòu)造邏輯樹

    梯形圖是電路邏輯的圖形化表示,梯形圖必須轉(zhuǎn)化為指令表,進(jìn)而編譯成機(jī)器語言,才能在PLC的微處理器上執(zhí)行。梯形圖整個(gè)編輯過程是動(dòng)態(tài)添加與刪除,故采用鏈表存儲(chǔ)圖形元素;再把已完成的梯形圖構(gòu)造為樹[3]。

    經(jīng)過2.1檢查過的單個(gè)梯級(jí)圖,總能用樹形結(jié)構(gòu)表示。圖2展示了一個(gè)梯級(jí)圖轉(zhuǎn)換為樹形結(jié)構(gòu)的結(jié)果。通過逐個(gè)元件遍歷梯形圖,就能從葉節(jié)點(diǎn)到根節(jié)點(diǎn)生成一棵樹。樹的每個(gè)葉節(jié)點(diǎn)與梯級(jí)圖中的元件一一對(duì)應(yīng);每個(gè)非葉節(jié)點(diǎn),存儲(chǔ)了其子樹代表的局部電路的連接關(guān)系。每個(gè)梯級(jí)圖可轉(zhuǎn)換為一棵單根樹,該樹的所有元件出現(xiàn)在葉子節(jié)點(diǎn),所有的葉子節(jié)點(diǎn)都是元件。對(duì)于有多個(gè)梯級(jí)圖的PLC電路,會(huì)生成一個(gè)森林。

    梯級(jí)圖的遍歷方式與電流經(jīng)過的路徑一致,樹的生成按照從葉子到根逐層升高,對(duì)應(yīng)梯級(jí)圖中從元件到局部電路再到全局電路的表示。

    2.3遍歷邏輯樹生成指令

    對(duì)每個(gè)邏輯樹中的節(jié)點(diǎn)而言,需要回溯到其父節(jié)點(diǎn),獲取所有兄弟節(jié)點(diǎn),并根據(jù)父節(jié)點(diǎn)提供的連接關(guān)系與兄弟節(jié)點(diǎn)生成電路邏輯,所以每個(gè)節(jié)點(diǎn)必須包含如下信息:

    1) 節(jié)點(diǎn)信息:葉節(jié)點(diǎn)的元件類型或非葉節(jié)點(diǎn)的連接關(guān)系。

    2) 子節(jié)點(diǎn):可以采用線性結(jié)構(gòu)存儲(chǔ)指向所有孩子的指針。

    3) 父節(jié)點(diǎn):指向父節(jié)點(diǎn)的單個(gè)指針。

    一棵邏輯樹中的根節(jié)點(diǎn)、非葉非跟節(jié)點(diǎn)、葉節(jié)點(diǎn)可以通過子節(jié)點(diǎn)和父節(jié)點(diǎn)是否為空判斷。基于以上數(shù)據(jù)結(jié)構(gòu),可以通過樹的從底向上遍歷生成指令,規(guī)則如下:

    1) 起始時(shí),申請(qǐng)一個(gè)棧,用來存儲(chǔ)中間結(jié)果和原始操作數(shù);

    2) LD,直接將操作數(shù)入棧;

    3) ALD,棧頂兩個(gè)元素出棧,進(jìn)行與運(yùn)算,結(jié)果入棧;

    4) OLD,棧頂兩個(gè)元素出棧,進(jìn)行或運(yùn)算,結(jié)果入棧;

    5) =,棧頂元素出棧,并為當(dāng)前操作數(shù)賦值;

    6) 運(yùn)算指令,棧頂元素出棧,與當(dāng)前操作數(shù)預(yù)算,結(jié)果入棧。

    3 并行化方案

    傳統(tǒng)的PLC圖形編程已經(jīng)相對(duì)成熟,在傳統(tǒng)的編程模型基礎(chǔ)上,使用并行方案為不同的核心生成不同的控制邏輯與數(shù)據(jù)流,可以達(dá)到多核協(xié)作并發(fā)的目的。下面介紹幾種并行方案。

    3.1擴(kuò)展編譯器

    大多數(shù)的高級(jí)編程語言編寫的程序,都是經(jīng)過編譯器轉(zhuǎn)換為匯編指令,進(jìn)而轉(zhuǎn)換為機(jī)器碼才能被處理器所執(zhí)行。PLC編程也要經(jīng)過邏輯樹轉(zhuǎn)換為指令集,才能生成機(jī)器碼供MPU執(zhí)行,所以編譯器PLC程序執(zhí)行的必由之路,也是并行化的重要途徑[4]。

    編譯器是根據(jù)用戶編寫的程序生成指令的工具,所以并行化過程對(duì)用戶透明,不會(huì)給程序編寫人員帶來額外負(fù)擔(dān)。

    在多核異構(gòu)PLC平臺(tái)下,圖形化編程將梯形圖轉(zhuǎn)化為指令表,可以在這一步加入并行編譯器。編譯器需要綁定目標(biāo)PLC平臺(tái),根據(jù)核心分布情況,將不同的邏輯轉(zhuǎn)換為對(duì)應(yīng)核心的指令表。比如,IO密集型和計(jì)算密集型的任務(wù),需要分配給不同的核心。在實(shí)際應(yīng)用中,系統(tǒng)需要根據(jù)各核心的負(fù)載情況和公共資源使用,編譯器需要考慮到負(fù)載均衡、數(shù)據(jù)共享、訪問控制,否則容易產(chǎn)生運(yùn)算錯(cuò)誤或過長(zhǎng)的停止等待,影響多核的實(shí)際效率。

    由此可見,這個(gè)方案為編譯器提出了更加苛刻的要求:對(duì)于復(fù)雜的代碼,考慮到并行與體系結(jié)構(gòu)的緊密相關(guān)性,編譯器并不能識(shí)別很多并行代碼,從而造成并行程度不足;對(duì)于復(fù)雜的體系結(jié)構(gòu)和高關(guān)聯(lián)性任務(wù),編譯器無法勝任負(fù)載均衡、多核優(yōu)化等需求,使程序無法很好的并發(fā)執(zhí)行。因此,擴(kuò)展編譯器對(duì)多核PLC編程而言,是一種簡(jiǎn)單的實(shí)現(xiàn)方案,但存在先天不足。

    3.2擴(kuò)展串行語言

    擴(kuò)展串行語言有很多方式,在高級(jí)編程語言中,OpenMP是基于該方案一種流行的API。這類方案通過調(diào)用為使串行語言支持并行模型,例如多核情況下的消息通信、數(shù)據(jù)共享等。與編譯器擴(kuò)展方案不同,這種方式需要一定地代碼修改,顯式地調(diào)用相關(guān)API,指定并發(fā)的代碼段和同步方案。

    OpenMP值得借鑒的是,其與平臺(tái)無關(guān)的實(shí)現(xiàn)形式,這在多品牌、多型號(hào)的PLC市場(chǎng)顯得尤為重要。

    OpenMP的思想應(yīng)用到多核PLC平臺(tái),就需要PLC硬件對(duì)用戶提供多線程指令,同時(shí)需要主控核心執(zhí)行這些指令,將對(duì)應(yīng)的線程分配到對(duì)應(yīng)的核心。但是,PLC編程不是面向?qū)I(yè)的程序開發(fā)人員或硬件設(shè)計(jì)人員,所以直接操控硬件資源分配的編程方式具有很大的風(fēng)險(xiǎn),對(duì)PLC程序的穩(wěn)定性構(gòu)成了一定威脅。

    考慮到擴(kuò)展方式的優(yōu)勢(shì)和風(fēng)險(xiǎn),可以通過基于PLC虛擬機(jī)的集成開發(fā)環(huán)境實(shí)現(xiàn)。用戶根據(jù)串行方案編寫程序后,集成開發(fā)環(huán)境可以調(diào)用相關(guān)API做并行優(yōu)化,并在PLC虛擬機(jī)上執(zhí)行優(yōu)化后的機(jī)器碼,同時(shí)根據(jù)仿真情況給出性能報(bào)告,通過自優(yōu)化和用戶改進(jìn)提高并行效率,是一種可行的并行化方案。

    4 結(jié)論

    傳統(tǒng)計(jì)算機(jī)的多核編程方案對(duì)PLC編程有一定的借鑒意義,相信隨著PLC異構(gòu)多核技術(shù)的成熟與多核編程方案的成熟,多核PLC的應(yīng)用也會(huì)更加廣泛。

    參考文獻(xiàn):

    [1] 陶旭東.用于先進(jìn)PLC的異構(gòu)多核MPU研究與設(shè)計(jì)[D].沈陽理工大學(xué),2011.

    [2] 莫易敏,章德平,周哲.PLC梯形圖轉(zhuǎn)化為指令表算法及實(shí)現(xiàn)[J].控制工程,2006(6).

    [3] 保慧.PLC圖形化編程系統(tǒng)的研究與實(shí)現(xiàn)[J].現(xiàn)代機(jī)械,2006(1).

    [4] 伊君翰.基于多核的并行編程模型[D].復(fù)旦大學(xué),2008.

    [5] 汪前進(jìn),高勇,李存華.基于多核處理器的多任務(wù)并行處理技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2012(4).

    猜你喜歡
    編譯器梯形圖梯級(jí)
    基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
    梯級(jí)水電站多目標(biāo)聯(lián)合經(jīng)濟(jì)運(yùn)行初探
    基于VC的梯形圖編程軟件開發(fā)技術(shù)
    繼電器電路轉(zhuǎn)為梯形圖教學(xué)經(jīng)驗(yàn)淺談
    電子制作(2016年15期)2017-01-15 13:39:28
    PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
    跨流域梯級(jí)電站群遠(yuǎn)程集控管理模式的探索與實(shí)踐
    跨流域梯級(jí)電站群集中調(diào)控的探索與思考
    通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
    極性隱喻的梯級(jí)邏輯
    嵌入式軟PLC編程系統(tǒng)的設(shè)計(jì)
    得荣县| 松阳县| 茂名市| 平定县| 宜昌市| 新津县| 湾仔区| 长宁区| 连山| 巴青县| 若羌县| 松潘县| 钟祥市| 兴隆县| 蒙山县| 长岭县| 眉山市| 抚顺县| 紫金县| 铁岭市| 衡阳县| 淳化县| 石河子市| 无为县| 广昌县| 星子县| 桓台县| 商丘市| 敦煌市| 新田县| 讷河市| 灵宝市| 滦平县| 肃北| 崇左市| 漠河县| 惠东县| 勐海县| 广安市| 金阳县| 蛟河市|