国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式網(wǎng)絡協(xié)議棧的多軸運動控制卡通信系統(tǒng)設計

2021-05-29 05:37楊亮亮黃坤張莉敏史偉民
軟件工程 2021年5期
關鍵詞:網(wǎng)絡通信嵌入式

楊亮亮 黃坤 張莉敏 史偉民

摘? 要:針對現(xiàn)代工業(yè)生產(chǎn)中運動控制卡高速化、高精化的技術要求,設計了一種基于小型嵌入式網(wǎng)絡協(xié)議棧LwIP的多軸運動控制卡網(wǎng)絡通信系統(tǒng)。系統(tǒng)以STM32H7微控制器為主控芯片,以低功耗芯片LAN8720A作為外部以太網(wǎng)PHY層芯片,采用TCP/IP網(wǎng)絡協(xié)議棧中的UDP協(xié)議作為上下位機間通信協(xié)議。通信系統(tǒng)的下位機程序采用基于LwIP協(xié)議棧的RAW API方式編寫,上位機程序基于SOCKET套接字接口編寫。測試結(jié)果表明:系統(tǒng)能達到既定要求的通信響應速度,可實現(xiàn)單臺工控上位機與多塊運動控制卡之間“一對多”的主從式高速通信,具有較高的工業(yè)實用價值。

關鍵詞:嵌入式;LwIP;UDP;網(wǎng)絡通信;多軸運動控制卡

中圖分類號:TP23? ? ?文獻標識碼:A

Design of Communication System for Multi-axis Motion Control

Card based on Embedded Network Protocol Stack

YANG Liangliang1,2, HUANG Kun1, ZHANG Limin3, SHI Weimin1

(1.Faculty of Mechanical Engineering & Automation, Zhejiang Sci-Tech University, Hangzhou 310018, China;

2.Mstar Technologies, Inc., Hangzhou 311121, China;

3.Zhongnan University of Economics and Law, Wuhan 430073, China)

yangliangliang@zstu.edu.cn; 2522823811@qq.com; zhanglimin1979@163.com; swm@zstu.edu.cn

Abstract: This paper proposes to design a multi-axis motion control card network communication system based on the small-scale embedded network protocol stack LwIP (Light Weight Internet Protocol), in order to meet the high-speed and high-precision technical requirements of motion control cards in modern industrial production. The system uses STM32H7 microcontroller as main control chip, low-power chip LAN8720A as external Ethernet PHY (Physical Layer) chip, and UDP (User Datagram Protocol) in TCP (Transmission Control Protocol)/IP (Internet Protocol) network protocol stack as communication protocol between upper and lower computers. Lower computer program of the communication system is written in RAW API method based on the LwIP protocol stack, and upper computer program is written based on the SOCKET interface. Test results show that the proposed system can reach the required communication response speed. It also realizes the one-to-many master-slave high-speed communication between a single industrial control host computer and multiple motion control cards. The proposed system has high industrial practical value.

Keywords: embedded; LwIP; UDP; network communication; multi-axis motion control card

1? ?引言(Introduction)

隨著現(xiàn)代工業(yè)信息技術的發(fā)展,國內(nèi)中低端運動控制領域?qū)刂频捻憫俣燃熬鹊囊笠苍絹碓礁?。傳統(tǒng)的運動控制卡采用的是DSP+FPGA的硬件架構,如國內(nèi)的固高科技GT系列、研華集中式運動控制卡系列等。隨著工況多樣化與外設豐富性要求的不斷提高,DSP雖運算能力強大,但在外設控制、事務處理、信息管理等方面不如高性能ARM靈活便捷、性價比高。另外,傳統(tǒng)的工控上位機與運動控制卡之間通常采用RS-232/485串口或PCI并行總線通信,其中串口方式通信速率較低,傳輸距離短,受干擾影響大[1];PCI總線方式不夠靈活便捷,成本較高,只能嵌入在工控機上使用。針對上述問題,我們設計了一種基于ARM與LwIP協(xié)議棧的多軸運動控制卡以太網(wǎng)通信系統(tǒng)。在STM32主控芯片上應用輕量型LwIP協(xié)議棧,采用LwIP RAW API編程接口搭建運動控制卡的網(wǎng)絡通信框架,SOCKET套接字方式編寫上位機UDP服務端程序,并針對UDP協(xié)議不可靠傳輸?shù)奶匦?,設計了自定義協(xié)議頭及對應的數(shù)據(jù)收發(fā)處理狀態(tài)機對數(shù)據(jù)幀進行封裝與解封處理,實現(xiàn)一臺工控上位機控制多塊運動控制卡的“一對多”網(wǎng)絡通信系統(tǒng)。

