国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于IEC61131-3標(biāo)準(zhǔn)運動控制器的設(shè)計與應(yīng)用*

2019-04-08 05:36:12李飛江李翔龍
關(guān)鍵詞:功能塊單軸編程

李飛江,李翔龍

(四川大學(xué) 制造科學(xué)與工程學(xué)院,成都 610065)

0 引言

隨著人們對工業(yè)生產(chǎn)中的自動化程度要求越來越高,運動控制器的發(fā)展得到了越來越廣泛的重視。如今,國內(nèi)外的運動控制器種類已是多種多樣。雖然運動控制器的多樣化給用戶帶來了一定的好處,方便用戶在構(gòu)建運動控制系統(tǒng)時,可以選擇合適的控制器。然而長期以來,運動控制市場缺乏統(tǒng)一的編程標(biāo)準(zhǔn)[1],各個廠商的提供的控制器編程語言大多基于類Basic語言、C語言等高級編程語言,也有部分廠商采用G代碼作為編程語言[2]。這些復(fù)雜的編程語言一方面限制了運動控制器的通用性,另一方面提高了對編程人員的要求,大多程序的開發(fā)只能由高水平的編程人員才能完成,嚴(yán)重影響了程序的開發(fā)效率。本系統(tǒng)以IEC61131-3標(biāo)準(zhǔn)定義的5種PLC編程語言中為基礎(chǔ)[3-4],采用符合該標(biāo)準(zhǔn)的PLCopen功能塊,成功實現(xiàn)了運動控制器的圖形化編程,大大降低了程序的開發(fā)效率。即使在加工需求易變和專用運動控制行業(yè)中,用戶只需要學(xué)習(xí)簡單的PLC編程,便能對控制系統(tǒng)的程序進行自主開發(fā)。

文獻[1]采用PLCopen功能塊,提出一種圖形化編程的運動控制系統(tǒng),但該系統(tǒng)是基于beremiz開源開發(fā)平臺實現(xiàn)的,導(dǎo)致其存在操作復(fù)雜,與window系統(tǒng)存在不兼容等問題。同時該文獻最終只驗證了單軸功能塊的可行性,并沒有對多軸功能塊進行研究。本文使用德國KW-Software公司開發(fā)的符合IEC61131-3標(biāo)準(zhǔn)的MLUTIPROG軟件作為控制系統(tǒng)開發(fā)平臺,該軟件使用方便[5-7],配合自行研發(fā)的“Assistnt”軟件,成功實現(xiàn)PLCopen規(guī)范中的多軸功能塊。最后利用該控制器完成了對貼標(biāo)機的運動控制,證明了該控制器具有極大的市場應(yīng)用空間,值得推廣。

1 控制系統(tǒng)的構(gòu)成

整個控制系統(tǒng)由人機界面交互層、應(yīng)用指令層、運動控制層、設(shè)備驅(qū)動層4大部分組成,如圖1所示。

圖1 控制系統(tǒng)的整體構(gòu)成

人機界面交互層包括MLUTIPROG軟件和自主研發(fā)的Assistant軟件,其中MLUTIPROG用來調(diào)用PLCopen標(biāo)準(zhǔn)運動功能塊,Assistant則用來為控制器連接的電機設(shè)置軸號、軸組號等參數(shù)。二者相互配合才能實現(xiàn)多軸控制和多軸功能塊的功能。應(yīng)用指令層包含了所有PLCopen標(biāo)準(zhǔn)的單軸和多軸功能塊,每個功能塊根據(jù)功能的不同,有的用來實現(xiàn)電機的運動控制(MC_Home),有的用來設(shè)置和查詢電機的狀態(tài)(MC_ReadActualPosition)。運動控制層用來處理運動相關(guān)的參數(shù),如:位移、速度加速度等。通過內(nèi)部算法,實現(xiàn)電機的S型和T型升降速,防止電機速度出現(xiàn)大的波動和位置出現(xiàn)偏差,保證電機運動的精確性。同時運動控制層還根據(jù)所調(diào)用運動功能塊的不同,自動切換電機工作于位移模式、速度模式或周期同步模式。設(shè)備驅(qū)動層用來接收從運動控制層傳遞下來的數(shù)據(jù),然后將這些數(shù)據(jù)映射至不同的控制器硬件設(shè)備及現(xiàn)場總線設(shè)備中。4個部分協(xié)調(diào)工作,最終實現(xiàn)通過上層調(diào)用的圖形化指令就能完成對電機的控制。

