新闻中心

EEPW首页>手机与无线通信>设计应用> 以太网远程监控系统实现远程监测控制和管理技术设计开发

以太网远程监控系统实现远程监测控制和管理技术设计开发

作者: 时间:2009-12-25 来源:网络 收藏

  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[7]对象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控制效果图

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

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


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