簡體   English   中英

如何使用 C/C++ 映射 Modbus 寄存器地址

[英]How to Map Modbus Register address using C / C++

我正在嘗試使用 STM32F4-Discovery Board 在 UART 外設上實現 ModBus RTU 協議。

我計划使用 Modbus RTU 實現主站和從站功能。

這是我的問題

我如何使用 C/C++ 將我在 UART 中接收到的數據移動到 MODBUS 並將數據從 MODBUS 層傳輸到 UART,請提供一些可以幫助我理解您的解釋的代碼片段。 (截至目前我正在考慮提出一些 API,請提出一些模式)

其次,我如何實現 Modbus 寄存器和線圈。 我的意思是如何定義 ModBus 應用手冊中指定的地址。 請用代碼片段向我解釋。 下面是我試圖實現的東西。

/*Global Array, Structure and Variable Declarations*/
/* So to access Discrete_Output_Coils[2345] 
   the valid address to include in the protocol would be
   so we have to access address 0x929 to read the 
   data.*/
const unsigned short int Discrete_Output_Coils[4999];
const unsigned short int Discrete_Input_Contacts[4999];
const unsigned short int Analog_Input_Register[4999];
const unsigned short int Anlog_output_Holding_Register[4999];

我同意用戶 694733。 你應該一步一步來。 例如,您應該定義您的硬件規格(即,它們是什么信號和類型?有多少?這些問題的答案將告訴您有多少寄存器和哪種類型對您的“設備”有意義。之后, 將每個信號映射到一個寄存器,然后嘗試執行單個寄存器讀/寫操作,其中包含針對線圈或模擬的 CRC 檢查(已編程)。調整協議直到達到您的預期,並且它們涵蓋了單個寄存器的其余部分寄存器類型(線圈,模擬)。然后,將實現擴展到多個寄存器讀/寫操作。順便說一句,放置數組聲明並不能顯示解決問題的努力。你要求社區做所有的努力。如果你想要更多的代碼從谷歌開始。這是一個圖書館的鏈接,你可以研究它是否符合你的要求: http : //libmodbus.org/download/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM