引言
隨著人們生活水平的提高,人們愈來(lái)愈追求多樣化和個(gè)性化的休閑娛樂(lè)方式,除了“求新、求奇、求特、求異”之外,大家更加注重體驗(yàn)參與式的游藝活動(dòng),為了應(yīng)對(duì)這種消費(fèi)需求偏好的改變,提升企業(yè)自身競(jìng)爭(zhēng)力,本系統(tǒng)將先進(jìn)的激光多址編碼、RF無(wú)線射頻、CAN總線、動(dòng)漫與光機(jī)電控制等技術(shù)相結(jié)合,設(shè)計(jì)一種基于光機(jī)電與動(dòng)漫結(jié)合的新型交互式射擊游藝系統(tǒng)。
目前,比較好的射擊游藝系統(tǒng)有迪斯尼公司的“巴斯光年星際歷險(xiǎn)”,另一種類似的游樂(lè)設(shè)施有“Buzz Light year’s Space Ranger Spin”,它們一直以來(lái)都是主題樂(lè)園內(nèi)深受歡迎的游樂(lè)設(shè)施之一。但以上兩種系統(tǒng)都缺少游藝過(guò)程和調(diào)度中心控制協(xié)作的功能,沒(méi)有上位機(jī)控制軟件,不能存儲(chǔ)分析射擊數(shù)據(jù)。本系統(tǒng)在集成上述系統(tǒng)先進(jìn)技術(shù)和創(chuàng)意理念的基礎(chǔ)上,克服了上述技術(shù)問(wèn)題,通過(guò)有線與無(wú)線通信的有機(jī)結(jié)合,從技術(shù)到創(chuàng)意都有較大的提高,使游客可享受到更大的游藝樂(lè)趣。
控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)主要由中心調(diào)度分系統(tǒng)、游藝小車通信分系統(tǒng)、區(qū)域道具動(dòng)作機(jī)電控制分系統(tǒng)、車載PLC運(yùn)動(dòng)控制分系統(tǒng)、動(dòng)漫效果與光機(jī)電控制分系統(tǒng)組成,如圖1所示。
圖1 系統(tǒng)組成結(jié)構(gòu)示意圖
中心調(diào)度分系統(tǒng)
通過(guò)CAN總線與區(qū)域道具動(dòng)作機(jī)電控制分系統(tǒng)進(jìn)行雙向數(shù)據(jù)通信實(shí)現(xiàn)計(jì)分與道具機(jī)電動(dòng)作控制;與游藝小車通信分系統(tǒng)采用基于無(wú)線射頻模塊nRF905的主從式雙向數(shù)據(jù)通信實(shí)現(xiàn)動(dòng)漫效果與光機(jī)電控制,實(shí)現(xiàn)射擊過(guò)程的實(shí)時(shí)計(jì)分顯示、動(dòng)漫場(chǎng)景與光機(jī)電動(dòng)作協(xié)調(diào)控制。中心調(diào)度分系統(tǒng)接收/處理各區(qū)域控制分系統(tǒng)計(jì)分和檢測(cè)開關(guān)狀態(tài)、車載分系統(tǒng)初始化等信號(hào);顯示車載系統(tǒng)各車子網(wǎng)絡(luò)連接狀態(tài);通過(guò)人工方式向車載分系統(tǒng)發(fā)送啟動(dòng)、停車等控制指令;自動(dòng)向車載分系統(tǒng)發(fā)送實(shí)時(shí)分?jǐn)?shù)信息;控制播放數(shù)字化動(dòng)漫影音信息,并向車載分系統(tǒng)發(fā)送控制信號(hào)(該信號(hào)由各車子行走控制系統(tǒng)解釋并執(zhí)行車子動(dòng)作);處理分?jǐn)?shù)排行及歷史紀(jì)錄、用戶信息管理等;下客區(qū)顯示屏播放即時(shí)分?jǐn)?shù)、候客區(qū)顯示屏播放歷史紀(jì)錄、預(yù)演區(qū)顯示屏播放游戲短片及解說(shuō)、區(qū)域控制區(qū)內(nèi)投影機(jī)播放數(shù)字化動(dòng)漫影片;能控制至少8個(gè)區(qū)域控制分系統(tǒng)(共110個(gè)控制點(diǎn))。
游藝小車通信分系統(tǒng)
通過(guò)人工觸發(fā)玩具手槍內(nèi)的紅外激光發(fā)射模塊,向區(qū)域道具動(dòng)作機(jī)電控制分系統(tǒng)發(fā)射多址編碼信息,模擬射擊過(guò)程,完成游客與現(xiàn)場(chǎng)道具的交互過(guò)程。接收/處理中心調(diào)度分系統(tǒng)的分?jǐn)?shù)信息并顯示;接收中心控制分系統(tǒng)的啟動(dòng)、停止和動(dòng)作指令,并通過(guò)RS232數(shù)字接口通道透明地傳輸給車載PLC控制分系統(tǒng);接收車載PLC控制分系統(tǒng)信息并發(fā)送給中心調(diào)度分系統(tǒng);實(shí)時(shí)顯示對(duì)應(yīng)車號(hào)座位打中靶模分?jǐn)?shù);實(shí)現(xiàn)叩動(dòng)扳機(jī)或按鈕音效、其它動(dòng)作音效。
車載PLC運(yùn)動(dòng)控制分系統(tǒng)
通過(guò)西門子的S7_200 PLC控制伺服電機(jī),控制游藝小車的行走、旋轉(zhuǎn)、定位、防撞等動(dòng)作,自動(dòng)探測(cè)位置實(shí)現(xiàn)防碰撞、自動(dòng)上報(bào)游藝小車當(dāng)前運(yùn)行狀態(tài)等。
動(dòng)漫效果與光機(jī)電控制分系統(tǒng)
由中心調(diào)度分系統(tǒng)通過(guò)CAN控制總線下發(fā)動(dòng)漫播放控制指令,接收區(qū)域控制器輸出的道具控制信號(hào)控制機(jī)電動(dòng)作效果,執(zhí)行道具相應(yīng)特定的聲光電效果;實(shí)現(xiàn)各場(chǎng)景機(jī)電控制動(dòng)作。
區(qū)域道具動(dòng)作控制分系統(tǒng)
接收/處理車載通信分系統(tǒng)發(fā)射的紅外激光編碼信息;通過(guò)CAN總線向中心調(diào)度分系統(tǒng)發(fā)送計(jì)分信息,接收中心調(diào)度分系統(tǒng)的控制指令;響應(yīng)區(qū)域控制器輸出信號(hào)的動(dòng)作及燈光特效、音響效果;每個(gè)區(qū)域能容納至少各20個(gè)輸入輸出I/O口(I口光電隔離,O口繼電器)。
本系統(tǒng)有機(jī)地將CAN總線與RF無(wú)線通信有機(jī)結(jié)合在一起,實(shí)現(xiàn)射擊過(guò)程的有效互動(dòng)。
基于nRF905主從式無(wú)線局域網(wǎng)通信
系統(tǒng)由一個(gè)中心控制設(shè)備(中心調(diào)度分系統(tǒng)主通信模塊)及8個(gè)節(jié)點(diǎn)設(shè)備(游藝小車)組成[2],中心設(shè)備PC機(jī)使用全雙工USB-UART串口與主模塊通信,主模塊與各節(jié)點(diǎn)模塊傳輸無(wú)線數(shù)據(jù)。根據(jù)網(wǎng)絡(luò)協(xié)議,數(shù)據(jù)傳輸采用半雙工的點(diǎn)對(duì)點(diǎn)方式或廣播的方式。節(jié)點(diǎn)模塊可根據(jù)接收的數(shù)據(jù)進(jìn)行相應(yīng)的顯示、控制操作,并可通過(guò)UART與下位機(jī)PLC進(jìn)行通信,如圖2所示。
圖2 基于nRF905主從式無(wú)線局域網(wǎng)通信結(jié)構(gòu)示意圖
為此,定義用戶數(shù)據(jù)內(nèi)容如下:用戶數(shù)據(jù)包括4位的狀態(tài)字X和Data數(shù)據(jù):狀態(tài)字X的高兩位用于控制數(shù)據(jù)發(fā)送方向,如X高兩位為00表示中心控制設(shè)備向節(jié)點(diǎn)設(shè)備發(fā)送顯示數(shù)據(jù),此時(shí)低兩位為屏幕ID,用于進(jìn)行分屏顯示,顯示內(nèi)容為Data數(shù)據(jù);如X高兩位為01,低兩位備用,表示中心控制設(shè)備向節(jié)點(diǎn)設(shè)備發(fā)送控制數(shù)據(jù)Data,節(jié)點(diǎn)設(shè)備可通過(guò)UART將Data數(shù)據(jù)送至下位機(jī)PLC;如X高兩位為10,低兩位備用,表示節(jié)點(diǎn)設(shè)備向中心控制設(shè)備發(fā)送來(lái)自下位機(jī)PLC串口的Data數(shù)據(jù)。
基于CAN總線的道具動(dòng)作多址通信
如圖3所示,CAN總線通信網(wǎng)絡(luò)中每個(gè)道具作為獨(dú)立的CAN節(jié)點(diǎn),通過(guò)PIC18F4580的CAN接口掛在CAN總線上,CAN總線各個(gè)節(jié)點(diǎn)與主控器連成一體,利用CAN通信協(xié)議實(shí)現(xiàn)各節(jié)點(diǎn)間分區(qū)域的數(shù)據(jù)交換與信息處理[3]。
圖3 CAN總線通信結(jié)構(gòu)示意圖
中心調(diào)度程序的設(shè)計(jì)與實(shí)現(xiàn)
中心調(diào)度程序采用面向?qū)ο蟮脑O(shè)計(jì)方法,開發(fā)語(yǔ)言使用Visual Basic,后臺(tái)數(shù)據(jù)庫(kù)使用SQL-SERVER 2000,如圖4所示。
圖4 中心調(diào)度程序結(jié)構(gòu)示意圖
根據(jù)系統(tǒng)功能要求不同,分為射擊分?jǐn)?shù)顯示客戶端程序、動(dòng)漫播放控制客戶端程序,中心調(diào)度服務(wù)器程序和后臺(tái)數(shù)據(jù)庫(kù)。程序之間通過(guò)Winsock進(jìn)行局域網(wǎng)數(shù)據(jù)通信,CAN總線和nRF905無(wú)線射頻的主控制器通過(guò)UART-USB模塊與調(diào)度中心程序進(jìn)行數(shù)據(jù)通信。
基于Winsock的網(wǎng)絡(luò)通信程序設(shè)計(jì)
使用Winsock控件時(shí)可以使用兩種協(xié)議:TCP協(xié)議和UDP協(xié)議,本系統(tǒng)采用TCP協(xié)議,分別建立客戶應(yīng)用程序和服務(wù)器應(yīng)用程序。
在創(chuàng)建客戶應(yīng)用程序時(shí),必須知道服務(wù)器計(jì)算機(jī)名或其IP地址(存于RemoteHost屬性)、及服務(wù)器計(jì)算機(jī)進(jìn)行偵聽的端口(存于RemotePort屬性),然后調(diào)用Connect方法。
創(chuàng)建服務(wù)器應(yīng)用程序時(shí),就應(yīng)相應(yīng)設(shè)置一個(gè)偵聽端口(LocalPort屬性)并調(diào)用Listen方法。當(dāng)客戶機(jī)需要連接時(shí)(connect),就會(huì)發(fā)生ConnectionRequest事件。由于系統(tǒng)有多個(gè)客戶端,因此要?jiǎng)討B(tài)管理客戶端的各個(gè)連接請(qǐng)求,參考如下程序設(shè)計(jì):
Private sub sckserver_connectrequest(Index as Integer,Byval requestid as long)
dim sip as string
dim I as integer
sip=sckserver(0).RemoteHostIP ‘獲得登錄者的IP地址
I=1
Do while I《=sckserver.ubound ’檢查是否已經(jīng)有該地址的記錄
If sckserver(I).RemoteHostIP=sip then ‘如有,不必加載新的控件
Sckserver(I).Accept requestid
Exit sub
End if
I=I+1
Loop
Load sckserver(I) ’否則,加載新的控件
Scksrver(I).accept requestID
End sub
為了完成連接,在ConnectionRequest事件中調(diào)用Accept方法。建立連接后,任何一方計(jì)算機(jī)都可以發(fā)送、接收對(duì)方數(shù)據(jù)。發(fā)送數(shù)據(jù)時(shí),需調(diào)用SendData方法。當(dāng)接收到數(shù)據(jù)時(shí),會(huì)發(fā)生DataArrival事件,調(diào)用DataArrival事件中的GetData方法就可以獲得對(duì)方傳送的數(shù)據(jù)。
基于MSComm的串口通信程序設(shè)計(jì)
MSComm通信控件提供了一系列標(biāo)準(zhǔn)通信命令的接口,它允許建立串口連接,可以連接到其他通信設(shè)備、還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過(guò)程中可能發(fā)生的各種錯(cuò)誤和事件,從而可以用它創(chuàng)建全雙工的、事件驅(qū)動(dòng)的、高效實(shí)用的通信程序。
在程序加載過(guò)程中,由于可能存在無(wú)線和CAN兩種通信方式,所以在Form_Load事件中要進(jìn)行初始化處理,參考以下程序:
‘CAN總線主控制器初始化程序
For i = 0 To Comm_Port_Num - 1
If CommSetups(i).commType = “CAN” Then
MSComm1.CommPort =CInt(Mid(Trim(CommSetups(i).commID), 4))
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.Settings = Trim(CommSetups(i).commSetting)
MSComm1.PortOpen = True ‘打開串行口
Text1.Text = “CAN通信端口初始化成功” & vbCrLf
Exit For
End If
Next i
‘nRF905射頻主控制器初始化程序
For i = 0 To Comm_Port_Num - 1
If CommSetups(i).commType = “COM” Then
MSComm1.CommPort =CInt(Mid(Trim(CommSetups(i).commID), 4))
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.Settings = Trim(CommSetups(i).commSetting)
MSComm1.PortOpen = True ’打開串行口
Text1.Text = “nRF905端口初始化成功” & vbCrLf
Exit For
End If
Next i
在數(shù)據(jù)接收過(guò)程中,MSComm提供了兩種處理通信問(wèn)題的方法,一是事件驅(qū)動(dòng)方法,一是查詢法。本系統(tǒng)采用事件驅(qū)動(dòng)方法,當(dāng)有新字符到達(dá)或端口狀態(tài)改變,或發(fā)生錯(cuò)誤時(shí),MSComm控件將觸發(fā)OnComm事件,而應(yīng)用程序在捕獲該事件后,通過(guò)檢查MSComm控件的CommEvent屬性可以獲知所發(fā)生的事件或錯(cuò)誤,從而采取相應(yīng)的操作。
當(dāng)需要發(fā)送數(shù)據(jù)時(shí),通過(guò)調(diào)用MSComm的Output方法實(shí)現(xiàn)。
結(jié)論
作為中山市新一輪產(chǎn)業(yè)結(jié)構(gòu)重點(diǎn)支持發(fā)展產(chǎn)業(yè)之一的游戲游藝產(chǎn)業(yè),為適應(yīng)市場(chǎng)營(yíng)銷需求多元化結(jié)構(gòu)及綜合性游玩方式的新需求,本系統(tǒng)由中山市金馬游藝機(jī)有限公司和電子科技大學(xué)中山學(xué)院聯(lián)合開發(fā)并于2008年下半年成功交付使用。本系統(tǒng)是集多項(xiàng)先進(jìn)技術(shù)于一體,突破游藝和動(dòng)漫原有的產(chǎn)業(yè)邊界,在傳統(tǒng)游藝機(jī)項(xiàng)目的基礎(chǔ)上首創(chuàng)性地將動(dòng)漫與機(jī)電控制、有線與無(wú)線組網(wǎng)等技術(shù)有機(jī)地結(jié)合在一起,設(shè)計(jì)完成一種新型交互式射擊游藝控制系統(tǒng)。
責(zé)任編輯:gt
評(píng)論
查看更多