999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

指針和數(shù)組在PLC 數(shù)據(jù)傳送邏輯中的應(yīng)用

2023-09-27 04:51:48張新杰
科技創(chuàng)新與應(yīng)用 2023年27期

張新杰

(上海振華重工(集團(tuán))股份有限公司,上海 200125)

在大型自動(dòng)化生產(chǎn)線項(xiàng)目中,每個(gè)自動(dòng)化工位之間和工位內(nèi)部都會(huì)涉及到數(shù)據(jù)的存儲(chǔ)、讀寫和傳送問題。PLC 具有結(jié)構(gòu)簡(jiǎn)單、編程方便、可靠性高等特點(diǎn),在工業(yè)及生產(chǎn)過程中得到廣泛應(yīng)用[1]。但是PLC 常用的編程語言功能簡(jiǎn)單,無法實(shí)現(xiàn)復(fù)雜的控制邏輯和算法運(yùn)算[1-2]。隨著我國生產(chǎn)水平的不斷發(fā)展與進(jìn)步,傳統(tǒng)工業(yè)制造對(duì)電氣自動(dòng)化控制也有了新的需求。信息技術(shù)與傳統(tǒng)工業(yè)制造行業(yè)的結(jié)合是必然趨勢(shì)[3],PLC對(duì)復(fù)雜的控制邏輯和算法運(yùn)算的需求勢(shì)必會(huì)日益增大。隨著高級(jí)編程語言在PLC 中的應(yīng)用日益普遍[4],研究在PLC 編程中應(yīng)用高級(jí)編程語言具有重要的現(xiàn)實(shí)意義。

本文在PLC 編程中應(yīng)用高級(jí)編程語言的數(shù)組和指針編程方式,用來解決實(shí)際控制邏輯中大量數(shù)據(jù)的傳送問題。寄希望本文能起到拋磚引玉的效果,引起讀者對(duì)PLC 編程中的高級(jí)編程語言學(xué)習(xí)的重視。

1 產(chǎn)線概述及工況分析

某大型剪叉自動(dòng)焊接生產(chǎn)線項(xiàng)目中,由剪叉激光切割工位、剪叉人工組隊(duì)工位、剪叉半成品板鏈線工位、剪叉自動(dòng)焊接工位、搬運(yùn)機(jī)器人、剪叉成品板鏈線工位、剪叉成品緩存工位和AGV 運(yùn)輸小車駐車工位組成。其中,剪叉成品緩存工位上游“聯(lián)接”剪叉成品板鏈線工位和剪叉自動(dòng)焊接工位,下游“銜接”AGV 運(yùn)輸小車。該剪叉成品緩存工位有伺服電機(jī)驅(qū)動(dòng)的“桁架”,負(fù)責(zé)從板鏈線工位上抓取剪叉成品,經(jīng)過RFID 識(shí)別后分別存放至剪叉成品緩存工位的緩存區(qū)域。根據(jù)剪叉成品不同的型號(hào)規(guī)格,緩存區(qū)域設(shè)置有20 個(gè)剪叉緩存位置;每個(gè)緩存位置可以疊放至8 層。同時(shí),AGV 運(yùn)輸小車上有可以疊放8 層的10 個(gè)剪叉存放位置?!拌旒堋辈粌H負(fù)責(zé)從剪叉成品板鏈線工位抓取剪叉成品存放于剪叉緩存區(qū)域,同時(shí)也負(fù)責(zé)從剪叉緩存區(qū)域抓取剪叉成品至AGV 運(yùn)輸小車的剪叉存放位置。

