楊亮亮 黃坤 張莉敏 史偉民
摘? 要:針對(duì)現(xiàn)代工業(yè)生產(chǎn)中運(yùn)動(dòng)控制卡高速化、高精化的技術(shù)要求,設(shè)計(jì)了一種基于小型嵌入式網(wǎng)絡(luò)協(xié)議棧LwIP的多軸運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通信系統(tǒng)。系統(tǒng)以STM32H7微控制器為主控芯片,以低功耗芯片LAN8720A作為外部以太網(wǎng)PHY層芯片,采用TCP/IP網(wǎng)絡(luò)協(xié)議棧中的UDP協(xié)議作為上下位機(jī)間通信協(xié)議。通信系統(tǒng)的下位機(jī)程序采用基于LwIP協(xié)議棧的RAW API方式編寫(xiě),上位機(jī)程序基于SOCKET套接字接口編寫(xiě)。測(cè)試結(jié)果表明:系統(tǒng)能達(dá)到既定要求的通信響應(yīng)速度,可實(shí)現(xiàn)單臺(tái)工控上位機(jī)與多塊運(yùn)動(dòng)控制卡之間“一對(duì)多”的主從式高速通信,具有較高的工業(yè)實(shí)用價(jià)值。
關(guān)鍵詞:嵌入式;LwIP;UDP;網(wǎng)絡(luò)通信;多軸運(yùn)動(dòng)控制卡
中圖分類號(hào):TP23? ? ?文獻(xiàn)標(biāo)識(shí)碼: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è)信息技術(shù)的發(fā)展,國(guó)內(nèi)中低端運(yùn)動(dòng)控制領(lǐng)域?qū)刂频捻憫?yīng)速度及精度的要求也越來(lái)越高。傳統(tǒng)的運(yùn)動(dòng)控制卡采用的是DSP+FPGA的硬件架構(gòu),如國(guó)內(nèi)的固高科技GT系列、研華集中式運(yùn)動(dòng)控制卡系列等。隨著工況多樣化與外設(shè)豐富性要求的不斷提高,DSP雖運(yùn)算能力強(qiáng)大,但在外設(shè)控制、事務(wù)處理、信息管理等方面不如高性能ARM靈活便捷、性價(jià)比高。另外,傳統(tǒng)的工控上位機(jī)與運(yùn)動(dòng)控制卡之間通常采用RS-232/485串口或PCI并行總線通信,其中串口方式通信速率較低,傳輸距離短,受干擾影響大[1];PCI總線方式不夠靈活便捷,成本較高,只能嵌入在工控機(jī)上使用。針對(duì)上述問(wèn)題,我們?cè)O(shè)計(jì)了一種基于ARM與LwIP協(xié)議棧的多軸運(yùn)動(dòng)控制卡以太網(wǎng)通信系統(tǒng)。在STM32主控芯片上應(yīng)用輕量型LwIP協(xié)議棧,采用LwIP RAW API編程接口搭建運(yùn)動(dòng)控制卡的網(wǎng)絡(luò)通信框架,SOCKET套接字方式編寫(xiě)上位機(jī)UDP服務(wù)端程序,并針對(duì)UDP協(xié)議不可靠傳輸?shù)奶匦裕O(shè)計(jì)了自定義協(xié)議頭及對(duì)應(yīng)的數(shù)據(jù)收發(fā)處理狀態(tài)機(jī)對(duì)數(shù)據(jù)幀進(jìn)行封裝與解封處理,實(shí)現(xiàn)一臺(tái)工控上位機(jī)控制多塊運(yùn)動(dòng)控制卡的“一對(duì)多”網(wǎng)絡(luò)通信系統(tǒng)。
2? ?系統(tǒng)架構(gòu)(System architecture)
本設(shè)計(jì)的系統(tǒng)總體框架如圖1所示,將工控上位機(jī)與多塊運(yùn)動(dòng)控制卡通過(guò)網(wǎng)線連入同一路由器或交換機(jī)下的局域網(wǎng)內(nèi)實(shí)現(xiàn)“一對(duì)多”通信的運(yùn)動(dòng)控制系統(tǒng)。
3? 通信系統(tǒng)硬件設(shè)計(jì)(Hardware design of communication system)
運(yùn)動(dòng)控制卡上的主控芯片采用基于ARM Cortex M7內(nèi)核的32位高級(jí)MCU—STM32H743IIT6,該芯片集成了大量的外設(shè)接口及通信接口,且其穩(wěn)定運(yùn)行主頻高達(dá)400 MHz,能滿足嵌入式運(yùn)動(dòng)控制系統(tǒng)的各項(xiàng)性能要求。芯片上的介質(zhì)訪問(wèn)控制器MAC通過(guò)符合IEEE 802.3標(biāo)準(zhǔn)的精簡(jiǎn)介質(zhì)接口RMII與外部PHY芯片LAN8720A相連接[2]。LAN8720A再與帶有網(wǎng)絡(luò)隔離變壓器的RJ45網(wǎng)絡(luò)接口模塊相連接,利用網(wǎng)絡(luò)線纜實(shí)現(xiàn)板卡與工控上位機(jī)的網(wǎng)絡(luò)連接。
本設(shè)計(jì)采用的LAN8720A芯片是一款體積?。?4pin QFN封裝,4 mm×4 mm×0.85 mm)、功耗低的全能型10/100 Mbps以太網(wǎng)物理層收發(fā)器,符合IEEE 802.3/802.3u(快速以太網(wǎng))標(biāo)準(zhǔn),支持精簡(jiǎn)介質(zhì)RMII接口,能大幅減少所需引腳數(shù)。
本設(shè)計(jì)采用的RJ45網(wǎng)絡(luò)接頭型號(hào)為HR911105A,該接頭帶有網(wǎng)絡(luò)屏蔽功能,能有效地減少外部干擾造成的影響,同時(shí)內(nèi)部帶有變壓器[3]。網(wǎng)絡(luò)通信模塊的接線示意圖如圖2所示。
4? 通信系統(tǒng)軟件設(shè)計(jì)(Software design of communication system)
4.1? ?系統(tǒng)軟件框架
系統(tǒng)軟件框架如圖3所示,工控上位機(jī)端通過(guò)創(chuàng)建SOCKET套接字編寫(xiě)UDP服務(wù)端程序接入路由器,運(yùn)動(dòng)控制卡端通過(guò)應(yīng)用輕量型LwIP協(xié)議棧編寫(xiě)相對(duì)應(yīng)的UDP程序來(lái)與外部PHY芯片LAN8720A進(jìn)行數(shù)據(jù)交互。LwIP協(xié)議棧是瑞典計(jì)算機(jī)科學(xué)院(SICS)的Adam Dunkels等開(kāi)發(fā)的一個(gè)小型開(kāi)源的TCP/IP協(xié)議棧,其在保持TCP/IP協(xié)議棧主要功能的基礎(chǔ)上減少了對(duì)RAM的占用,適用于小型嵌入式系統(tǒng)[4]。本設(shè)計(jì)中下位機(jī)程序采用基于無(wú)操作系統(tǒng)的LwIP RAW API編程接口方式設(shè)計(jì)UDP客戶端程序。
4.2? ?工控上位機(jī)通信程序
上位機(jī)程序采用VS2012作為開(kāi)發(fā)環(huán)境,結(jié)合C與C++編程搭建基本框架并實(shí)現(xiàn)MFC人機(jī)交互界面,通信部分采用SOCKET套接字接口編寫(xiě)UDP服務(wù)端。上位機(jī)程序在網(wǎng)絡(luò)通信方面需要實(shí)現(xiàn)的功能為:
(1)掃描工控上位機(jī)所連入的局域網(wǎng),實(shí)現(xiàn)對(duì)該網(wǎng)內(nèi)運(yùn)動(dòng)控制卡的檢測(cè)、連接、通信
檢測(cè)板卡設(shè)備IP的方式采用TCP/IP協(xié)議中的Ping命令。Ping服務(wù)命令位于TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)中的應(yīng)用層,其主要作用是向特定的目的主機(jī)發(fā)送ICMP(Internet Control Message Protocol,因特網(wǎng)報(bào)文控制協(xié)議)回顯請(qǐng)求報(bào)文,并得到目的主機(jī)的回顯應(yīng)答報(bào)文。通過(guò)Ping命令可以確定兩臺(tái)主機(jī)之間是否成功交換數(shù)據(jù)包,再根據(jù)返回的信息就可以確定目的主機(jī)與本地主機(jī)間網(wǎng)絡(luò)通信鏈路是否通暢等信息。
網(wǎng)絡(luò)通信中第一部分功能實(shí)現(xiàn)的工作原理為上位機(jī)程序檢測(cè)主機(jī)所聯(lián)入局域網(wǎng)內(nèi)的所有設(shè)備(同一局域網(wǎng)內(nèi)每個(gè)設(shè)備的IP地址與MAC物理地址要求是唯一的),并將所有檢測(cè)到的設(shè)備IP號(hào)組成列表列舉在MFC交互界面中,通過(guò)點(diǎn)選MFC界面IP列表框進(jìn)行端對(duì)端連接通信。另外,上位機(jī)程序采用多線程并發(fā)執(zhí)行機(jī)制實(shí)現(xiàn)同時(shí)控制多塊運(yùn)動(dòng)控制卡的功能,即“一對(duì)多”通信。獲取設(shè)備IP列表的過(guò)程如圖4所示。
(2)工控上位機(jī)下發(fā)設(shè)定的IP、MAC等參數(shù),實(shí)現(xiàn)在線修改運(yùn)動(dòng)控制卡網(wǎng)絡(luò)參數(shù)的功能
網(wǎng)絡(luò)通信中第二部分功能的實(shí)現(xiàn)方式是通過(guò)在上位機(jī)中使用MFC微軟基礎(chǔ)類庫(kù)編寫(xiě)人機(jī)界面,使用者按照規(guī)定設(shè)置所需的IP、MAC等網(wǎng)絡(luò)參數(shù),上位機(jī)程序?qū)⒃摼W(wǎng)絡(luò)參數(shù)打包成網(wǎng)絡(luò)數(shù)據(jù)幀發(fā)到指定IP地址的運(yùn)動(dòng)控制卡內(nèi)。運(yùn)動(dòng)控制卡在接收到該網(wǎng)絡(luò)數(shù)據(jù)幀后進(jìn)行相應(yīng)的命令處理,并通過(guò)I2C總線將其寫(xiě)入與板卡外部連接的掉電數(shù)據(jù)不丟失的EEPROM芯片(AT24C02)內(nèi),運(yùn)動(dòng)控制卡每次上電時(shí)都會(huì)通過(guò)I2C接口讀取AT24C02內(nèi)最新一次寫(xiě)入的IP、MAC等網(wǎng)絡(luò)參數(shù)并初始化網(wǎng)絡(luò)配置。此功能可以將給定的運(yùn)動(dòng)控制卡設(shè)置為指定的網(wǎng)絡(luò)參數(shù),方便管理局域網(wǎng)內(nèi)所連入的多塊多軸運(yùn)動(dòng)控制卡。該部分功能所對(duì)應(yīng)的上位機(jī)軟件界面如圖5所示。
4.3? ?運(yùn)動(dòng)控制卡LwIP通信框架
在LwIP網(wǎng)絡(luò)編程中主要有三種接口編程方式:NETCONN API接口編程、SOCKET API接口編程、RAW API接口編程。本設(shè)計(jì)采用第三種方式RAW API接口編程,該方式的核心是對(duì)TCP/UDP控制塊的處理,優(yōu)點(diǎn)是數(shù)據(jù)處理效率高,可以基于無(wú)操作系統(tǒng)編程[5]。
LwIP RAW API編程方式是基于回調(diào)機(jī)制的,即為協(xié)議棧內(nèi)核中不同事件注冊(cè)相應(yīng)的回調(diào)函數(shù)后,當(dāng)事件發(fā)生的時(shí)候相應(yīng)的回調(diào)函數(shù)就會(huì)被調(diào)用?;贚wIP RAW API編程接口實(shí)現(xiàn)的下位機(jī)程序框架如圖6所示。其分為三部分:LwIP協(xié)議棧的初始化配置、網(wǎng)絡(luò)數(shù)據(jù)接收檢測(cè)及命令處理、數(shù)據(jù)重組打包發(fā)送。
下位機(jī)程序的網(wǎng)絡(luò)通信整體是基于LwIP協(xié)議棧的,下面為對(duì)程序通信框架的總體概述。
(1)基于LwIP協(xié)議棧框架對(duì)網(wǎng)絡(luò)進(jìn)行初始化配置
Udp_echoserver_init函數(shù)用于初始化,該函數(shù)調(diào)用下面五個(gè)函數(shù)建立UDP連接并且注冊(cè)回調(diào)函數(shù):
Udp_new函數(shù)用于創(chuàng)建UDP控制塊;Udp_bind函數(shù)用于綁定本機(jī)IP地址與端口號(hào);Udp_conect函數(shù)用于設(shè)置控制塊中的遠(yuǎn)端IP地址與端口號(hào),并將UDP控制塊插入控制塊鏈表udp_pcbs中;Udp_recv函數(shù)用于設(shè)置UDP控制塊中的recv與recv_arg字段,recv是一個(gè)函數(shù)指針,指向一個(gè)udp_recv_fn類型的回調(diào)函數(shù),它是內(nèi)核與應(yīng)用程序交互的橋梁,當(dāng)內(nèi)核接收到數(shù)據(jù)時(shí),就會(huì)調(diào)用這個(gè)回調(diào)函數(shù),進(jìn)而將數(shù)據(jù)遞交到應(yīng)用層處理;Udp_recv_callback函數(shù)是數(shù)據(jù)接收回調(diào)函數(shù),用于將以太網(wǎng)接收到的數(shù)據(jù)拷貝到設(shè)定的全局?jǐn)?shù)據(jù)緩沖區(qū)內(nèi)便于后續(xù)處理。
(2)網(wǎng)絡(luò)數(shù)據(jù)接收檢測(cè)及命令處理階段
程序主體部分采用非阻塞輪詢的方式將數(shù)據(jù)包存放到DMA描述符中,然后拷貝其中的數(shù)據(jù)到pbuf[6]結(jié)構(gòu)體中用于后續(xù)處理,即在無(wú)網(wǎng)絡(luò)數(shù)據(jù)接收時(shí)會(huì)一直處于一個(gè)初始輪詢狀態(tài)。在該段程序體內(nèi),Ethernetif_input作為數(shù)據(jù)處理的入口,它在接收到以太網(wǎng)幀時(shí)被調(diào)用,用于從以太網(wǎng)數(shù)據(jù)存儲(chǔ)區(qū)讀取已接收到的一個(gè)以太網(wǎng)數(shù)據(jù)幀,并將其送入指定的網(wǎng)卡結(jié)構(gòu)體netif中。
本程序網(wǎng)絡(luò)通信部分采用LwIP協(xié)議棧中的UDP協(xié)議。UDP協(xié)議是TCP/IP協(xié)議棧中的傳輸層協(xié)議,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的協(xié)議,不提供對(duì)數(shù)據(jù)包的分片、組裝功能,當(dāng)報(bào)文發(fā)送出去后無(wú)法知道是否安全、完整到達(dá),所以UDP協(xié)議也可稱作“無(wú)連接的連接協(xié)議”。UDP除了這些缺點(diǎn)外也有它自身的優(yōu)勢(shì),由于UDP不屬于連接型協(xié)議,因而消耗資源少,實(shí)時(shí)性高,處理速度快[7]。針對(duì)UDP的非連接型協(xié)議屬性,在程序內(nèi)制定了一種數(shù)據(jù)收發(fā)處理協(xié)議,數(shù)據(jù)發(fā)送前在數(shù)據(jù)頭部封裝自定義的一段協(xié)議頭數(shù)據(jù),在數(shù)據(jù)接收過(guò)程中則對(duì)其進(jìn)行逐步解封提取。通過(guò)該處理協(xié)議來(lái)實(shí)現(xiàn)對(duì)錯(cuò)誤幀、非正常幀的處理,以提高UDP協(xié)議的數(shù)據(jù)傳輸可靠性。數(shù)據(jù)收發(fā)協(xié)議頭格式如圖7所示。
根據(jù)上述處理要求,數(shù)據(jù)收發(fā)部分編寫(xiě)了一個(gè)數(shù)據(jù)收發(fā)狀態(tài)機(jī)用于封裝與解封網(wǎng)絡(luò)數(shù)據(jù)包,并判斷接收到的網(wǎng)絡(luò)數(shù)據(jù)包是否正確。若數(shù)據(jù)正確則會(huì)按照狀態(tài)機(jī)躍遷順序重組數(shù)據(jù),最后進(jìn)入switch-case命令分支解析并做出相應(yīng)的處理;若數(shù)據(jù)有誤或數(shù)據(jù)包掉幀導(dǎo)致數(shù)據(jù)不完整,則會(huì)在躍遷到相應(yīng)的狀態(tài)機(jī)后判斷處理是否超時(shí)進(jìn)而跳出狀態(tài)機(jī)并在丟棄該部分?jǐn)?shù)據(jù)后回復(fù)上位機(jī)數(shù)據(jù)接收異常,同時(shí)其回到初始輪詢狀態(tài)繼續(xù)等待接收網(wǎng)絡(luò)數(shù)據(jù)包。此處的超時(shí)管理機(jī)制作用原理為:當(dāng)數(shù)據(jù)被接收到并開(kāi)始進(jìn)入狀態(tài)機(jī)提取處理時(shí),啟動(dòng)一個(gè)計(jì)時(shí)器機(jī)制,在每一個(gè)狀態(tài)機(jī)處都會(huì)進(jìn)行計(jì)時(shí),計(jì)算數(shù)據(jù)處理時(shí)長(zhǎng),若超過(guò)設(shè)定時(shí)間則認(rèn)為出錯(cuò),跳出狀態(tài)機(jī),向上位機(jī)報(bào)告錯(cuò)誤;若未超過(guò)設(shè)定時(shí)間,則認(rèn)為無(wú)錯(cuò)誤,處理完成后狀態(tài)機(jī)正常跳轉(zhuǎn)。數(shù)據(jù)接收處理的狀態(tài)機(jī)躍遷圖如圖8所示。
(3)數(shù)據(jù)重組打包發(fā)送階段
在數(shù)據(jù)發(fā)送處理中,對(duì)于TCP連接,內(nèi)核會(huì)根據(jù)用戶提供的待發(fā)送數(shù)據(jù)的起始數(shù)據(jù)和長(zhǎng)度,自動(dòng)將數(shù)據(jù)封裝在合適的數(shù)據(jù)包中,然后放入發(fā)送隊(duì)列;對(duì)于UDP,用戶需要手動(dòng)將數(shù)據(jù)封裝在網(wǎng)絡(luò)發(fā)送buffer中,通過(guò)調(diào)用發(fā)送函數(shù),內(nèi)核直接發(fā)送數(shù)據(jù)包的數(shù)據(jù)段[8]。UDP數(shù)據(jù)包的最大理論長(zhǎng)度為65,535 字節(jié),但是UDP不存在數(shù)據(jù)分片和組裝機(jī)制,只會(huì)將數(shù)據(jù)包直接向下交付給IP層處理,所以它的長(zhǎng)度大小受到下層IP層和數(shù)據(jù)鏈路層協(xié)議的制約。而以太網(wǎng)規(guī)定的數(shù)據(jù)鏈路層最大傳輸單元MTU為1,500 字節(jié),去除UDP包頭8 字節(jié)、IP包頭20 字節(jié),所以數(shù)據(jù)報(bào)文單幀最大長(zhǎng)度可采用1,472 字節(jié)。
運(yùn)動(dòng)控制卡在接收到正確的數(shù)據(jù)包并通過(guò)數(shù)據(jù)接收狀態(tài)機(jī)提取處理后,通過(guò)判斷命令I(lǐng)D號(hào)進(jìn)入相應(yīng)的命令I(lǐng)D處理函數(shù),將對(duì)應(yīng)的回復(fù)數(shù)據(jù)通過(guò)數(shù)據(jù)發(fā)送狀態(tài)機(jī)重組,若數(shù)據(jù)長(zhǎng)度大于1,472 字節(jié),則將數(shù)據(jù)包分組,每組大小1,472 字節(jié),依次將分組數(shù)據(jù)發(fā)出;若小于1,472 字節(jié)則直接單組發(fā)出。
5? ?實(shí)驗(yàn)驗(yàn)證(Experimental verification)
完成控制系統(tǒng)的通信部分程序編寫(xiě)后,在上位機(jī)軟件端調(diào)用一個(gè)通信回環(huán)測(cè)試函數(shù)來(lái)測(cè)試系統(tǒng)性能。通信測(cè)試原理是通信回環(huán)測(cè)試函數(shù)在上位機(jī)中生成一個(gè)指定長(zhǎng)度的隨機(jī)浮點(diǎn)數(shù)(0—9)數(shù)組,并在該數(shù)組前添加自定義的協(xié)議頭部,然后通過(guò)UDP協(xié)議下發(fā)到指定IP板卡。運(yùn)動(dòng)控制卡接收到網(wǎng)絡(luò)數(shù)據(jù)包后進(jìn)行校驗(yàn)處理,再將處理過(guò)的數(shù)據(jù)包返回給上位機(jī),最后上位機(jī)對(duì)收發(fā)的數(shù)據(jù)進(jìn)行對(duì)比,確定通信是否正確,且通信響應(yīng)時(shí)間要求小于2 ms。
本設(shè)計(jì)中采用的測(cè)試方式:將上位機(jī)與三塊獨(dú)立的四軸運(yùn)動(dòng)控制卡通過(guò)網(wǎng)線連入同一個(gè)路由器或交換機(jī)下,上位機(jī)掃描該局域網(wǎng)內(nèi)的所有運(yùn)動(dòng)控制卡并進(jìn)行連接,然后分別設(shè)置三塊運(yùn)動(dòng)控制卡網(wǎng)絡(luò)參數(shù)。其中,路由器的IP地址為192.168.1.1,PC上位機(jī)的IP地址設(shè)置為192.168.31.100,三塊運(yùn)動(dòng)控制卡的IP地址分別設(shè)置為192.168.31.10、192.168.31.20、192.168.31.30。在設(shè)置好板卡網(wǎng)絡(luò)參數(shù)后重啟運(yùn)動(dòng)控制卡,然后同時(shí)開(kāi)啟三塊板卡通信測(cè)試,測(cè)試結(jié)果如表1所示。
通過(guò)表1的測(cè)試結(jié)果可以看出,在“一對(duì)多”的通信環(huán)境下,工控上位機(jī)與連接的每塊運(yùn)動(dòng)控制卡之間保持了穩(wěn)定的通信速度——11.7 Mbit/s,通信的平均響應(yīng)時(shí)間為1.09 ms,而且各運(yùn)動(dòng)控制卡能相互獨(dú)立地與工控上位機(jī)完成數(shù)據(jù)傳輸并確保數(shù)據(jù)正確性。相較于串口RS232通信傳輸速度100—200 kbit/s,DSP+專用芯片(W5100S)的以太網(wǎng)傳輸速度為1.2 Mbit/s[9],通信測(cè)試結(jié)果表明,所設(shè)計(jì)的通信系統(tǒng)能達(dá)到要求的精度與響應(yīng)速度,且在通信速度上有大幅提高。
6? ?結(jié)論(Conclusion)
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于ARM和LwIP的嵌入式多軸運(yùn)動(dòng)控制卡網(wǎng)絡(luò)通信方案,描述了網(wǎng)絡(luò)通信系統(tǒng)的硬件設(shè)計(jì)、軟件設(shè)計(jì)兩部分。系統(tǒng)中工控上位機(jī)端采用VS2012編寫(xiě)MFC界面方便人機(jī)交互,多軸運(yùn)動(dòng)控制卡端采用無(wú)操作系統(tǒng)的LwIP RAW API編程接口編寫(xiě)適合嵌入式系統(tǒng)的程序。針對(duì)UDP連接不安全、不可靠的問(wèn)題,采用數(shù)據(jù)收發(fā)狀態(tài)機(jī)及處理超時(shí)管理機(jī)制有效確保數(shù)據(jù)的正確收發(fā)和系統(tǒng)的實(shí)時(shí)響應(yīng)性。最后通過(guò)實(shí)驗(yàn)測(cè)試了網(wǎng)絡(luò)通信性能,實(shí)驗(yàn)測(cè)試效果良好,可滿足實(shí)際工業(yè)場(chǎng)景的應(yīng)用要求。本設(shè)計(jì)方案對(duì)嵌入式運(yùn)動(dòng)控制系統(tǒng)的以太網(wǎng)通信系統(tǒng)設(shè)計(jì)具有一定的實(shí)際參考意義。
參考文獻(xiàn)(References)
[1] 盛宇波,張成,周瀾.一種基于STM32與LWIP的數(shù)據(jù)采集系統(tǒng):中國(guó),CN201911218936.0[P]. 2020-02-21.
[2] 馬亞輝,吳凡,李林,等.基于LwIP的熱插拔網(wǎng)絡(luò)嵌入式設(shè)計(jì)方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2020,20(04):10-13,17.
[3] 王全全,馮博,朱輝.基于STM32和LWIP的井場(chǎng)傳感器遠(yuǎn)程監(jiān)控系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2019,32(04):13-14.
[4] 武磊,張正炳,胡蓉華.基于Web的家居設(shè)備遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2017,36(19):66-69.
[5] 張超,王志超,林巖.基于LwIP協(xié)議棧的嵌入式網(wǎng)絡(luò)控制系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yī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)絡(luò)那些事:LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練[M].北京:中國(guó)水利水電出版社,2012:320.
[8] 趙成青,李宥謀,劉永斌,等.LWIP中零拷貝技術(shù)的研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2018,28(07):182-186.
[9] 楊亮亮,李翔,史偉民,等.基于以太網(wǎng)的運(yùn)動(dòng)控制卡通信模塊設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2020(03):24-28,59.
作者簡(jiǎn)介:
楊亮亮(1978-),男,博士,副教授.研究領(lǐng)域:高速高精運(yùn)動(dòng)控制.
黃? ?坤(1993-),男,碩士生.研究領(lǐng)域:嵌入式方向.
張莉敏(1979-),女,博士,副教授.研究領(lǐng)域:邏輯與人工智能.
史偉民(1965-),男,博士,教授.研究領(lǐng)域:紡織機(jī)械自動(dòng)控制技術(shù).