Как отобразить адрес регистрации Modbus с помощью C / Stack Overflow

Я пытаюсь реализовать протокол ModBus RTU через периферию UART с помощью платы обнаружения STM32F4.

Я планирую реализовать функциональность Master и Slave с использованием Modbus RTU.

Вот мои вопросы

Как я могу переместить полученные данные в UART в MODBUS и передать данные со слоя MODBUS в UART, используя C / C ++. Пожалуйста, предоставьте фрагмент кода, который поможет мне понять ваше объяснение. (На данный момент я думаю о разработке некоторых 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];

-1

Решение

Я согласен с user694733. Вы должны идти шаг за шагом. Например, вы должны определить свои аппаратные спецификации (то есть, какой сигнал и какого типа они? Сколько?) Ответ на эти вопросы скажет вам, сколько регистров и какого типа будет значимым для вашего «устройства». После этого сопоставьте каждый сигнал с регистром, а затем попытайтесь выполнить операцию чтения / записи одного регистра с включенной (запрограммированной) проверкой CRC для катушек или аналогов. Настраивайте протокол до тех пор, пока он не получит то, что вы ожидали, и они охватывают остальную часть одного тип регистра (катушка, аналог). Затем разверните реализацию для нескольких операций чтения / записи регистров.
Кстати, размещение объявлений массива не показывает усилий в решении проблемы. Вы просите сообщество сделать всю тяжелую работу. Если вы хотите больше кода, чтобы начать с Google немного больше. Вот ссылка на библиотеку, которую вы можете изучить, чтобы увидеть, соответствует ли она вашему запросу: http://libmodbus.org/download/

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]