2 PLCopenb標(biāo)準(zhǔn)功能塊的開發(fā)

2.1 PLCopen標(biāo)準(zhǔn)功能塊的模型

PLCopen規(guī)范功能塊按其功能可分為管理型功能塊和運動型功能塊,管理型功能塊主要用來檢查軸的狀態(tài)和設(shè)置軸的運動參數(shù),運動型功能塊主要是根據(jù)設(shè)置的速度、位置、加速度等實現(xiàn)軸的運動。按其操作軸的數(shù)量則可以分為單軸功能塊和多軸功能塊,單軸功能塊只能控制一個軸,而多軸功能塊能控制2~4軸。

所有功能塊均由輸入/輸出變量、輸入變量、輸出變量、內(nèi)部算法、功能塊類型名5大部分組成[8-9],其模型如圖2所示。每個變量的作用和數(shù)據(jù)類型都是確定的,其中輸入/輸出變量是一個用來保存軸參數(shù)的結(jié)構(gòu)體。在單軸功能塊中,它是一個名為AXIS_REF的結(jié)構(gòu)體。系統(tǒng)在該結(jié)構(gòu)體中定義了一個成員AxisNo(軸號),用來確定功能塊的控制對象,它具有唯一性,且程序運行過程中不能被更改。一旦功能塊的該參數(shù)被賦值,此功能塊就只能控制具有相同軸號的電機。在多軸功能塊中,它是一個名為AXIS_GROUP_REF的結(jié)構(gòu)體,系統(tǒng)在該結(jié)構(gòu)體中定義了軸組號(AxisGroupNo)、軸的數(shù)量(AxisNum)、各軸軸號(AxisNoArray)三個成員。通過這三個參數(shù)就能在調(diào)用多軸功能塊時,確定被控電機的對象,順利實現(xiàn)多軸功能塊。內(nèi)部算法和功能塊的接口是兩個獨立的部分,不僅能為上層提供統(tǒng)一的編程接口,而且實現(xiàn)功能塊的跨平臺移植時,只需要更改不同硬件平臺的操作硬件部分的代碼,使移植變得簡單。本控制器的內(nèi)部算法是被封裝起來的,用戶不需知道其具體內(nèi)容,只需操作功能塊的輸入接口便能實現(xiàn)相應(yīng)的功能。

圖2 PLCopen標(biāo)準(zhǔn)功能塊模型

2.2 PLCopen標(biāo)準(zhǔn)功能塊庫的制作

本系統(tǒng)使用嵌入在VS2012中的C#模板完成各功能塊輸入輸出接口的定義,經(jīng)過編譯后會生成一個保存有功能塊接口信息的FWL格式固件庫文件和3個C++文件。其中一個C++文件是用來編寫內(nèi)部算法的重要文件,它是連接功能塊外部接口和內(nèi)部算法的橋梁。以MC_Power為例,在該C++文件中會生成void __PInvoke__MS_PLCopen_LIB::M C_Power::__Init()和void __PInvoke__MS_ PLCopen_LIB::MC_Power::__Process()兩個函數(shù)。前者的函數(shù)內(nèi)部是不能更改的,而后者的函數(shù)內(nèi)部則用來編寫功能塊的內(nèi)部算法,內(nèi)部算法的編寫以實現(xiàn)PLCopen標(biāo)準(zhǔn)所規(guī)定的功能塊的功能為目的,其設(shè)計流程圖如圖3所示。3個C++文件在定制的ProConOS eCLR工程中被編譯后,會生成一個exe文件,將該文件下載到控制器中。然后只要將FWL文件添加MLUTIPROG軟件的固件庫中,便完成了PLCopen功能塊庫的開發(fā)。開發(fā)完成的功能塊不僅和PLCopen標(biāo)準(zhǔn)功能塊的模型、功能完全一樣。同時使用方便,只需將其拖動至MLUTIPGOG工程的編程界面,然后設(shè)置實例名、輸入?yún)?shù)、輸出參數(shù),就能通過輸入引腳Enable或Execute啟動功能塊。

