日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將FreeMODBUS協(xié)議棧移植到AT32 MCU

雅特力 AT32 MCU ? 2023-11-14 08:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Modbus是一種串行通信協(xié)議,是Modicon公司(現(xiàn)施耐德電氣)于1979年為使用可編程邏輯控制器PLC)通信而發(fā)表。如今Modbus已成為工業(yè)領域通信協(xié)議的業(yè)界標準,并且是工業(yè)電子設備之間常用的連接方式。

關于Modbus協(xié)議

Modbus協(xié)議使用的是主從的通訊技術,即由主設備主動查詢和操作從設備。一般將主控設備方所使用的協(xié)議稱為Modbus Master,從設備方所使用的協(xié)議稱為Modbus Slave。典型的主設備包括工控機和工業(yè)控制器等;典型的從設備如可編程邏輯控制器(PLC)等。MODBUS是OSI模型第7層上的應用層報文傳輸協(xié)議,它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信。Modbus通訊物理接口可以選用串口(包括RS232、RS485等),也可以選擇以太網口等。圖1. Modbus通信棧e3aafeaa-8282-11ee-9788-92fbcf53809c.png

MODBUS協(xié)議定義了一個與基礎通信層無關的簡單協(xié)議數(shù)據(jù)單元(PDU)。特定總線或網絡上的MODBUS協(xié)議映射能夠在應用數(shù)據(jù)單元(ADU)上引入一些附加域。圖2. 通用Modbus幀e3c5208c-8282-11ee-9788-92fbcf53809c.png

當服務器對客戶機響應時,它使用功能碼域來指示正常(無差錯)響應或者出現(xiàn)某種差錯(稱為異常響應)。需要管理超時,以便明確地等待可能不會出現(xiàn)的應答。圖3. Modbus事務處理(無差錯)e3d896d0-8282-11ee-9788-92fbcf53809c.png

圖4. Modbus事務處理(異常響應)e3e4b92e-8282-11ee-9788-92fbcf53809c.png

MODBUS使用一個‘big-Endian’表示地址和數(shù)據(jù)項。這意味著當發(fā)射多個字節(jié)時,首先發(fā)送最高有效位。例如,寄存器大小16-bit的值為0x1234,先發(fā)送的第一字節(jié)為0x12,然后為0x34。MODBUS的數(shù)據(jù)模型以一系列具有不同特征表格上的數(shù)據(jù)模型為基礎。四個基本表格為:表1. Modbus數(shù)據(jù)模型e3fed34a-8282-11ee-9788-92fbcf53809c.png

MODBUS有三類功能碼:公共功能碼、用戶定義功能碼、保留功能碼。公共功能碼是較好地被定義的功能碼,保證是唯一的、公開證明的,具有可用的一致性測試。圖5. 公共功能碼定義e416cd06-8282-11ee-9788-92fbcf53809c.pngModbus串行鏈路協(xié)議是一個主從協(xié)議。在同一時刻,只有一個主節(jié)點連接于總線,一個或多個子節(jié)點(最大編號為247)連接于同一個串行總線。Modbus通信總是由主節(jié)點發(fā)起。子節(jié)點在沒有收到來自主節(jié)點的請求時,從不會發(fā)送數(shù)據(jù)。子節(jié)點之間從不會互相通信。主節(jié)點在同一時刻只會發(fā)起一個Modbus事務處理。主節(jié)點以兩種模式對子節(jié)點發(fā)出Modbus請求:1、單播模式,主節(jié)點以特定地址訪問某個子節(jié)點,子節(jié)點接到并處理完請求后,子節(jié)點向主節(jié)點返回一個報文(一個'應答')。每個子節(jié)點必須有唯一的地址(1到247),這樣才能區(qū)別于其它節(jié)點被獨立的尋址。圖6. 單播模式e42b5d70-8282-11ee-9788-92fbcf53809c.png2、廣播模式,主節(jié)點向所有的子節(jié)點發(fā)送請求。對于主節(jié)點廣播的請求沒有應答返回。廣播請求一般用于寫命令。所有設備必須接受廣播模式的寫功能。地址0是專門用于表示廣播數(shù)據(jù)的。圖7. 廣播模式e448469c-8282-11ee-9788-92fbcf53809c.pngModbus有兩種串行傳輸模式被定義:RTU模式(默認)和ASCII模式。圖8. RTU和ASCII模式的位序列e45aa0bc-8282-11ee-9788-92fbcf53809c.pngModbus串行鏈路上所有設備的傳輸模式(和串行口參數(shù))必須相同。有關Modbus實現(xiàn)和特性的詳細信息,請訪問Modbus官網:https://modbus.org。

關于FreeModbus協(xié)議棧

