首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于嵌入式实时操作系统的现场总线网关的设计 01

基于嵌入式实时操作系统的现场总线网关的设计 01

 一、引言
  随着现场总线技术的不断发展,诸如计算机技术、通信技术等不断地引入到自动控制领域,大大地促进了新一代控制系统——现场总线控制系统(FCS)的发展。
  随着嵌入式系统与网络的日益结合,在嵌入式实时操作系统(RTOS)中引入TCP/IP协议栈,以支持嵌入式设备接入网络,成为嵌入式领域重要的研究方向。
  本文将介绍基于嵌入式实时操作系统的现场总线网关的设计。其中所介绍的现场总线是WorldFIP现场总线;实时操作系统(RTOS)是μC/OS-Ⅱ。
  二、WorldFIP现场总线和μC/OS-Ⅱ简介
  l.WorldFIP现场总线简介
  WorldFIP FCS是一种用于自动化系统的现场总统提供现场设备和控制器以及控制器之间的数字化连接。WorldFIP FCS适合各种应用结构:集中、分散和主从;其开放性使不同制造厂家的设备能够互操作。WorldFIP除了具备现场总线的一般特点,如数字化,标准化,节省布线,安装方便,维护性好,互换性和互操作性等,还具有很多独到之处,如协议单一、抗干扰能力强、带调度的总线访问控制等。
  2.实时操作系统μC/OS-Ⅱ简介
  嵌入式实时操作系统μC/OS-Ⅱ是基于优先级的抢占式实时多任务操作系统,其内核可以简单地看做是一个多任务的调度器,在这个任务调度器之上完善并添加了和实时多任务操作系统相关的一些系统服务,如任务管理、时间管理、信号量、邮箱等。它的90%的代码都是用C语言编写的,因此μC/OS-Ⅱ具有良好的可移植性。移植工作的绝大部分都集中在多任务切换的实现上,由于这部分代码主要是用来保存和恢复处理器现场(即相关寄存器),与处理器硬件相关,因此只能使用特定的处理器汇编语言完成。在本文嵌入式网关的开发过程中,以开源TCP/IP协议栈LwIP为基础,实现了μC/OS-Ⅱ的网络支持功能。LwIP实现了 TCP/IP的主要协议如TCP、UDP、ICMP、IP、ARP,其优点是在保持TCP协议主要功能的基础上减少对资源的占用,使得LwIP协议栈非常适合在低端嵌入式系统中使用。
  三、嵌入式网关的设计
  本设计所设计的嵌入式网关的主要功能是实现WorldFIP现场总线和Internet之间的相互通信时的协议转换,从而实现工业控制中管理层和现场控制层之间的无缝结合,使得WorldFIP现场总线成为一个真正开放的工业控制网络。控制系统模型如图1所示。

        网关的设计过程中,自上而下分为三层:应用/任务层、操作系统层和硬件层。分层结构如图2所示。
   
  (一)硬件层设计
  硬件层设计主要包括选择合适的芯片及进行原理设计。在本设计中,选用Samsung公司的arm 32bits芯片s3c451Ob微处理器,它的运行速率为5OMHz,带有Ethernet控制器;网卡芯片使用ICS1890;WorldFIP侧选用的芯片是符合WorldFIP现场总线协议的专用芯片(Fullfip2、FIPDUAL等);CPLD选用ALTERA公司的EPM7128SLC84,主要用于s3c4510b和Fullfip2之间的时序匹配和逻辑组合;SDRAM选用Hynix的HY57v64323220,主要用于任务堆栈和中间变量;flash选用SST的39VF169,主要用于存放程序;SRAM选用ISSI的IC61C1024,主要用于存放Fullfip2的微码和中间变量。硬件结构如图3所示。

    (二)操作系统层设计
  操作系统层设计的主要内容是在系统硬件平台上构建一个工作平台,在这个平台上建立应用程序、创建任务等。操作系统层设计主要包括三部分:
  (1) 嵌入式实时操作系统μC/OS-Ⅱ的移植;
  (2) TCP/IP协议栈LwIP的移植;
  (3)网络设备驱动程序。
  l.LwIP协议栈的移植
  为了使WorldFIP现场总线可以和Internet通信,在设计中必须把TCP/IP协议栈移植到μC/OS-Ⅱ操作系统中(μC/OS-Ⅱ移植将在后面介绍)。为了节省对系统资源的占用,设计中选用了开源的嵌入式TCP/IP协议栈——LwIP。LwIP协议栈是一个轻量的TCP/IP协议栈,一般只需要几十千字节的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端嵌入式系统中使用。LwIP的源码可以到相关的网站上下载,目前的版本是0.6.3。LwIP的特性如下:
  (1)支持多网络接口下的IP转发;
  (2)提供专门的内部回调接口(Raw API)用于提高应用程序性能;
  (3)可选择的Berkeley接API。
  为了方便移植,LwIP协议栈把所有与硬件、OS、编译器相关的部分单独放在/src/arch目录下,因此移植时只需修改这个目录下的文件即可,其他源文件一般不需要修改。在移植的过程中,最主要的是和OS相关的一些函数和结构,这些函数和结构在arch目录下的sys_arch.h和sys_arch.c中定义和实现。主要有:
  (l)sys_arch_timeout函数。
  这个函数描述的是LwIP中与外界网络连接的线程等待超时timeout属性,该属性与OS相关。每个线程的timeout属性对应着一个在sys.h中定义的结构体sys_timeout,我们所要实现的是如下函数:
  struct sys_timeouts * sys_arch_timeouts(void)
  该函数的功能是返回目前正处于运行态的线程所对应的timeout队列指针。
  (2)sys_sem_t信号量。
  在LwIP中用信号量来实现同步,因此需要在sys_arch中实现sys_sem_t结构体和处理函数:
  typedef OS_EVENT * sys_sem_t;
  sys_sem_t sys_sem_new (lNT8U count);
  void sys_sem_signal (sys_sem_t sem);
  INTl6U sys_arch_sem_wait (sys_sem_t sem,INTl6U timeout);
  void sys_sem_free (sys_sem_t sem);
  μC/OS-Ⅱ已经实现了信号量的各种操作,而且功能和LwIP中的几个函数完全一样的,所以在LwIP中只需把μC/OS-Ⅱ中的函数封装打包。
返回列表