2? ?系統(tǒng)架構(System architecture)

本設計的系統(tǒng)總體框架如圖1所示,將工控上位機與多塊運動控制卡通過網(wǎng)線連入同一路由器或交換機下的局域網(wǎng)內(nèi)實現(xiàn)“一對多”通信的運動控制系統(tǒng)。

3? 通信系統(tǒng)硬件設計(Hardware design of communication system)

運動控制卡上的主控芯片采用基于ARM Cortex M7內(nèi)核的32位高級MCU—STM32H743IIT6,該芯片集成了大量的外設接口及通信接口,且其穩(wěn)定運行主頻高達400 MHz,能滿足嵌入式運動控制系統(tǒng)的各項性能要求。芯片上的介質(zhì)訪問控制器MAC通過符合IEEE 802.3標準的精簡介質(zhì)接口RMII與外部PHY芯片LAN8720A相連接[2]。LAN8720A再與帶有網(wǎng)絡隔離變壓器的RJ45網(wǎng)絡接口模塊相連接,利用網(wǎng)絡線纜實現(xiàn)板卡與工控上位機的網(wǎng)絡連接。

本設計采用的LAN8720A芯片是一款體積小(24pin QFN封裝,4 mm×4 mm×0.85 mm)、功耗低的全能型10/100 Mbps以太網(wǎng)物理層收發(fā)器,符合IEEE 802.3/802.3u(快速以太網(wǎng))標準,支持精簡介質(zhì)RMII接口,能大幅減少所需引腳數(shù)。

本設計采用的RJ45網(wǎng)絡接頭型號為HR911105A,該接頭帶有網(wǎng)絡屏蔽功能,能有效地減少外部干擾造成的影響,同時內(nèi)部帶有變壓器[3]。網(wǎng)絡通信模塊的接線示意圖如圖2所示。

4? 通信系統(tǒng)軟件設計(Software design of communication system)

4.1? ?系統(tǒng)軟件框架

系統(tǒng)軟件框架如圖3所示,工控上位機端通過創(chuàng)建SOCKET套接字編寫UDP服務端程序接入路由器,運動控制卡端通過應用輕量型LwIP協(xié)議棧編寫相對應的UDP程序來與外部PHY芯片LAN8720A進行數(shù)據(jù)交互。LwIP協(xié)議棧是瑞典計算機科學院(SICS)的Adam Dunkels等開發(fā)的一個小型開源的TCP/IP協(xié)議棧,其在保持TCP/IP協(xié)議棧主要功能的基礎上減少了對RAM的占用,適用于小型嵌入式系統(tǒng)[4]。本設計中下位機程序采用基于無操作系統(tǒng)的LwIP RAW API編程接口方式設計UDP客戶端程序。

4.2? ?工控上位機通信程序

上位機程序采用VS2012作為開發(fā)環(huán)境,結(jié)合C與C++編程搭建基本框架并實現(xiàn)MFC人機交互界面,通信部分采用SOCKET套接字接口編寫UDP服務端。上位機程序在網(wǎng)絡通信方面需要實現(xiàn)的功能為:

(1)掃描工控上位機所連入的局域網(wǎng),實現(xiàn)對該網(wǎng)內(nèi)運動控制卡的檢測、連接、通信

檢測板卡設備IP的方式采用TCP/IP協(xié)議中的Ping命令。Ping服務命令位于TCP/IP網(wǎng)絡體系結(jié)構中的應用層,其主要作用是向特定的目的主機發(fā)送ICMP(Internet Control Message Protocol,因特網(wǎng)報文控制協(xié)議)回顯請求報文,并得到目的主機的回顯應答報文。通過Ping命令可以確定兩臺主機之間是否成功交換數(shù)據(jù)包,再根據(jù)返回的信息就可以確定目的主機與本地主機間網(wǎng)絡通信鏈路是否通暢等信息。

