聲納信號發(fā)生器通信控制模塊的設計與實現(xiàn)
摘要:文中針對某型聲納維修訓練系統(tǒng)的通信需求,結(jié)合聲納信號發(fā)生器的特點,提出了基于C/S模式的通信控制模塊設計方案。模塊采用Winsock網(wǎng)絡編程技術(shù)實現(xiàn)了客戶機與服務器間高速局域網(wǎng)通信,服務器響應客戶機的請求后,輸出數(shù)字控制量并利用PCI-1711的12位D/A轉(zhuǎn)換功能,將數(shù)字控制量轉(zhuǎn)換為模擬信號,從而實現(xiàn)聲納信號發(fā)生器任意波形產(chǎn)生。試信號發(fā)生器輸出信號的幅度、頻率、脈寬、持續(xù)時間等參數(shù)均可通過網(wǎng)絡通信方式設置,并易于調(diào)節(jié)。本系統(tǒng)控制靈活,具有較高的實用價值。
關(guān)鍵詞:C/S;Winsock;通信控制;聲納信號發(fā)生器
在聲納維修訓練過程中,通常需要產(chǎn)生一些特殊波形,用于仿真實際信號波形。由于一般信號發(fā)生器模式固定、波形不可程控以及精度較低等問題,難以實現(xiàn)參訓人員進行實時信號檢測。為了滿足訓練需求和易操作性,提高維修訓練效率,聲納信號信號發(fā)生器的通信控制采用客戶機/服務器的網(wǎng)絡模式??蛻魴C/服務器模式發(fā)展迅速、占用資源少且通信速率高,已經(jīng)成為通信控制領(lǐng)域的主要通信標準。
1 總體結(jié)構(gòu)設計
網(wǎng)絡通信控制模塊采用局域網(wǎng)結(jié)構(gòu),如圖1所示。通過網(wǎng)線連接一臺服務器和1000/100Mbps的Ciseo3524交換機,交換機輸出端口連接至客戶機,保證實時數(shù)據(jù)傳輸。
網(wǎng)絡通信控制的對象是聲納信號發(fā)生器,該信號發(fā)生器基于研華公司的PCI-1711多功能數(shù)據(jù)采集卡,該卡具有16路單端模擬量輸入、12位A/D轉(zhuǎn)換器(采樣速率可達100 kHz)、兩路12位模擬信號輸出、16路數(shù)字量輸入和輸出等特點,可通過VC++編程產(chǎn)生正弦波、方波、三角波等任意波形信號,其信號幅度、頻率、脈寬、持續(xù)時間等參數(shù)在硬件允許范圍內(nèi)可根據(jù)用戶需求而設定。
PCI-1711卡使用時,選用電纜PCI-10168將板卡與接線端子板ADAM-3968相連,聲納信號發(fā)生器通過服務器輸出的數(shù)字控制量。利用PCI-1711的12位D/A轉(zhuǎn)換功能,將數(shù)字控制量轉(zhuǎn)換為模擬信號,從而實現(xiàn)任意波形輸出。
根據(jù)維修訓練任務,客戶機通過高速局域網(wǎng)與服務器進行通信,將信號發(fā)生器的信號參數(shù)發(fā)送給服務器,服務器響應客戶機的請求后,由接線端子板ADAM-3968輸出的相應信號,經(jīng)信號調(diào)理后供維修訓練人員檢測。
2 網(wǎng)絡通信控制的設計
2.1 WinSock網(wǎng)絡通信
WinSock定義了一套在Windows開發(fā)標準下的TCP/IP網(wǎng)絡程序接口,并包含了針對Windows的擴展庫函數(shù),使程序員能夠充分地利用消息驅(qū)動機制和異步網(wǎng)絡事件選擇方式進行編程。Windows Sockets進行網(wǎng)絡通信通常運用CAsyncSocket類和派生于CAsyncSocket的CSocket類兩種編程模式,這兩個類對WinSock API函數(shù)進行了封裝,使用經(jīng)過封裝的WinSock類可減小編程工作量。在編程時通過對事件處理函數(shù)進行重載,用戶可以在應用程序中很方便地對套接字發(fā)送和接收數(shù)據(jù)等事件進行處理。
所有Winsock的實現(xiàn)都支持Stream Sockets(流式套接字)和Datagram Sockets(數(shù)據(jù)報套接字),Stream Sockets提供有序的、無差錯的、面向連接的、無長度限制的雙向字節(jié)流傳輸、Datagram Sockets支持雙向的數(shù)據(jù)傳輸、提供不可靠的、無連接的數(shù)據(jù)報通信模式,不能保證數(shù)據(jù)準確傳輸。
2.2 客戶端/服務器模式
利用Socket進行網(wǎng)絡編程,涉及到C/S(客戶機/服務器)模式,即客戶靖向服務器發(fā)出請求,服務器接收到請求后提供相應的服務,首先服務器要啟動,并打開通信通道,偵聽客機方是否有連接請求,待客戶機發(fā)出請求數(shù)據(jù)后,根據(jù)請求數(shù)據(jù)提供相應服務。其次客戶機要等待服務器的接收應答數(shù)據(jù)才可繼續(xù)提出請求。最后,當客戶機請求結(jié)束后方可關(guān)閉通信通道。
用戶可通過客戶機向服務器發(fā)送請求數(shù)據(jù),服務器處理該請求并將該數(shù)據(jù)信息提取后,將信息參數(shù)傳遞給信號發(fā)生器,實現(xiàn)波形信號的產(chǎn)生。
3 程序設計思想
3.1 客戶機信息錄入方式
為滿足聲納裝備維修訓練的要求,設計聲納信號數(shù)據(jù)庫時應考慮可擴展性和通用性。因此,客戶端信號參數(shù)設置可采用讀取表格的方式,表格具有高可讀性、方便修改等優(yōu)點,有利于非專業(yè)人員在不修改程序的情況下,根據(jù)訓練任務完成信號參數(shù)的設置。
3.2 客戶機與服務器通信
服務器首先啟動,通過調(diào)用socket(,創(chuàng)建套接字,然后調(diào)用bind(,將套接字和本地網(wǎng)絡地址關(guān)聯(lián),再調(diào)用listen(,使套接字做好偵聽準備,之后就調(diào)用accept(,來等待客戶機的連接;客戶機啟動后,創(chuàng)建套接字并調(diào)用connect(,和服務器建立連接,客戶機和服務器之間就可以調(diào)用receive(,和send(,來收發(fā)數(shù)據(jù)。在完成通信后,雙方調(diào)用close(,關(guān)閉套接字,然后退出。
3.3 數(shù)據(jù)采集與控制
服務器接收來自客戶端的數(shù)據(jù)信息后,寫入到寄存器中,通過PCI-1711卡的軟件觸發(fā)編程方式,查詢寄存器實現(xiàn)數(shù)據(jù)的采集,利用中斷服務程序?qū)⒉杉臄?shù)據(jù)傳輸?shù)筋A先定義好的內(nèi)存變量中,完成參數(shù)的傳遞,實現(xiàn)變量的賦值,從而控制信號發(fā)生器的信號輸出。
系統(tǒng)的通信控制流程如圖2所示。
4 應用實例
下面結(jié)合本人課題中的聲納信號發(fā)生器通信控制部分,通過一個客戶機/服務器模式的網(wǎng)絡應用程序,在VC開發(fā)平臺上實現(xiàn)本系統(tǒng)功能。主要程序代碼如下:
創(chuàng)建服務器對話框并對套接字進行初始化,然后服務器開始偵聽客戶機的連接。
客戶機也建立一個套接字,設置服務器IP和端口號,在與服務器建立連接后,將線路的狀態(tài)信息發(fā)送給服務器端。
客戶機讀取表格數(shù)據(jù)并向服務器發(fā)送數(shù)據(jù),此處將表格數(shù)據(jù)保存在文本文件中,通過VC對文本文件的讀取操作,實現(xiàn)數(shù)據(jù)通信。
服務器接收數(shù)據(jù),并返回該數(shù)據(jù)以確認數(shù)據(jù)收發(fā)正確,保證通信正常,同時將數(shù)據(jù)寫入文本文件,再將該文本文件中的數(shù)據(jù)信息讀入到信號發(fā)生函數(shù)的相應變量中,實現(xiàn)信號發(fā)生器指定信號的輸出。
客戶機/服務器實現(xiàn)數(shù)據(jù)通信功能,其結(jié)果如圖3所示。
正弦信號波形在示波器中的顯示結(jié)果如圖4所示,其幅度在0~10 V,頻率在1~1 kHz內(nèi)任意可調(diào)。
5 結(jié)束語
介紹了在客戶機/服務器模式下,運用Winsock網(wǎng)絡編程技術(shù),通過網(wǎng)絡通信實現(xiàn)聲納信號發(fā)生器的控制。模塊設計從聲納維修訓練的需求出發(fā),結(jié)合了裝備的特點,具有一定的實用性和可擴展性。實驗測試的結(jié)果說明該通信控制的設計方案合理,采用的軟件開發(fā)工具和硬件設備能夠?qū)崿F(xiàn)系統(tǒng)功能。