Комментарии 8
Общий опрос у вас реализован неверно. Причина передачи измеряемых величин при общем опросе должна быть GI или GI+inro. Пакет завершения активации общего опроса должен идти как пройдут все пакеты внутри общего опроса. (7.4.5 Выдержки из функции «Общий опрос. Опрос КП»б таблица 17 и далее)
У вас же пустой цикл общего опроса, после которого пошли данные.
Скоромное ИМХО!
У вас же пустой цикл общего опроса, после которого пошли данные.
Скоромное ИМХО!
Внимательно посмотрел ваши логи wireshark. Вы неверно формируете номера последовательности пакетов. Любая система закроет соединение с вашим устройством, так как неверно формируется последовательности номеров принятых и отправленных пакетов.
- Нумерация должна быть сквозной.
- Если вы получили от управляющего устройства 1 пакет, вы должны во всех следующих своих пакетах писать в этом поле 1. А у вас 0 (хотя 1 пакет вы уже получили), 1, затем опять 0.
Может стоило стандарт почитать не только в части как формировать пакеты, а также то что в них писать? Сейчас у вас там откровенно мусор.
Спасибо за комментарии, да ваши замечания верны, буду исправлять.
P.S. ну как не странно Microcada работает и не рвет =)
P.S. ну как не странно Microcada работает и не рвет =)
Она не рвёт, потому что вы первой посылкой с номером 1 удаляете этот пакет из буфера микроскады. Она считает что он подтверждён. Но по стандарту вы и дальше должны слать единицу.
Да, ещё, отдельный пакет типа S не требуется. Подтверждать полученные пакеты можно I пакетом. S используется только в том случае, если пакет надо подтвердить, но пока нет ничего что можно упаковать в I пакет.
Arduino вернулся из гиктаймса обратно на Хабр?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как я писал библиотеку под МЭК 870-5-104 на Arduino при помощи Wireshark