網(wǎng)絡通信中第一部分功能實現(xiàn)的工作原理為上位機程序檢測主機所聯(lián)入局域網(wǎng)內(nèi)的所有設備(同一局域網(wǎng)內(nèi)每個設備的IP地址與MAC物理地址要求是唯一的),并將所有檢測到的設備IP號組成列表列舉在MFC交互界面中,通過點選MFC界面IP列表框進行端對端連接通信。另外,上位機程序采用多線程并發(fā)執(zhí)行機制實現(xiàn)同時控制多塊運動控制卡的功能,即“一對多”通信。獲取設備IP列表的過程如圖4所示。

(2)工控上位機下發(fā)設定的IP、MAC等參數(shù),實現(xiàn)在線修改運動控制卡網(wǎng)絡參數(shù)的功能

網(wǎng)絡通信中第二部分功能的實現(xiàn)方式是通過在上位機中使用MFC微軟基礎類庫編寫人機界面,使用者按照規(guī)定設置所需的IP、MAC等網(wǎng)絡參數(shù),上位機程序?qū)⒃摼W(wǎng)絡參數(shù)打包成網(wǎng)絡數(shù)據(jù)幀發(fā)到指定IP地址的運動控制卡內(nèi)。運動控制卡在接收到該網(wǎng)絡數(shù)據(jù)幀后進行相應的命令處理,并通過I2C總線將其寫入與板卡外部連接的掉電數(shù)據(jù)不丟失的EEPROM芯片(AT24C02)內(nèi),運動控制卡每次上電時都會通過I2C接口讀取AT24C02內(nèi)最新一次寫入的IP、MAC等網(wǎng)絡參數(shù)并初始化網(wǎng)絡配置。此功能可以將給定的運動控制卡設置為指定的網(wǎng)絡參數(shù),方便管理局域網(wǎng)內(nèi)所連入的多塊多軸運動控制卡。該部分功能所對應的上位機軟件界面如圖5所示。

4.3? ?運動控制卡LwIP通信框架

在LwIP網(wǎng)絡編程中主要有三種接口編程方式:NETCONN API接口編程、SOCKET API接口編程、RAW API接口編程。本設計采用第三種方式RAW API接口編程,該方式的核心是對TCP/UDP控制塊的處理,優(yōu)點是數(shù)據(jù)處理效率高,可以基于無操作系統(tǒng)編程[5]。

LwIP RAW API編程方式是基于回調(diào)機制的,即為協(xié)議棧內(nèi)核中不同事件注冊相應的回調(diào)函數(shù)后,當事件發(fā)生的時候相應的回調(diào)函數(shù)就會被調(diào)用?;贚wIP RAW API編程接口實現(xiàn)的下位機程序框架如圖6所示。其分為三部分:LwIP協(xié)議棧的初始化配置、網(wǎng)絡數(shù)據(jù)接收檢測及命令處理、數(shù)據(jù)重組打包發(fā)送。

下位機程序的網(wǎng)絡通信整體是基于LwIP協(xié)議棧的,下面為對程序通信框架的總體概述。

(1)基于LwIP協(xié)議??蚣軐W(wǎng)絡進行初始化配置

Udp_echoserver_init函數(shù)用于初始化,該函數(shù)調(diào)用下面五個函數(shù)建立UDP連接并且注冊回調(diào)函數(shù):

Udp_new函數(shù)用于創(chuàng)建UDP控制塊;Udp_bind函數(shù)用于綁定本機IP地址與端口號;Udp_conect函數(shù)用于設置控制塊中的遠端IP地址與端口號,并將UDP控制塊插入控制塊鏈表udp_pcbs中;Udp_recv函數(shù)用于設置UDP控制塊中的recv與recv_arg字段,recv是一個函數(shù)指針,指向一個udp_recv_fn類型的回調(diào)函數(shù),它是內(nèi)核與應用程序交互的橋梁,當內(nèi)核接收到數(shù)據(jù)時,就會調(diào)用這個回調(diào)函數(shù),進而將數(shù)據(jù)遞交到應用層處理;Udp_recv_callback函數(shù)是數(shù)據(jù)接收回調(diào)函數(shù),用于將以太網(wǎng)接收到的數(shù)據(jù)拷貝到設定的全局數(shù)據(jù)緩沖區(qū)內(nèi)便于后續(xù)處理。

