基于UC_OS_的网络控制系统通讯接口设计
- 格式:pdf
- 大小:366.41 KB
- 文档页数:3
文章编号:1006-1576(2003)03-0055-03基于UC/OS -Ⅱ的网络控制系统通讯接口设计倪一鸣(福州市委党校电教中心,福建福州 350014)摘要:基于UC/OS-Ⅱ实时操作系统的网络控制系统,通过以太网将服务器和各地控制器联结,可控制多个电机协调运动。
服务器采用工业级计算机,客户端(控制器)采用集成网卡接口的嵌入式系统,通过交换机进行数据交换。
系统根据IP地址将命令送给各控制器,同时将客户端状态返回,并通过检验校验字符的方式减少联网过程的握手次数。
其通讯的最基本函数用标准C语言编写,生成静态库文件,可直接通过工程方式使用。
其通讯接口包括联网初始化、服务器和客户端网络联接、以及控制、异常处理和维护等程序。
关键词:通讯接口;嵌入式系统;网络控制系统;TCP/IP;UC/OS-Ⅱ 中图分类号:TP393.09 文献标识码:ADesign of Communication Interface for Network Control SystemBased on UC/OS-ⅡNI Yi-ming(TV Education Center, Party School of Fuzhou City, Fuzhou 350014, China) Abstract: The control of combine d movement for many motors can be realized with the network control system based on UC/OS-Ⅱ via the connection among servers and every controllers by ethernet. Industry computer is used in s erver, embedded system that has the interface of integrated network card is used in client server, and data swapping is carried through exchange. According as IP address, commands was sent to every controllers and the data information of client server was retaken at the same time. The connected times of network is reduced with the test mode of check-character string. Basal communication function is compile d with C language, then, it creates library file and uses it in engineering mode. C ommunication Interface includes programs of initialization of connected n etwork, the n etwork connection between server and client server, control, processing and maintenance.Key words: Communication Interface; Embedded System; Network control system; TCP/IP; UC/OS-Ⅱ 1 概述嵌入式实时操作系统具有如下特点:① 响应速度快,可及时处理外部消息和更新系统参数;② 系统可靠性高,可避免误动作和系统崩溃;③ 体积小,在各种条件下方便安装;④ 成本低廉,便于大量开发。
由于其独有的优势,这种系统目前正得到越来越广泛的应用。
2 基于UC/OS-Ⅱ的网络通讯接口设计2.1 系统构成基于UC/OS-Ⅱ的网络控制系统,用以太网将服务器和各地控制器联为一体,协调动作。
为了维护的方便,服务器采用工业级的计算机,客户端(控制器)采用的是嵌入式系统。
通过交换机进行数据交换。
系统的构成如图1所示。
图1 系统的构成收稿日期:2002-11-26;修回日期:2003-01-29 作者简介:倪一鸣(1959-),男,福建人,福州市委党校讲师,从事计算机教学与科研。
・55・客户端的控制器对应着IP地址,服务器根据IP地址将不同的命令送给控制器,同时将客户端的状态返回,写进服务器的数据库中,形成日志,以便查询状态和进行现场恢复的工作。
2.2 系统的程序设计由于系统是基于工业现场控制,高效的网络传输必不可少,为此,研究了各种网络协议,选择了TCP/IP协议。
TCP/IP是指一系列的协议,包括TCP(传输控制协议)、UDP(用户数据报协议)、IP (Internet协议)还有一些更低层的连接层协议,如Ethernet(以太网协议)等。
用TCP协议传输的数据实际是指数据流中的段,而用UDP协议传输的数据是指数据包。
IP则是TCP、UDP(传输层协议)之下的网络层协议。
IP所提供的是非可靠的、无连接能力的、向指定主机地址的包传送的协议。
IP包也叫数据包。
数据包可能出现丢失、重复或次序紊乱等现象,所以,它是非可靠的协议。
但是,IP 协议的最大好处是,IP数据包独立于低层的网络,所以它是一种通用的数据传送方法。
TCP和UDP都属于IP上层的传输层协议。
二者都使用端口号作为送往主机的解码地址。
端口号由各个具体应用所确定,使用多个端口号能完成“一机多网”的操作。
每个UDP数据包和TCP数据段中都含源端口号和目的端口号。
为接收远端的输入而等待着执行接入操作的主机是服务器,发起接入请求的主机是客户机。
嵌入式应用可以从标准的网络协议获益很多,用最少的资源可实现最广泛的远方监控。
为了提高系统的实时性,将TCP/IP协议进行了修改和封装,主要通过检验校验字符的方式减少联网过程中的握手次数。
在嵌入式系统中,用标准C语言,将通讯的最基本函数进行了编写,生成静态库文件,可直接通过工程方式使用。
(1) 联网的初始化工作为了进行联网,要在嵌入式操作系统安装网卡,同时在系统的批处理文件中,运行网卡驱动程序。
一般的网卡驱动程序都提供可直接在实时操作系统的安装文件。
网卡安装上驱动程序并正常工作,会显示网卡的端口号和中断号。
程序初始化时,需根据系统中的*.CFG文件,配置客户端的IP地址和获取与之相联的服务器的端口地址。
使用的配置文件如下:my_ip=192.168.0.114 (本地端的IP地址)hostname=zcg (本地端的IP地址)domainslist="jdgc" (域名)nameserver=192.168.0.100 (服务器端的IP地址)netmask=255.255.255.0 (子网掩码)(2) 服务器的网络联接程序在工业控制中,服务器端要和多个控制器进行联接。
因此,在服务器运行程序中,还必须准备和客户端建立联接,一旦网络接口监听到有客户端需与之联接,必须及时做出反应。
服务器端联接程序流程如图2。
图2 服务器端联接程序流程框图服务器端程序开始运行时,将一直对网络进行监听,直到与一个客户端建立联接。
如果程序运行中,服务器将建立最新的联接,程序返回后记录最新建立的联接参数:sockAccept=accept(sockID, (struct sockaddr *)& client_addr, & cltaddr_length);sockID_sun=sockAccept;memcpy (& client_addrSun, & client_addr, sizeof (struct sockaddr));sockList[i]=sockAccept; memcpy (& client_addrList[i],& client_addr, sizeof (struct sockaddr));与客户端建立联接后,服务器就会记录下与之建立的联接参数,通过这些参数与客户端进行数据传输。
(3) 客户端的网络联接程序因为客户端是作为系统的一个线程,一旦上电,就会自动要求与服务器端建立联接,所以在客户端程序的初始化中,当网卡参数自动加载后,就会发出建立请求。
这部分的源代码如下:if (!tcp_open(& s, 0, remoteip1, remoteport, NULL )){printf ("Unable to open connection \n"); return;} sock_mode ((sock_type *) & s,TCP_MODE_BINARY);sock_wait_established ((sock_type *)& s,sock_delay, NULL, & status);・56・在服务器对请求信息未作出反应前,客户端将处于等待状态;在建立联接后,客户端将进入命令处理模块;在请求一段时间后没有回应,客户端会输出出错信息,驱动外面指示灯变红。
(4) 控制程序的实现建立网络联接后,服务器需将控制命令传给相应的客户端。
客户端根据传入的控制命令,执行控制函数,控制外面机构完成预期的动作。
通过该功能模块,服务器具有单步命令调试和程序段下载、执行功能,前者用于系统的调试阶段,后者便于用户编写系统的控制程序。
单步调试时,服务器窗口有一个单步命令调试区,如果在其中写入控制命令,主控计算机会将控制命令直接传给客户端。
客户端接收到控制命令后,通过查表判断传入的命令是否合法,非法则向主控计算机反馈信息,合法便执行该命令并将执行结果返回给服务器端。
接收数据时,从IP层来的数据经过状态机去掉TCP包头后送到应用层。
发送数据时,软件状态机在数据前面加上TCP包头再发送到IP 层。
为了保证数据交互的准确,在发送数据段的末尾特意加上特殊字符‘$’,进行二次握手。
客户端接收到‘$’,表示当前接收完毕,向服务器返回消息。
服务器接收‘$’,向客户端发送新的命令,进入待发状态。
流程见图3。
图3 客户端流程图 (5) 程序的异常处理和维护程序执行中故障难免,必须现场保护和及时修复,为此,可通过记录日志及时检测系统运行状态。
在本地建立了一个数据库,对一个月的生产、消耗信息进行记录,同时对各种工作状态进行及时更新。
系统工作中,当客户端工作状态异常时,会自动报警,要求关闭该客户端,重新建立连接。