Показано с 1 по 10 из 43

Тема: Обрывы связи по RS-485 при отключении одного устройства от сети

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    А как правильно перезапустить RS485 (Modbus Slave) в СПК107 на языке ST ?
    Цикл программы t#20ms
    Если контроллер STM32F745 сразу по включению питания отправляет пакет на СПК107
    то у СПК зависает порт, а если подождать 5 сек, то после загрузки СПК (75 сек)
    он отвечает.
    Пробовал в CODESYS 3.5.14.30 и в CODESYS 3.5.16.30
    в CODESYS 3.5.11 такого глюка не было, но обратно перепрошить СПК не получится ?
    Нужно написать, что-то типа:

    IF (Modbus_Serial_Device.xInternalError) THEN
    Modbus_Serial_Device.xEnable := FALSE;
    ELSE Modbus_Serial_Device.xEnable := TRUE;
    END_IF;

    или нужна задержка на xEnable FALSE/TRUE ?

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,643

    По умолчанию

    Цитата Сообщение от jujin_un Посмотреть сообщение
    А как правильно перезапустить RS485 (Modbus Slave) в СПК107 на языке ST ?
    Цикл программы t#20ms
    Если контроллер STM32F745 сразу по включению питания отправляет пакет на СПК107
    то у СПК зависает порт, а если подождать 5 сек, то после загрузки СПК (75 сек)
    он отвечает.
    Пробовал в CODESYS 3.5.14.30 и в CODESYS 3.5.16.30
    в CODESYS 3.5.11 такого глюка не было, но обратно перепрошить СПК не получится ?
    Нужно написать, что-то типа:

    IF (Modbus_Serial_Device.xInternalError) THEN
    Modbus_Serial_Device.xEnable := FALSE;
    ELSE Modbus_Serial_Device.xEnable := TRUE;
    END_IF;

    или нужна задержка на xEnable FALSE/TRUE ?
    Манипуляции со слэйвом не решат вашу проблему.
    Какой именно пакет посылает STM32?
    Выложите дамп.

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Манипуляции со слэйвом не решат вашу проблему.
    Какой именно пакет посылает STM32?
    Выложите дамп.
    RS485 зависает при первом включении за день, потом
    если отключить питание и снова включить, зависание проявляется не всегда.

    на СПК отправляется команда 0x10 с разными пакетами до 56 регистров максимум.
    Упростил пакет до 1 регистра и потестирую.

    Tx (STM32): 0A 10 00 16 00 01 02 00 0F 97 92
    Rx (ответ СПК): 0A 10 00 16 00 01 E1 76

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,643

    По умолчанию

    Цитата Сообщение от jujin_un Посмотреть сообщение
    RS485 зависает при первом включении за день, потом
    если отключить питание и снова включить, зависание проявляется не всегда.

    на СПК отправляется команда 0x10 с разными пакетами до 56 регистров максимум.
    Упростил пакет до 1 регистра и потестирую.

    Tx (STM32): 0A 10 00 16 00 01 02 00 0F 97 92
    Rx (ответ СПК): 0A 10 00 16 00 01 E1 76
    Желательно выложить дамп конкретных пакетов, отправка которых во время перезагрузки приводит к зависанию порта.

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 20.11.2019, 10:38
  2. Ответов: 3
    Последнее сообщение: 18.10.2018, 15:57
  3. Ответов: 4
    Последнее сообщение: 28.07.2016, 06:29
  4. Ответов: 15
    Последнее сообщение: 15.03.2016, 21:29
  5. Ответов: 9
    Последнее сообщение: 09.04.2015, 11:21

Ваши права

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