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

    探討如何應(yīng)用數(shù)組嵌套結(jié)構(gòu)實現(xiàn)PLC數(shù)據(jù)塊有序編址

    2020-04-17 14:53楊擁軍
    科學(xué)與信息化 2020年3期
    關(guān)鍵詞:嵌套數(shù)組物流

    楊擁軍

    摘 要 文章提出了數(shù)據(jù)塊(DB)中數(shù)組(Array)和結(jié)構(gòu)(Struct)等復(fù)雜數(shù)據(jù)類型的嵌套在物流輸送線自控西門子PLC程序中的應(yīng)用方案,該方案在PLC數(shù)據(jù)塊中的用戶數(shù)據(jù)存儲地址與實際設(shè)備號之間建立了數(shù)學(xué)模型,實現(xiàn)有序編址。以卷煙物流高架倉庫PLC控制程序為實例介紹了具體的實現(xiàn)過程,并詳細(xì)介紹了西門子Step7中的實現(xiàn)數(shù)組與結(jié)構(gòu)的嵌套、利用指針尋址以及數(shù)據(jù)傳遞的方法。

    關(guān)鍵詞 數(shù)組;Struct;嵌套;物流;PLC

    引言

    在卷煙自動化物流控制系統(tǒng)中,信息流是不可或缺,需要同步傳遞的。PLC控制物流輸送時,運行參數(shù)、托盤條碼、物料品種等信息也同步傳遞。如何有序地存儲這些數(shù)據(jù),方法有很多。巧用數(shù)組和結(jié)構(gòu)這些復(fù)雜數(shù)據(jù)類型嵌套,是一個可行的方法[1]。

    1 數(shù)組和結(jié)構(gòu)的定義

    數(shù)組( Array)數(shù)據(jù)類型表示一個由固定數(shù)目的同一種數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu)。Array有時也被譯為“矩陣”。數(shù)組中的元素允許使用除了Array之外的所有數(shù)據(jù)類型。

    STEP7中復(fù)雜數(shù)據(jù)類型(Struct)表示一個由確定數(shù)目組件構(gòu)成的數(shù)據(jù)結(jié)構(gòu),組件的數(shù)據(jù)類型可能各不相同。

    嵌套的結(jié)構(gòu)就是指一個結(jié)構(gòu)作為另一個結(jié)構(gòu)的組件,結(jié)構(gòu)允許的嵌套深度可達(dá)6層。

    2 問題提出

    這幾百臺輸送機(jī)上需要傳遞的數(shù)據(jù)包含有多種基本數(shù)據(jù)類型,任務(wù)號、起始地址、目標(biāo)地址、件煙數(shù)量等為整形(INT),托盤條碼為雙整形(DINT),超長、超寬、超高等外型數(shù)據(jù)為布爾形(BOOL)。這幾千組數(shù)據(jù)如果直接在數(shù)據(jù)塊中順序建立和聲明,那將是非常大的工作量,程序維護(hù)起來非常困難[2]。

    3 解決思路

    數(shù)組( Array)和結(jié)構(gòu)(Struct)的嵌套可以很好地解決這個問題。具體做法是:建立一個Struct數(shù)據(jù)類型,分配固定長度的存儲區(qū)域,把需要傳遞的信息按照一定規(guī)則放在這一區(qū)域,每臺輸送機(jī)對應(yīng)一個Struct;

    然后再建立一個數(shù)據(jù)塊,聲明一維數(shù)組Array,數(shù)組的上下邊界包含設(shè)備的所有平面,使數(shù)組順序與設(shè)備編號一一對應(yīng),可以一個建立數(shù)學(xué)模型。如設(shè)備編號從3001開始,就定義ARRAY[3001..3500]。在Array內(nèi)嵌套剛建立的Struct數(shù)據(jù)類型,就能把存放地址排序分配了。需要傳遞信息時,利用POINTER型指針尋址,將上一個輸送機(jī)的Struct傳送到下一個的Struct,實現(xiàn)信息的批量傳遞。

    4 物流信息有序存儲及傳遞的功能實現(xiàn)

    4.1 搭建環(huán)境

    西門子S7系列PLC都有很強(qiáng)的數(shù)據(jù)存儲能力,為物流控制系統(tǒng)的信息流傳遞提供了很好的支撐。以西門子S7-300為例,實例說明數(shù)組在物流控制程序的應(yīng)用。

    4.2 建立數(shù)據(jù)塊,聲明一維數(shù)組Array

    插入一個數(shù)據(jù)塊,選擇復(fù)雜數(shù)據(jù)類型中的Array數(shù)組。數(shù)組以實際的設(shè)備平面號為邊界,比如生產(chǎn)線400多臺的輸送機(jī)平面號以3001為基準(zhǔn)平面號,就定義數(shù)組Array[3001..3500],抽象的數(shù)組更貼近實際生產(chǎn)現(xiàn)場,容易理解。

    由于數(shù)組內(nèi)的數(shù)據(jù)類型要求同一種數(shù)據(jù)類型元素,所以在數(shù)組內(nèi)再嵌套聲明一個Struct數(shù)據(jù)類型。自定義的Struct長度為20個字。在這20個字里再定義任務(wù)號、起始地址、目標(biāo)地址、品牌代碼、件煙數(shù)量(INT)、托盤條碼(DINT),超長、超寬、超高(BOOL)等外型數(shù)據(jù)。這樣就巧妙地將不同數(shù)據(jù)類型的幾千條信息都存放在一個數(shù)組Array里。

    4.3 數(shù)學(xué)模型的建立與地址邊界計算

    每臺設(shè)備的存放地址分配原則從建立數(shù)據(jù)塊的思路中可以得知,一個Struct表示存儲一臺設(shè)備的信息,每臺輸送機(jī)分配了20個字節(jié)。設(shè)備的平面號以3001起始,那么就以3001為基準(zhǔn)平面號。計算某臺設(shè)備的存儲地址時,以當(dāng)前設(shè)備平面號減去基準(zhǔn)平面號3001的差值,再乘以20,就是這臺設(shè)備的存儲起始字節(jié)邊界。

    當(dāng)設(shè)備編號為N,基準(zhǔn)平面號M,存儲起始字節(jié)邊界為S,那么

    S=(N-M)*20

    如設(shè)備3013,基準(zhǔn)平面號3001,則設(shè)備3013的存儲起始地址為:

    S=(3013-3001)*20=240,

    它的物料信息在DB50數(shù)據(jù)塊中的存放地址為DB50.dbw240,以DB50.dbw240為起始字節(jié),向后20個字。

    4.4 編寫功能塊,利用指針POINTER信息傳遞

    (1) 起始地址和目標(biāo)地址的計算

    建立一個FC塊,變量#EQU1_NO表示從哪臺設(shè)備傳遞;#EQU2_NO要傳遞給哪臺設(shè)備;#OFFSET表示基準(zhǔn)平面號;

    #EQU1_NO與基準(zhǔn)平面號#OFFSET的差值再乘以20,再乘以8,就是傳遞起始設(shè)備的起始地址位,地址存放在地址寄存器AR1中。

    #EQU2_NO與基準(zhǔn)平面號#OFFSET的差值再乘以20,再乘以8,就是傳遞目標(biāo)設(shè)備的起始地址位。地址存放在地址寄存器AR2中。

    (2) 利用POINTER指針進(jìn)行數(shù)據(jù)傳遞

    如上圖2,變量#DB_INFO表示數(shù)據(jù)塊DB50;變量#INFO_LENGTH表示地址區(qū)域長度;地址寄存器AR1和AR2存放著剛才計算出的要傳遞的起始地址和目標(biāo)地址的邊界。

    當(dāng)邏輯條件具備時,就會把前一臺設(shè)備存儲區(qū)域的第一位傳遞給當(dāng)前設(shè)備的對應(yīng)位。每傳遞一個字節(jié),地址寄存器AR1、AR2的POINTER指針者向后偏移1個字節(jié)。如此循環(huán)20次,將20個字節(jié)的數(shù)據(jù)都傳遞到下一個Struct。如圖3。

    (3) 功能的調(diào)用

    當(dāng)FC塊編寫完成后,在程序中可以調(diào)用FC塊,給變量賦值,當(dāng)條件具備時,設(shè)備3013的信息就傳遞到設(shè)備3014中。

    5 物流PLC編程中應(yīng)用數(shù)組嵌套結(jié)構(gòu)的優(yōu)點

    5.1 數(shù)據(jù)編址邏輯清晰,層次分明。

    采用復(fù)雜數(shù)據(jù)類型來存儲、可以在存儲地址與實際設(shè)備之間建立數(shù)學(xué)關(guān)系,實現(xiàn)了物流信息的有序存儲。解決了輸送生產(chǎn)線大批量設(shè)備在PLC中的信息編址的問題,這在卷煙自動化物流倉儲控制程序中實用性很強(qiáng)。

    5.2 程序結(jié)構(gòu)簡單

    通過Array與Struct的嵌套,解決了Array里只能有同一種數(shù)據(jù)類型元素的問題,使數(shù)據(jù)塊的聲明長度明顯減少。只需要聲明一次Struct數(shù)據(jù)類型就可以把所有設(shè)備的數(shù)據(jù)都涵蓋了。

    5.3 程序通用性和可擴(kuò)展性強(qiáng)

    數(shù)組在建立時的數(shù)據(jù)終始邊界就大于現(xiàn)有的設(shè)備數(shù)量。當(dāng)生產(chǎn)線增加或減少設(shè)備時,只需在主程序中插入調(diào)用語句即可,增強(qiáng)了程序的通用性和可擴(kuò)展性。

    6 結(jié)束語

    對于自動化物流系統(tǒng)來說,物流與信息流的同步傳遞是非常重要的。在存儲地址與實際設(shè)備之間建立數(shù)學(xué)模型,對于編寫大規(guī)模生產(chǎn)線PLC程序時非常有用。巧用數(shù)組(Array)與結(jié)構(gòu)(Struct)的嵌套,可能很好地解決大量數(shù)據(jù)信息的編址問題,實現(xiàn)了存儲地址與實際設(shè)備建立數(shù)學(xué)對應(yīng)關(guān)系,數(shù)據(jù)可以有序存儲與傳遞,減少了程序體積,也使程序的通用性的可擴(kuò)展性增強(qiáng)。

    參考文獻(xiàn)

    [1] 時文飛.數(shù)組式編程方法在PLC編程中的應(yīng)用[J].電氣傳動,2014, 44(1):85-87.

    [2] 李琦.數(shù)據(jù)結(jié)構(gòu)和指針在PLC編程中的靈活運用[C].中國儀器儀表學(xué)會第六次全國會員代表大會暨學(xué)術(shù)會議.中國儀器儀表學(xué)會第六次全國會員代表大會暨學(xué)術(shù)會議論文集.北京:中國儀器儀表學(xué)會,2003:124-126,130.

    猜你喜歡
    嵌套數(shù)組物流
    物流線上的毒品追蹤
    JAVA稀疏矩陣算法
    JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
    更高效用好 Excel的數(shù)組公式
    嵌套交易如何實現(xiàn)逆市盈利
    多參數(shù)最大、最小值嵌套問題的研究
    巧用嵌套交易實現(xiàn)逆市盈利
    表格在網(wǎng)頁中的靈活運用
    尋找勾股數(shù)組的歷程
    2009年本刊重點關(guān)注之物流展會、交流會
    乌拉特中旗| 三原县| 天等县| 新津县| 天峨县| 隆尧县| 积石山| 百色市| 六枝特区| 白朗县| 郸城县| 建湖县| 板桥市| 上林县| 翁源县| 肇州县| 潼关县| 庄浪县| 通许县| 如东县| 凤山市| 馆陶县| 大埔县| 东港市| 山西省| 杨浦区| 鹰潭市| 兴海县| 射洪县| 漳浦县| 泸定县| 连城县| 榆林市| 阿巴嘎旗| 宾川县| 尚志市| 汾西县| 慈溪市| 宜宾市| 台北县| 房山区|