嵌入式TCP振荡器基础知识
恒温振荡器(又称恒温摇床)是一种温度可控的恒温的生化仪器,是植物、生物、微生物、遗传、病毒、环保、医学等科研、教育和生产部门作精密培养制备不可缺少的实验室设备。而目前大部分恒温振荡器的同类产品都不具有网络数据通信的功能。TCP/IP协议采用一种层次结构,为用户提供了丰富的应用服务,已成为网络通信协议的事实上的国际工业标准,并已得到普遍推广。同时,嵌入式系统的Internet 网络化的研究与应用是近几年来嵌入式应用领域的一个研究热点,这一技术在许多领域都得到广泛应用[1]。
本文为了保证实时监控恒温振荡器的转速、温度等参数,采用了以ARM7处理器为核心的嵌入式系统与TCP/IP 网络互联的方式进行通信访问,使上位机能够实时地掌握恒温振荡器的各种参数状况,保证对恒温振荡器工作过程实时远程监控,不需要浪费人力和时间到现场勘查数据。
1 总体设计及系统架构
本系统使用的是以ARM7为内核、主频达72 MHz的32位微处理器LPC2368,可以满足高速实时处理及大容量数据传输的要求,且具有内置的以太网模块,该模块包含一个功能齐全的10 Mb/s或100 Mb/s以太网媒体访问控制器(MAC),这个以太网MAC通过使用加速的DMA硬件来提供优化的性能[2]。系统还采用了美国国家半导体公司的DP83848单路10 Mb/s或100 Mb/s以太网收发器和支持10 Mb/s和100 Mb/s自适应的网络连接速度的以太网接口RJ45来组成网络通信模块,同时此主控芯片也控制温度和速度等其他多个模块。整个设计体系具有强大的网络处理能力,系统框图如图1所示。
2 网络通信模块设计
2.1 以太网硬件实现
本系统CPU采用飞利浦公司的LPC2368,它是以ARM7为内核主频达72 MHz的32位微处理器,内部集成了一个以太网模块,支持10 Mb/s或100 Mb/s PHY器件,带有分散/集中式DMA的DMA管理器以及帧描述符数组,通过缓冲和预取来实现存储器通信的优化,并且发送和接收均支持多播帧、广播帧和超长帧传输,允许帧长度为任意值。通过标准的媒体独立接口(MII)或标准的简化MII接口可连接外部PHY芯片,该特性是通过软件来选择,然后可对PHY寄存器进行访问。
网卡芯片DP83848是10 Mb/s/100 Mb/s单路物理层以太网收发器件,包含1个智能电源关闭,具有低功耗性能。在本系统中DP8384S工作在50 MHz晶振频率下,具有能量检测模式的特性,可为系统提供一个智能节能工作模式。它是一个链路可控制节能模式,目的是当在线上检测不到活动的时候,器件能够进入休眠的低功耗状态,即状态-能量检测模式。能量检测功能通过寄存器设定来控制,在电源状态发生转换的时候,电源上电/重置算法遵循其正常流程,而且能量检测模式并不会影响之前设定的工作模式。在电源状态发生转换时,器件将会保留其原先的模式(强制模式或者自动协商、MDI或者MDIX)。能量检测算法能够在不同的电源状态之间自动或手动转换,当一个电源状态的改变未成功或者发生太多误差事件时,能量检测逻辑能够发出中断信号。能量检测逻辑在采取动作之前需要多倍数据和误差事件来调节一些噪声。计数器深度则由寄存器设置来确定,并默认其为包含数据和误差的一个事件。
最后与常用的以太网接口RJ45连接,该接口支持10 Mb/s和100 Mb/s自适应的网络连接速度[3]。本系统设计的以太网硬件电路连接如图2所示。
2.2 系统通信协议和通信过程
2.2.1 以太网数据帧传输和接收
在以太网中数据传递靠的是MAC地址,而不是IP地址,IP地址和MAC地址具有映射关系。1个以太网包包括:1个导言区(preamble)、1个起始帧定界符和1个以太网帧。以太网帧由目标地址、源地址、1个可选的VLAN区、长度/类型区、有效载荷以及帧校验序列组成,如图3所示。每一个以太网帧均由1个或多个片段组成,每个片段对应1个描述符。以太网模块中的DMA管理器能够将1个以太网帧的多个片段进行分散(用于接收)和集中(用于发送)[4]。
传输的以太网包中7个字节的导言区用来使接收方的时钟和发送方的时钟同步,然后再由帧分界符来表述1个数据帧的起始,进而进入数据帧的传输通信过程,数据帧主要是通过目标地址和源地址的位置建立通信。6个字节的目标地址是指目的站点的MAC地址,表明要把数据送到哪个站点。若目标地址第1位为0,则这个字段指定了一个特定的站点;若为1,则表示目标地址为一组地址,而该地址是事先定义好的;若所有位全为1,则表示接收者为局域网上的所有站点,即该地址是一个广播地址。6个字节的源地址是指源主机的MAC地址,表明该帧来自哪个主机。VLAN是一种将局域网(LAN)设备从逻辑上划分成一个个网段,从而实现虚拟工作组(单元)的数据交换技术,如果选用基于MAC地址的VLAN的方法就根据每个主机的MAC地址来划分,即对每个MAC地址的主机都配置分组,它实现的机制就是每一块网卡都对应唯一的MAC地址,跟踪属于VLAN MAC的地址。在帧传输的最后进行帧校验,使用4个字节的循环冗余效验码进行错误检验。
2.2.2 TCP/IP协议
TCP/IP协议是面向连接的、端对端的可靠通信协议[4],共分为4层,即网络接口层、网络层、传输层和应用层,如图4所示。
网络接口层负责将IP数据报以数据帧的格式发送和接收,具体过程为数据从TCP/IP应用程序通过TCP传递到传输层TCP,然后交给IP。IP协议提供逻辑地址信息,并将数据封装在分组中。接着IP分组进入网络接口层,网络接口层创建1个或多个数据帧,以便进入物理网路,数据帧最后被转换成在网络传输介质上传送的(bit)流。
TCP/IP的核心层是网络层(IP)和传输层(TCP),对应的主要协议是IP和TCP两大协议。网络层提供计算机间的IP分组传输,包括高层数据的分组生成、底层数据报的分组组装,以及路由处理、流量控制、拥塞处理等问题。IP数据报中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。传输层(TCP)作为网络应用程序与网络之间的接口,根据端口通过TCP传输控制协议提供应用程序间的通信,包括格式化信息流和提供可靠传输,实际上也就是将TCP数据送往一个由IP地址与端口号组成的套接字(Socket)。
应用层提供常用的应用服务程序,如HTTP服务、SMTP服务等。HTTP应用程序在Web服务器上运行的是面向对象的协议,工作方式为收听请求,然后响应请求,向请求方发回文件[5]。
2.2.3 本系统TCP/IP通信过程
TCP/IP协议软件上的数据传输可分为3个阶段:建立连接、传输数据和断开连接。它的实现过程可以用状态机来描述。建立连接有2种方法,即主动打开和被动打开。服务器端是被动打开,然后一直在侦听连接请求;而客户端是主动打开,发送连接请求以建立连接。断开连接有2种方式:主动断开连接和被动断开连接。在需要主动断开连接时,发送1个FIN数据包,接收到对FIN数据包的确认后,再发送1个RESET数据包,即可顺利完成1次主动断开连接。
本系统中通信过程主要分为4个部分:
(1)网卡芯片DP83848和RJ45组成的硬件接口。
(2)TCP/IP协议栈。用这个协议栈进行数据通信,网卡芯片已经完全固化了从MAC层、网络层到传输层所需要的协议,因此,用户无需了解这些协议的实现方法和实现代码。
(3)接收和发送缓冲区。主控芯片LPC2368通过以太网与网络上其他主机进行通信的数据都是通过这些缓冲区来进行交换的。
(4)以太网物理层接口。网卡芯片DP83848实现10/100BaseT以太网传输数据功能。
在主机端访问由嵌入式ARM芯片LPC2368为主控的从机,然后在主机显示出由LPC2368控制下的恒温振荡器的速度和温度等实时数据。具体过程是:先对底层进行初始化,包括对LPC2368主控芯片上的局域网控制器配置端口和对DP83848的物理层的设备、读写状态寄存器、MAC配置和控制寄存器、接收和发送端描述符寄存器、局域网地址寄存器、以及指定DP83848工作模式具体是10 Mb/s还是100 Mb/s;然后进行定时编程,处理网络、TCP/IP堆栈和用户事件;再设置监听TCP通信的端口,进行端口连接,服务器则被动打开等待呼叫,之后就可以确定是否接收数据包然后进行帧处理等;最后实现动态的HTTP服务器,等到被连接之后才发送1个HTTP的帧头,存储HTML代码,这里的HTML代码存放在自定义的一个数组当中,该数组包括温度和速度等实时数据,只要在应用层程序中调用该数组,就可以访问到实时数据,并把得到的实时数据显示到网页页面上,以此实现对恒温振荡器的远程监控。
恒温振荡器网络通信实现的程序流程如图5所示。
3 其他模块设计
3.1 转速模块
主要实现转速调节的功能。在运行状态下设置速度值,再通过DA输出改变可控硅的导通角进行电机速度的调节。运行状态又分为A、B、C、D四段运行:首先是按照A段设置的转速参数运行,当A段运行时间结束就调入B段参数,B段开始运行;当B段运行时间结束时就调入C段参数,C段就开始运行;同理,C段运行时间结束时调入D段参数,从而开始D段参数的运行;当D段运行时间结束时,就设置待机状态。在运行状态下,当速度达到稳定状态时,判断转速是否超出设置速度±5转且超时大于2 min,选择是否进入超欠速转速处理动作的执行;否则就退出超欠速程序,继续进行转速控制调整。
3.2 温度模块
主要实现温度控制以及超温和欠温温度调整的功能。温度控制主要是通过制冷和加热这两个手段来调节。首先是在运行的状态下设置温度参数值,然后由A/D转换来采集振荡器箱体内部环境温度,按照箱内温度和设置温度的偏差,再根据PID温度控制的算法[6]进行分区域控制。该恒温振荡器划分了3个区间进行处理:(1)当设置温度处于(箱内温度-4℃)箱内温度区间时,控制打开制冷风扇和加热时间;(2)当设置温度低于箱内温度4℃区间时,制冷常开,控制加热时间;(3)当设置温度大于箱内温度区间时,制冷不开,控制加热时间,直到把温度调整在误差范围之内为止。如果恒温振荡器进入稳定工作状态,但箱内温度超出设置值的正负4℃且时间大于5 min时,就执行超温处理动作;否则,退出超欠温程序,继续进行温度控制。
本文阐述了基于TCP/IP的恒温振荡器的设计原理,以嵌入式ARM芯片LPC2368为主控芯片控制多个模块的功能实现。详细说明了基于TCP/IP的控制模块对于恒温振荡器的远程监控功能的实现,目前市场上的大部分同类产品都不具备该项功能。另外,通过硬件与软件的结合来实现恒温振荡器的调速和调温的功能,保证了恒温振荡器的恒温恒转速持续稳定的工作状态。根据本设计制造的恒温振荡器具有很强的实用性和稳定性,能够满足用户远程获取数据的使用需求。