基于ARM的工业现场在线监控系统设计_第1页
基于ARM的工业现场在线监控系统设计_第2页
基于ARM的工业现场在线监控系统设计_第3页
基于ARM的工业现场在线监控系统设计_第4页
基于ARM的工业现场在线监控系统设计_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于ARM的工业现场在线监控系统设计高罗卿(常州轻工职业技术学院,常州 )摘要:针对远程监控系统中,对网络通讯服务和数据采集与逻辑控制的实时性问题进行了研究,将系统分成两个模块,一个是以太网通讯模块,一个是根据实际工况需要设计的数据采集与控制模块。两个模块之间通过CAN总线通讯。该系统满足了现场的实际需要,解决了以太网通讯和现场实时监控之间的矛盾,也符合嵌入式系统模块化设计的理念,易于扩展和修改。关键词:自动控制技术;实时监控;嵌入式系统;以太网TP2Design of On-line Monitoring System of industrial field based on ARM Gao

2、 Luoqing(Changzhou institute of light industry technology, Changzhou )Abstract: For remote monitoring systems, network communications services and data acquisition and real-time logic control problem is studied. The system is divided into two modules, one Ethernet communication module, one is the da

3、ta acquisition and control module based on the actual working conditions. The communication between the two modules through CAN bus. The system meets the needs of the actual working conditions,and resolved the conflict between the Ethernet communications and the real-time monitoring. The embedded sy

4、stem in line with the concept of modular design, easy to extend and modify. Keywords: Automatic control technology, real-time monitoring, embedded system, ethernet0 引言随着工业现场控制的智能化的发展,以太网应用于工业控制方面得到了广泛的应用。但由于在嵌入式设备上通过软件实现TCP/IP协议栈和小型的嵌入式系统,消耗了处理器大部分的资源和处理时间,使得现场监控的实时性得不到足够的保证。1系统结构图1 系统结构图收稿日期:2011-9

5、-20作者简介:高罗卿(1981年-),女,讲师。E-mail:glqcyz本系统的结构图见图1。在本系统中,远程监控室通过上位服务软件发送控制命令,通过Internet与现场以太网通讯模块建立连接,通过命令的解析和执行,以太网通讯模块与采集控制模块通过CAN总线,获取采集信息和分发控制命令,然后以太网通讯模块将采集器的数据,参数等有用信息,上传给上位服务器端。本系统的硬件结构图见图2。系统的MCU采用ARM7内核的芯片LPC2136,该芯片具有256K的FLASH,32K的RAM,多种串行通讯接口。网络控制器采用的是Microchip公司的ENC28J60,该芯片是带有行业标准串行外设接口(

6、Serial Peripheral Interface,SPI)的独立以太网控制器。它可作为任何配备有SPI 的控制器的以太网接口。图2 系统硬件结构图CAN总线采用的是Microchip公司推出的MCP2515,是具有SPI接口的独立CAN控制器。它完全支持CAN V2.0B技术规范,通信速率最高可达1 Mbps,内含3个发送缓冲器、2个接收缓冲器、6个29位验收滤波寄存器和2个29位验收屏蔽寄存器。它的SPI接口时钟频率最高可达10 MHz,可满足一个SPI主机接口扩展多路CAN总线接口的需要。 采集控制模块负责现场实时数据的采集和处理,以及所需控制逻辑的实时执行,然后将采集量的结果和控制

7、逻辑的结果通过MCP2515的CAN总线上传给网络通讯模块。在网络通讯模块中,将开辟一个虚拟的设备状态缓冲,用于保存当前的采集控制模块的状态。网络通讯模块还可通过RS232总线与现场的智能设备通讯,然后综合结果,响应上位服务器端的命令和请求,回复相应的数据。2网络通讯模块 以太网控制器ENC28J60,符合IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。可以设置一些不同的过滤器,自动拒绝不需要的数据包,从而最大限度地降低主控制器的处理工作量。提供了一个内部DMA 模块,以实现快速数据吞吐和硬件支持的IP校验和计算。与主控制器的通信通过两个中断引脚和SPI 实现,

8、数据传输速率高达10 Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。与MCU的连接图见图3。图3 ENC28J60与MCU的硬件连接图ENC28J60 的工作频率为25 MHz。有一个8KB的缓冲器包含供以太网控制器使用的发送和接收存储器,分成单独的接收和发送缓冲空间。 主控制器使用SPI 接口可以对发送和接收存储器的容量和位置进行编程。本系统采用带有网络变压器的RJ-45接头HRA,此接头还包含有两个指示灯,用于和ENC28J60的LEDA和LEDB连接,指示网络的连接和发送接收状态。连接图见图4。图4 RJ-45的连接图3系统软件设计本系统的网络通讯部分软件采用了嵌入式操作

9、系统UCOS-II和采用了源码开放的轻型网络协议栈LWIP,具体的工作可分为3个步骤:1,嵌入式操作系统UCOS和网络协议栈LWIP的移植工作。2,ENC28J60的设备驱动开发。3,网络上层端口服务程序的开发。图5 系统软件的架构3.1软件平台的移植系统软件平台的移植工作主要有两个方面:一个是操作系统UCOS的移植,一个是协议栈LWIP的移植。LWIP协议栈把所有与硬件OS 编译器相关的部份放在/src/arch目录下,因此LWIP在UCOS上的实现就是修改这个目录下的文件。(1)与CPU或编译器相关的include文件在/src/arch/include/arch目录下cc.h,cpu.h