(2)網(wǎng)絡數(shù)據(jù)接收檢測及命令處理階段

程序主體部分采用非阻塞輪詢的方式將數(shù)據(jù)包存放到DMA描述符中,然后拷貝其中的數(shù)據(jù)到pbuf[6]結(jié)構體中用于后續(xù)處理,即在無網(wǎng)絡數(shù)據(jù)接收時會一直處于一個初始輪詢狀態(tài)。在該段程序體內(nèi),Ethernetif_input作為數(shù)據(jù)處理的入口,它在接收到以太網(wǎng)幀時被調(diào)用,用于從以太網(wǎng)數(shù)據(jù)存儲區(qū)讀取已接收到的一個以太網(wǎng)數(shù)據(jù)幀,并將其送入指定的網(wǎng)卡結(jié)構體netif中。

本程序網(wǎng)絡通信部分采用LwIP協(xié)議棧中的UDP協(xié)議。UDP協(xié)議是TCP/IP協(xié)議棧中的傳輸層協(xié)議,是一個簡單的面向數(shù)據(jù)報的協(xié)議,不提供對數(shù)據(jù)包的分片、組裝功能,當報文發(fā)送出去后無法知道是否安全、完整到達,所以UDP協(xié)議也可稱作“無連接的連接協(xié)議”。UDP除了這些缺點外也有它自身的優(yōu)勢,由于UDP不屬于連接型協(xié)議,因而消耗資源少,實時性高,處理速度快[7]。針對UDP的非連接型協(xié)議屬性,在程序內(nèi)制定了一種數(shù)據(jù)收發(fā)處理協(xié)議,數(shù)據(jù)發(fā)送前在數(shù)據(jù)頭部封裝自定義的一段協(xié)議頭數(shù)據(jù),在數(shù)據(jù)接收過程中則對其進行逐步解封提取。通過該處理協(xié)議來實現(xiàn)對錯誤幀、非正常幀的處理,以提高UDP協(xié)議的數(shù)據(jù)傳輸可靠性。數(shù)據(jù)收發(fā)協(xié)議頭格式如圖7所示。

根據(jù)上述處理要求,數(shù)據(jù)收發(fā)部分編寫了一個數(shù)據(jù)收發(fā)狀態(tài)機用于封裝與解封網(wǎng)絡數(shù)據(jù)包,并判斷接收到的網(wǎng)絡數(shù)據(jù)包是否正確。若數(shù)據(jù)正確則會按照狀態(tài)機躍遷順序重組數(shù)據(jù),最后進入switch-case命令分支解析并做出相應的處理;若數(shù)據(jù)有誤或數(shù)據(jù)包掉幀導致數(shù)據(jù)不完整,則會在躍遷到相應的狀態(tài)機后判斷處理是否超時進而跳出狀態(tài)機并在丟棄該部分數(shù)據(jù)后回復上位機數(shù)據(jù)接收異常,同時其回到初始輪詢狀態(tài)繼續(xù)等待接收網(wǎng)絡數(shù)據(jù)包。此處的超時管理機制作用原理為:當數(shù)據(jù)被接收到并開始進入狀態(tài)機提取處理時,啟動一個計時器機制,在每一個狀態(tài)機處都會進行計時,計算數(shù)據(jù)處理時長,若超過設定時間則認為出錯,跳出狀態(tài)機,向上位機報告錯誤;若未超過設定時間,則認為無錯誤,處理完成后狀態(tài)機正常跳轉(zhuǎn)。數(shù)據(jù)接收處理的狀態(tài)機躍遷圖如圖8所示。

(3)數(shù)據(jù)重組打包發(fā)送階段