圖3 內(nèi)部算法流程圖

3 多軸功能塊的實現(xiàn)過程

調(diào)用多軸功能塊前,必須先通過Assistant軟件為控制器上連接的被控對象電機的軸號參數(shù)賦值。將設(shè)置了軸號的電機添加到一個軸組中,并為該軸組的軸組號賦值,就能通過多軸功能塊實現(xiàn)該軸組2~4軸直線或圓弧插補運動。編譯MLUTIPROG工程后,“Assistant”軟件會生成一個XML格式的文件,該文件保存了所有單軸和軸組參數(shù)的信息,將該文件和PLC工程一起下載到控制器便能完成這些參數(shù)的配置。

單軸功能塊在對一個電機進行操作前,如果控制器只連接了一臺電機,功能塊則判斷結(jié)構(gòu)體AXIS_REF中的AxisNo和硬件設(shè)備上連接的電機軸號(該軸號如果不通過Assistant設(shè)置,則默認(rèn)為0)是否相同,如果不相同,功能塊則無法實現(xiàn)對該軸的控制并報錯。當(dāng)控制器上連接了多臺電機時,系統(tǒng)會逐一判斷軸號是否相同,找到軸號相同的電機后停止判斷。如果找不到軸號相同的電機則會報錯。當(dāng)多軸功能塊接收到啟動命令時,將根據(jù)存儲在AXIS_GROUP_REF中的參數(shù)AxisNum、AxisNoArray先找到連接在運動控制器上的被控電機。如果找不到相匹配的電機,功能塊的輸出引腳Error則會給出錯誤信號。當(dāng)找到相匹配的電機后,功能塊則會判斷這些電機的軸組號和結(jié)構(gòu)體AXIS_GROUP_REF中的AxisGroupNo是否相同,確認(rèn)軸組號相同后才會啟動該功能塊,然后執(zhí)行功能塊的功能。因為MLUTIPROG軟件中無法完成對電機相關(guān)參數(shù)的配置,所以僅僅依靠該軟件無法實現(xiàn)多軸控制和多軸功能塊的功能。自主研發(fā)的“Assistant”軟件則彌補這一缺陷。通過該軟件,不僅能為控制器上連接的電機軸號、軸組號賦值,還能為軸的部分運動參數(shù)賦值,例如,單位換算設(shè)置、操作設(shè)置、限位設(shè)置等,功能十分強大。

4 多軸功能塊的驗證

使用簡單的梯形圖編程方法,就能在MLUTIPROG中驗證多軸功能塊MC_MoveLinear_ Absolute。連接好硬件設(shè)備后,先在MLUTIPROG工程中編寫好具體的PLC程序,然后在“Assistant”軟件中配置好單軸和軸組相關(guān)參數(shù)。編譯完成后,將其下載到控制器進行測試。啟動功能塊MC_MoveLinearAbsolute前,先設(shè)置它的輸入變量,令目標(biāo)位值Position=[100000,150000],目標(biāo)速度Velcity=20000(該速度為兩個軸的合速度),加速度Accelration =30000,減速帶Decelaratiion=30000,加加速度Jerk=50000,因為其它參數(shù)的值對運動沒有影響,所以設(shè)置為默認(rèn)值(注意:本控制器中所有功能塊中的運動參數(shù)的計量單位均為脈沖P)。完成參數(shù)設(shè)置后,便通過引腳Execute啟動該功能塊。在功能塊的執(zhí)行過程中采用MLUTIPROG軟件中的邏輯分析器繪制兩個軸的位移曲線(見圖4)和合速度曲線(見圖5)。由兩圖可知,兩個軸在相同的時間內(nèi),根據(jù)設(shè)置的的目標(biāo)位置和速度準(zhǔn)確平穩(wěn)的完成了運動,成功實現(xiàn)了該多軸功能塊。

圖4 兩軸的位移曲線

圖5 合速度曲線

5 控制系統(tǒng)的應(yīng)用