10、,perf.h中有一些与CPU或编译器相关的定义。(2)与操作系统相关部份sys_arch.c中的内容是与OS相关的一些结构和函数主要可以分为四个部分:sys_sem_t 数据结构及信号量函数struct sys_sem_t sys_sem_newsys_sem_free sys_sem_signalsys_arch_sem_waitsys_mbox_t 消息函数sys_mbox_new sys_mbox_freesys_mbox_post sys_arch_mbox_fetch系统超时函数struct sys_timeouts *sys_arch_timeouts(void)创建新线程函数v

11、oid sys_thread_new(void (* thread)(void*arg), void *arg)(3)lib_arch中库函数的实现u16_t htons(u16_t n) u16_t ntohs(u16_t n)u32_t htonl(u32_t n) u32_t ntohl(u32_t n)int strlen(const char *str) int strncmp(const char *str1, const char *str2, int len)void bcopy(const void *src, void *dest, intlen) void bzero(v

12、oid *data, int n)前四个函数通常由用户自己实现,gcc的lib库里已经有了后四个函数。3.2 ENC28J60的设备驱动开发在软件平台的移植完成后,主要的工作就是网络驱动程序的编写了,驱动的移植主要就是完成ethernetif.c的工作。LWIP协议栈已经给好了驱动的接口。struct netif struct netif *next;struct ip_addr ip_addr;struct ip_addr netmask;struct ip_addr gw;err_t (* input)(struct pbuf *p, struct netif *inp);err_t (*

13、 output)(struct netif *netif, struct pbuf *p,struct ip_addr *ipaddr; err_t (* linkoutput)(struct netif *netif, struct pbuf *p);void *state;#if LWIP_DHCPstruct dhcp *dhcp;#endifunsigned char hwaddr_len;unsigned char hwaddrNETIF_MAX_HWADDR_LEN;u16_t mtu;char name2;u8_t num;u8_t flags;其中主要就是:err_t (* i

14、nput)(struct pbuf *p, struct netif *inp);这个是被驱动调用的,传递一个数据包给TCP/IP栈。err_t (* output)(struct netif *netif, struct pbuf *p,struict ip_addr *ipaddr);这个是被IP模块调用的,向以太网上发送一个数据包,函数要先通过IP地址获得解决硬件地址,然后发包。err_t (* linkoutput)(struct netif *netif, struct pbuf *p);这个是直接发送数据包的接口。相应的LWIP在ethernetif.c里面给了几个函数框架,这个文

15、件相当于一个硬件抽象层。static void low_level_init(struct netif *netif);网卡初始化函数。static err_t low_level_output(struct netif *netif, struct pbuf *p);链路层发送函数,实现err_t (* linkoutput)接口。static struct pbuf *low_level_input(struct netif *netif);得到一整帧数据。static err_t ethernetif_output(struct netif *netif, struct pbuf *p,

16、struct ip_addr *ipaddr);实现发送线程,实现err_t (* output)接口。static void ethernetif_input(struct netif *netif);实现接收线程,识别数据包是ARP包还是IP包。err_t ethernetif_init(struct netif *netif);初始化底层接口。本文在写ENC28J60的驱动的时候,重新建了个实际的网络硬件控制的文件ethernet.c,在此文件里提供几个主要的函数:void EMACInit( void );硬件的初始化。void EMACPacketSend ( u8_t *buffe

17、r, u16_t length );用来将buffer里面的包复制到网络设备的发送缓冲里面,发送。u16_t EMACPacketReceive ( u8_t *buffer, u16_t max_length );用来将网络设备的接收缓冲里面的包数据复制到buffer里面。u16_t EMACPacketLength ( u16_t max_length );获得包长度。最后用ethernet.c里函数完成ethernetif.c里的框架。这样移植ENC28J60的驱动部分就会显得清晰很多。3.3网络上层端口服务程序的开发LWIP提供三种API接口函数:1.RAW API。 2.lwip A

18、PI。3.BSD API。对于多任务系统而言,因为lwip采用的是将TCP/IP协议放在一个单独的线程里面,那个线程是tcpip_thread。采用RAW API回调技术,就得把应用层程序写在tcpip_thread这个线程里面,作为同一个任务运行。而采用lwip API,就可以将TCP/IP协议和应用层程序放在不同的任务里面,通过调api_lib.c提供的函数,编写相应的应用层代码。本文采用这种方式。下面的程序是个简单的Websever的服务程序代码。void TaskHttp(void *pdata)u8_t datanum; struct ip_addr ipaddr; struct n

19、etconn *conn, *newconn; pdata = pdata;IP4_ADDR(&ipaddr, 192,168,0,88);conn = netconn_new(NETCONN_TCP);/创建一个连接。netconn_bind(conn, &ipaddr, 80);/绑定IP地址和服务端口号。netconn_listen(conn);/监听while(TRUE)newconn = netconn_accept(conn); /等待这个连接的信号量。if(newconn != NULL) struct netbuf *newnetbuf; newnetbuf = netconn_recv(newconn);/获得这个连接的指针。 if(newnetbuf != NULL) char *pnow; char *data;int len=0; netbuf_data(newnetbuf,&data,&len);/data指向数据处。 . /此间为对网络数据的处理。netbuf_delete(newnetbuf);/使用完毕后删除这个结构。netconn_close(newconn);/使用完后关闭连接。while(netconn_delet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论