侯鵬強(qiáng) 唐偉 向飛
[摘要]闡述動態(tài)雕塑控制系統(tǒng)實(shí)現(xiàn)的技術(shù)方案及構(gòu)成、軟件功能,重點(diǎn)給出編程實(shí)現(xiàn)表達(dá)式的解析。
[關(guān)鍵詞]動態(tài)雕塑;可編程;系統(tǒng)構(gòu)成;伺服;步進(jìn);表達(dá)式解析
動態(tài)雕塑,也稱矩陣球、懸浮球陣列,是由數(shù)百到數(shù)千個懸浮體組成的陣列,每個懸浮體通過一根拉線受控可做垂直運(yùn)動,每個懸浮體的運(yùn)動組成一體化的動作。
懸浮體陣列在計(jì)算機(jī)的控制下,以三維方式展現(xiàn)圖案、文字、變換的曲線曲而,伴隨音樂舞動,或靈動,或柔美,帶給觀眾極強(qiáng)的視覺沖擊感,具有超乎想象的展示效果,在科技館、展廳、大型商場、舞臺等演藝娛樂場合迅速應(yīng)用。圖1所示分別為動態(tài)雕塑在寶馬博物館、上海世博會、新加坡機(jī)場等場合的應(yīng)用。
目前,動態(tài)雕塑的實(shí)現(xiàn)主要有兩種技術(shù)方式。
(1)一般應(yīng)用于高速高精度場合,系統(tǒng)運(yùn)行結(jié)構(gòu)采用伺服電機(jī),每個伺服電機(jī)問通過高速工業(yè)以太網(wǎng)來布置控制網(wǎng)絡(luò),每個運(yùn)動部件的速度可達(dá)到幾米每秒的運(yùn)行速度。系統(tǒng)針對雕塑的編程采用專業(yè)的編程軟件來實(shí)現(xiàn),編程方式相對靈活多樣。
(2)一般應(yīng)用于要求相對較低的場合,方案采用DMX512信號來控制每個點(diǎn),電機(jī)一般采用步進(jìn)電機(jī),軟件編程通常采用現(xiàn)成的燈光控制臺進(jìn)行編程,運(yùn)行速度較慢,編程較為繁瑣。
為了實(shí)現(xiàn)高動態(tài)特性和易操作特性,動態(tài)雕塑控制系統(tǒng)采用伺服+高速工業(yè)以太網(wǎng)的方案來實(shí)現(xiàn),懸體陣列由一個個一體化模塊組成,運(yùn)用r分布式實(shí)時(shí)控制、伺服控制等技術(shù)。每個模塊安裝簡單,通過標(biāo)準(zhǔn)化的緊固件固定在吊頂鋼架上,電氣部分只需要多芯插座連接,一般的工人即可完成安裝;整體采用無機(jī)柜無機(jī)房設(shè)計(jì),簡化運(yùn)維成本,用戶通過計(jì)算機(jī)軟件可以靈活控制懸浮陣列的場景變換。
2 系統(tǒng)構(gòu)成
動態(tài)雕塑控制系統(tǒng)采用分布式架構(gòu),主要由三層構(gòu)成:控制層、管理層、執(zhí)行層。
控制層:指上位機(jī)或操作臺,通過上位機(jī)或操作臺,操作人員可選擇單個設(shè)備或執(zhí)行對應(yīng)的軌跡操作。
管理層:主要包含可編程邏輯控制器(PLC),主要用于接收計(jì)算機(jī)下發(fā)的控制指令,通過指令解析后下發(fā)控制指令給伺服驅(qū)動,同時(shí)接收伺服驅(qū)動傳來的設(shè)備狀態(tài)等數(shù)據(jù),上傳給操作層。
執(zhí)行層:主要用于執(zhí)行控制層或管理層傳來的控制命令,通過對命令的解析,完成控制功能。
如圖2所示,系統(tǒng)控制層主要由操作臺構(gòu)成,可采用多個操作終端來控制設(shè)備;管理層主要由PLC系統(tǒng)構(gòu)成,PLC系統(tǒng)由一到多個PLC組成,根據(jù)實(shí)際的負(fù)載情況來測算需要多少個PLC,管理層作為核心環(huán)節(jié),一方而負(fù)責(zé)通過以太網(wǎng)接收來自操作終端的指令,一方而又通過實(shí)時(shí)以太網(wǎng)下發(fā)控制指令給執(zhí)行層;執(zhí)行層則主要由支持EtherCat總線的伺服驅(qū)動構(gòu)成,通過EtherCat接口接收來自管理層的控制命令。層與層之間均通過以太網(wǎng)互聯(lián),區(qū)別之處在于操作層和管理層采用普通以太網(wǎng)的方式通信,管理層和執(zhí)行層采用實(shí)時(shí)以太網(wǎng)的方式通信。
系統(tǒng)采用德國倍福系列的PLC,穩(wěn)定可靠,相比西門子、施耐德等PLC,具有如下特點(diǎn):
(1)運(yùn)行速度快,對于常規(guī)PLC,系統(tǒng)的掃描周期一般在5ms以上,而倍福的PLC運(yùn)行速度能達(dá)到500μs甚至更短,方便進(jìn)行運(yùn)動計(jì)算,實(shí)時(shí)性高;
(2)總線速度快,倍福PLC主要采用倍福EtherCAT總線,掃描100個軸能控制在100μs以內(nèi),對于底層驅(qū)動設(shè)備調(diào)節(jié)速度快,設(shè)備響應(yīng)精度高;
(3)應(yīng)用范圍廣,倍福PLC目前廣泛應(yīng)用于需要運(yùn)動控制的行業(yè),包括最新的迪斯尼等秀場全部采用其控制系統(tǒng);
(4)多級PLC構(gòu)成技術(shù),多個PLC可通過內(nèi)部的工業(yè)以太網(wǎng)實(shí)現(xiàn)快速同步。
伺服驅(qū)動和伺服電機(jī)采用帶有EtherCAT總線接口的產(chǎn)品,具有如下特點(diǎn)。
(1)性能:EtherCATIX習(xí)絡(luò)的運(yùn)行、通信速度快。1000個分布式IO數(shù)據(jù)的掃描周期為30μs。通過單一一個數(shù)據(jù)幀,可同時(shí)交換1 486字節(jié)的過程數(shù)據(jù),其傳輸周期不高于300μs。與伺服的通信測試中,100個伺服軸的通信時(shí)間≤100μs。同時(shí),由于采用分布式時(shí)鐘,可保證軸與軸之間的同步時(shí)間誤差<1μs。
(2)拓?fù)浣Y(jié)構(gòu):該網(wǎng)絡(luò)支持總線型、星型或樹型等幾乎所有拓?fù)浣Y(jié)構(gòu)。拓?fù)浣Y(jié)構(gòu)選擇自由度高,布線靈活,是否采用總線拓?fù)浣Y(jié)構(gòu),或是樹型結(jié)構(gòu),均可任意選配組合??偩€支持自動地址分配;無需手動設(shè)置IP地址。
(3)熱連接:EtherCAT系統(tǒng)具備熱連接功能,可將網(wǎng)絡(luò)的每個部分任意連接或斷開,或動態(tài)進(jìn)行重新連接,組態(tài)方式靈活多樣,可適應(yīng)不同的組態(tài)需求。
(4)安全性:EtherCAT安全協(xié)議基于應(yīng)用層,不影響低層。已通過IEC61508認(rèn)證,可達(dá)到SIL3安全集成級別,在采取更多措施后可達(dá)到SIL4安全級別。
(5)開放性:EtherCAT技術(shù)不僅與標(biāo)準(zhǔn)以太網(wǎng)兼容,而且還具有設(shè)計(jì)開放性特點(diǎn),協(xié)議可以與其他通信格式的以太網(wǎng)協(xié)議并存,所有協(xié)議并存于同一物理介質(zhì)中,且只會對整個網(wǎng)絡(luò)性能有比較小程度的影響。
3軟件功熊
軟件的操作方式借鑒國外控制風(fēng)格,操作方式通過計(jì)算機(jī)選擇,配合操作臺上手柄進(jìn)行控制,安全可靠。通過計(jì)算機(jī)軟件的編程,可輕松實(shí)現(xiàn)編程、仿真、播放等功能。每個懸浮模塊可組合使用,也可單獨(dú)使用。
(1)操作方式:分為編輯模式、手動模式、自動模式等,操作方式靈活。
(2)固定模型編輯:該模式可編輯動態(tài)雕塑中的某個區(qū)域按照設(shè)定好的數(shù)學(xué)函數(shù)進(jìn)行運(yùn)行,如正弦余弦、直線、斜面等固定的模型。
(3)字符編輯:可將動態(tài)雕塑用于顯示字符,如數(shù)字、漢字、英文字母等。
(4)圖形編輯:可將動態(tài)雕塑用于顯示固定的畫而。軟件可對圖形進(jìn)行預(yù)處理,包括調(diào)整灰度值等處理功能。
(5)自定義函數(shù)編輯:可用于任意函數(shù)編輯,顯示用戶指定的特殊函數(shù),如特定的曲而曲線等信息。
(6)設(shè)備管理:設(shè)備管理可靈活設(shè)置設(shè)備的軟限位、清零位置、當(dāng)前位置等設(shè)備參數(shù)。
(7)系統(tǒng)狀態(tài)、設(shè)備狀態(tài):可查看系統(tǒng)狀態(tài)和設(shè)備狀態(tài),包括設(shè)備每個開關(guān)的狀態(tài)信息。
(8)日志管理:可查看系統(tǒng)的報(bào)警日志、操作記錄等信息。
圖3所示為軟件系統(tǒng)的截圖,(1)為軟件手動運(yùn)行界面,三維視圖和表格結(jié)合顯示設(shè)備的運(yùn)行狀態(tài),該界而卜^可通過操作臺配置的手柄針對單個點(diǎn)或多個點(diǎn)進(jìn)行單控或集控,該模式下可通過圖形的方式快速選擇所選設(shè)備;(2)為系統(tǒng)函數(shù)編輯整體界而,界而左側(cè)主要為圖形顯示區(qū)域,右側(cè)為屬性區(qū)域,采用指令集的方式,可輸入對應(yīng)的函數(shù),也可通過內(nèi)置的數(shù)學(xué)模型快速生成,同時(shí)編輯界面內(nèi)置仿真功能,可針對編輯好的界而進(jìn)行仿真分析,并可在左側(cè)窗口進(jìn)行顯示;(3)為特殊函數(shù)編輯界面,軟件不僅可編輯任意函數(shù),也可通過特殊圖形插入特殊的模型,如直線、而、波浪線等;(4)為特殊的函數(shù),可插入圖像、高度、時(shí)間點(diǎn)等動態(tài)信息;(5)為函數(shù)手動編輯界而,可手工輸入對應(yīng)的函數(shù),并針對函數(shù)進(jìn)行仿真修改等,同時(shí)能指定函數(shù)的運(yùn)行起始結(jié)束時(shí)間,指定時(shí)間是否采用往返等方式;(6)為系統(tǒng)自動運(yùn)行界面,可將編輯好的數(shù)據(jù)下載到控制器中,讓控制器執(zhí)行對應(yīng)的雕塑造型等。
4表達(dá)式的解析
對于動態(tài)雕塑編程軟件,函數(shù)編輯作為一個核心功能,需要對用戶輸入的函數(shù)進(jìn)行解析和識別,下面重點(diǎn)對函數(shù)解析和識別做出編程分析。
軟件需要實(shí)現(xiàn)的功能之一是要識別用戶輸入的數(shù)學(xué)、字符,即接受輸入的包含數(shù)字、字符等函數(shù)表達(dá)式的字符串,并對輸入進(jìn)行分析,轉(zhuǎn)換為對應(yīng)的計(jì)算機(jī)可識別的指令表達(dá)。此類將算術(shù)表達(dá)式轉(zhuǎn)為計(jì)算機(jī)可執(zhí)行指令的過程,稱為表達(dá)式解析。
表達(dá)式的組成通常包括:運(yùn)算符、括號、函數(shù)、數(shù)字、變量,如6—3、5×2、120+(60-30)×3。在運(yùn)算過程中,除要考慮運(yùn)算符的優(yōu)先級,也要遵循數(shù)學(xué)運(yùn)算準(zhǔn)則中關(guān)于優(yōu)先級相等的運(yùn)算符,按照從左到右的順序計(jì)算。在分析表達(dá)式時(shí),表達(dá)式解析器首先需要分離出表達(dá)式中的每個元素,如:12×3-(3+8),其中的獨(dú)立元素有:12、×、3、-、(、3、+、8、)。這種表達(dá)式元素通常稱為標(biāo)識符。為了將一串字符串拆分為單個標(biāo)識符,需要設(shè)計(jì)一個函數(shù),該函數(shù)能從頭到尾掃描表達(dá)式字符串,從而將每個字符分離出來,確定字符串中每個字符的類型,進(jìn)行表達(dá)式的計(jì)算和數(shù)學(xué)分析。
首先定義表達(dá)式解析的變量類型Parser,并定義表達(dá)式元素函數(shù)getToken()。
變量定義如下。
public const Int32 c_NONE=0;
public const Int32c—DELIMITER=1;
public const Int32 c_VARIABLE=2;
public const Int32 c—NL'MBER=3;
其中,c_VARIABLE、c_NUMBER、c_DELIMITER三個常量分別表示這個解析器中的類型:變量、數(shù)值和分隔符。c_DELIMITER既可以是運(yùn)算符,也可為括號;c_NONE作為一個未定義的標(biāo)識符的占位符。
public const Int32 c_SYNTAX=O;
public const Int32 c_LNBALPARENS=1;
public const Int32 c_NOEXP=2;
public const Int32 c_DIVBYZERO=3;
String c_EOE=“\0”;
這幾個常量主要用于表達(dá)錯誤,包括在解析和計(jì)算中產(chǎn)生的錯誤碼。c_SYNTAX用于表示非正則表達(dá)式錯誤,c_LNBALPARENS用于表示括號不對稱錯誤,c-N OEXP用于表示解析器未檢測到表達(dá)式輸入,c—DIVERYZERO用于表示零除錯誤;c_EOE用于表示表達(dá)式的結(jié)尾。
private String m_token;
String m_exp;
Int32 m_tokType;
Int32 m_expldx;
doubleLL m_vars= new double[26];
其中,m—exp變量用于存儲被解析的字符串;m—expldx用于保存此字符串中的下一個標(biāo)識符的索引,初始值為O;m_token存儲當(dāng)前獲得的標(biāo)識符;m_tokType用于存儲解析字符的類型;m_vars用于存儲26個字母。
編寫getToken()的代碼片段如下。
程序先進(jìn)行函數(shù)初始化,接著查看m_expldx是否等于exp.Length,用來判斷該字符串解析是否已經(jīng)完成。而m_explclx作為一個索引,用于表示當(dāng)前字符串解析的位置索引,如果該索引值等于需解析字符串的長度,即可表明該表達(dá)式已解析完成。
相比采用燈光臺等的造型編程,該功能可使得人機(jī)交互系統(tǒng)可按受來自用戶的函數(shù)輸入,使得效果呈現(xiàn)更多的內(nèi)容。
上述內(nèi)容即為函數(shù)解析的主要部分。對于動態(tài)雕塑軟件中三維視圖編程、圖像灰度處理等均為常見的軟件算法編程,暫不詳述。
5結(jié)語
動態(tài)雕塑控制系統(tǒng)已經(jīng)成功應(yīng)用于國內(nèi)某演藝中心(圖4)。該系統(tǒng)采用幾十塊亞格力材料,通過自帶的編程軟件,實(shí)現(xiàn)各種特殊的動態(tài)和靜態(tài)造型,可動態(tài)運(yùn)行,也可配合演員完成動態(tài)天街和飛天等造型。
動態(tài)雕塑控制系統(tǒng)采用時(shí)間線的方式來編程,具有高動態(tài)特性,有利于實(shí)現(xiàn)燈光系統(tǒng)和動態(tài)造型的相互配合,體現(xiàn)速度和力量結(jié)合的視覺效果,可用于舞臺表演,也可用于展覽展示。
參考文獻(xiàn)
[1]朱福喜,唐曉軍,等.Java程序設(shè)計(jì)技巧與開發(fā)實(shí)例[M].北京:人民郵電出版社,2004.
[2] David Flanagan著.JavaTM實(shí)例技術(shù)手冊[M].何建輝,張洛玲譯.北京:中國電力出版社.2001.
[3]黃曉東,等.Java課程設(shè)計(jì)案例精編[M].北京:中國水利水電出版社,2004.
[4][美]沃克(Wutka,M.)著.Java編程技巧[M].張森譯.杭州:浙江科學(xué)技術(shù)出版社,1999
[5]于海生.多電機(jī)同步傳動微機(jī)控制裝置的研制[J].青島大學(xué)學(xué)報(bào),1999,14(1):41-44.