当前位置:首页 > 作文大全 >

基于TCP/IP与can总线的多路工业控制器

发布时间: 2022-03-23 09:22:50 浏览:

摘要:在工业控制领域,常常需要同时监测或控制多台设备,而控制与监控中心多为PC机,布线也较为复杂,对于被监测设备较多的地方还需要增加PC机数量,这无疑大大增加了成本。现提出一种利用基于嵌入式系统的总线型控制器的方法来解决这个问题,该文介绍了一种TCP/IP与CAN总线的多路控制系统的设计与实现方法。通过分析TCP/IP网络与CAN总线的特点,给出了控制系统中硬件设计方案及软件模块。该方案是以嵌入式网关为基础,向上连接PC机,向下连接现场设备,并实现对设备的监控。

关键词:TCP/IP;CAN总线;嵌入式系统;多路工业控制

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2010)17-4805-04

Multiplex Industry Controller Based on TCP/IP and CAN Bus

WANG Li-xia, FAN Yan, TANG Wan-wei

(Tangshan College Information Technology Department, Tangshan 063000, China)

Abstract: In the field of industry control, we usually have to monitor or control several devices, however the most of the centers of monitor and control are personal computers, and the layout of circuit is too complex. If there are too many devices to be controlled or monitored, the number of computers is greater, so the cost price is raised. Now we propose a method of bus-controller based on embedded system to solve the problem. This paper introduces the method of design and realization of multiplex control system based on TCP/IP and CAN bus. According to the features of TCP/IP and CAN, the hardware design scheme and software modules are discussed. The system based on embedded gateway connects to personal computer above and connect to local devices below to monitor the devices.

Key words: TCP/IP; CAN bus; embeded system; multplex industry control

TCP/IP、CAN是两种应用非常广泛的协议。CAN总线属于现场总线的一种,已经在众多的工业领域得到广泛的应用。而以TCP/IP协议为基础的Internet现在已经不仅仅限于连接普通的计算机,也开始向工业领域发展。基于上述现状,本文实现了一种CAN总线与以太网的连接方案。

1 系统结构

系统总体结构分为:PC机、嵌入式控制器、Can控制器和受控设备四部分[1]。如图1所示。

1.1 CAN总线

CAN总线[2]是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对数据的成帧处理,用户可在其基础上开发适应系统实际需要的应用层通信协议。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块编码,采用这种方法可使网络内节点个数在理论上不受限制,还可使不同的节点同时收到相同的数据。CAN总线提供高速数据传送, 在短距离(40m)条件下具有高速(1Mbit/s)数据传输能力,而在最大距离10000m时具有低速(5kbits/s)传输能力,极适合在高速的工业自控应用上,CAN总线可在同一网络上连接多种不同功能的传感器(如位置,温度或压力等)。

在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。 报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

1.2 嵌入式系统

一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。

嵌入式系统从大的层面分为软、硬两部分,下面分别对它们进行介绍:

1)嵌入式微处理器

嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。

嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。

2)嵌入式操作系统

嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件,过去它主要应用与工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。现在应用较多的为嵌入式linux、windows CE等。

2 硬件组成及主要元件介绍

PC机与嵌入式设备通信利用TCP/IP协议构成service/client模式,嵌入式设备作为服务器接受PC机提交的数据,将数据计算处理之后通过CAN总线控制器发送到CAN总线上去控制设备,设备挂接在CAN总线上与嵌入式设备进行双向通信。

嵌入式微处理器采用ARM系列的AT91rm9200芯片,can总线控制器采用SJA1000芯片。

在软件层面上,嵌入式操作系统采用嵌入式linux-2.4.27内核,bootloader采用U-boot 1.0版本,编译器为arm-linux-gcc-2.95.3。

2.1 嵌入式微处理器

嵌入式微处理器采用ARM系列的AT91rm9200芯片。AT92rm9200是一款基于ARM920T?内核支持的ARM? Thumb? 指令集的处理器,180 MHz时每秒可执行两百万条指令 , 内嵌MMU(内存管理单元);16-KByte 数据Cache, 16-KByte 指令Cache, 写缓冲,In-circuit Emulator including Debug Communication Channel,Mid-level Implementation Embedded Trace Macrocell (256-ball BGA Package Only), 低能耗: VDDCORE输入电流为30.4 mA,待机模式下为3.1 mA,是一款性价比较高的ARM芯片。

