0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于微处理器S3C44B0X和RTL8019AS网卡实现远程液位监控系统的设计

电子设计 来源:微计算机信息 作者:何伟,江华明,俞立 2021-03-27 12:21 次阅读

作者:何伟,江华明,俞立,徐建明

工业过程控制系统中液位对象是一种十分普遍的对象,对液位对象的监测与控制是系统实现其功能必不可少的环节。在过去,液位的监控装置多数是使用单片机实现点对点控制和显示,工作人员必须到工业现场操作这些仪器,且单片机功能十分有限,只能完成一些相对简单的操作。

随着网络通信威廉希尔官方网站 的发展,以太网工业控制领域的应用日趋广泛,基于以太网的远程监控系统实现远程监测、控制和管理的有效集成。使用远程监控系统通过网络对工业生产过程进行监测,及时了解现场信息,快速进行决策。

远程控制的关键威廉希尔官方网站 在于如何解决工业现场设备的网络接入问题。目前,主要有两种方法:一种是使用PC机通过PC机端口(如RS232USB接口)或数据采集卡来采集数据同时提供网络接口,这种方法利用强大的PC机软件支持,容易实现网络通信功能,但是PC机端口资源有限,专用采集卡成本较高,难以推广;另一种就是在现场使用嵌入式系统实现网络接入,嵌入式系统具有功耗低、体积小、成本低、可靠性高、实时性强等特点,使用在工业控制现场比较合适。

本文将嵌入式威廉希尔官方网站 和网络威廉希尔官方网站 相结合,在现场利用嵌入式系统实现网络通信功能以实时传输液位信号和控制信号,在客户端PC机上通过套接字编程实现与现场嵌入式系统的远程通信,从而达到对远程液位的监控。

1 远程液位监控系统结构

本文设计的远程液位监控系统结构如图1所示:其中,处理器芯片采用ARM微处理器S3C44B0X;S3C44B0X自带8路10位ADC进行A/D转换来采集液位数据,通过扩展DAC0832实现D/A转换以输出控制量;S3C44B0X连接10M以太网卡RTL8019AS,提供网络功能的硬件接口;μC/OS-Ⅱ移植到S3C44B0X上,提供操作系统的支持,方便了应用程序的开发和对整个系统的管理;嵌入式TCP/IP协议栈LwIP移植到μC/OS-Ⅱ平台上,实现对网络数据的软件处理,从而为嵌入式系统提供网络通信功能;远程PC机客户端登录到嵌入式系统服务器上,通过以太网实现两端数据的实时交互。

基于微处理器S3C44B0X和RTL8019AS网卡实现远程液位监控系统的设计

图1 远程液位监控系统结构图

2 硬件介绍与设计

三星的S3C44B0X微处理器芯片采用ARM公司16/32位ARM7TDMI RISC结构的CPU核,主频为66MHz,通过扩展一系列通用外围部件,提供丰富的外设功能。它的存储系统具有8个存储体,每个有32MB的存储空间,通过nGCS0-7这8个片选来分配。本文使用的设计方案中nGCS0接Flash芯片AM29LV160DB,起始地址0x00000000,大小为2MB,nGCS6接SDRAM芯片HY57V641620ET-7,起始地址为0x0c000000,大小为8MB,nGCS3接RTL8019AS,起始地址为0x06000000。

RTL8019AS是一款高度集成的全双工以太网控制器,收发可同时达到10Mbps的速度;支持8位、16位数据总线,8个中断请求线可供选择;支持UTP、AUI和BNC的自动检测;内置16K的SRAM,用于数据缓冲,以256B为单位的分页结构,可以自行分配用于收发的分页的大小和位置,一般前12页用于发送缓冲,后52页用于接收缓冲;硬件自带收发CRC校验、FIFO逻辑队列等,减少了主CPU处理网络数据的工作量。S3C44B0X对RTL8019AS的操作主要集中在对网卡寄存器的读写和网卡内SRAM的处理。

3 软件设计

3.1 基于嵌入式系统的服务器端程序设计

3.1.1 S3C44B0X上μC/OS-Ⅱ的移植

嵌入式操作系统μC/OS-Ⅱ可以运行于各种不同类型的微处理器上,其内核小、效率高,并且具有高度的模块化和可移植性,支持多任务实时调度,扩展后可支持网络功能、图形界面等,使得应用程序的开发更加简单,功能更加丰富。

在使用μC/OS-Ⅱ之前,要先将它移植到S3C44B0X上,移植工作主要包括三个方面:

(1) 设置与处理器和编译器相关的代码,包括一系列数据类型的定义,开中断宏、关中断宏的实现,定义堆栈的生长方向;

(2) 用C语言编写6个操作系统相关的函数:OSTaskStkInit()初始化任务的堆栈结构,和5个钩子函数OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTimeHook()、OSTaskCreateHook();

(3) 用汇编语言编写4个与处理器相关的函数:运行优先级最高的就绪任务函数OSStartHighRdy(),任务级的任务切换函数OS_TASK_SW(),中断级的任务切换函数OSIntCtxSw(),时钟节拍服务函数OSTickISR()。

