亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于LwIP和Modbus TCP協(xié)議的網(wǎng)絡(luò)控制器設(shè)計(jì)

        2023-03-09 07:55:02史先傳許議元
        自動(dòng)化與儀表 2023年2期
        關(guān)鍵詞:網(wǎng)絡(luò)通信

        史先傳,殷 帥,許議元

        (常州大學(xué) 機(jī)械與軌道交通學(xué)院,常州 213164)

        工廠經(jīng)常需要對繼電器、電磁閥等設(shè)備或者電壓、電流和溫度等信號進(jìn)行遠(yuǎn)程控制或監(jiān)測,目前許多工廠都構(gòu)建了設(shè)備的遠(yuǎn)程控制和監(jiān)測系統(tǒng)。隨著科技的進(jìn)步,工廠的終端設(shè)備分布越來越分散,需要測控的參數(shù)越來越多,對通信的實(shí)時(shí)性要求也越來越高。傳統(tǒng)的現(xiàn)場總線通訊方式在數(shù)據(jù)傳輸時(shí)有許多限制,已經(jīng)逐漸無法滿足工廠的要求。由于以太網(wǎng)傳輸具有傳輸速度快、傳輸距離長和抗干擾能力強(qiáng)等優(yōu)點(diǎn),已經(jīng)被廣泛使用在對通信實(shí)時(shí)性和抗干擾能力要求高的工廠環(huán)境中。目前的以太網(wǎng)遠(yuǎn)程監(jiān)控系統(tǒng)大多都依賴μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng),而且大多數(shù)系統(tǒng)都使用單網(wǎng)口通訊方式[1-2],當(dāng)工廠需要對不同地點(diǎn)的多路設(shè)備進(jìn)行監(jiān)測和控制時(shí),需要使用多臺(tái)上位機(jī),成本高且布線復(fù)雜。針對以上問題,使用STM32F107RCT6 單片機(jī)和LAN9303 芯片作為硬件平臺(tái),使用無操作系統(tǒng)的方式移植LwIP協(xié)議并結(jié)合Modbus TCP 協(xié)議,設(shè)計(jì)了一款網(wǎng)絡(luò)控制器。同時(shí),通過LAN9303 芯片拓展2 路網(wǎng)口,需要對不同地點(diǎn)的設(shè)備進(jìn)行監(jiān)測和控制時(shí),用網(wǎng)線將多個(gè)網(wǎng)絡(luò)控制器串聯(lián)使用,如圖1所示。

        圖1 雙網(wǎng)口工作方式Fig.1 Dual network port working mode

        1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)

        網(wǎng)絡(luò)控制器由電源電路、網(wǎng)絡(luò)通信電路、A/D 采樣電路、網(wǎng)口電路、光耦隔離電路和IO 口電路等電路構(gòu)成。使用STM32F107RCT6 作為主控芯片,網(wǎng)絡(luò)芯片使用LAN9303 芯片。由電源電路將輸入電源轉(zhuǎn)換為網(wǎng)絡(luò)控制器所需的各種直流電源,分別提供給STM32F107RCT6 和LAN9303 及其外圍電路使用。STM32F107RCT6 通過其內(nèi)部的MAC(媒體訪問控制器)與LAN9303 芯片進(jìn)行通信。使用LAN9303 芯片拓展2 個(gè)網(wǎng)口,形成雙網(wǎng)口工作方式。使用網(wǎng)絡(luò)隔離變壓器將網(wǎng)口和LAN9303 芯片隔離,避免外界電磁干擾,提高數(shù)據(jù)傳輸?shù)姆€(wěn)定性。STM32 單片機(jī)通過IO 口對終端設(shè)備進(jìn)行控制和監(jiān)測,同時(shí)使用SPI 通信讀取A/D 采樣的值。采用光耦隔離電路將STM32 單片機(jī)與外部電路隔離,提高控制系統(tǒng)運(yùn)行的穩(wěn)定性。系統(tǒng)總體結(jié)構(gòu)如圖2所示。

        圖2 系統(tǒng)總體結(jié)構(gòu)Fig.2 System overall structure

        2 硬件設(shè)計(jì)

        2.1 網(wǎng)絡(luò)通信電路

        STM32F107RCT6 和LAN9303 的網(wǎng)絡(luò)通信需要連接SMI(站管理接口)和MII(介質(zhì)無關(guān)接口)或RMII (精簡MII 接口)。根據(jù)IEEE 802.3 標(biāo)準(zhǔn),MII接口需要連接16 個(gè)引腳,RMII 接口需要連接7 個(gè)引腳。RMII 接口方式在滿足網(wǎng)絡(luò)通信需求的同時(shí),使用的引腳數(shù)目更少,在設(shè)計(jì)電路時(shí)更加簡單方便。因此,采用RMII 接口方式實(shí)現(xiàn)STM32F107RCT6 與LAN9303 的網(wǎng)絡(luò)通信。

        LAN9303 芯片由STM32F107RCT6 的PA8 引腳輸出的25 MHz 時(shí)鐘驅(qū)動(dòng),時(shí)鐘信號從LAN9303的XI 端口輸入,XO 端口保持懸空。LAN9303 內(nèi)部將25 MHz 時(shí)鐘倍頻到50 MHz,并由P0_OUTCLK 引腳輸出,驅(qū)動(dòng)STM32F107RCT6 的MAC。MDC 引腳和MDIO 引腳分別是站管理接口的時(shí)鐘線和數(shù)據(jù)線,STM32F107RCT6 通過此接口訪問LAN9303 的內(nèi)部寄存器發(fā)送控制數(shù)據(jù)或接收狀態(tài)信息。LAN9303 的RMII 接口與STM32F107RCT6 內(nèi)部集成的MAC 的RMII 接口相連,實(shí)現(xiàn)網(wǎng)絡(luò)通信的數(shù)據(jù)傳輸。通過配置P0_MODE0、P0_MODE1 和P0_MODE2 選擇LAN-9303 的工作模式。LAN9303 采用RMII PHY 模式,對應(yīng)P0_MODE2=1,P0_MODE1=0,P0_MODE0=0。TXN1,TXP1,RXN1 和RXP1 為網(wǎng)口1 的數(shù)據(jù)傳輸引腳。TXN2,TXP2,RXN2 和RXP2 為網(wǎng)口2 的數(shù)據(jù)傳輸引腳。STM32F107RCT6 與LAN9303 的網(wǎng)絡(luò)通信電路如圖3所示。

        圖3 網(wǎng)絡(luò)通信電路Fig.3 Network communication circuit diagram

        2.2 A/D 采樣電路

        A/D 采樣電路使用模數(shù)轉(zhuǎn)換器AD7895 芯片。AD7895 具有12 位ADC、雙極性輸入和高速串行SPI 接口等特點(diǎn),能采樣±10 V 電壓。采用AD780 提供+2.5 V 基準(zhǔn)電壓作為參考。轉(zhuǎn)換電路與STM32 單片機(jī)之間的通信在硬件上添加了數(shù)字隔離芯片AD uM1402,避免外界電磁對主控芯片STM32 單片機(jī)造成干擾。使用STM32 單片機(jī)的GPIO 口模擬SPI通信讀取A/D 采樣的數(shù)值。通過撥動(dòng)撥碼開關(guān)S1選擇采集對象是電壓信號還是電流信號。采集電壓信號時(shí),撥動(dòng)開關(guān)至2、3 閉合,1、4 斷開,采集端并聯(lián)阻值為100 kΩ 的電阻R24。采集電流信號時(shí),撥動(dòng)開關(guān)至1、4 閉合,2、3 斷開,采集端串聯(lián)阻值為500 Ω的電阻R23,采集電阻R23兩端的電壓,將電流信號變換為電壓信號。采樣電路如圖4所示。

        圖4 A/D 采樣電路Fig.4 A/D sampling circuit

        3 軟件設(shè)計(jì)

        軟件架構(gòu)分層模型中的網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層由LwIP 協(xié)議實(shí)現(xiàn)[3]。在應(yīng)用層上使用Modbus TCP 協(xié)議規(guī)定數(shù)據(jù)格式,利用網(wǎng)絡(luò)傳輸Modbus TCP 協(xié)議報(bào)文,實(shí)現(xiàn)網(wǎng)絡(luò)通信[4-5]。軟件架構(gòu)分層模型如圖5所示。

        圖5 軟件架構(gòu)分層模型Fig.5 Software architecture hierarchical model

        3.1 LwIP 協(xié)議棧的移植

        STM32F107RCT6 自帶的MAC 的接口和LAN9303的接口構(gòu)成了網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)接口層,使用LwIP協(xié)議棧構(gòu)成網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)層和傳輸層。ST 公司為STM32F107 芯片提供了專門的LwIP 源碼,開發(fā)人員根據(jù)項(xiàng)目需求編寫和修改相應(yīng)的函數(shù)。網(wǎng)絡(luò)接口驅(qū)動(dòng)程序的實(shí)現(xiàn)是移植LwIP 協(xié)議棧的關(guān)鍵[6],在ethernetif.c 文件中已經(jīng)為此提供了框架,對此文件進(jìn)行相應(yīng)修改以實(shí)現(xiàn)網(wǎng)絡(luò)的初始化、中斷處理以及數(shù)據(jù)的收、發(fā)等操作。ethernetif.c 文件中主要函數(shù)有:low_level_init()函數(shù)——用來初始化并使能MAC和DMA;low_level_input()函數(shù)——用于接收數(shù)據(jù),在內(nèi)存池中分配一個(gè)pbuf 數(shù)據(jù)結(jié)構(gòu)體,將從接口進(jìn)入的數(shù)據(jù)包的字節(jié)傳輸?shù)絧buf 中,將pbuf 返回;low_level_output()函數(shù)——用來發(fā)送pbuf 緩沖區(qū)中的數(shù)據(jù)包。

        創(chuàng)建虛擬網(wǎng)絡(luò)接口是實(shí)現(xiàn)雙網(wǎng)口通訊的基礎(chǔ)。網(wǎng)絡(luò)控制器有2 個(gè)網(wǎng)口,給每個(gè)網(wǎng)口都分配一個(gè)結(jié)構(gòu)體netif,用來描述網(wǎng)口的IP 地址、MAC 地址和接口狀態(tài)等特性,通過netif_add()函數(shù)將網(wǎng)口的各個(gè)參數(shù)添加到netif_list 鏈表中,傳輸數(shù)據(jù)時(shí)根據(jù)數(shù)據(jù)包的信息從netif_list 鏈表中選擇合適的網(wǎng)口進(jìn)行傳輸。網(wǎng)絡(luò)控制器只用于工廠控制和監(jiān)測設(shè)備的局域網(wǎng)中,使用MAC 地址來標(biāo)識(shí)具體用戶,根據(jù)數(shù)據(jù)包中的MAC 地址,選擇合適的網(wǎng)口發(fā)送和接收數(shù)據(jù)。當(dāng)2 個(gè)網(wǎng)口一起使用時(shí),將數(shù)據(jù)轉(zhuǎn)發(fā)到數(shù)據(jù)包的目標(biāo)MAC 地址所連接到的單個(gè)網(wǎng)口。

        完成以上相關(guān)函數(shù)的移植后,在程序的主函數(shù)中調(diào)用LwIP_Init()函數(shù)初始化LwIP 協(xié)議的各項(xiàng)設(shè)置。

        3.2 Modbus TCP 協(xié)議

        根據(jù)IANA(互聯(lián)網(wǎng)編號分配管理機(jī)構(gòu))規(guī)定,Modbus TCP 服務(wù)端的端口號是502。Modbus TCP報(bào)文由報(bào)文頭和報(bào)文體組成。因?yàn)長wIP 協(xié)議在傳遞數(shù)據(jù)包時(shí)已經(jīng)對數(shù)據(jù)進(jìn)行了校驗(yàn),所以在報(bào)文中不再進(jìn)行校驗(yàn)。Modbus TCP 報(bào)文結(jié)構(gòu)如圖6所示。

        圖6 Modbus TCP 報(bào)文結(jié)構(gòu)Fig.6 Modbus TCP message structure

        Modbus TCP 協(xié)議使用主從關(guān)系實(shí)現(xiàn)請求和響應(yīng)。通信采用一問一答的形式,由客戶端發(fā)起請求,然后等待服務(wù)端響應(yīng)。上位機(jī)為客戶端,網(wǎng)絡(luò)控制器作為服務(wù)端等待上位機(jī)發(fā)送報(bào)文并做出相關(guān)回應(yīng)。如圖7所示。

        圖7 Modbus TCP 主從關(guān)系Fig.7 Modbus TCP master-slave relationship

        3.3 A/D 采樣讀數(shù)處理

        A/D 采樣電路測量的電壓范圍為0~10 V,電流范圍為4~20 mA。采樣得到的數(shù)字量取值范圍為0~2047。

        若被測信號為電壓信號,則電壓轉(zhuǎn)換公式為

        式中:Xu為A/D 采樣得到的數(shù)字量;U 為轉(zhuǎn)換后的電壓模擬量,單位為伏特(V)。

        若被測信號為電流信號,則電流轉(zhuǎn)換公式為

        式中:Xi為A/D 采樣得到的數(shù)字量;I 為轉(zhuǎn)換后的電流模擬量,單位為毫安(mA)。

        為了消除A/D 采樣時(shí)遇到的脈沖干擾和隨機(jī)誤差,提高測量數(shù)據(jù)的準(zhǔn)確性,連續(xù)對A/D 轉(zhuǎn)換值進(jìn)行20 次采樣,然后去掉一個(gè)最大值和一個(gè)最小值,求出剩下的18 個(gè)值的平均值作為最終采樣讀數(shù)。

        3.4 程序設(shè)計(jì)

        編寫程序時(shí)直接調(diào)用LwIP 協(xié)議內(nèi)部的函數(shù)。網(wǎng)絡(luò)控制器作為網(wǎng)絡(luò)通信的服務(wù)端,遠(yuǎn)程上位機(jī)作為客戶端。

        服務(wù)端收發(fā)數(shù)據(jù)流程如下:服務(wù)端始終監(jiān)聽502 端口狀態(tài),一旦接收到連接請求,建立連接并接收客戶端發(fā)送的數(shù)據(jù)。然后對數(shù)據(jù)進(jìn)行處理,按照Modbus TCP 協(xié)議的功能碼進(jìn)行相應(yīng)的控制和監(jiān)測操作,并向客戶端返回相應(yīng)的應(yīng)答報(bào)文。其中modbus_accept()和modbus_recv()函數(shù)分別是連接到客戶端和接收到數(shù)據(jù)后的程序處理。上述流程如圖8所示。

        圖8 服務(wù)端收發(fā)數(shù)據(jù)流程Fig.8 Server sending and receiving data flow chart

        在完成客戶端的連接后調(diào)用modbus_accept()函數(shù)為接收客戶端數(shù)據(jù)做準(zhǔn)備,主要工作是分配空閑內(nèi)存和傳遞參數(shù)。modbus_accept()函數(shù)主要流程如圖9所示,圖中hs 是數(shù)據(jù)指針。

        圖9 Modbus_accept()函數(shù)流程Fig.9 Modbus_accept() function flow chart

        當(dāng)服務(wù)端接收到數(shù)據(jù)后調(diào)用modbus_recv()函數(shù)對數(shù)據(jù)進(jìn)行相應(yīng)的處理,modbus_recv()函數(shù)的主要工作為判斷接收到的數(shù)據(jù)前7 個(gè)字節(jié)是不是Modbus TCP 報(bào)文頭。若是報(bào)文頭,則讀取功能碼,根據(jù)功能碼對線圈和寄存器進(jìn)行相應(yīng)操作,完成輸入狀態(tài)讀取、輸出狀態(tài)控制和A/D 采樣數(shù)據(jù)讀取等功能,并發(fā)送應(yīng)答報(bào)文,完成一次數(shù)據(jù)的接收與發(fā)送。modbus_recv()函數(shù)主要流程如圖10所示。

        圖10 Modbus_recv()函數(shù)流程Fig.10 Modbus_recv() function flow chart

        4 實(shí)驗(yàn)測試與結(jié)果

        上位機(jī)為客戶端,網(wǎng)絡(luò)控制器為服務(wù)端。設(shè)置客戶端IP 地址為192.168.0.1,服務(wù)端IP 地址為192.168.0.10,服務(wù)端端口號為502。進(jìn)行網(wǎng)絡(luò)通信測試。

        網(wǎng)絡(luò)控制器支持Modbus TCP 協(xié)議中常用的8個(gè)功能碼(0x01、0x02、0x03、0x04、0x05、0x06、0x0F和0x10),以功能碼05(寫單個(gè)線圈)、功能碼02(讀輸入狀態(tài))和功能碼03(讀輸入寄存器)為例進(jìn)行測試。網(wǎng)絡(luò)通信測試中上位機(jī)發(fā)送與接收的報(bào)文內(nèi)容如圖11所示。

        圖11 網(wǎng)絡(luò)通信測試Fig.11 Network communication test

        05(寫單個(gè)線圈):上位機(jī)發(fā)送報(bào)文00 01 00 00 00 06 01 05 00 02 FF 00,上位機(jī)接收到的報(bào)文是00 01 00 00 00 06 01 05 00 02 FF 00。地址為2 的輸出端口上連接的繼電器線圈通電。

        02(讀輸入狀態(tài)):將地址為0 的輸入端口上所接的開關(guān)閉合,此時(shí)從地址0 開始讀5 個(gè)輸入點(diǎn)狀態(tài)。上位機(jī)發(fā)送報(bào)文00 01 00 00 00 06 01 02 00 00 00 05,上位機(jī)接收到的報(bào)文是00 01 00 00 00 04 01 02 01 01,接收的報(bào)文與開關(guān)的狀態(tài)一致。

        03(讀輸入寄存器):向A/D 輸入引腳施加5 V電壓,網(wǎng)絡(luò)控制器通過A/D 轉(zhuǎn)換電路將5 V 電壓轉(zhuǎn)換為數(shù)字量,這個(gè)數(shù)字量被存儲(chǔ)在地址為0x20 的寄存器。上位機(jī)發(fā)送報(bào)文00 01 00 00 00 06 01 03 00 20 00 01,上位機(jī)接收到的報(bào)文是00 01 00 00 00 05 01 03 02 04 00。報(bào)文的最后2 個(gè)字節(jié)為讀取的A/D 值,將16 進(jìn)制數(shù)0x0400 轉(zhuǎn)化為10 進(jìn)制數(shù)1024,通過轉(zhuǎn)換公式(1)計(jì)算可知測到的電壓為5 V,與施加的電壓一致。

        5 結(jié)語

        網(wǎng)絡(luò)控制器接收上位機(jī)發(fā)送的報(bào)文,控制電磁閥、繼電器等設(shè)備的通斷,并且對電流和電壓信號進(jìn)行監(jiān)測。當(dāng)工廠需要對多路設(shè)備進(jìn)行監(jiān)控時(shí)只需將多塊網(wǎng)絡(luò)控制器用網(wǎng)線串接,避免復(fù)雜的布線。通過實(shí)驗(yàn)測試,網(wǎng)絡(luò)控制器成功地寫入了輸出端口的通斷狀態(tài)、讀取了輸入端口狀態(tài)和A/D 采樣的值,可以通過網(wǎng)絡(luò)穩(wěn)定地對終端設(shè)備進(jìn)行控制和監(jiān)測。

        猜你喜歡
        網(wǎng)絡(luò)通信
        基于NoC架構(gòu)的網(wǎng)絡(luò)通信抗干擾方法研究
        海上軍用網(wǎng)絡(luò)通信的安全控制技術(shù)
        基于網(wǎng)絡(luò)通信的智能照明系統(tǒng)設(shè)計(jì)
        電子制作(2019年15期)2019-08-27 01:11:48
        基于CAN總線的網(wǎng)絡(luò)通信信道的建模與研究
        移動(dòng)計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)研究
        電子測試(2018年14期)2018-09-26 06:05:06
        計(jì)算機(jī)網(wǎng)絡(luò)通信常見問題與技術(shù)發(fā)展研究
        電子制作(2018年10期)2018-08-04 03:24:46
        網(wǎng)絡(luò)通信中信息隱藏技術(shù)的應(yīng)用
        基于網(wǎng)絡(luò)通信的校園智能音箱設(shè)計(jì)
        電子制作(2018年1期)2018-04-04 01:48:30
        談?dòng)?jì)算機(jī)網(wǎng)絡(luò)通信常見問題及技術(shù)發(fā)展
        電子制作(2017年17期)2017-12-18 06:41:06
        汽車檢測控制系統(tǒng)網(wǎng)絡(luò)通信技術(shù)分析
        電子測試(2017年23期)2017-04-04 05:07:12
        偷拍色图一区二区三区| 国产清品夜色一区二区三区不卡| 40分钟永久免费又黄又粗| 一区二区人妻乳中文字幕| 色欲欲www成人网站| 999国内精品永久免费视频| 成人在线免费视频亚洲| 日本91一区二区不卡| 欧美大胆性生话| 色偷偷av亚洲男人的天堂| 99福利影院| 亚洲天堂av在线免费观看| 射精专区一区二区朝鲜| 国产午夜无码视频免费网站| 日日噜噜夜夜狠狠久久av| 亚洲精品一区二区高清| 大肉大捧一进一出视频| 久久久国产精品樱花网站| 一区二区三区视频偷拍| 狠狠躁日日躁夜夜躁2022麻豆| 亚洲日本中文字幕天天更新| 91短视频在线观看免费| 精品日韩一区二区三区av| 免费无码又爽又刺激网站直播| 欧美日本国产va高清cabal| 无码一区二区三区久久精品| 在线观看国产一区亚洲bd| 国产一区二区三区探花| 午夜福利视频一区二区二区| 亚洲精品v欧洲精品v日韩精品| 国产v视频| 国产亚洲精品高清视频| 18禁止进入1000部高潮网站| 99精产国品一二三产品香蕉| 日韩我不卡| 亚洲熟妇中文字幕日产无码 | 自由成熟女性性毛茸茸应用特色| 97人妻精品一区二区三区| 免费无遮挡无码视频在线观看| 白色白色视频在线观看| 偷拍激情视频一区二区三区|