FreeMODBUS是一個針對通用的Modbus協(xié)議棧在嵌入式系統(tǒng)中應用的實現(xiàn)。它提供了RTU/ASCII傳輸模式及TCP協(xié)議支持。FreeModbus遵循BSD許可證,這意味著用戶可以將FreeModbus應用于商業(yè)環(huán)境中。目前FreeMODBUS只免費提供了一個Modbus從機節(jié)點的協(xié)議棧。該協(xié)議棧使用ANSI C編寫,并且支持多個變量。本應用指南將介紹如何在AT32F435單片機上,通過FreeMODBUS協(xié)議棧實現(xiàn)Modbus從機節(jié)點的主要功能,并提供基于AT32F43x_StdPeriph_Lib和FreeMODBUS協(xié)議棧的源代碼。如結合AT32-Comm-EV Board和AT-START Board可以方便快速的搭建起基于RS485的Modbus從機節(jié)點。

關于Modbus Poll調試軟件

Modbus Poll是一個Modbus主機模擬器,支持Modbus RTU、ASCI、TCP/IP傳輸模式。它可以協(xié)助開發(fā)人員調試Modbus從設備,測試和模擬Modbus協(xié)議的通信。通過多文檔界面接口,可以同時監(jiān)控多個Modbus從機設備、數(shù)據(jù)域等。每個窗口可簡單地設定從設備ID、功能碼、地址、長度和輪詢間隔。支持Modbus數(shù)據(jù)模型的四個基本表格,支持Modbus的多個公共功能碼。本應用指南中將下載安裝Modbus Poll在PC機上作為Modbus主機,與AT-START Board(作為Modbus從機)通過USB轉RS485的模塊相連,實現(xiàn)一個完整的、可測試的Modbus通信網絡。

AT32硬件準備

硬件主要由AT32-Comm-EV Board和AT-START Board組成。本應用指南提供的demo使用到的外設資源有USARTTMR等,用戶可根據(jù)具體需要靈活配置和修改,使用RS232或RS485來實現(xiàn)Modbus物理層的連接。圖9. AT32 Modbus結構原理圖e46f08ea-8282-11ee-9788-92fbcf53809c.png

  • AT-START Board

當前提供例程基于AT-START-F435??商峁┗赗S232的Modbus通信。圖10. AT-START-F435 V1.0實驗板e4880098-8282-11ee-9788-92fbcf53809c.png

  • AT32-Comm-EV Board

可提供例程基于RS485的Modbus通信支持。圖11. AT-START結合AT32-Comm-EV使用e4b3efd2-8282-11ee-9788-92fbcf53809c.png

將FreeModbus移植到AT32上

基礎工程準備

下載最新版本BSP&PACK文件,按照其應用指南進行安裝及配置,本文檔及例程均基于AT32F4xx_StdPeriph_Lib_V2.x.x的BSP&PACK文件進行開發(fā)??山栌胊t_start_f435文件夾下的temple工程來進行修改,更改文件夾及工程名為freemodbus,并準備在該工程內添加FreeMODBUS源碼。

工程內添加FreeModbus源碼

用戶需前往FreeMODBUS官網或Github上下載最新版源碼。源碼包解壓后,內有如下文件。本文及所有移植例程均基于freemodbus-v1.6版本進行移植。圖12. FreeMODBUS源碼文件e4f46ada-8282-11ee-9788-92fbcf53809c.png將源碼包解壓后,復制modbus文件夾和demo\BARE\port文件夾到前面的基礎工程freemodbus目錄下面,將port文件夾改名為modbus_port。如下圖所示。圖13. freemodbus工程目錄e5195782-8282-11ee-9788-92fbcf53809c.png打開工程文件,并按以下2個步驟添加到工程文件內??蓞⒖糀T提供的例程文件進行添加。1、添加modbus和modbus_port內的所有.c文件(與tcp相關的除外)到工程項目內。圖14. freemodbus工程的項目e539baa4-8282-11ee-9788-92fbcf53809c.png2、需將添加的.c文件所對應的.h文件的路徑添加到工程的文件夾設置內。圖15. freemodbus工程的文件夾設置e54eb45e-8282-11ee-9788-92fbcf53809c.png

工程代碼的修改

