Показано с 1 по 6 из 6

Тема: Перезапуск ПЛК 63 при использовании SysLibCom для RS485 с 1,5-2 стоп битами

  1. #1

    Question Перезапуск ПЛК 63 при использовании SysLibCom для RS485 с 1,5-2 стоп битами

    Имеется ПЛК 63, версия прошивки 2.12 12 10. (таргет 2.01, CoDeSys 2.3.9.41)
    Понадобилось реализовать обмен с весовым терминалом, работающим на фиксированной скорости 19200. Со следующим форматом 8 бит данных, контроля четности нет, 2 стоп бита. Ни скорость ни формат изменить в терминале нельзя. Протокол обмена нестандартный, поэтому понадобилось применение библиотеки SysLibCom. С ПЛК 63 уже давно не работал так что мог и подзабыть чего-то.

    Для тестов была собрана схема: весовой терминал по RS485 соединен с соответствующим портом ПЛК63. Плюс обмен терминала с ПЛК прослушивается с помощью преобразователя I7520 (RS485 в RS232) подключенного к компьютеру. Тестовое приложение приложено.

    Итак, что имеем:
    1) Терминал получает корректные запросы от ПЛК 63 и корректно отвечает на них причем при любых настройках количества стоп бит в ПЛК 63.
    2) ПЛК 63 вместо ответов видит некий мусор и вместо посланных 5-ти байт получает всего 1-2 байта.
    3) Если в ПЛК 63 поставить 1,5 или 2 стоп бита в настройках RS485, то контроллер после нескольких (4-8) обменов с терминалом зависает и перезагружается (пробовал менять минимальное время цикла и максимальное тоже - не помогло), а если поставить 1 стоп бит, то эта же программа работает без зависаний и перезагрузок!!!!!!!!!! Также программа будет работать без зависаний при любых настройках количества стоп битов, если терминал отключить, т.е. если контроллер не будет получать ответов.
    4)Эта же программа под ПЛК110 работает нормально, т.е. контроллер спокойно читает вес с весового терминала.

    Для имитации терминала можно в ответ на
    F001303061
    послать
    F041030044
    или вообще что нибудь послать это для воспроизведения перезагрузок с 1.5 и 2 стоп битами.
    Приведенные выше запрос и ответ содержат по 5 байт и их текст указан в hex формате.

    Возникают вопросы, то-ли в ПЛК 63 есть некие опции, которые нужно дополнительно настроить для применения SysLibCom, то-ли его RS485 интерфейс не может нормально работать на скорости 19200, особенно, если еще выставлено 1,5 - 2 стоп бита. То-ли в программе есть ошибки, которые не проявляются на ПЛК100.

    Подскажите в какую сторону копать?
    Вложения Вложения

  2. #2
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    после нескольких (4-8) обменов
    Достаточно немного, чтобы воспроизвести пошагово под отладчиком и выяснить, где именно в программе происходит сбой. А так в коде я преступлений не вижу.

  3. #3

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Достаточно немного, чтобы воспроизвести пошагово под отладчиком и выяснить, где именно в программе происходит сбой. А так в коде я преступлений не вижу.
    Пробовал. Сбой с перезапуском происходит на функции

    SysComRead(ComHandle, ADR(TmpIBuf), SIZEOF(TmpIBuf), 0)
    и при условии что
    Settings.byStopBits:=1 или Settings.byStopBits:=2,
    а при Settings.byStopBits:=0 перезагрузок нет. Перезагрузок также не будет при любом количестве стоп бит, если закомментировать все вызовы SysComRead(ComHandle, ADR(TmpIBuf), SIZEOF(TmpIBuf), 0) или отключить весовой терминал чтобы он не слал ответов.

    ps
    Да, я понимаю, что вот это
    WHILE SysComRead(ComHandle, ADR(TmpIBuf), SIZEOF(TmpIBuf), 0) <> 0 DO; (* Чистим входной буфер порта *)
    END_WHILE
    может потенциально приводить к перезапускам, но даже если этот участок убрать, а оставить только
    BytesRead:=SysComRead(ComHandle, ADR(TmpIBuf), SIZEOF(TmpIBuf), 0);
    то все равно при 1.5 и 2 стоп битах получим перезапуск.

    При этом при любом значении Settings.byStopBits ПЛК 63 получает ненормальный ответ (5 байт которые послал терминал), а какой-то мусор длиной 1-2 байта.
    Странно то, что этот же код работает на ПЛК 110.

    И еще при перезапусках где-то каждый 5-7 раз ПЛК 63 щелкает релейными выходами. Раньше у ПЛК 63 был такой фокус, но его вроде устранили отправкой в СЦ и перепрошивкой, но получается что не до конца.

    А что скажут представители Овен?
    Последний раз редактировалось kfvniiz; 13.02.2016 в 14:49.

  4. #4

    По умолчанию

    И опять тишина....
    Словно представители ОВЕН не посещают этот раздел. То-ли вопрос совсем глупый из разряда RTFM.

  5. #5

    По умолчанию

    А интересно бы, всё-таки услышать официальные комментарии.
    Вопрос-то серьёзный...

  6. #6

    По умолчанию

    Где-то на форуме было сообщение, что в библиотеке SysLibCom есть ошибки.

Похожие темы

  1. Перезапуск opc-сервера
    от Andrew_Stranger в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 09.06.2022, 15:32
  2. СП270. Групповые операции с битами PSB
    от petera в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 04.12.2014, 10:42
  3. Ответов: 50
    Последнее сообщение: 23.05.2014, 12:11
  4. Ответов: 34
    Последнее сообщение: 30.06.2011, 16:13
  5. перезапуск Opc сервера
    от svavan в разделе Помощь Разработчикам
    Ответов: 5
    Последнее сообщение: 16.01.2008, 12:08

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •