Если есть какой-то функционал остановки опроса и известен конец, то да, можно считывать с Х байта, ловить конец, проверять весь ли пакет попал в чтение и либо уже дочитывать новый пакет, либо разбирать полученное.
з.ы. подозреваю, что на ПЛК так быстро такие вещи не сделать, проще читать 2х пакета и искать начало и конец., надо прикинуть будет ли в этом случае коллизии, но вроде не должны. Либо два пакета будут полными, либо будет 1 обрезок + полный + 2 обрезок.
Последний раз редактировалось melky; 22.06.2022 в 11:46.
Samel честно не знаю можно ли. например в RapidScada разработчик по моей просьбе дорабатывал код остановки опроса, можно посмотреть у него в исходниках. Но вот под силу такое ПЛК, который кроме опроса еще должен заниматься кучей других дел ? На ПК то это в потоке отдельном работает.... А то тоже была с подобным проблема, потому что в протоколе не было фиксированной длины данных, пакеты из-за этого могли быть разной длины и не поддавались рассчету.
Валенок если правильно понял, то что-то было связано с Виндовым кодом работы с портом (NET Framework), нужно задать размер обязательно, и если мы задаем размер заведомо больше, чтобы все влезло, а пакет короткий по факту, привет Timeout.... По этому остановка была софтовая...
Дальше не вдавался в подробности почему, разработчик помог решить задачу, и ладно...
Если ПЛК аналогично может читать и сразу проверять, то отлично, можно реализовать по аналогии.
Как-то мне в голову не придет, реализовывать протокол Allen Bradley на ПЛК, там застрелиться проще...
Sergey666 DF1 (тоже RS485), переменная длина пакета, два вида контрольных сумм, при этом отличается состав пакета для проверки контрольной суммы и многое другое.
Хотя если их ПЛК вполне справляется с задачей, то возможно и другой справится, но боюсь там это реализовано на уровне прошивки самого ПЛК а не программы.