在剪叉成品緩存工位中,有一個(gè)剪叉成品板鏈線取料點(diǎn)位置,一個(gè)桁架停車位;有20 個(gè)剪叉成品緩存區(qū)域位置以及10 個(gè)AGV 的剪叉存放位置,共計(jì)32 個(gè)位置點(diǎn)。每個(gè)位置點(diǎn)有4 個(gè)位置數(shù)據(jù)值需要存儲(chǔ),分別是:大車方向位置值(X 方向),小車方向位置值(Y 方向),起升方向位置值(Z 方向)及疊放層數(shù)的數(shù)值。綜上,該工位僅存取位置值所需位置數(shù)據(jù)量已經(jīng)多達(dá)128 個(gè)。而剪叉成品緩存工位能否正確運(yùn)行的關(guān)鍵,取決于PLC 控制系統(tǒng)能否給到正確的大車方向、小車方向和起升方向的位置數(shù)據(jù)值至大車、小車和起升伺服控制器。剪叉成品緩存工位的總覽圖如圖1 所示。

圖1 剪叉成品緩存工位總覽

2 數(shù)據(jù)傳送邏輯分析和優(yōu)化

2.1 數(shù)據(jù)傳送邏輯分析

剪叉成品緩存工位一旦剪叉成品板鏈線位置、20個(gè)剪叉成品緩存區(qū)域以及AGV 停車位置確定,那么這32 個(gè)位置點(diǎn)相對(duì)于桁架的“零點(diǎn)”的數(shù)據(jù)值就會(huì)確定;這些數(shù)據(jù)值就是伺服控制器運(yùn)行的目標(biāo)值。

拋開其他的PLC 控制邏輯不談,如果按照常規(guī)的PLC 編程方式把每個(gè)位置點(diǎn)的位置數(shù)據(jù)傳送到伺服控制器,這就需要使用“MOVE”指令。把上述確定的位置數(shù)據(jù)值發(fā)送至伺服控制器,一個(gè)位置點(diǎn)需要使用4 次“MOVE”指令;32 個(gè)位置點(diǎn)需要使用128 次“MOVE”指令。編寫完成這段數(shù)據(jù)傳送邏輯后,會(huì)發(fā)現(xiàn)以下2 個(gè)問題。

2.1.1 數(shù)據(jù)傳送邏輯篇幅冗長,不夠簡(jiǎn)練

僅僅一個(gè)傳送位置數(shù)據(jù)到伺服控制器的邏輯,就需要重復(fù)使用“MOVE”指令128 次。篇幅過長,增加查看邏輯、尋找故障上的困難。如果存儲(chǔ)的位置點(diǎn)再增加的話,這段數(shù)據(jù)傳送邏輯篇幅需要得更長。

2.1.2 數(shù)據(jù)傳送邏輯修改不方便、易出錯(cuò)

現(xiàn)場(chǎng)調(diào)試階段不確定因素較多,位置點(diǎn)的增加、減少或者調(diào)整的情況屢見不鮮。在這種情況下就會(huì)出現(xiàn)大量的邏輯增加、刪除或者數(shù)據(jù)修改工作。稍有不慎,很容易出錯(cuò);給調(diào)試工作帶來諸多不便。對(duì)于大型復(fù)雜的控制系統(tǒng),修改某一局部控制邏輯時(shí),很可能會(huì)牽涉到整個(gè)系統(tǒng)的每個(gè)環(huán)節(jié),給系統(tǒng)其他部分造成意料不到的影響[2]。

2.2 數(shù)據(jù)傳送邏輯優(yōu)化

常規(guī)的編程方式需要大量的重復(fù)使用“MOVE”指令,而且一旦修改或刪除即有可能對(duì)整個(gè)控制系統(tǒng)造成嚴(yán)重的影響。能否簡(jiǎn)化僅使用一個(gè)“標(biāo)識(shí)”就能同時(shí)發(fā)送多個(gè)數(shù)據(jù)呢?高級(jí)編程語言中的“指針”和“數(shù)組”不就是利用指針來傳送數(shù)據(jù)的嗎[5-6]?利用“指針和數(shù)組”的思維,重新梳理下位置數(shù)據(jù)傳送的這段邏輯。

