声纳信号发生器通信控制模块的设计与实现

2012-09-26 02:27胡金华
电子设计工程 2012年21期
关键词:客户机声纳网络通信

饶 喆,胡金华,陈 迪

(海军工程大学 电子工程学院,湖北 武汉 430033)

在声纳维修训练过程中,通常需要产生一些特殊波形,用于仿真实际信号波形。由于一般信号发生器模式固定、波形不可程控以及精度较低等问题,难以实现参训人员进行实时信号检测。为了满足训练需求和易操作性,提高维修训练效率,声纳信号信号发生器的通信控制采用客户机/服务器的网络模式。客户机/服务器模式发展迅速、占用资源少且通信速率高,已经成为通信控制领域的主要通信标准[1]。

1 总体结构设计

网络通信控制模块采用局域网结构,如图1所示。通过网线连接一台服务器和1000/100Mbps的Cisco3524交换机,交换机输出端口连接至客户机,保证实时数据传输。

网络通信控制的对象是声纳信号发生器,该信号发生器基于研华公司的PCI-1711多功能数据采集卡,该卡具有16路单端模拟量输入、12位A/D转换器(采样速率可达100 kHz)、两路12位模拟信号输出、16路数字量输入和输出等特点,可通过VC++编程产生正弦波、方波、三角波等任意波形信号,其信号幅度、频率、脉宽、持续时间等参数在硬件允许范围内可根据用户需求而设定[2]。

图1 网络通信控制结构图Fig.1 Structure diagram of the network communication control

PCI-1711卡使用时,选用电缆PCL-10168将板卡与接线端子板ADAM-3968相连,声纳信号发生器通过服务器输出的数字控制量,利用PCI-1711的12位D/A转换功能,将数字控制量转换为模拟信号,从而实现任意波形输出。

根据维修训练任务,客户机通过高速局域网与服务器进行通信,将信号发生器的信号参数发送给服务器,服务器响应客户机的请求后,由接线端子板ADAM-3968输出的相应信号,经信号调理后供维修训练人员检测。

2 网络通信控制的设计

2.1 WinSock网络通信

WinSock定义了一套在Windows开发标准下的TCP/IP网络程序接口,并包含了针对Windows的扩展库函数,使程序员能够充分地利用消息驱动机制和异步网络事件选择方式进行编程。Windows Sockets进行网络通信通常运用CAsyncSocket类和派生于CAsyncSocket的 CSocket类两种编程模式,这两个类对WinSock API函数进行了封装,使用经过封装的WinSock类可减小编程工作量。在编程时通过对事件处理函数进行重载,用户可以在应用程序中很方便地对套接字发送和接收数据等事件进行处理。

所有Winsock的实现都支持Stream Sockets(流式套接字)和 Datagram Sockets(数据报套接字),Stream Sockets提供有序的、无差错的、面向连接的、无长度限制的双向字节流传输、Datagram Sockets支持双向的数据传输、提供不可靠的、无连接的数据报通信模式,不能保证数据准确传输。

2.2 客户端/服务器模式

利用Socket进行网络编程,涉及到C/S(客户机/服务器)模式,即客户端向服务器发出请求,服务器接收到请求后提供相应的服务.首先服务器要启动,并打开通信通道,侦听客机方是否有连接请求,待客户机发出请求数据后,根据请求数据提供相应服务。其次客户机要等待服务器的接收应答数据才可继续提出请求。最后,当客户机请求结束后方可关闭通信通道。

用户可通过客户机向服务器发送请求数据,服务器处理该请求并将该数据信息提取后,将信息参数传递给信号发生器,实现波形信号的产生。

3 程序设计思想

3.1 客户机信息录入方式

为满足声纳装备维修训练的要求,设计声纳信号数据库时应考虑可扩展性和通用性。因此,客户端信号参数设置可采用读取表格的方式,表格具有高可读性、方便修改等优点,有利于非专业人员在不修改程序的情况下,根据训练任务完成信号参数的设置。