1、修改“port.h”文件。在該文件中添加包含關于AT32 MCU的“at32f435_437.h”頭文件。補全用于互斥操作的開關中斷宏定義。屏蔽掉關于TRUE、FALSE的宏定義,因在AT BSP的頭文件中已有定義,避免編譯出錯。2、修改“portserial.c”和“porttimer.c”文件。在該文件中添加關于USART和TMR外設的底層驅動部分代碼。用戶可根據(jù)自己的硬件環(huán)境來自行修改,所以這里不進行具體說明,也可參考AT所提供的例程文件。3、需特別注意的是,因USART寄存器DT的值里包含數(shù)據(jù)位和校驗位,而FreeMODBUS源碼里在讀取USART接收的數(shù)據(jù)后,會把所有值都當作數(shù)據(jù)位來處理而出錯,這可能是和其他廠家的MCU有差異,所以這里需在“mbascii.c”文件中去修改源碼。具體可參考AT所提供的例程文件。4、在工程中新建并添加“mbtask.c/.h”文件。該文件用于創(chuàng)建Modbus的通信任務(作從機)來調用FreeMODBUS協(xié)議棧的API層,并建立Modbus的數(shù)據(jù)模型(4個基本表格)用于與ModbusPoll(作主機)進行模擬通信測試?!癿btask.c/.h”文件中實現(xiàn)的調用管理:

  • 保持寄存器的讀/寫
  • 輸入寄存器的讀取
  • 線圈的讀/寫
  • 離散量輸入的讀取

“mbtask.h”文件中定義的Modbus數(shù)據(jù)模型和建立通信所需的參數(shù):表2. Modbus的配置參數(shù)e5669862-8282-11ee-9788-92fbcf53809c.png

設備功能的實現(xiàn)

1、在“mbtask.c”文件中編寫void modbus_task(void)函數(shù)去調用協(xié)議棧的API層,來實現(xiàn)modbus從機任務的功能。e57dc8e8-8282-11ee-9788-92fbcf53809c.png2、在“main.c”文件中,由int main(void) 主函數(shù)去調用modbus_task()任務函數(shù)即可。e59240de-8282-11ee-9788-92fbcf53809c.png

設備的測試

