极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E1294】FreeModbus Slave-Master-RTT-STM32

2021-09-24 14:31:23      索煒達電子      720     

項目編號:E1294

文件大?。?M

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述:

FreeModbus V1.6 主機使用說明

簡述

FreeModbus是一款開源的Modbus協(xié)議棧,但是只有從機開源,主機源碼是需要收費的。同時網(wǎng)上也沒有發(fā)現(xiàn)比較好的開源的Modbus主機協(xié)議棧,所以才開發(fā)這款支持主機模式的FreeModbus協(xié)議棧。本版FreeModbus版本號更改為V1.6,特性如下:

-新增加的主機源碼與原有從機的風格及接口保持一致;

-支持主機與從機在同一協(xié)議棧運行;

-支持實時操作系統(tǒng)及裸機移植;

-為應用提供多種請求模式,用戶可以選擇阻塞還是非阻塞模式,自定義超時時間等,方便應用層靈活調(diào)用;

-支持所有常用的Modbus方法。

【E1294】FreeModbus Slave-Master-RTT-STM32

注:所有帶_m后綴的文件為主機模式下必須使用的文件,如使用從機模式則無需這些文件。


移植

對于協(xié)議棧的移植主要包括兩個方面,硬件及軟件。用戶需要根據(jù)自己的需求進行自行選擇。

注:以下所有說明都主要針對Modbus主機模式進行介紹。


1、軟件

軟件方面支持基于裸機及實時操作系統(tǒng)的移植;支持單個主機與單個從機同時獨立運行。另外用戶也可以修改協(xié)議棧的事件回調(diào)接口,使主機請求的接口采用阻塞及非阻塞模式;主機資源等待方面,用戶也可以設(shè)置等待超時時間等等,諸多功能將會一一介紹。


1.1、操作系統(tǒng)與裸機

對于操作系統(tǒng)與裸機目前協(xié)議棧都是支持的,但個人更加推薦采用實時操作系統(tǒng),因為這樣會使得接口調(diào)用及接口移植變得更加簡單。目前移植完成的操作系統(tǒng)包括國人的 RT-Thread (詳見項目源碼) 、 UCOS 及 FreeRTOS。 操作系統(tǒng)與裸機移植的過程中涉及的文件為FreeModbus\port\portevent_m.c 該文件主要有以下需要用戶移植的接口文件結(jié)構(gòu)

【E1294】FreeModbus Slave-Master-RTT-STM32

在 基于操作系統(tǒng)移植 時,主要用到操作系統(tǒng)線程同步方面的技術(shù),Modbus 協(xié)議棧自身需要使用操作系統(tǒng)自帶的事件機制來實現(xiàn)事件的發(fā)送通知與等待獲取,同時用戶請求 Modbus 功能的線程與 Modbus 協(xié)議棧自身線程(Modbus Poll 線程)需要通過事件機制實現(xiàn)兩個線程的同步;主機協(xié)議棧還需要一個主機資源占用的信號量,初始化默認為1,采用信號量保證了多線程同時發(fā)送主機請求時,只有一個線程可以使用主機。


在 基于裸機移植 時,需要通過軟件模擬方式實現(xiàn)事件通知機制,事件等待及資源等待都得采用用戶自定義延時及標志變量來實現(xiàn),實現(xiàn)起來比操作系統(tǒng)模式下的線程同步機制要復雜很多。


1.2、數(shù)據(jù)緩沖區(qū)

數(shù)據(jù)緩沖區(qū)定義的位置位于 FreeModbus\port\user_mb_app_m.c 文件頂部,共計 4種 數(shù)據(jù)類型。 FreeModbus從機默認使用 一維數(shù)組 作為緩存區(qū)數(shù)據(jù)結(jié)構(gòu),主機可以存儲所有網(wǎng)內(nèi)從機的數(shù)據(jù),所以主機采用 二維數(shù)組 對所有從機節(jié)點數(shù)據(jù)進行存儲。二維數(shù)組的列號代表寄存器、線圈及離散量地址,行號代表從機節(jié)點ID,但需要做減一處理,例如usMRegHoldBuf[2][1]代表從機ID為 3,保持寄存器地址為 1 的從機數(shù)據(jù)。


1.3、Modbus數(shù)據(jù)處理回調(diào)接口

Modbus 一共有4種不同的數(shù)據(jù)類型,所有的 Modbus 功能都圍繞這些數(shù)據(jù)類型進行操作。由于不同的用戶數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)可能有所不同,那么對應的 Modbus 數(shù)據(jù)處理方式也就存在差異,所以用戶需要把每種數(shù)據(jù)類型對應的操作,按照自己的數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)進行定制實現(xiàn)。 所有的 Modbus 數(shù)據(jù)處理回調(diào)接口如下:

【E1294】FreeModbus Slave-Master-RTT-STM32

對于數(shù)組形式的數(shù)據(jù)緩沖區(qū)結(jié)構(gòu),源碼中已經(jīng)做好了移植,直接使用即可。也可以使用 EasyDataManager 庫,采用鏈表作為緩沖區(qū),該庫還支持事件驅(qū)動,做到數(shù)據(jù)變化自動通知應用層。


2、硬件

移植 FreeModbus 協(xié)議棧主機部分時,在硬件方面需要修改串口及定時器配置,文件位于port文件下,用戶需要根據(jù)自己的CPU進行移植修改。


注:協(xié)議棧默認自帶STM32F103X移植文件,用戶可以參考移植


這里提一下基于操作系統(tǒng)設(shè)備驅(qū)動框架的移植,后期協(xié)議棧會增加對 RT-Thread 自帶設(shè)備驅(qū)動框架的移植,只要是 RT-Thread 的 BSP 支持的 MCU,用戶都無需考慮底層的移植過程,減低移植成本。


2.1、串口

涉及到串口的移植文件位于FreeModbus\port\portserial_m.c,在這個文件中用戶需要對以下接口方法進行修改

文件列表:

【E1294】FreeModbus Slave-Master-RTT-STM32

TAGFreeModbus
  • 6 次
  • 30 分