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)簡單、編程方便、可靠性高等特點(diǎn),在工業(yè)及生產(chǎn)過程中得到廣泛應(yīng)用[1]。但是PLC 常用的編程語言功能簡單,無法實(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é)合是必然趨勢[3],PLC對(duì)復(fù)雜的控制邏輯和算法運(yùn)算的需求勢必會(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è)剪叉存放位置。“桁架”不僅負(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ù)傳送邏輯篇幅冗長,不夠簡練

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

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

現(xiàn)場調(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)重的影響。能否簡化僅使用一個(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ù)傳送的這段邏輯就極大地簡化。位置數(shù)據(jù)的修改只需要到相應(yīng)的數(shù)組內(nèi)修改即可。同時(shí),位置點(diǎn)的數(shù)量也可以通過調(diào)整數(shù)組內(nèi)元素的數(shù)量來調(diào)整。極大方便了現(xiàn)場的調(diào)試,也降低現(xiàn)場修改邏輯的工作量及發(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è)部分的控制邏輯,如圖3 所示。

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

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

綜上所述,無論是采用FieldRead 系統(tǒng)功能塊還是使用自主編寫的ArrayDataRead 功能塊,都能極大地簡化桁架位置數(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ù)的功能,而且極大地簡化數(shù)據(jù)傳送的控制邏輯。增加了PLC 控制邏輯的可讀性,降低桁架位置數(shù)據(jù)傳送和編碼器參數(shù)選擇控制邏輯的編寫量,使PLC 程序更易于查看、修改和故障排查。隨著科學(xué)技術(shù)的不斷進(jìn)步,PLC 的控制系統(tǒng)將會(huì)日趨龐大和復(fù)雜;其勢必會(huì)面臨更為復(fù)雜的控制邏輯及算法計(jì)算。因此,對(duì)PLC 編程中高級(jí)編程語言的學(xué)習(xí)愈發(fā)緊迫和重要。

主站蜘蛛池模板: 国产微拍一区| 欧美伊人色综合久久天天| 99人体免费视频| 久久久黄色片| 久久国产精品波多野结衣| 国产精品伦视频观看免费| 亚洲精品日产精品乱码不卡| 72种姿势欧美久久久久大黄蕉| 亚洲国产成人麻豆精品| 中文字幕一区二区视频| 国产精品无码久久久久久| 成人小视频网| 日本91视频| 第九色区aⅴ天堂久久香| 国产精品刺激对白在线| 无码一区中文字幕| 亚洲AV无码不卡无码| 国产精品开放后亚洲| 国产精品一区在线麻豆| 中文无码毛片又爽又刺激| 三级毛片在线播放| 国产毛片基地| 免费jizz在线播放| 香蕉久人久人青草青草| 国产欧美视频在线观看| 无码综合天天久久综合网| 天堂网亚洲系列亚洲系列| www.狠狠| 丁香五月激情图片| 国产综合精品一区二区| 制服丝袜在线视频香蕉| 亚洲精品色AV无码看| 99热这里只有精品免费国产| 久久国语对白| 日韩无码视频专区| 91美女视频在线| 欧美另类第一页| 国产9191精品免费观看| 婷婷激情亚洲| 国产主播喷水| 亚洲无码不卡网| 国产成人一区| 国产免费福利网站| 国产欧美日韩专区发布| 日韩精品无码一级毛片免费| 六月婷婷综合| 为你提供最新久久精品久久综合| 亚洲男人的天堂视频| 亚洲欧美成人在线视频| 久久夜色撩人精品国产| 精品视频第一页| 18禁高潮出水呻吟娇喘蜜芽| 欧美日韩在线成人| 国产99在线观看| 青青青草国产| 欧美三級片黃色三級片黃色1| 欧美精品亚洲精品日韩专区| 91成人在线观看视频| 国产中文在线亚洲精品官网| 日本在线亚洲| 成年看免费观看视频拍拍| 亚洲精品福利网站| 国产成人资源| 日韩专区欧美| 中文毛片无遮挡播放免费| 日韩黄色大片免费看| 国产永久免费视频m3u8| 99国产精品国产| 久久国语对白| 青草午夜精品视频在线观看| 午夜少妇精品视频小电影| 欧美精品亚洲精品日韩专区va| 亚洲综合国产一区二区三区| 亚洲色欲色欲www网| 伊人天堂网| 午夜福利在线观看成人| 国内精品久久久久鸭| 在线免费不卡视频| 青青草原国产av福利网站| 波多野结衣一区二区三区四区| 亚洲黄网在线| 亚洲热线99精品视频|