Оставаться на связи V6

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Сообщения
  • #26285
    manjey73
    Участник

    Добрый день, Михаил. Обнаружил ошибку при настройке «Оставаться на связи»
    Такое ощущение, что срабатывает какой-то кольцевой буфер и ответы складываются типа в стек и после ошибки чтения начинается смещение ответов.

    Скрин где отметил, подловил вот после запуска линии.

    Screen Log

    1233

    2022-11-28 09:26:29 Запуск линии связи [7] Danfoss
    
    2022-11-28 09:26:29 Соединение с 195.191.78.140:60080
    
    2022-11-28 09:26:29 Сеанс связи с устройством [10] Danfoss ECL
    Отправка (5): CE 30 00 00 FE
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE 30 00 00 FE
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE 76 00 00 B8
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE 78 00 00 B6
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE C9 00 00 07
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE CB 00 00 05
    Приём (5/5): 02 CE 00 00 CC
    OK
    Отправка (5): CE C2 00 00 0C
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 2C 00 E0
    OK
    Отправка (5): CE CA 00 00 04
    Приём (5/5): 02 CE 13 13 CC
    OK
    Получено за 4321 мс
    
    2022-11-28 09:27:00 Сеанс связи с устройством [10] Danfoss ECL
    Отправка (5): CE 30 00 00 FE
    Приём (5/5): 02 CE 13 00 DF
    OK
    Отправка (5): CE 76 00 00 B8
    Приём (5/5): 02 CE 00 2C E0
    OK
    Отправка (5): CE 78 00 00 B6
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE C9 00 00 07
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE CB 00 00 05
    Приём (5/5): 02 CE 00 00 CC
    OK
    Отправка (5): CE C2 00 00 0C
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 2C 00 E0
    OK
    Отправка (5): CE CA 00 00 04
    Приём (5/5): 02 CE 13 13 CC
    OK
    Получено за 1639 мс
    
    2022-11-28 09:27:09 Линия связи [7] Danfoss остановлена
    --------------------------------------------------------------------------------
    
    • Эта тема была изменена 1 год, 5 месяцев назад от manjey73.
    #26287
    manjey73
    Участник

    Проверить ответ на корректность не представляется возможным, у них у всех что он корректный и код CE в ответе.

    #26288
    manjey73
    Участник

    Собственно можно из кода драйвера в случае ошибки разорвать сессию режима «Оставаться на связи» и выполнить переподключение? Например это происходит при некорректной команде.

    #26297
    Mikhail
    Модератор

    Добрый день!

    Так и есть. Если часть ответа не считана, то она остаётся в буфере и будет считана при следующем чтении. После того, как сеанс связи окончится неудачей, соединение будет разорвано и переподключено, связь восстановится.

    можно из кода драйвера в случае ошибки разорвать сессию режима «Оставаться на связи» и выполнить переподключение?

    Закончить сеанс с ошибкой. Канал связи разорвёт соединение.

    #26298
    Mikhail
    Модератор

    Если соединение ненадёжное, то желательно переподключаться каждый раз.

    #26304
    manjey73
    Участник

    хм… Когда запросов несколько как-то не комильфо заканчивать весь сеанс с ошибкой.
    Учитывая, что на остальные запросы могут дальше идти корректные ответы.

    Вот как сделать, чтобы если был один из ответов некорректным, даже хоть раз, только в конце сессии разорвать подключение, чтобы в новой сессии началось все заново?

    #26312
    manjey73
    Участник
    Отправка (5): CE 30 00 00 FE
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE 76 00 00 B8
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE 76 00 00 B8
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE 78 00 00 B6
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE C9 00 00 07
    Приём (5/5): 02 CE 00 00 CC
    OK
    Отправка (5): CE CB 00 00 05
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE C2 00 00 0C
    Приём (5/5): 02 CE 2D 00 E1
    OK
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 13 13 CC
    OK
    Отправка (5): 80 73 00 00 F3
    Приём (5/5): 02 CE 13 00 DF
    OK
    

    Смещение происходит даже в рамках одной сессии при отключенной настройке «Оставаться на линии» — ну непорядок же ?
    Как это избежать то? откуда оно берет предыдущий ответ в буфере????

    #26313
    manjey73
    Участник

    Если я указываю Читать в буфер с 0 по Х каждый запрос ????

    #26317
    manjey73
    Участник

    Ну вот опять 🙁

    Отправка (5): CE 30 00 00 FE
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE 76 00 00 B8
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE 78 00 00 B6
    Приём (5/5): 02 CE 00 00 CC
    OK
    Отправка (5): CE C9 00 00 07
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE C9 00 00 07
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE CB 00 00 05
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE C2 00 00 0C
    Приём (5/5): 02 CE 2C 2C CC
    OK
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 13 13 CC
    OK
    Отправка (5): 80 5E 00 00 DE
    Приём (5/5): 02 CE 13 00 DF
    OK
    Получено за 6084 мс
    

    Теперь я понимаю, почему иногда значения в архивах скачут, Что-то надо делать с буфером приема, если у нас несколько запросов и нет необходимости прерывать всю сессию. Что-то тут не так в Датском королевстве.

    #26329
    manjey73
    Участник
    Отправка (5): CE C3 00 00 0D
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 13 00 DF
    OK
    Отправка (5): CE A8 00 00 66
    Приём (5/5): 02 CE 13 00 DF
    OK
    

    Вот аналогично, на запрос CE A8 прилетел откуда ни возьмись ответ от CE C3 который выше был с ошибкой один раз.
    Подскажите где в коде это живет и можно ли как-то исправить проблему?
    Или рубить сразу все, что ниже? так себе выход если ошибка произойдет в начале опроса

    #26333
    manjey73
    Участник
    Отправка (5): CE 30 00 00 FE
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE 32 00 00 FC
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE 32 00 00 FC
    Приём (0/5): 
    Ошибка связи
    Отправка (5): CE 76 00 00 B8
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE 78 00 00 B6
    Приём (5/5): 02 CE 60 00 AC
    OK
    Отправка (5): CE C9 00 00 07
    Приём (5/5): 02 CE FF D8 EB
    OK
    Отправка (5): CE CB 00 00 05
    Приём (5/5): 02 CE 00 00 CC
    OK
    Отправка (5): CE C2 00 00 0C
    Приём (5/5): 02 CE 09 00 C5
    OK
    Отправка (5): CE C3 00 00 0D
    Приём (5/5): 02 CE 2C 2C CC
    OK
    Отправка (5): CE A8 00 00 66
    Приём (5/5): 02 CE 12 13 CD
    OK
    

    Первый запрос ОК, второй два раза с ошибкой связи и далее 3-й и 4-й запросы почему-то данные первого запроса. Типа сколько ошибок связи в Сессии будет, столько раз откуда-то возьмется предыдущее значение и на столько же сместятся корректные ответы… видимо.

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Вы должны авторизироваться для ответа в этой теме.