首先在PLC 控制程序中,建立4 個(gè)一維數(shù)組;分別對(duì)應(yīng)32 個(gè)位置點(diǎn)大車方向位置值、小車方向位置值、起升方向位置值和疊放層數(shù)的數(shù)值。數(shù)組內(nèi)的元素初步設(shè)定為40 個(gè),從0~39;并規(guī)定板鏈線大車位置[0]作為板鏈線的位置數(shù)據(jù)值,板鏈線大車位置[1]~[20]作為存儲(chǔ)區(qū)1 號(hào)至20 號(hào)位置數(shù)據(jù),板鏈線大車位置[24]作為桁架停車位位置數(shù)據(jù),板鏈線大車位置[25]~[34]作為AGV 存儲(chǔ)區(qū)10 個(gè)位置值數(shù)據(jù)(板鏈線大車位置[21]~[23]和[35]~[39]作為備用)。將32 個(gè)位置點(diǎn)的大車方向位置值、小車方向位置值、起升方向位置值和疊放數(shù)量值分別填入對(duì)應(yīng)的數(shù)據(jù)內(nèi),并把這些數(shù)據(jù)的屬性設(shè)置為斷電保持;防止這些位置數(shù)據(jù)值的丟失。

現(xiàn)在,只需要一個(gè)“指針”指向想要讀取或者寫入的位置數(shù)據(jù)即可;這樣位置數(shù)據(jù)傳送的這段邏輯就極大地簡(jiǎn)化。位置數(shù)據(jù)的修改只需要到相應(yīng)的數(shù)組內(nèi)修改即可。同時(shí),位置點(diǎn)的數(shù)量也可以通過調(diào)整數(shù)組內(nèi)元素的數(shù)量來調(diào)整。極大方便了現(xiàn)場(chǎng)的調(diào)試,也降低現(xiàn)場(chǎng)修改邏輯的工作量及發(fā)生錯(cuò)誤的機(jī)率。

3 數(shù)據(jù)傳送邏輯的實(shí)現(xiàn)

3.1 利用系統(tǒng)功能塊實(shí)現(xiàn)數(shù)據(jù)傳送邏輯

在西門子PLC 中,S1500 系列相對(duì)高等級(jí)的PLC中使用FileRead:讀取域的功能塊就可以實(shí)現(xiàn)上述功能。從該功能塊的幫助文檔中可以得知,INDEX 是要讀取數(shù)據(jù)值的索引值,MEMBER 是要讀取數(shù)據(jù)數(shù)組的第一個(gè)元素;而VALUE 則是讀取到索引值對(duì)應(yīng)數(shù)據(jù)值[7]。PLC 程序中讀取桁架大車位置數(shù)據(jù)的程序邏輯,如圖2所示。

圖2 FileRead 讀取域功能塊

根據(jù)FileRead 讀取域的幫助文檔說明,當(dāng)需要板鏈線大車方向位置數(shù)據(jù)時(shí),只需要把INDEX 輸入“指令變量”的值設(shè)置為0;VALUE 輸出的值就把板鏈線大車位置值數(shù)組內(nèi)第一個(gè)數(shù)值(板鏈線)自動(dòng)傳送到“自動(dòng)運(yùn)行大車目標(biāo)值”的變量中。而當(dāng)需要AGV 存儲(chǔ)區(qū)10 號(hào)位置時(shí),需要把“指令變量”的值設(shè)置為34 即可。這里的“指令變量”就類似高級(jí)編程語言中的“指針”,利用修改“指針”的數(shù)值,得到想要的數(shù)組內(nèi)的數(shù)值[5-6]。

以此類推,利用FileRead 讀取域的功能塊同樣可以很方便得到桁架所需要的小車方向位置數(shù)據(jù)、起升方向位置數(shù)據(jù)及疊放數(shù)量值,進(jìn)行數(shù)據(jù)計(jì)算和下一步的邏輯處理。

3.2 編寫程序塊實(shí)現(xiàn)數(shù)據(jù)傳送邏輯

如果PLC 中沒有FileRead 讀取域的系統(tǒng)功能塊時(shí),則可以利用“指針和數(shù)組”的編程方式編寫功能塊來實(shí)現(xiàn)相同的功能。在西門子PLC 中,使用高級(jí)編程語言SCL(結(jié)構(gòu)化控制語言)編寫相應(yīng)程序邏輯就可以實(shí)現(xiàn)和FileRead 讀取域系統(tǒng)功能塊相同的功能。

