基于W5500的串口服务器设计及物联网应用

2018-05-02 08:03罗毅

罗毅

【摘 要】随着物联网技术的发展,嵌入式仪表设备逐渐纳入物联网信息平台。对于常规的嵌入式仪表设备,通常不具备与物联网数据交互的通道,必须通过路由器、串口服务器等方式接入物联网信息平台。

【Abstract】With the development of Internet of things technology, embedded instrument equipment is gradually incorporated into the information platform of the Internet of things. Conventional embedded instrumentation usually does not have data access to Internet of things. It must access Internet of things information platform by means of routers and serial servers.

【關键词】物联网信息平台;串口服务器;网络多链路

【Keywords】internet of things information platform; serial server; network multi-link

【中图分类号】TP393.11 【文献标志码】A 【文章编号】1673-1069(2018)03-0147-02

1 串口服务器简介

串口服务器又叫串口联网服务器,是为RS-232/485串口到TCP/IP网络之间完成数据转换和传输的通信接口转换器,提供RS-232/485终端串口与TCP/IP网络的数据双向透明传输,提供串口转网络功能,RS-232/485串口转网络的解决方案可以让串口设备方便、快捷的接入互联网网络。

2 W5500简介

W5500是韩国WIZnet公司生产的一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统设备提供了简易的互联网连接方案。W5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够拓展实现网络连接功能。

W5500内嵌32K字节数据缓存用于缓存以太网数据包,最多支持8个硬件Socket独立通讯。W5500提供了SPI(外设串行接口)从而能够更加容易与外设MCU整合。高效SPI协议支持80MHz速率,从而能够更好地实现高速网络通信。以太网控制芯片W5500具有以下特点:①支持硬件TCP/IP协议:TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE和以太网的PHY和MAC层;②支持8个独立的Socket同时工作,可同时工作在不同的工作模式;③支持高速SPI接口,SPI的时钟最高可达80MHz,极大地提高了网络通讯的数据传输速率;④内部集成32KB存储器用于发送/接收缓存;⑤内嵌10BaseT/100BaseTX以太网物理层(PHY);⑥支持自动协商(10/100Based全双工/半双工)。

3 系统设计

3.1 硬件设计

串口服务器主要由MCU、以太网控制器、硬件看门狗和线性稳压器组成。其中MCU选用M3处理器LPC1763,该处理器主频达到100MHz,内置256Mflash和64K RAM,还具有多个SPI和RS232等串行接口,完全能够满足串口服务器设计需求。为提高系统稳定性,串口服务器还配置了独立的硬件看门狗CAT706。系统采用5V供电,内置3.3V稳压器LM1117。系统下行通过RS-232接口与底层数据采集系统交换数据,上行通过RJ45接口接入物联网平台。

3.2 软件设计

为确保串口服务器对各种中断能够实时响应,系统软件采用UCOSⅡ嵌入式多任务实时操作系统,根据系统功能,系统建立了网络监测任务、网络中断处理任务及串口数据接收处理任务3个任务进程,其中串口数据接收处理任务和网络中断处理任务平时处于挂起状态,只有当串口接收到数据或接收到W5500的中断事件信号时才执行[1]。几个任务的主要功能如下:

网络监测任务:定时监测网络状态,处理网络断开重连、TCP Server模式下接收到Client连接请求、TCP模式下接收到对方断开请求及UDP模式下“OPEN”命令生效等网络状态事件。同时查看并处理网络异常中断事件,让网络连接在异常状态下恢复。

网络中断处理任务:响应并处理以太网接收到数据事件、网络Socket连接建立成功、接收到对方网络断开请求、接收到数据发送成功应答等网络正常中断事件。该任务平时处于挂起状态,只有当接收到网络正常中断信号才执行。

串口数据接收处理任务:通过中断方式接收底层数据采集控制系统发送过来的数据,根据当前网络状态将数据发送到以太网控制器数据发送缓冲区。该任务平时处于挂起状态,只有当接收到串口数据帧才执行。

4 网络数据处理关键功能代码(C语言)

