999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32的FreeModbus從站協議移植

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

胡雙喜

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

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

一、引言

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

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

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

二、FreeModbus簡介

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

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

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

三、FreeModbus協議的移植

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

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

當Modbus RTU傳輸的波特率高于19200 bps時,根據FreeModbus協議棧的要求,其超時時間應設定為1750微秒。STM32F446RE有不同類型的定時器十余個,可以選擇其中任意定時器,設定其定時時基為50微秒,該定時器的中斷時間為35倍時基,即1750微秒。

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

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

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

HAL_TIM_Base_Stop_IT(&Modbus;_TimHandle);

__HAL_TIM_SET_COUNTER(&Modbus;_TimHandle, 0x0000);

HAL_TIM_Base_Start_IT(&Modbus;_TimHandle);

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

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

HAL_TIM_Base_Stop_IT(&Modbus;_TimHandle);

2、定時器中斷的移植

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

3、串口驅動的移植

FreeModbus RTU的物理層是基于EIA/TiA-485、EIA/TIA-232規范的,因此其需要調用STM32F446RE的串口以完成數據的傳輸。

FreeModbus串口驅動的移植需修改協議棧portserial.c文件中的函數:

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

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

__HAL_UART_ENABLE_IT(&Modbus;_UartHandle, UART_IT_RXNE);

__HAL_UART_ENABLE_IT(&Modbus;_UartHandle, UART_IT_TXE);

此外,在設置接收使能后,還需要調用FreeModbus協議棧的prvvUARTTxReadyISR函數對接收到的數據進行處理;

4、串口中斷的移植

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

5、指令處理函數的編寫

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

四、系統測試

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

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

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

五、結論

Modbus協議是一種廣泛用于工業中的通訊協議。本文研究了一種基于STM32F446RE系統的Modbus協議實現方式,可以很好地應用于工業中,且有較短的開發周期,由較為廣闊的應用前景。

參考文獻:

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

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

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

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

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

主站蜘蛛池模板: 香蕉蕉亚亚洲aav综合| 爆乳熟妇一区二区三区| 日韩中文欧美| 狼友视频国产精品首页| 亚洲福利一区二区三区| 在线观看国产小视频| 91精品啪在线观看国产60岁| 国产丝袜91| 91成人精品视频| 欧美日韩动态图| 亚洲AⅤ综合在线欧美一区| 亚洲高清日韩heyzo| 精品国产免费观看一区| 国模极品一区二区三区| 免费一级毛片不卡在线播放| 国产性生大片免费观看性欧美| 丰满人妻中出白浆| 亚洲精品欧美日本中文字幕| 国产99久久亚洲综合精品西瓜tv| 精品亚洲国产成人AV| 欧美人与牲动交a欧美精品| 欧美国产视频| 国产亚洲男人的天堂在线观看| 免费在线色| 中文字幕在线日本| 亚洲国产在一区二区三区| 精品福利视频导航| 亚洲国产天堂久久综合226114| 国产精品永久免费嫩草研究院| 午夜三级在线| 亚洲无码久久久久| 伊人久久婷婷五月综合97色| 国产91无毒不卡在线观看| 99视频在线观看免费| www欧美在线观看| 四虎国产精品永久一区| 99热国产在线精品99| 国产综合色在线视频播放线视| 91福利免费| 午夜精品福利影院| 日本在线亚洲| 亚洲精品在线观看91| 国产一区二区三区夜色| 亚洲国产成人麻豆精品| 日韩色图区| 日韩在线观看网站| 国产成人调教在线视频| 国产精品午夜福利麻豆| 欧美一道本| 免费在线a视频| 免费又爽又刺激高潮网址| 99热这里只有精品在线播放| 狠狠躁天天躁夜夜躁婷婷| 狠狠色狠狠色综合久久第一次| 欧美一区日韩一区中文字幕页| 国产成人高清在线精品| 午夜三级在线| 91久久性奴调教国产免费| 久久精品人人做人人综合试看| av性天堂网| 亚洲人成网址| 国产成人免费观看在线视频| 欧美国产日本高清不卡| 久久99这里精品8国产| 中文字幕人妻av一区二区| 国产成人亚洲综合a∨婷婷| 久久99国产综合精品1| 高清码无在线看| 欧美亚洲一区二区三区导航| 成人欧美日韩| 无码中字出轨中文人妻中文中| 亚洲大尺度在线| 国产亚洲视频中文字幕视频| 国产白浆视频| 欧美人与牲动交a欧美精品| 色天堂无毒不卡| 天天综合亚洲| 久久中文字幕不卡一二区| 日本免费精品| 亚洲精品大秀视频| 99re热精品视频国产免费| 亚洲一区二区三区中文字幕5566|