首先是讀取功能塊輸入的數(shù)據(jù)(整型數(shù)據(jù)的一維數(shù)組),把一維數(shù)組內(nèi)的數(shù)據(jù)存入臨時(shí)的一維數(shù)組內(nèi)(Temp_Int_Arr)。利用Index_Data 的“指針”變量指向要讀取的數(shù)據(jù),并通過#Temp_REF_Data:= REF(#Temp_Int_Arr [#index_Data]) 以及#Int_DataOut:=#Temp_REF_ Data^;語句輸出。功能塊邏輯及功能對(duì)比測(cè)試左側(cè)部分的控制邏輯,如圖3 所示。

圖3 功能塊邏輯及功能對(duì)比測(cè)試

編寫完成功能塊后,在主程序中分別調(diào)用ArrayDataRead 功能塊和FieldRead 系統(tǒng)功能塊。在“指針”變量輸入側(cè)填入相同的變量(Pointer1),數(shù)據(jù)輸入側(cè)填入相同的一維數(shù)組(Test_DB.Test_Int_Data)。下載程序后運(yùn)行并在線監(jiān)控,從圖3 功能塊邏輯及功能對(duì)比測(cè)試的右側(cè)部分可以看到,編寫的ArrayDataRead 功能塊和FieldRead 系統(tǒng)功能塊運(yùn)行輸出的結(jié)果相同,證明編寫的功能塊ArrayDataRead 和系統(tǒng)功能塊FieldRead 有相同的功能。

綜上所述,無論是采用FieldRead 系統(tǒng)功能塊還是使用自主編寫的ArrayDataRead 功能塊,都能極大地簡(jiǎn)化桁架位置數(shù)據(jù)傳送的控制邏輯;降低桁架位置數(shù)據(jù)傳送控制邏輯的編寫量,使PLC 程序更易于查看、修改和故障排查。

4 “指針和數(shù)組”應(yīng)用的拓展

無獨(dú)有偶,在某項(xiàng)目設(shè)備的編碼器參數(shù)傳送邏輯中,同樣也應(yīng)用到“指針和數(shù)組”編程方式,實(shí)現(xiàn)了根據(jù)設(shè)備ID 進(jìn)行編碼器參數(shù)傳動(dòng)功能的邏輯。根據(jù)項(xiàng)目控制邏輯的需求,通過設(shè)備的ID 進(jìn)行判斷,從而傳送出左右2 個(gè)不同的編碼器參數(shù)并進(jìn)行長度數(shù)據(jù)的運(yùn)算。

首先,在PLC 中設(shè)置128 個(gè)整形量編碼器參數(shù)的一維整型變量數(shù)組Paramter_Array;并根據(jù)需要設(shè)置相應(yīng)的編碼器參數(shù)(按照先右側(cè)編碼器參數(shù)后左側(cè)編碼器參數(shù)排列,共64 組)。然后,將設(shè)備的ID 作為“指針”進(jìn)行轉(zhuǎn)換并計(jì)算,把計(jì)算結(jié)果放入臨時(shí)變量Temp 中;即Temp:=(Byte_To_Int(SP_ID)-1)*4;。緊接著獲得一維數(shù)據(jù)的首地址ADR(Patameter_Array);那么右側(cè)編碼器參數(shù)數(shù)據(jù)的地址為Ptr:=ADR(Patameter_Array)+Temp;,左側(cè)編碼器參數(shù)數(shù)據(jù)的地址為Ptr1:=ADR(Patameter_Array)+Temp+2;。最后把左右兩側(cè)編碼器的數(shù)參數(shù)據(jù)分別輸出,即R_Encode_Para:=Ptr^;和L_Encode_Para:=Ptr1^;。這樣就可以實(shí)現(xiàn)以設(shè)備的ID 作為“指針”;來獲取對(duì)應(yīng)的左右兩側(cè)編碼器參數(shù)的功能。圖4 為獲取設(shè)備編碼器參數(shù)圖片內(nèi)所示的控制邏輯。

