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