2.2 can总线控制器

can总线控制器采用SJA1000芯片。SJA1000是一款独立的CAN控制器,用于汽车和一般工业环境中的控制器局域网络(CAN)。它是NXP半导体PCA82C200 CAN控制器(BasicCAN)的替代产品。而且,它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN 2.0B协议。

和PCA82C200独立CAN控制器电气兼容;

PCA82C200模式(即默认的BasicCAN模式);

扩展的接收缓冲器(64字节、先进先出FIFO);

和CAN2.0B协议兼容(PCA82C200兼容模式中的无源扩展帧);

同时支持11位和29位识别码;

位速率可达1Mbits/s;

PeliCAN模式扩展功能:1) 可读/写访问的错误计数器;2) 可编程的错误报警限制;3) 最近一次错误代码寄存器;4) 对每一个CAN总线错误的中断;5) 具体控制位控制的仲裁丢失中断;6) 单次发送(无重发);7) 只听模式(无应答、无主动的出错标志);8) 支持热插拔(软件实现的位速率检测);9) 验收滤波器扩展(4字节代码,4字节屏蔽);10) 自身信息接收(自接收请求)。

3 软件开发简介

首先在嵌入式设备上移植U-boot、linux内核,内核配置支持TCP/IP协议,支持NFS网络文件系统。应用程序利用套接口与PC机进行通信,现做如下介绍。

3.1 基本套接字

为了实现进程间在网络上的通信,Linux为进程的应用程序提供了应用层的统一接口,称为套接字(socket)接口,简称套按字。套接字提供了访问下层通信协议的大量系统调用和相应的数据结构。在Linux中,套接字接口是应用程序访问下层的网络协议的惟一方法。它定义了许多函数和例程,程序员可以用它开发网络应用程序。套接字接口本意在于提供一种进程问通信的方法,使得在相同或不同主机上的进程能以相同的规范进行了双向信息传送。进程通过调用套接字接口API来实现相互之间的通信。套接字接口又利用下层的网络通信协议功能和系统调用实现实际的通信工作。现将本系统中使用的基本套接字介绍如下。

1)创建套接字——socket()

功能:使用前创建一个新的套接字

格式:SOCKET PASCAL FAR socket(int af,int typ,int procotol);

参数:af,通信发生的区域;type, 要建立的套接字类型;procotol, 使用的特定协议

2)指定本地地址——bind()

功能:将套接字地址与所创建的套接字号联系起来。

格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);

参数:s,是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。

其它:没有错误,bind()返回0,否则SOCKET_ERROR

地址结构说明:

struct sockaddr_in

{short sin_family;//AF_INET

u_short sin_port;//16位端口号,网络字节顺序

struct in_addr sin_addr;//32位IP地址,网络字节顺序

char sin_zero[8];//保留}

3)建立套接字连接——connect()和accept()

功能:共同完成连接工作

格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);

SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);

参数:同上

4)监听连接——listen()

功能:用于面向连接服务器,表明它愿意接收连接。

格式:int PASCAL FAR listen(SOCKET s, int backlog);

5)数据传输——send()与recv()

功能:数据的发送与接收

格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);

int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);

参数:buf,指向存有传输数据的缓冲区的指针。

6)多路复用——select()

功能:用来检测一个或多个套接字状态。

格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,

fd_set FAR * exceptfds,const struct timeval FAR * timeout);

参数:readfds,指向要做读检测的指针;writefds,指向要做写检测的指针;exceptfds,指向要检测是否出错的指针;timeout,最大等待时间

7)关闭套接字——closesocket()

功能:关闭套接字

格式:BOOL PASCAL FAR closesocket(SOCKET s);

3.2 客户机/服务器模式

利用套接字的TCP/IP网络通信两个进程间的相互作用大多采用的都是客户机/服务器(client/server)模式[3],即服务器提供服务,客户是这些服务的使用者。在这种模式下,服务器通过网络与多个客户端连接。

