Первый раз, используя Modbus. Я пытаюсь отправить запрос на считывание значения температуры с моего ведомого устройства (идентификатор 0x01). Я посылаю команду через UART и просматриваю команду на моем анализаторе logi c. Вот мой код:
void temp_sensor()
{
//Transmit RTU to Inisitu probe to fetch Temperature and units
Flow_Control_SetHigh();
unsigned char TempRTU[]= {0x01, 0x03, 0x00, 0x2D, 0x00, 0x02, 0x54, 0x02};
int i;
int data_len = 8;
for (i = 0; i < data_len; i++) {
UART1_Write(TempRTU[i]);
}
}
0x01: идентификатор ведомого: 0x03: код функции: 0x002D: чтение регистра температуры: 0x0002: чтение 2 регистров: 0x5402: CR C Контрольная сумма:
Шестнадцатеричная строка является правильной при просмотре через UART на моем анализаторе, однако при настройке анализатора для просмотра Modbus строка даже близко не является правильной. Я прикрепил скриншот моего анализатора при просмотре сигнала Modbus.
Кто-нибудь имел опыт работы с микроконтроллерами Modbus и PI C?