![](/img/trans.png)
[英]How to Read Register Map From COM serial port using Modbus Protocol? (c++)
[英]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.