在數(shù)據(jù)發(fā)送處理中,對于TCP連接,內(nèi)核會根據(jù)用戶提供的待發(fā)送數(shù)據(jù)的起始數(shù)據(jù)和長度,自動將數(shù)據(jù)封裝在合適的數(shù)據(jù)包中,然后放入發(fā)送隊列;對于UDP,用戶需要手動將數(shù)據(jù)封裝在網(wǎng)絡發(fā)送buffer中,通過調(diào)用發(fā)送函數(shù),內(nèi)核直接發(fā)送數(shù)據(jù)包的數(shù)據(jù)段[8]。UDP數(shù)據(jù)包的最大理論長度為65,535 字節(jié),但是UDP不存在數(shù)據(jù)分片和組裝機制,只會將數(shù)據(jù)包直接向下交付給IP層處理,所以它的長度大小受到下層IP層和數(shù)據(jù)鏈路層協(xié)議的制約。而以太網(wǎng)規(guī)定的數(shù)據(jù)鏈路層最大傳輸單元MTU為1,500 字節(jié),去除UDP包頭8 字節(jié)、IP包頭20 字節(jié),所以數(shù)據(jù)報文單幀最大長度可采用1,472 字節(jié)。

運動控制卡在接收到正確的數(shù)據(jù)包并通過數(shù)據(jù)接收狀態(tài)機提取處理后,通過判斷命令ID號進入相應的命令ID處理函數(shù),將對應的回復數(shù)據(jù)通過數(shù)據(jù)發(fā)送狀態(tài)機重組,若數(shù)據(jù)長度大于1,472 字節(jié),則將數(shù)據(jù)包分組,每組大小1,472 字節(jié),依次將分組數(shù)據(jù)發(fā)出;若小于1,472 字節(jié)則直接單組發(fā)出。

5? ?實驗驗證(Experimental verification)

完成控制系統(tǒng)的通信部分程序編寫后,在上位機軟件端調(diào)用一個通信回環(huán)測試函數(shù)來測試系統(tǒng)性能。通信測試原理是通信回環(huán)測試函數(shù)在上位機中生成一個指定長度的隨機浮點數(shù)(0—9)數(shù)組,并在該數(shù)組前添加自定義的協(xié)議頭部,然后通過UDP協(xié)議下發(fā)到指定IP板卡。運動控制卡接收到網(wǎng)絡數(shù)據(jù)包后進行校驗處理,再將處理過的數(shù)據(jù)包返回給上位機,最后上位機對收發(fā)的數(shù)據(jù)進行對比,確定通信是否正確,且通信響應時間要求小于2 ms。

本設計中采用的測試方式:將上位機與三塊獨立的四軸運動控制卡通過網(wǎng)線連入同一個路由器或交換機下,上位機掃描該局域網(wǎng)內(nèi)的所有運動控制卡并進行連接,然后分別設置三塊運動控制卡網(wǎng)絡參數(shù)。其中,路由器的IP地址為192.168.1.1,PC上位機的IP地址設置為192.168.31.100,三塊運動控制卡的IP地址分別設置為192.168.31.10、192.168.31.20、192.168.31.30。在設置好板卡網(wǎng)絡參數(shù)后重啟運動控制卡,然后同時開啟三塊板卡通信測試,測試結(jié)果如表1所示。

通過表1的測試結(jié)果可以看出,在“一對多”的通信環(huán)境下,工控上位機與連接的每塊運動控制卡之間保持了穩(wěn)定的通信速度——11.7 Mbit/s,通信的平均響應時間為1.09 ms,而且各運動控制卡能相互獨立地與工控上位機完成數(shù)據(jù)傳輸并確保數(shù)據(jù)正確性。相較于串口RS232通信傳輸速度100—200 kbit/s,DSP+專用芯片(W5100S)的以太網(wǎng)傳輸速度為1.2 Mbit/s[9],通信測試結(jié)果表明,所設計的通信系統(tǒng)能達到要求的精度與響應速度,且在通信速度上有大幅提高。

6? ?結(jié)論(Conclusion)