至此,官方例程移植完畢,編譯并下載,開打與AT-Link相連的串口,可看到如下打印信息。圖16. 串口打印信息e5b44d1e-8282-11ee-9788-92fbcf53809c.png從打印信息可以看到,從設備已經正常的運行起來。這時我們需要將此設備與上位機相連接,再打開Modbus Poll軟件,模擬主設備來進行單播通信,即發(fā)送請求并接收應答。1. 首先對Modbus Poll軟件進行連接設置,選擇與從設備相同的傳輸模式(RTU Mode),并配置相應串口的參數(shù),也須與從設備相同。圖17. Modbus Poll連接設置e5c67b6a-8282-11ee-9788-92fbcf53809c.png2.?再對Modbus Poll軟件進行讀寫命令的定義,下面僅以功能碼03(讀保持寄存器)為例來講解,用戶可自行用同樣的方式測試其他功能碼。圖18. Modbus Poll讀/寫定義e5e6a0c0-8282-11ee-9788-92fbcf53809c.png3.?在Modbus Poll軟件的文檔界面中,可以看到已成功讀回保持寄存器的值,并與從設備的程序中初始化保持寄存器時的值一致,測試通過。圖19. Modbus Poll文檔界面e60093cc-8282-11ee-9788-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    19160

    瀏覽量

    404830
  • MODBUS
    +關注

    關注

    28

    文章

    2530

    瀏覽量

    83838
  • AT32
    +關注

    關注

    1

    文章

    121

    瀏覽量

    3234
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TinyUSB加持!雅特力AT32 MCU助力嵌入式系統(tǒng)實現(xiàn)高效USB通信

    效的USB開發(fā)體驗。TinyUSB作為一款輕量級、高度可移植的USB協(xié)議,以其簡潔高效的架構和豐富的功能深受開發(fā)者青睞。它支持USB2.0全速/高速模式,涵蓋多種
    的頭像 發(fā)表于 04-29 11:35 ?303次閱讀
    TinyUSB加持!雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>助力嵌入式系統(tǒng)實現(xiàn)高效USB通信

    Modbus協(xié)議轉換器是什么?有什么推薦?

    。 一、Modbus協(xié)議轉換器的技術本質 Modbus協(xié)議轉換器是一種硬件或軟件工具,其核心功能是Modbus協(xié)議(RTU/TCP)與其他工業(yè)協(xié)議
    的頭像 發(fā)表于 03-27 15:31 ?464次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉換器是什么?有什么推薦?

    雅特力AT32 MCU推動低空經濟發(fā)展

    雅特力AT32系列MCU憑借288MHz主頻與高精度外設,為無人機飛控、電調及云臺提供核心算力支持,實現(xiàn)厘米級定位與高效動力控制,顯著提升在電力巡檢、農林植保等低空經濟場景下的作業(yè)精度與可靠性,助力產業(yè)智能化升級。
    的頭像 發(fā)表于 12-04 09:53 ?1931次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>推動低空經濟發(fā)展

    請問如何將蜂鳥E203移植Xilinx NEXYS A7 FPGA 開發(fā)板上?

    如何將蜂鳥E203移植Xilinx NEXYS A7 FPGA 開發(fā)板上?有參考教程嗎?小白求教 主要是引腳分配,我這邊有移植Xilin
    發(fā)表于 11-11 07:44

    Modbus協(xié)議的深度剖析

    Modbus協(xié)議作為工業(yè)自動化領域最廣泛應用的通信協(xié)議之一,其簡潔高效的特性使其在工業(yè)控制系統(tǒng)中占據(jù)重要地位。本文將從協(xié)議的發(fā)展歷程、技術架構、通信模式、安全機制以及未來演進等多個維度進行全面剖析
    的頭像 發(fā)表于 11-07 07:43 ?1277次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>的深度剖析

    Modbus協(xié)議轉HTTP協(xié)議,實現(xiàn)JSON格式對接MES等系統(tǒng)平臺

    配置運行。 智能網關IGT-DSER集成了多種PLC的原廠協(xié)議,比如西門子S7、三菱MC、歐姆龍FINS,羅克韋爾CIP等,也支持通用的Modbus協(xié)議、OPCUA協(xié)議。本文是Modbus協(xié)議
    發(fā)表于 10-27 10:33

    如何移植rt-thread野火imx6ull開發(fā)板上?

    求助如何將rt-thread移植野火imx6ull(coretex-A7)開發(fā)板上,官方的bsp中沒有imx6ull
    發(fā)表于 09-29 06:25

    如何將 FreeMODBUS 從屬 RTU 模式移植 M032 系列微控制器?

    如何將 FreeMODBUS 從屬 RTU 模式移植 M032 系列微控制器
    發(fā)表于 08-19 07:20

    請問如何將ISP寫入Nuvoton 8051 MCU系列?

    如何將ISP寫入Nuvoton 8051 MCU系列?
    發(fā)表于 08-18 07:34

    AT32 MCU如何使用IAP

    已有的通信協(xié)議來實現(xiàn)這一過程。上位機軟件IAP_Programmer.exe就是基于這樣的協(xié)議來發(fā)送更新數(shù)據(jù)MCU的 。 進行IAP升級流程 運行bootloader程序 :
    發(fā)表于 08-08 17:13

    【RA-Eco-RA6M4開發(fā)板評測】——6.原創(chuàng)從01完整實現(xiàn)modbus master協(xié)議

    或者8軸機器人領域,很多都是使用modbus來進行通信的。自從 1979 年出現(xiàn)工業(yè)串行鏈路的事實標準以來,MODBUS 使成千上萬的自動化設備能夠通信。 網上有很多開源的modbus協(xié)議,比較
    發(fā)表于 07-25 20:22

    Modbus協(xié)議轉換:讓工業(yè)設備輕松“對話”

    在工業(yè)自動化中,Modbus協(xié)議是設備通信的關鍵。本文聚焦于Modbus協(xié)議的串口與網口轉換需求,并通過ZLG致遠電子PXB-6030D的案例,展示如何輕松實現(xiàn)協(xié)議轉換。
    的頭像 發(fā)表于 07-15 11:47 ?878次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉換:讓工業(yè)設備輕松“對話”

    AT32 IAP using the USART

    對于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應用程序中編寫自己的bootloader程序,用于最終產品的固件更新。此功能稱為應用程序內編程(IAP)。 本應用筆記的目的
    發(fā)表于 07-11 10:51

    大彩講堂:VisualTFT軟件modbus協(xié)議下的告警應用

    VisualTFT軟件modbus協(xié)議下的告警應用
    的頭像 發(fā)表于 07-01 17:40 ?1409次閱讀
    大彩講堂:VisualTFT軟件<b class='flag-5'>modbus協(xié)議</b>下的告警應用

    如何將MCU從CYPM1322-97BZXIT更改為CYPM1311-48LQX?

    如何將MCU從CYPM1322-97BZXIT更改為CYPM1311-48LQX
    發(fā)表于 05-26 07:12
    隆回县| 益阳市| 仁怀市| 利津县| 甘洛县| 东阳市| 平湖市| 雷波县| 子洲县| 乐安县| 竹山县| 乌鲁木齐市| 翼城县| 涪陵区| 志丹县| 鄂伦春自治旗| 元江| 晋州市| 曲沃县| 保德县| 巴林左旗| 丰城市| 仙桃市| 怀化市| 安吉县| 临江市| 定远县| 黄浦区| 延吉市| 苗栗县| 南召县| 江山市| 裕民县| 北宁市| 麻江县| 台北县| 八宿县| 城口县| 永城市| 正蓝旗| 游戏|