貼標(biāo)機的核心部分是將標(biāo)簽貼到傳送帶上的工件的貼標(biāo)機構(gòu)。標(biāo)簽輸送軸是間歇性運動,當(dāng)傳感器檢測到工件即將到達貼標(biāo)位置,先啟動延時,延時結(jié)束后軸開始轉(zhuǎn)動。當(dāng)移動距離達到標(biāo)簽的長度距離后便停止,等待下一次觸發(fā)信號。為了保證標(biāo)簽整齊有效的貼在工件上,工件輸送軸的速度和標(biāo)簽輸送軸的速度必須相同,否則會出現(xiàn)標(biāo)簽錯位和漏貼等現(xiàn)象。因為貼標(biāo)簽的過程中涉及2個軸的運動,屬于多軸控制,先使用Assistant軟件為兩軸賦值,標(biāo)簽輸送軸的軸號為1,工件輸送軸的軸號為2。程序中使用一個定時器(TON_1)來觸發(fā)標(biāo)簽輸送軸運動,定時器的定時時間為傳感器與貼標(biāo)位置的距離(SensorDistance)除以軸的速度(Velocity)所得的值,這樣就能保證工件到達貼標(biāo)位置時標(biāo)簽軸剛好啟動。工件輸送軸的運動由PLCopen標(biāo)準(zhǔn)功能塊MC_Velocity實現(xiàn),而標(biāo)簽輸送軸的運動由PLCopen標(biāo)準(zhǔn)功能塊MC_MoveReltive實現(xiàn),設(shè)置其輸入引腳Distance的值為標(biāo)簽的長度(LableLength)。詳細(xì)的PLC程序執(zhí)行流程如圖6所示。可見,采用本控制系統(tǒng)編寫的PLC程序十分簡單,只需調(diào)用幾個功能塊便能完成復(fù)雜的運動控制。即便是沒有任何開發(fā)經(jīng)驗的人,學(xué)習(xí)簡單的PLC編程后,就能進行獨立的程序開發(fā)控制。

圖6 PLC程序流程圖

6 結(jié)束語

根據(jù)得到的MC_MoveLinearAbsolute功能塊的兩軸位移和合速度圖,充分證明了在Assistant的配合下,電機運行平穩(wěn),成功實現(xiàn)了PLCopen標(biāo)準(zhǔn)功能塊中的多軸功能塊,展示了控制系統(tǒng)優(yōu)越的性能。最后開發(fā)的貼標(biāo)機控制程序,則證明了本控制系統(tǒng)圖形化編程的優(yōu)勢,不僅編程簡單,大大提高了程序的開發(fā)效率。同時多軸控制功能強大,只需對結(jié)構(gòu)體AXIS_REF中的AxisNo賦予不同的值,便能同時控制多達32個軸。但本控制系統(tǒng)只在ZYNQ-Soc(2個A9內(nèi)核+1個FPGA)+DDR3+EMMC為核心[10]構(gòu)成的運動控制器上驗證了其可行性,下一步將對本控制系統(tǒng)的跨平臺移植進行研究。

猜你喜歡
功能塊單軸編程
我家有只編程貓
我家有只編程貓
我家有只編程貓
我家有只編程貓
單軸壓縮條件下巖石峰后第Ⅱ種類型應(yīng)力——應(yīng)變曲線的新解釋
CFRP-鋼復(fù)合板的單軸拉伸力學(xué)性能
單軸應(yīng)變Si NMOS電流模型研究
電子測試(2017年12期)2017-12-18 06:35:42
Ovation系統(tǒng)FIRSTOUT和FIFO跳閘首出比較
斜單軸跟蹤式光伏組件的安裝傾角優(yōu)化設(shè)計
自定義功能塊類型在電解槽聯(lián)鎖中的應(yīng)用
中國氯堿(2015年9期)2015-11-02 01:03:41
浏阳市| 积石山| 柞水县| 罗田县| 商河县| 新昌县| 时尚| 精河县| 丹凤县| 葫芦岛市| 元阳县| 乾安县| 汝南县| 宜春市| 易门县| 太白县| 香河县| 新宾| 喀什市| 玛纳斯县| 洛川县| 磐石市| 中西区| 三穗县| 河池市| 文登市| 慈溪市| 绥德县| 望奎县| 丰顺县| 大埔区| 临邑县| 葵青区| 松江区| 白朗县| 抚顺县| 大埔区| 琼中| 台湾省| 区。| 鄢陵县|