羅毅
【摘 要】隨著物聯網技術的發展,嵌入式儀表設備逐漸納入物聯網信息平臺。對于常規的嵌入式儀表設備,通常不具備與物聯網數據交互的通道,必須通過路由器、串口服務器等方式接入物聯網信息平臺。
【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