微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种基于嵌入式实时操作系统的微机保护装置网络通信方案

一种基于嵌入式实时操作系统的微机保护装置网络通信方案

时间:05-07 来源:维库 点击:

引言

随着科学技术的不断发展,人们已经无法满足传统的网络通信方式,对于一种高性能的网络通信的呼声愈来愈高。VxWorks 是美国 Wind River SySTem 公司在1983年推出的一个实时操作系统,它以可靠、实时、可裁剪的特点着称,利用VxWorks对TCP/IP协议、多任务以及BSD Socket的良好支持,一种新的可方便地实现网络通信的方法将得以实现。

  1 VxWorks网络协议

VxWorks通常使用以太网作为最底层传输媒介。而在传输媒介的上一层,VxWorks则用TCP/IP协议来用于VxWorks进程与其它主机环境进程之间的传输数据。用户程序需要的就是在TCP/IP层之上进行通信。因此,利用VxWorks对多任务和socket的良好支持,可以方便的实现网络通信。

TCP/IP是VxWorks提供的网络间进程通信的主要机制,它主要包括三个协议:Internet协议、IP协议和传输层协议。其中Internet协议是处于TCP和UDP之上的一组协议专门开发的应用程序,包括telnet、文件传输协议(FTP)等。IP层也称网络层,它包括Internet协议(IP)、网际控制报文协议(ICMP)和地址识别协议(ARP);其中IP协议是TCP/IP协议族的基础,该协议被设计成互联分组交换通信网,现已形成了一个网际通信环境,它负责在源主机和目的地主机之间传输来自其较高层软件的(称为数据报文的)数据块,它在源和目的地之间可提供非连接型传递服务;而传输层协议包括传输控制协议,主要有面向连接的TCP和无连接数据报UDP两种协议。

VxWorks网络协议是一个基于开放系统的互连(OSI)模型,而且系统为了向高层协议层提供一个统一的、规范的、方便协议移植的网络接口,在高层IP层之下添加了一个MUX层,由MUX层负责与网络底层驱动的交互。这样做可以使用户在设计协议中不必关心网络底层的数据传递,而在设计网络驱动程序时也不必关心协议栈的结构,因而大大方便了对其进行的开发。VxWorks网络协议的结构如图1所示。


2 基于双缓冲队列的网络通信设计

网络通信的基石是套接字,一个套接字是通信的一端,在这一端上可以找到与其对应的一个名字。一个正在被使用的套接字都有它的类型和其相关的任务,VxWorks可以实现与BSD4.4TCP/IP兼容的Socket编程接口。由于面向连接的服务器使用的传输层协议可保证数据传送的可靠性和顺序性,因此,本文的系统端采用基于流Socket的客户机/服务器(Client/Server)编程模式,其程序可以分为客户端程序和服务端程序。其通信模型如图2所示。


2.1 客户端程序设计

所谓客户端服务程序,就是主要用来发出服务请求的程序。客户端程序设计要知道服务端的地址、服务所提供的端*及服务使用的传输层协议(TCP协议)。在客户/服务器模式中,客户端程序可以通过两种形式找到服务器:一是通过指定服务器的IP地址和端*来找到服务端;二是通过广播的形式来来寻找服务器。本系统的客户端程序应用第一种形式来寻找服务器。知道了服务端的位置后,客户端任务就可以打开一个套接字,然后通过连接服务器来发送和接收数据。

面向连接的TCP客户端编程结构分为部分:一是以TCP连接服务器,TCP协议是一种可保证传输可靠,且能保护顺序的传输层协议。在连接服务器之前,先要申请一个SOCK_STREAM类型的套接字,该套接字的通信域应制定为PF_INET类型;二是使用TCP与服务器通信,因为TCP是面向连接的协议,在连接建立以后,它可以通过send、recv等调用来进行通信,就像管道一样;三是关闭TCP连接,即在客户端程序结束,或使用完一个套接字后,可以使用close来关闭一个套接字。

2.2 服务端程序设计

在服务端程序设计中,可以根据对要实现的网络服务功能来设计自己的应用层协议。本系统服务端使用的TCP是面向连接的服务端。在这种模式下,服务端程序的设计就可以不考虑数据的可靠传送,而只要接受连接请求,并通过该连接进行通信即可,这样,底层的传输协议就自然会保证数据传送的可靠性。

服务端程序设计的两种基本模式是循环模式和并发模式。循环模式就是服务端进程在总体机构上是一个循环,一次处理一个请求。并发模式的服务端进程一般可以同时处理多个请求,结构上一般采用父进程接受请求,然后产生子进程,这样一般为多进程结构。

本文选用面向连接服务端的循环模式,此模式的建立步骤如下:
(1)创建一个SOCK_STREAM类型的套接字;
(2)调用bind指定地址和端口;
(3)调用listen未处理连接请求的队列长度;
(4)调用accept等待连接请求,一旦有连接请求,accept返回一个新的套接字描述符;
(5)通过新的描述符与客户端交互信息,交互完毕,即关闭新产生的套接字并返回第四步。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top