Снял и распарсил логи на шине MODBUS при параллельной работе с 3мя драйверами.
лог:
Здесь что интересно, это разовый цикл для 3х драйверов, и обмен всегда начинается с 3го (ID драйвера), но в самом начале ответ от 8го который приходит только при начале опроса 3го.
Собственно в этом глюк библы, что ответ предыдущий ответ слейва накладывается на следующий запрос от мастера, при этом дело не в таймингах, задержки разные выставлял.
Может глюк еще и в драйверах, что я изначально предполагал.
Последний раз редактировалось Millyvolt2; 10.04.2023 в 13:59.
Не лучше ли читать все holdihg регистры одним запросом, а потом выбрать нужные данные?
Задача с циклом в 1мс с копированием значений с аналогового модуля - зачем она?
Ну и некоторые значения в SMSD читаете 1 регистром, но в руководстве на SMSD они указаны как 32битные (0x5006, 0x500E).
Данный код тестовый, чтобы оценить тайминги, на которые можно рассчитывать используя Овен и Modbus.lib. Далее логика будет усложняться и считывание ABS и MOTOR_STATUS будет происходить в разное время.
Она будет наполняться
Вот тут я не знаю, это может вызвать ошибку, если считать 1 регистр а не 2? Там по факту 2 байта используется при делении шага, которое я использую.
Если смотреть лог шины, то ошибок не возникает после чтения 1 регистра holding.
Последний раз редактировалось Millyvolt2; 12.04.2023 в 13:02.