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

        ?

        基于STM32的FreeModbus從站協(xié)議移植

        2018-01-02 10:31:42胡雙喜
        科學與財富 2018年31期

        胡雙喜

        摘 要:FreeModbus是一種Modbus協(xié)議的實現(xiàn)方式,能夠方便的移植到嵌入式系統(tǒng)中。本文闡述了FreeModbus的移植方式,并將其與STM32F446RE控制器相結合。經(jīng)驗證表明,其能夠完成基于Modbus RTU傳輸方式的通訊任務,具有穩(wěn)定可靠的特點,可以應用于工業(yè)場合。

        關鍵詞:Modbus;STM32;實時通信

        一、引言

        隨著工業(yè)IT技術的飛速發(fā)展以及工業(yè)控制系統(tǒng)復雜程度的提高,工業(yè)通訊網(wǎng)絡的應用日益受到重視,通訊協(xié)議的標準化對工業(yè)控制系統(tǒng)的穩(wěn)定性產(chǎn)生了極大的影響。Modbus是一種廣泛應用的工業(yè)控制網(wǎng)絡,其具有穩(wěn)定性高、易于部署和維護等優(yōu)點,適合中小規(guī)模的數(shù)據(jù)傳輸。FreeModbus是一種針對嵌入式系統(tǒng)的Modbus協(xié)議棧,支持RTU、ASCII以及TCP傳輸模式,并遵守BSD許可,允許用戶將其應用于商業(yè)環(huán)境。

        STM32是目前廣泛應用的32位嵌入式微處理器之一,具有體積小、功耗低、性能高等特點,非常適合于系統(tǒng)的實時控制。其中STM32F4系列是意法半導體推出的以Cortex-M4為內(nèi)核的高性能控制器,能夠進行復雜的計算與控制。

        本文以STM32F446RE為平臺,研究了FreeModbus協(xié)議的移植方法,使STM32F446RE能夠作為從站實現(xiàn)Modbus的通信,并支持Modbus RTU及ASCII傳輸模式,為未來工業(yè)控制的網(wǎng)絡化和信息化奠定了基礎。

        二、FreeModbus簡介

        Modbus是一種廣泛應用于工業(yè)控制中的串行通訊協(xié)議,其實現(xiàn)了一個單主站的主從網(wǎng)絡結構。Modbus支持的數(shù)據(jù)類型包括浮點數(shù)、32為整型等多種數(shù)據(jù)類型。目前,西門子S7 200系列等多個系列的PLC、威綸通等不同廠家、型號的觸摸屏以及組態(tài)王等軟件都支持Modbus協(xié)議。

        FreeModbus是專門針對嵌入式系統(tǒng)設計的開源協(xié)議棧,其實現(xiàn)了Modbus 1.1a版的應用層協(xié)議,支持RTU與ASCII兩種傳輸模式,在FreeModbus 0.7版后,又添加了Modbus TCP傳輸模式的支持。FreeModbus與IOS/OSI通訊模型的關系如表1所示:

        目前,F(xiàn)reeModbus支持大部分Modbus的指令,包括讀輸入寄存器(0x04)、讀保持寄存器(0x03)、寫單個寄存器(0x06)、寫多個寄存器(0x10)、讀寫多個寄存器(0x17)、讀線圈(0x01)、寫單個線圈(0x05)、寫多個線圈(0x0f)等多條指令。

        三、FreeModbus協(xié)議的移植

        在進行移植前,需要將FreeModbus的協(xié)議棧代碼導入到當前工程中,相應的協(xié)議棧源碼可以在FreeModbus官網(wǎng)上下載。

        1、定時器計時功能的移植

        當Modbus RTU傳輸?shù)牟ㄌ芈矢哂?9200 bps時,根據(jù)FreeModbus協(xié)議棧的要求,其超時時間應設定為1750微秒。STM32F446RE有不同類型的定時器十余個,可以選擇其中任意定時器,設定其定時時基為50微秒,該定時器的中斷時間為35倍時基,即1750微秒。

        此外,還需在協(xié)議棧的porttimer.c文件中修改相應的函數(shù),包括:

        (1)時鐘初始化函數(shù)xMBPortTimersInit:通常,時鐘初始化會放到主函數(shù)中進行,因此xMBPortTimersInit函數(shù)僅修改返回值為True即可;

        (2)定時器啟動函數(shù)vMBPortTimersEnable:此處需要編寫定時器啟動函數(shù),例如當使用意法半導體提供的HAL庫時,vMBPortTimersEnable函數(shù)需編寫以下代碼:

        HAL_TIM_Base_Stop_IT(&Modbus;_TimHandle);

        __HAL_TIM_SET_COUNTER(&Modbus;_TimHandle, 0x0000);

        HAL_TIM_Base_Start_IT(&Modbus;_TimHandle);

        上述代碼首先停止定時器,并初始化定時器的計數(shù)單元以保證計時準確,完成上述步驟后啟動定時器開始定時;

        (3)定時器停止函數(shù)vMBPortTimersDisable:此函數(shù)需要編寫定時器停止函數(shù),如使用HAL庫,則在函數(shù)中填寫如下代碼即可:

        HAL_TIM_Base_Stop_IT(&Modbus;_TimHandle);

        2、定時器中斷的移植

        FreeModbus定時器中斷調(diào)用函數(shù)為prvvTIMERExpiredISR( )。通常使用意法半導體提供的STM32Cube MX進行系統(tǒng)構建時,其會自動將全部中斷函數(shù)的實現(xiàn)放在stm32f4xx_it.c文件中,因此對FreeModbus定時器中斷的調(diào)用函數(shù)需要添加在stm32f4xx_it.c文件中相應位置即可。

        3、串口驅(qū)動的移植

        FreeModbus RTU的物理層是基于EIA/TiA-485、EIA/TIA-232規(guī)范的,因此其需要調(diào)用STM32F446RE的串口以完成數(shù)據(jù)的傳輸。

        FreeModbus串口驅(qū)動的移植需修改協(xié)議棧portserial.c文件中的函數(shù):

        (1)串口初始化函數(shù)xMBPortSerialInit:通常串口的初始化會在主函數(shù)中完成,此處只要將返回值修改為True即可;

        (2)串口使能函數(shù)vMBPortSerialEnable:此函數(shù)用于實現(xiàn)FreeModbus RTU串口通訊的使能,包括接收使能與發(fā)送使能。若使用意法半導體提供的HAL庫,則串口的接收使能與發(fā)送使能指令為:

        __HAL_UART_ENABLE_IT(&Modbus;_UartHandle, UART_IT_RXNE);

        __HAL_UART_ENABLE_IT(&Modbus;_UartHandle, UART_IT_TXE);

        此外,在設置接收使能后,還需要調(diào)用FreeModbus協(xié)議棧的prvvUARTTxReadyISR函數(shù)對接收到的數(shù)據(jù)進行處理;

        4、串口中斷的移植

        與定時器中斷相似,在使用STM32CubeMX工具的時候,相應中斷的實現(xiàn)統(tǒng)一存放在stm32f4xx_it.c文件中,因此僅需要將FreeModbus協(xié)議棧的接收中斷處理函數(shù)prvvUARTRxISR以及發(fā)送完成中斷處理函數(shù)prvvUART TxReadyISR復制到相應由系統(tǒng)生成的串口中斷處理函數(shù)中即可。

        5、指令處理函數(shù)的編寫

        上述步驟完成了FreeModubs協(xié)議的移植,在主函數(shù)中可以編寫相應的指令處理函數(shù),例如讀線圈指令、寫寄存器指令的處理函數(shù),即可實現(xiàn)Modubs RTU協(xié)議。

        四、系統(tǒng)測試

        完成FreeModbus協(xié)議棧的移植后,可以選擇Modbus Poll軟件進行協(xié)議棧的測試。Modbus Poll軟件是Modbus協(xié)議棧的主站仿真軟件,能夠同時監(jiān)視多個從站設備的數(shù)據(jù),其支持Modbus RTU、ASCII以及TCP/IP傳輸模式。

        在使用Modbus RTU進行傳輸時,需要首先設定系統(tǒng)的串口,如圖1所示:

        完成設置后點擊OK,并進行從站連接,Modbus Poll即可顯示STM32F446RE中各寄存器的數(shù)據(jù)。

        五、結論

        Modbus協(xié)議是一種廣泛用于工業(yè)中的通訊協(xié)議。本文研究了一種基于STM32F446RE系統(tǒng)的Modbus協(xié)議實現(xiàn)方式,可以很好地應用于工業(yè)中,且有較短的開發(fā)周期,由較為廣闊的應用前景。

        參考文獻:

        [1]趙艷明、曾培峰. 一種基于STM32的Modbus-RS485通信方法. 智能計算機與應用,2018,8(03):50-53+56

        [2]張永偉、康興無. 基于STM32和Modbus的串口服務器系統(tǒng). 電子設計工程,2017,25(16):108-111+116

        [3]劉禹辰、張仁杰、劉虎等. STM32與上位機Modbus協(xié)議的通信方法. 電子科技,2015,28(10):27-30

        [4]陳科、蔣軍. 基于STM32的MODBUS協(xié)議的實現(xiàn)與應用. 視聽,2013,4:9-10

        [5]賀洪江、程琳. 基于STM32和Modbus的電參數(shù)采集系統(tǒng). 自動化與儀表,2014,29(06):26-29

        久久免费观看国产精品| 中文字幕日韩三级片| 国产在线一区二区三区av| 日本欧美在线播放| 亚洲视频在线视频在线视频| 国产av一区二区三区在线播放| 日本精品无码一区二区三区久久久| 粉嫩少妇内射浓精videos| 日韩精品中文字幕 一区| 亚洲中文字幕日韩综合| 狠狠躁夜夜躁人人爽天天古典| 国产喷水在线观看| 亚洲国产成人精品久久成人| 人妻少妇中文字幕在线观看| av午夜久久蜜桃传媒软件| 欧美日韩区1区2区3区| 国产午夜视频高清在线观看| 久久久精品中文字幕麻豆发布| 国产亚洲av综合人人澡精品| 亚洲av日韩av一卡二卡| 国产精品高清国产三级国产av | 男的和女的打扑克的视频| 99精品久久99久久久久| 7777奇米四色成人眼影| 最新欧美一级视频| 少妇又骚又多水的视频| 成人aaa片一区国产精品| 天天狠狠综合精品视频一二三区| 午夜亚洲精品视频网站| 中文字幕 亚洲精品 第1页| 老司机在线精品视频网站| 久久er这里都是精品23| 日本少妇一区二区三区四区| 国产精品美女久久久久久| 亚洲AV成人无码国产一区二区| 91羞射短视频在线观看| 国产综合色在线视频区| 欧美丰满熟妇bbbbbb百度| 国产精品久久中文字幕亚洲| 欧美激情乱人伦| 狠狠躁夜夜躁人人爽天天天天97|