3.1.2 μC/OS-Ⅱ上TCP/IP协议栈的实现

LwIP(Light-weight IP)是瑞典计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套开源的TCP/IP协议栈,LwIP在保持TCP/IP协议主要功能的基础上减少对RAM的占用,这使得它适合在低端嵌入式系统中使用。

LwIP协议栈在设计时已经把所有与硬件、操作系统、编译器等移植相关的部分独立出来,放在/src/arch目录下。因此LwIP在μC/OS-Ⅱ上的实现就是修改这个目录下的文件。

(1) 与CPU、编译器相关的部分

主要是cc.h、cpu.h、peRF.h文件中有关数据长度、字的高低位顺序等的定义,这些应该与实现μC/OS-Ⅱ时参数的定义保持一致。另外,一般情况下C语言的结构体struct是4字节对齐的,但是在处理数据包的时候,LwIP使用的是通过结构体中不同数据的长度来读取相应的数据,所以,一定要在定义struct的时候使用_packed关键字,让编译器放弃struct的字节对齐。

(2) 与操作系统相关的部分

LwIP中需要使用信号量通信,所以在sys_arch.h、sys_arch.c中应实现信号量结构体sys_sem_t,和相关的信号量处理函数:包括创建一个信号量结构sys_sem_new(),释放一个信号量结构sys_sem_free(),发送信号量sys_sem_signal(),请求信号量sys_arch_sem_wait()。

LwIP使用消息队列来缓冲、传递数据报文,因此要在sys_arch.h、sys_arch.c中实现消息队列结构体sys_mbox_t,以及相应的操作函数:包括创建一个消息队列sys_mbox_new(),释放一个消息队列sys_mbox_free(),向消息队列发送消息sys_mbox_post(),从消息队列中获取消息sys_arch_mbox_fetch()。

LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间,移植工作需要实现sys_arch_timeouts()函数,返回当前正处于运行态的线程所对应的timeout队列指针。

LwIP中网络数据的处理需要线程来操作,所以需要实现创建新线程函数sys_thread_new()。而在μC/OS-Ⅱ中,没有线程的概念,只有任务。因此必须要把创建新任务的函数OSTaskCreate()封装一下,才可以实现sys_thread_new()。

(3) 相关库函数的实现

LwIP协议栈中用到了8个外部函数,主要是来完成16位数据的高低字节交换、32位数据的大小头对调、返回字符串长度、字符串比较、内存数据块拷贝、指定长度的数据块清零等功能,与系统或编译器有关,需要用户实现。

(4) 网络设备驱动程序

在LwIP中可以有多个网络接口,每个网络接口都对应了一个netif结构,这个netif包含了相应网络接口的属性、收发函数。在网络设备驱动程序中主要就是实现四个网络接口函数:网卡初始化、网卡接收数据、网卡发送数据以及网卡中断处理函数。

3.2 PC机上客户端程序的设计

VC++6.0环境下客户端程序实现包括以下几个部分:

(1) 建立客户端的Socket:客户端应用程序首先构造一个CAsyncSocket对象CltSock,然后调用CltSock.Create()函数来建立CltSock实体。

(2) 提出连接请求:客户端套接字CltSock通过调用CltSock.Connect(strAddr,nPort)函数向服务器套接字提出连接请求。

(3) 传输数据:在客户端应用程序中重载消息处理函数OnReceive()和OnSend()。在OnReceive()中通过调用CltSock.Receive()函数从服务器端接收数据;在OnSend()中通过调用CltSock.Send()函数向服务器端发送数据。

(4) 关闭连接:客户端套接字CltSock通过调用CltSock.Close()函数来关闭连接。

4 远程液位监控应用程序的开发

本文设计完成的基于以太网的远程液位继电自整定PID控制系统,其控制算法在远端主机(客户机)上实现,两端通过TCP协议通信,本地的嵌入式系统 (服务器)上一方面实现对网络数据的处理,一方面完成对液位高度的采集与控制;远端PC机上一方面处理网络上的实时数据,一方面通过PID计算出控制量,显示相关参数。实时液位变化状况如图2所示,从图中可以看出,实际液位(红色曲线)能够稳定在液位设定值(蓝色曲线)处。同时,从用户界面上既可以读出液位高度值,PID自整定参数等,还可以改变液位高度设定值,从而真正实现了液位对象的远程监控。

图2 远程液位继电自整定PID控制效果图

5 结语

本文设计解决了在嵌入式系统中实现网络功能的问题,引入并实现了一种新的设计方案,即采用三星ARM7处理器S3C44B0X+Realtek的10M网卡RTL8019AS硬件组合,通过在μC/OS-Ⅱ操作系统内核的支持下,添加嵌入式TCP/IP协议栈LwIP,来实现网络通信的功能,与PC机客户端的Socket通信,在此基础上开发了基于以太网的远程液位监控系统,达到了良好的控制效果。可以看出,这类系统在远程监控中的具有良好的应用前景。