该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式,具体过程如下:

首先服务器方要先启动,并根据请示提供相应服务。

1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。

2)等待客户请求到达该端口。

3)接收到重复服务请求,处理该请求并发送应答信号。

4)返回第二步,等待另一客户请求

5)关闭服务器。

客户方需完成的如下工作:

1)打开一通信通道,并连接到服务器所在主机的特定端口。

2)向服务器发送服务请求报文,等待并接收应答;继续提出请求……

3)请求结束后关闭通信通道并终止。

在上述原理的基础上,系统中客户机与服务器间两个进程的通信过程流程图如图2所示。通过此过程,PC机与嵌入式设备就可以建立socket连接交换数据。

本系统的另一部分通信为嵌入式设备与被控设备之间的can通信[4-5],通信中所传送的报文有四种帧类型,即数据帧、远程帧、错误帧和超载帧。数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束,负责从发送器至接收器携带数据;远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束,总线单元发出远程帧,请求发送具有同一识别符的数据帧;错误帧由两个不同的场组成,第一个场是错误标志,用做为不同站提供错误标志的叠加,第二个场是错误界定符,任何单元检测到一总线错误时就发送错误帧;超载帧包括超载标志和超载界定符两个位场,用来在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。

下面对帧格式中重点部分简要介绍。帧起始标志数据帧和远程帧的起始,由一个单独的“显性”位组成,此部分由控制芯片完。仲裁场包括标识符和远程发送请求位(RTR)。对于CAN2.0A标准,标识符的长度为11位。RTR位在数据帧中必须是显性位,而在远程帧必须为隐性位。对于CAN2.0,标准格式和扩展格式的仲裁场不同。在标准格式中,仲裁场由11位标识符和远程发送请求位组成。在扩展格式中,仲裁场由29位标识符和替代远程请求位(SRR) 、标志位(IDE)和远程发送请求位组成。仲裁场的作用之一是说明数据帧或远程帧发送目的地;之二是指出数据帧或远程帧。仲裁场的数据由软件编程配置SJA1000完成。控制场由6个位组成,说明数据帧中有效数据的长度。控制场的数据由软件编程配置SJA1000完成。数据场由数据帧中的发送数据组成。它可以为0~8个字节。数据场的数据由软件编程配置SJA1000完成。CRC场包括CRC序列,这部分由SJA1000控制芯片完成。应答场长度为两个位,包括应答间隙和应答界定符。由SJA1000控制芯片自动完成。每一个数据帧和远程帧均由一标志序列界定,这个标志序列由7个“隐性”位组成。这部分由SJA1000控制芯片自动完成。

总之,仲裁场、控制场、数据场由软件编程配置SJA1000完成;帧起始、CRC场、应答场、帧结束由CAN总线控制芯片SJA1000自动完成。

需要值得一提的是,数据传输还应注意字节序的问题,不同的CPU有不同的数据存储顺序,字节序分为存储字节序和网络字节序,因为本设计涉及到网络传输和不同的CPU平台,所以应留意字节序。

4 总结

开发过程中应注意交叉编译器的版本搭配问题,应用程序编译最好使用与编译内核同样版本的编译器;关于字节序的问题应仔细调整。

参考文献:

[1] 林士兵,袁焱,扬煜普.TCP/lP网络与CAN 网络网关的设计与实现[J].计算机工程,2007,33(3).

[2] 黄天戍,罗瑶.CAN总线到Ethemet网的网关研究与实现[J].工业仪表与自动化装置,2004(5):47-49.

[3] 欧阳峥峥,林茂.基于TCP/IP协议通信软件的分析与实现[J].武汉工业学院学报,2005,24(2).

[4] 刘辉,李文雄,刘明生.嵌入式实时系统CAN通信软件设计方案[J].计算机仿真,2008,25(4).

[5] 丁艳会,郝俊寿.基于LINUX的TCP/IP网络通信研究[J].计算机安全,2008(12).

相关热词搜索: 总线 控制器 多路 工业 TCP

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号