3.2 客户机与服务器通信

服务器[3]首先启动,通过调用socket(,创建套接字,然后调用bind(,将套接字和本地网络地址关联,再调用listen(,使套接字做好侦听准备,之后就调用accept(,来等待客户机的连接;客户机启动后,创建套接字并调用connect(,和服务器建立连接,客户机和服务器之间就可以调用receive(,和send(,来收发数据。在完成通信后,双方调用close(,关闭套接字,然后退出。

3.3 数据采集与控制

服务器接收来自客户端的数据信息后,写入到寄存器中,通过PCI-1711卡的软件触发编程方式,查询寄存器实现数据的采集,利用中断服务程序将采集的数据传输到预先定义好的内存变量中,完成参数的传递,实现变量的赋值,从而控制信号发生器的信号输出。

系统的通信控制流程如图2所示。

图2 通信控制流程图Fig.2 Flow chart of the communication control

4 应用实例

下面结合本人课题中的声纳信号发生器通信控制部分,通过一个客户机/服务器模式的网络应用程序,在VC开发平台上实现本系统功能[4-6]。主要程序代码如下:

创建服务器对话框并对套接字进行初始化,然后服务器开始侦听客户机的连接。

客户机也建立一个套接字,设置服务器IP和端口号,在与服务器建立连接后,将线路的状态信息发送给服务器端。

客户机读取表格数据并向服务器发送数据,此处将表格数据保存在文本文件中,通过VC对文本文件的读取操作,实现数据通信。

服务器接收数据,并返回该数据以确认数据收发正确,保证通信正常,同时将数据写入文本文件,再将该文本文件中的数据信息读入到信号发生函数的相应变量中,实现信号发生器指定信号的输出。

客户机/服务器实现数据通信功能,其结果如图3所示。

图3 数据通信示例Fig.3 Data communication example

正弦信号波形在示波器中的显示结果如图4所示,其幅度在 0~10 V,频率在 1~1 kHz内任意可调。

5 结束语

介绍了在客户机/服务器模式下,运用Winsock网络编程技术,通过网络通信实现声纳信号发生器的控制。模块设计从声纳维修训练的需求出发,结合了装备的特点,具有一定的实用性和可扩展性。实验测试的结果说明该通信控制的设计方案合理,采用的软件开发工具和硬件设备能够实现系统功能。

图4 正弦信号Fig.4 Sine signal

[1]孙业国,秦世引.网络控制系统研究进展 [J].科技导报,2010,28(2):109-115.

SUN Ye-guo,QIN Shi-yin.The progress of network control system[J].Science&Technology Review,2010,28(2):109-115.

[2]王星,蔡廷文.基于VC++的数据采集系统[J].计算机应用技术,2006,33(11):41-43.

WANG Xing,CAI Ting-wen.The data acquisition system based on VC++[J].Technology of Computer Application,2006,33(11):41-43.

[3]马永宏,刘载文,贾永振.VC++环境下基于WinSock的网络通信[J].北京工商大学学报:自然科学版,2006,24(6):40-44.

MA Yong-hong,LIU Zai-wen,JIA Yong-zhen.Network communication based on WinSock in VC++[J].Journal of Beijing Technology and business University:Natual Science Edition,2006,24(6):40-44.

[4]胡志坤,秦业,鄢峰,等.Visual C++通信编程工程实例精解[M].北京:机械工业出版社,2007.

[5]魏扬.基于JAVA Socket网络通信模型设计与实现[J].内江科技,2011(8):97.

WEI Yang.Design and implement socket model of network communication on Java[J].Neijiang Technology,2011(8):97.

[6]胡鸣.Windows网络编程技术[M].北京:科学出版社,2008.

猜你喜欢
客户机声纳网络通信
基于耦合偏微分方程的干涉合成孔径声纳干涉图滤波方法
Daniel Kish
船载调频连续波声纳测深技术研究
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
谈计算机网络通信常见问题及技术发展
关于声纳发射电源的改进设计
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”