本文設計并實現(xiàn)了一種基于ARM和LwIP的嵌入式多軸運動控制卡網(wǎng)絡通信方案,描述了網(wǎng)絡通信系統(tǒng)的硬件設計、軟件設計兩部分。系統(tǒng)中工控上位機端采用VS2012編寫MFC界面方便人機交互,多軸運動控制卡端采用無操作系統(tǒng)的LwIP RAW API編程接口編寫適合嵌入式系統(tǒng)的程序。針對UDP連接不安全、不可靠的問題,采用數(shù)據(jù)收發(fā)狀態(tài)機及處理超時管理機制有效確保數(shù)據(jù)的正確收發(fā)和系統(tǒng)的實時響應性。最后通過實驗測試了網(wǎng)絡通信性能,實驗測試效果良好,可滿足實際工業(yè)場景的應用要求。本設計方案對嵌入式運動控制系統(tǒng)的以太網(wǎng)通信系統(tǒng)設計具有一定的實際參考意義。

參考文獻(References)

[1] 盛宇波,張成,周瀾.一種基于STM32與LWIP的數(shù)據(jù)采集系統(tǒng):中國,CN201911218936.0[P]. 2020-02-21.

[2] 馬亞輝,吳凡,李林,等.基于LwIP的熱插拔網(wǎng)絡嵌入式設計方法[J].單片機與嵌入式系統(tǒng)應用,2020,20(04):10-13,17.

[3] 王全全,馮博,朱輝.基于STM32和LWIP的井場傳感器遠程監(jiān)控系統(tǒng)[J].工業(yè)控制計算機,2019,32(04):13-14.

[4] 武磊,張正炳,胡蓉華.基于Web的家居設備遠程控制系統(tǒng)設計與實現(xiàn)[J].微型機與應用,2017,36(19):66-69.

[5] 張超,王志超,林巖.基于LwIP協(xié)議棧的嵌入式網(wǎng)絡控制系統(tǒng)設計[J].單片機與嵌入式系統(tǒng)應用,2019,19(02):34-36,40.

[6] DUNKELS A. Design and implementation of the LwIP TCP/IP stack[D]. Stockholm, Sweden: Swedish Institute of Computer Science, 2001:3-5.

[7] 朱升林.嵌入式網(wǎng)絡那些事:LwIP協(xié)議深度剖析與實戰(zhàn)演練[M].北京:中國水利水電出版社,2012:320.

[8] 趙成青,李宥謀,劉永斌,等.LWIP中零拷貝技術的研究與應用[J].計算機技術與發(fā)展,2018,28(07):182-186.

[9] 楊亮亮,李翔,史偉民,等.基于以太網(wǎng)的運動控制卡通信模塊設計[J].工業(yè)儀表與自動化裝置,2020(03):24-28,59.

作者簡介:

楊亮亮(1978-),男,博士,副教授.研究領域:高速高精運動控制.

黃? ?坤(1993-),男,碩士生.研究領域:嵌入式方向.

張莉敏(1979-),女,博士,副教授.研究領域:邏輯與人工智能.

史偉民(1965-),男,博士,教授.研究領域:紡織機械自動控制技術.

猜你喜歡
網(wǎng)絡通信嵌入式
基于網(wǎng)絡通信的智能照明系統(tǒng)設計
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
基于CAN總線的網(wǎng)絡通信信道的建模與研究
嵌入式系統(tǒng)通信技術的應用
計算機網(wǎng)絡通信常見問題與技術發(fā)展研究
網(wǎng)絡通信中信息隱藏技術的應用
搭建基于Qt的嵌入式開發(fā)平臺
基于網(wǎng)絡通信的校園智能音箱設計
談計算機網(wǎng)絡通信常見問題及技術發(fā)展
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應用
新田县| 乐至县| 比如县| 崇礼县| 来安县| 清水河县| 大宁县| 华坪县| 常山县| 大邑县| 科尔| 常宁市| 陵川县| 芜湖县| 拉萨市| 屯门区| 商都县| 常熟市| 葫芦岛市| 镶黄旗| 仲巴县| 紫金县| 舞阳县| 盘山县| 托克托县| 赤峰市| 福清市| 海原县| 泰宁县| 天水市| 周口市| 同仁县| 济宁市| 马公市| 乡宁县| 诸暨市| 溆浦县| 梁河县| 石屏县| 慈利县| 咸宁市|