MCU接收到W5500的网络接收数据中断信号,先用过“Read_SOCK_2_Byte”函数提取接收网络数据长度信息,并判断数据长度是否合法。若数据长度合法,则通过“Read_SOCK_2_Byte”函数提取接收数据在接收缓冲区内的偏移量,分别根据接收数据长度及偏移量判断接收数据是否溢出,根据溢出情况读取缓冲区数据,再将读取到的数据填充到MCU的数据接收缓冲区等待处理。

unsigned short rx_size;//接收数据长度

unsigned short offset, offset1;// offset:相对偏移, offset1:绝对偏移

unsigned short i;

unsigned char j;

rx_size=Read_SOCK_2_Byte(s,Sn_RX_RSR);

if(rx_size==0)

return 0;

if(rx_size>1460)

rx_size=1460;

offset=Read_SOCK_2_Byte(s,Sn_RX_RD);

offset1=offset;

offset&=(S_RX_SIZE-1);

LPC17xx_SPI_Select ();//Set W5500 SCS Low

LPC17xx_SPI_SendByte (offset/256); // Write Address

LPC17xx_SPI_SendByte (offset);

LPC17xx_SPI_SendByte (VDM|RWB_READ|(s*0x20+0x18));// Write Control Byte

if((offset+rx_size)

{for(i=0;i

{*dat_ptr=LPC17xx_SPI_SendRecvByte (0x00);dat_ptr++;}

else//待接收数据已溢出,自动填充到起始区

offset=S_RX_SIZE-offset;

for(i=0;i

{*dat_ptr=LPC17xx_SPI_SendRecvByte (0x00);dat_ptr++;}

LPC17xx_SPI_DeSelect ();//Set W5500 SCS High

//再讀取溢出后,被填充待起始区的数据

LPC17xx_SPI_Select ();//Set W5500 SCS Low

LPC17xx_SPI_SendByte (0x00);// Write Address

LPC17xx_SPI_SendByte (0x00);

LPC17xx_SPI_SendByte (VDM|RWB_READ|(s*0x20+0x18));// Write Control Byte

for(;i

{*dat_ptr=LPC17xx_SPI_SendRecvByte (0x00);dat_ptr++;}

LPC17xx_SPI_DeSelect ();//Set W5500 SCS High

offset1+=rx_size;// Update offset

Write_SOCK_2_Byte(s, Sn_RX_RD, offset1);

Write_SOCK_1_Byte(s, Sn_CR, RECV);// Write RECV Command

return rx_size;

5 多链路通讯功能实现

许多情况下,要求设备物联网工控设备具备多链路访问机制,多链路访问机制首先需要工控设备支持多链路访问,并且要求设备能够智能识别当前访问上位机,并对应应答当前访问设备的上位机。虽然串口服务器支持多链路访问机制,但串口服务器与底层数据采集控制系统相对独立,所以如何识别底层数据采集控制系统发送过来的数据帧对应哪个上位机成为多链路通讯功能的实现难点。

Modbus通信协议已成为工控行业的标准通信协议,Modbus通讯协议规定上位机具有数据读写主动权,而下位机全被动的响应上位机的数据读写命令,串口服务器通过Socket链路激活机制实现了Modbus协议下的多链路通讯功能。当串口服务器接收到上位机发送的数据帧时,将当前Socket链路激活一段时间,该期间内接收到底层数据采集控制系统上传的应答数据帧,串口服务器检测当前是否有Socket链路处于激活状态,如果有已激活的Socket链路,则只将数据帧发送到已激活Socket链路对应的上位机,数据发送完毕后,关闭该链路的激活状态。

6 在物联网中的应用

互联网技术的发展,使得物联网成为可能,我们周边的电子设备终将接入物联网信息平台。通常电子设备功能很

少涉及网络通信功能的应用,串口服务器为电子设备接入物联网提供了简单快捷的解决方案。串口服务器技术在油井远程监控系统及数字化抽油机控制柜等产品上得到了成功应用。

【参考文献】

【1】吴鑫,俞建定,汪沁,等.W5100的RS485-Ethernet数据转换器设计[J].无线电通信技术,2014(05):93-96