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

Тема: Как подружить ПЛК304 и Mobus

Древовидный режим

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

    По умолчанию

    Цитата Сообщение от Ильнур Гибадуллин Посмотреть сообщение
    Пришлите архив проекта (Файл -> Архив проекта -> Сохранить/отправить архив) на support@owen.ru. Укажите, пожалуйста, версию прошивки контроллера и версию таргет устройства.
    Отправил проект... в ответ тишина. На вопросы по почте тоже ответа нет. Техподдержка рулит
    Напишу что сам "нарыл".
    Предисловие.
    Первая проблема, с которой столкнулся - отвал slave-устройств в сети Modbus. Причём в течении суток у меня отваливалось практически 45 устройств из 47 подключенных в сети. Связь с ними не восстанавливалась, пока вручную не сделать сброс. На форуме нашлось множество таких же ситуаций (мне не понятно, почему ОВЕН на них не реагирует). Первым делом использовал сброс шины так:
    IF SS_39.xError THEN myblink37(ENABLE:= SS_39.xError, TIMELOW:= T#200MS, TIMEHIGH:= T#1S, OUT=> SS_39.xReset); END_IF

    где SS_39 это одно из slave-устройств, myblink37 - генератор BLINK.
    Т.о. прописав такие строчки для каждого устройства удалось отвалившиеся возвращать в строй. Порадовался этому, но не тут-то было... Через несколько дней обнаружил несколько отвалившихся устройств, которые не хотели возвращаться с помощью моего BLINK. Так же удавалось вернуть их только ручным сбросом контроллера. Тщательно порывшись на форуме нашёл решение и этой проблемы. Используя эти строки перегружается порт:

    IF modbus_master_com_port.xAllSlavesOk=FALSE THEN //сброс ком-порта
    myblink00(enable:=TRUE,timelow:=T#6S, timehigh:=T#100MS,out=>);
    ELSE
    myblink00(enable:=FALSE,timelow:=T#6S, timehigh:=T#100MS,out=>);
    END_IF
    modbus_master_com_port.xResetComPort:=myblink00.OU T ;

    Ну что же... Используя эти костыли вторые сутки - полёт нормальный... Ещё раз хочется передать привет техподдержке и ОВНУ в целом...

    Вторая проблема возникла когда я решил подружить свой контроллер и HMI-панель со встроенной SCADA-системой. Так же использовал конфигуратор, создал подключение ModbusTCP_Slave. Панель начала получать данные. Первое время глюков не замечал. Но потом оказалось, что начало отваливаться это подключение - через 2-3 минуты после старта контроллера появлялся красный треугольник. Панель при этом вела себя не адекватно - то указывала что связи нет, то связь появлялась, но очень тормозила (время реакции на действия растягивались до 10 сек), контроллер принимая от SCADA информацию искажал её - значения переменных дико плясали, помогал сброс контроллера. Перезагрузка по питанию опять приводила к вышеописанному бардаку. Решил порыть в том же направлении - попытаться найти команды перезапуска TCP соединения. По соответсвующему названию нашёл внутренние переменные ModbusServer, которые отвечают за данное соединение, причём вручную, в режиме записи значений переменных удалось перегрузить соединение, которое опять продержалось 2 минуты и опять отрубилось. Пытался вытащить эти переменные, чтобы перегружать соединение программно но как-то не удалось - они находятся здесь: Device.Application.ModbusTCP_Slave_Device.m_Modbus Server (.xReset, .xError и т.д.), но вызвать в программе не удаётся - ругается на m_ModbusServer. Пытался создать соединение TCP с помощью функционального блока ModbusServer - сделал как в примере, ещё нашёл на форуме, но никак не удаётся прописать порт соединения т.к. переменная .wPort не доступна. Причём это конкретный глюк в программе CODESYS т.к. при наборе точки я вижу список переменных, wPort отсутствует среди них, но контекстная подсказка с wPort появляется возле другой переменной. На этом месте я уже почти отчаялся... Нахрена мне "коммуникационный контролер ОВЕН" если он не может обеспечить коммуникацию с HMI? И тут я обнаруживаю, что моё соединение работает достаточно долго и не "падает"... Решение оказалось случайным. В ходе экспериментов я создал в программе описание функционального блока ModbusServer. Воспользоваться им я не смог - не получилось прописать порт TCP соединения, но его наличие в программе оказало благотворное воздействие на соединение созданное в конфигураторе. Вот текст программы, который поддерживает моё соединение:

    VAR
    m_ModbusServer: ModbusServer;
    END_VAR

    IF m_ModbusServer.xError THEN
    m_ModbusServer.xReset:=TRUE;
    ELSE
    m_ModbusServer.xReset:=FALSE;
    END_IF;

    Это соединение совершенно не привязано к моему, но почему-то держит канал... Не скажу что всё идеально, но пока (уже 2 суток без отвалов). Не идеально - связь со SCADA стрёмная - периодически, на долю секунды, панель показывает что связь отвалилась. Иногда реакция на действия на панели с небольшим запаздыванием (особенно после перезагрузки контроллера), ещё контроллер часто теряет связь со SCADA после заливки проекта и для того, чтобы восстановить связь нужно передёрнуть питание контроллера.
    По первой проблеме тоже решение "так себе" - slave-устройства продолжают отваливаться с частотой раз в 2-3 минуты, благо программа их возвращает. Так и живём...

    P.S. Не думал что у ОВНА будут сплошные костыли... Неужели жажда прибыли напрочь перебивает желание довести сырую поделку до нормального ПЛК?
    Последний раз редактировалось Sergeba; 28.04.2018 в 23:36.

Похожие темы

  1. Подружить СПК107 с PC
    от Vasily_avico в разделе СПК1xx (архив)
    Ответов: 3
    Последнее сообщение: 06.08.2017, 21:38
  2. Как подружить СПК 105 и ТРМ202
    от дрю в разделе СПК1xx (архив)
    Ответов: 2
    Последнее сообщение: 16.02.2016, 09:19
  3. Запись массива данных в Mobus-Slave ПЛК150
    от Alex A Pap в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 13.12.2010, 13:41
  4. подружить OPC и WinCC
    от AVit в разделе Другие SCADA системы
    Ответов: 3
    Последнее сообщение: 18.09.2007, 10:13

Ваши права

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