引言
隨著人們生活水平的提高,人們愈來愈追求多樣化和個性化的休閑娛樂方式,除了“求新、求奇、求特、求異”之外,大家更加注重體驗參與式的游藝活動,為了應對這種消費需求偏好的改變,提升企業自身競爭力,本系統將先進的激光多址編碼、RF無線射頻、CAN總線、動漫與光機電控制等技術相結合,設計一種基于光機電與動漫結合的新型交互式射擊游藝系統。
目前,比較好的射擊游藝系統有迪斯尼公司的“巴斯光年星際歷險”,另一種類似的游樂設施有“Buzz Light year’s Space Ranger Spin”,它們一直以來都是主題樂園內深受歡迎的游樂設施之一。但以上兩種系統都缺少游藝過程和調度中心控制協作的功能,沒有上位機控制軟件,不能存儲分析射擊數據。本系統在集成上述系統先進技術和創意理念的基礎上,克服了上述技術問題,通過有線與無線通信的有機結合,從技術到創意都有較大的提高,使游客可享受到更大的游藝樂趣。
控制系統的設計與實現
系統主要由中心調度分系統、游藝小車通信分系統、區域道具動作機電控制分系統、車載PLC運動控制分系統、動漫效果與光機電控制分系統組成,如圖1所示。
圖1 系統組成結構示意圖
中心調度分系統
通過CAN總線與區域道具動作機電控制分系統進行雙向數據通信實現計分與道具機電動作控制;與游藝小車通信分系統采用基于無線射頻模塊nRF905的主從式雙向數據通信實現動漫效果與光機電控制,實現射擊過程的實時計分顯示、動漫場景與光機電動作協調控制。中心調度分系統接收/處理各區域控制分系統計分和檢測開關狀態、車載分系統初始化等信號;顯示車載系統各車子網絡連接狀態;通過人工方式向車載分系統發送啟動、停車等控制指令;自動向車載分系統發送實時分數信息;控制播放數字化動漫影音信息,并向車載分系統發送控制信號(該信號由各車子行走控制系統解釋并執行車子動作);處理分數排行及歷史紀錄、用戶信息管理等;下客區顯示屏播放即時分數、候客區顯示屏播放歷史紀錄、預演區顯示屏播放游戲短片及解說、區域控制區內投影機播放數字化動漫影片;能控制至少8個區域控制分系統(共110個控制點)。
游藝小車通信分系統
通過人工觸發玩具手槍內的紅外激光發射模塊,向區域道具動作機電控制分系統發射多址編碼信息,模擬射擊過程,完成游客與現場道具的交互過程。接收/處理中心調度分系統的分數信息并顯示;接收中心控制分系統的啟動、停止和動作指令,并通過RS232數字接口通道透明地傳輸給車載PLC控制分系統;接收車載PLC控制分系統信息并發送給中心調度分系統;實時顯示對應車號座位打中靶模分數;實現叩動扳機或按鈕音效、其它動作音效。
車載PLC運動控制分系統
通過西門子的S7_200 PLC控制伺服電機,控制游藝小車的行走、旋轉、定位、防撞等動作,自動探測位置實現防碰撞、自動上報游藝小車當前運行狀態等。
動漫效果與光機電控制分系統
由中心調度分系統通過CAN控制總線下發動漫播放控制指令,接收區域控制器輸出的道具控制信號控制機電動作效果,執行道具相應特定的聲光電效果;實現各場景機電控制動作。
區域道具動作控制分系統
接收/處理車載通信分系統發射的紅外激光編碼信息;通過CAN總線向中心調度分系統發送計分信息,接收中心調度分系統的控制指令;響應區域控制器輸出信號的動作及燈光特效、音響效果;每個區域能容納至少各20個輸入輸出I/O口(I口光電隔離,O口繼電器)。
通信網絡的組成
本系統有機地將CAN總線與RF無線通信有機結合在一起,實現射擊過程的有效互動。
基于nRF905主從式無線局域網通信
系統由一個中心控制設備(中心調度分系統主通信模塊)及8個節點設備(游藝小車)組成[2],中心設備PC機使用全雙工USB-UART串口與主模塊通信,主模塊與各節點模塊傳輸無線數據。根據網絡協議,數據傳輸采用半雙工的點對點方式或廣播的方式。節點模塊可根據接收的數據進行相應的顯示、控制操作,并可通過UART與下位機PLC進行通信,如圖2所示。
圖2 基于nRF905主從式無線局域網通信結構示意圖
為此,定義用戶數據內容如下:用戶數據包括4位的狀態字X和Data數據:狀態字X的高兩位用于控制數據發送方向,如X高兩位為00表示中心控制設備向節點設備發送顯示數據,此時低兩位為屏幕ID,用于進行分屏顯示,顯示內容為Data數據;如X高兩位為01,低兩位備用,表示中心控制設備向節點設備發送控制數據Data,節點設備可通過UART將Data數據送至下位機PLC;如X高兩位為10,低兩位備用,表示節點設備向中心控制設備發送來自下位機PLC串口的Data數據。
基于CAN總線的道具動作多址通信
如圖3所示,CAN總線通信網絡中每個道具作為獨立的CAN節點,通過PIC18F4580的CAN接口掛在CAN總線上,CAN總線各個節點與主控器連成一體,利用CAN通信協議實現各節點間分區域的數據交換與信息處理[3]。
圖3 CAN總線通信結構示意圖
中心調度程序的設計與實現
中心調度程序采用面向對象的設計方法,開發語言使用Visual Basic,后臺數據庫使用SQL-SERVER 2000,如圖4所示。
圖4 中心調度程序結構示意圖
根據系統功能要求不同,分為射擊分數顯示客戶端程序、動漫播放控制客戶端程序,中心調度服務器程序和后臺數據庫。程序之間通過Winsock進行局域網數據通信,CAN總線和nRF905無線射頻的主控制器通過UART-USB模塊與調度中心程序進行數據通信。
基于Winsock的網絡通信程序設計
使用Winsock控件時可以使用兩種協議:TCP協議和UDP協議,本系統采用TCP協議,分別建立客戶應用程序和服務器應用程序。
在創建客戶應用程序時,必須知道服務器計算機名或其IP地址(存于RemoteHost屬性)、及服務器計算機進行偵聽的端口(存于RemotePort屬性),然后調用Connect方法。
創建服務器應用程序時,就應相應設置一個偵聽端口(LocalPort屬性)并調用Listen方法。當客戶機需要連接時(connect),就會發生ConnectionRequest事件。由于系統有多個客戶端,因此要動態管理客戶端的各個連接請求,參考如下程序設計:
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 ’檢查是否已經有該地址的記錄
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事件中調用Accept方法。建立連接后,任何一方計算機都可以發送、接收對方數據。發送數據時,需調用SendData方法。當接收到數據時,會發生DataArrival事件,調用DataArrival事件中的GetData方法就可以獲得對方傳送的數據。
基于MSComm的串口通信程序設計
MSComm通信控件提供了一系列標準通信命令的接口,它允許建立串口連接,可以連接到其他通信設備、還可以發送命令、進行數據交換以及監視和響應在通信過程中可能發生的各種錯誤和事件,從而可以用它創建全雙工的、事件驅動的、高效實用的通信程序。
在程序加載過程中,由于可能存在無線和CAN兩種通信方式,所以在Form_Load事件中要進行初始化處理,參考以下程序:
‘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
在數據接收過程中,MSComm提供了兩種處理通信問題的方法,一是事件驅動方法,一是查詢法。本系統采用事件驅動方法,當有新字符到達或端口狀態改變,或發生錯誤時,MSComm控件將觸發OnComm事件,而應用程序在捕獲該事件后,通過檢查MSComm控件的CommEvent屬性可以獲知所發生的事件或錯誤,從而采取相應的操作。
當需要發送數據時,通過調用MSComm的Output方法實現。
結論
作為中山市新一輪產業結構重點支持發展產業之一的游戲游藝產業,為適應市場營銷需求多元化結構及綜合性游玩方式的新需求,本系統由中山市金馬游藝機有限公司和電子科技大學中山學院聯合開發并于2008年下半年成功交付使用。本系統是集多項先進技術于一體,突破游藝和動漫原有的產業邊界,在傳統游藝機項目的基礎上首創性地將動漫與機電控制、有線與無線組網等技術有機地結合在一起,設計完成一種新型交互式射擊游藝控制系統。
責任編輯:gt
評論