本文作者创新点:本文将嵌入式网络威廉希尔官方网站 引入到工业过程远程监控领域,提出了自己的设计方案,并成功开发了一个远程液位监控系统。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9091

    浏览量

    367451
  • 控制系统
    +关注

    关注

    41

    文章

    6611

    浏览量

    110588
  • 微处理器
    +关注

    关注

    11

    文章

    2261

    浏览量

    82417
收藏 人收藏

    评论

    相关推荐

    基于S3C44B0X微处理器实现运动系统电流信号采集电路的设计

    本文首先以三星公司的S3C44B0X微处理器为核心芯片,设计电流信号采集电路,然后介绍了非线性能量故障诊断算法。最后以X-Y运动平台为实验对象,验证该算法的有效性。
    的头像 发表于 03-24 16:23 6470次阅读
    基于<b class='flag-5'>S3C44B0X</b><b class='flag-5'>微处理器</b><b class='flag-5'>实现</b>运动<b class='flag-5'>系统</b>电流信号采集电路的设计

    怎样在嵌入式操作系统μcLinux下实现网卡的驱动?

    本文介绍了以S3C44B0X 的ARM处理器RTL8019AS 以太网控制为基础的网络接口设计,并阐述了怎样在嵌入式操作系统μcLinu
    发表于 04-25 09:28

    怎么实现基于S3C4480X的嵌入式以太网接口设计?

    本文基于最常用的嵌入式处理器S3C44B0X和以太网驱动RTL8019AS来设计了一款嵌入式以太网接口。本设计的特点是,既可仅用于嵌入式以太网驱动设备,方便简单,又可进行扩展其他模块
    发表于 05-21 06:00

    S3C44B0X pdf

    S3C44B0X p
    发表于 06-27 09:37 76次下载

    基于S3C44B0X微处理器的JFFS2件系统实现

    基于S3C44B0X微处理器的JFFS2件系统实现
    发表于 03-28 09:50 16次下载

    基于S3C44B0X 的uClinux的移植

    S3C44B0X 作为一款以ARM7TDMI 为内核的微处理器,正日益受到广泛的应用;uClinux作为一种运行于没有MMU 的嵌入式微处理器的Linux 衍生操作系统,也广泛应用于嵌
    发表于 05-15 15:40 14次下载

    基于S3C44B0X+μcLinux的嵌入式以太网设计与分析

    本文介绍了基于一款ARM 处理器——S3C44B0X 的以太网接口电路设计,并详细地阐述了在嵌入式操作系统μcLinux 下网卡驱动的实现
    发表于 06-15 11:36 16次下载

    基于S3C44B0X的嵌入式网络通信研究

    S3C44B0X 作为一款以ARM7TDMI 为内核的微处理器,得到了广泛的应用。本文采用该处理器,使用到广泛应用的源代码公开的uClinux 操作系统,
    发表于 06-15 15:44 18次下载

    基于以太网的远程监控系统设计与开发

    本文主要解决在基于以太网的远程监控系统中如何实现网络通信的问题,在本地嵌入式
    发表于 08-04 09:46 20次下载

    基于S3C44B0X处理器的VxWorks中断设计

    通过基于立宇泰S3C44B0X 开发板的BSP 移植调试,阐述了VxWorks 的异常中断处理机制,实现了VxWorks 基于S3C44B0X 处理
    发表于 09-03 11:25 17次下载

    S3C44B0X中文手册 pdf

    S3C44B0X中文数据 三星的S3C44B0X 16/32RISC处理器被设计来为手持设
    发表于 02-10 12:07 254次下载

    微处理器S3C44B0X音频文件播放

    微处理器S3C44B0X音频文件播放 S3C44B0X是三星公司针对嵌入式系统推出高性价比微处理器,它是基于ARM7TDMI内核的16/3
    发表于 03-16 11:46 775次阅读
    <b class='flag-5'>微处理器</b><b class='flag-5'>S3C44B0X</b>音频文件播放

    S3C44B0X微处理器内置LCD控制

      引言   S3C44B0X微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制解决方案。它使用ARM7TDMI核,工作在66MHz,集成了LCD控制等外围器
    发表于 08-30 10:18 1723次阅读
    <b class='flag-5'>S3C44B0X</b><b class='flag-5'>微处理器</b>内置LCD控制<b class='flag-5'>器</b>

    S3C44B0X原理图

    S3C44B0X原理图:
    发表于 09-14 15:28 167次下载
    <b class='flag-5'>S3C44B0X</b>原理图

    基于S3C44B0X远程控制点滴监控系统

    点滴监控系统的设计, 可以实现对医疗用输液液体点滴速度、输液瓶高度等参数进行动态在线实时检
    发表于 09-29 18:57 42次下载
    基于<b class='flag-5'>S3C44B0X</b>的<b class='flag-5'>远程</b>控制点滴<b class='flag-5'>监控</b><b class='flag-5'>系统</b>