圖4 獲取設(shè)備編碼器參數(shù)

5 結(jié)束語

在PLC 控制邏輯中采用高級(jí)編程語言中的“指針和數(shù)組”編程方式,不僅順利解決了剪叉成品緩存工位中桁架定位數(shù)據(jù)的存儲(chǔ)和傳送問題,以及實(shí)現(xiàn)用設(shè)備ID 選擇編碼器參數(shù)的功能,而且極大地簡(jiǎn)化數(shù)據(jù)傳送的控制邏輯。增加了PLC 控制邏輯的可讀性,降低桁架位置數(shù)據(jù)傳送和編碼器參數(shù)選擇控制邏輯的編寫量,使PLC 程序更易于查看、修改和故障排查。隨著科學(xué)技術(shù)的不斷進(jìn)步,PLC 的控制系統(tǒng)將會(huì)日趨龐大和復(fù)雜;其勢(shì)必會(huì)面臨更為復(fù)雜的控制邏輯及算法計(jì)算。因此,對(duì)PLC 編程中高級(jí)編程語言的學(xué)習(xí)愈發(fā)緊迫和重要。

主站蜘蛛池模板: 亚洲人成高清| 成人日韩精品| 福利一区在线| 伊人色婷婷| 中字无码精油按摩中出视频| 日韩精品成人在线| 欧美日韩另类在线| 中文字幕人成乱码熟女免费| 波多野结衣视频一区二区 | 国产91丝袜在线播放动漫 | 在线亚洲小视频| 欧美日韩国产一级| 亚洲男人的天堂在线| 欧美日韩国产成人高清视频| 国产精品永久不卡免费视频| 国产无码制服丝袜| 国产丰满成熟女性性满足视频| 亚洲精选无码久久久| 91人人妻人人做人人爽男同| 青青草原偷拍视频| 亚洲精品欧美重口| 99re精彩视频| 国产精品所毛片视频| 日本成人精品视频| 久久精品中文字幕免费| 久久五月视频| 成年看免费观看视频拍拍| 3D动漫精品啪啪一区二区下载| 伊人大杳蕉中文无码| 国产性精品| 香蕉伊思人视频| 久久久久国产精品熟女影院| 一级在线毛片| 黄色片中文字幕| 亚洲欧美在线综合图区| 人妻21p大胆| 亚洲国产日韩在线成人蜜芽| 国产区在线看| 九九视频免费在线观看| 欧洲av毛片| 国产男人天堂| 国产大片黄在线观看| 亚洲国产日韩欧美在线| 青青久在线视频免费观看| 91亚洲影院| 国产激情无码一区二区免费| 国产黑丝视频在线观看| 91在线国内在线播放老师| 午夜电影在线观看国产1区| 精品日韩亚洲欧美高清a | 91啦中文字幕| 狠狠做深爱婷婷综合一区| 色偷偷男人的天堂亚洲av| 日韩区欧美区| 国产精品浪潮Av| 乱系列中文字幕在线视频| 呦系列视频一区二区三区| 久久久久久久久亚洲精品| 五月婷婷综合色| 亚洲欧美一区二区三区蜜芽| 青草精品视频| 国产成人精品免费av| 欧美中文一区| P尤物久久99国产综合精品| 草草线在成年免费视频2| 91精品啪在线观看国产| 亚洲成A人V欧美综合| 国产真实二区一区在线亚洲| 欧美在线精品一区二区三区| 无码有码中文字幕| 中文字幕资源站| 国产主播一区二区三区| 国产成人精品第一区二区| 亚洲乱伦视频| 精品国产中文一级毛片在线看| 色香蕉影院| 啦啦啦网站在线观看a毛片| 国产精品视频3p| 综合色婷婷| 超薄丝袜足j国产在线视频| 免费毛片视频| 激情网址在线观看|