Страница 39 из 131 ПерваяПервая ... 2937383940414989 ... ПоследняяПоследняя
Показано с 381 по 390 из 1306

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #381

  2. #382

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Посмотрите здесь п. 6.4:
    https://ftp.owen.ru/CoDeSys3/11_Docu...dbus_v.1.1.pdf

    Там показано, как организовать опрос нескольких устройств через библиотеку.
    Спасибо за совет. Разбираюсь с инструкцией. По ходу чтения появились вопросы.
    1. Можно ли использовать один буфер для приёма данных для всех модулей чтения? Ведь, на сколько я понял (у меня так и реализовано по сигналу CMPL) опрос следующего начинается по завершению предыдущего, т.е. я могу в этот момент забирать данные, а дальше этот же буфер использует следующий модуль.
    2. На странице 126 идёт описание работы программы, приведённой на стр 125. В конце программы используется завершение опрос модуля - это не описано в описании. Я это не использую - смотрел пример описания библиотеки - там нигде нет "завершения опроса", что за буффер используется для этого abyBuffer? И для чего?
    3. Нужно ли в каждом модуле формировать свой сигнал CMPL? Или достаточно объявить в глобальных переменных CMPL и применять её для всех модулей по мере завершения опроса?

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

    По умолчанию

    1. Можно.
    2. Блок выполняется по фронту на входе Enable, поэтому после окончания сеанса опроса на вход Enable присваивается FALSE (чтобы при следующем присвоении входу значения TRUE был получен передний фронт). abyBuffer в данном вызове нужен только по той причине, что переменная Buffer является входом-выходом (VAR_IN_OUT) - и ей всегда что-то должно присваиваться при вызове ФБ. Вообще, для вашего случая лучше смотреть на пример со стр. 128.
    3. Я не очень понимаю, что вы называете "CMPL".

  4. #384

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    3. Я не очень понимаю, что вы называете "CMPL".
    Я делаю Complete=>CMPL, CMPL - глобальная переменная получается доступна в основной программе и проще обрабатывать на таймерах опроса - когда много модулей, использую так: если время опроса пришло, проверяю, не занят ли другой модуль - ждём, пока освободиться.
    Добавил завершение опроса - ошибок не стало...Спасибо.

    Рано радовался... Функция 03 заманала... Опрашиваю отдельное устройство - всё ОК, как подключаю несколько то читает, то ошибка 253, то 255... Не пойму в чём дело. 255 - ошибка тайм-аута - пробовал увеличить - ноль реакции.
    Последний раз редактировалось Sergeba; 06.01.2020 в 12:59.

  5. #385

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Вообще, для вашего случая лучше смотреть на пример со стр. 128.
    В инструкции используется оператор CASE, получается период опроса модулей ничем не обусловлен, только готовностью.
    У меня каждому модулю соответствует свой таймер - могу задать каждому модулю период опроса. Этот же таймер формирует модулю сигнал Enable, при условии что Complete у всех модулей равен TRUE, т.е. в данный момент никто линию не занимает, модули завершили обмен.
    Я использую таймеры - выставляю флаг начала опроса и одновременно проверяю общий Complete.
    Последний раз редактировалось Sergeba; 06.01.2020 в 02:05.

  6. #386

    По умолчанию

    Я правильно понимаю, что если Тайм-Аут устройства 30мс, программный цикл 5мс, то я физически не могу опросить 1 устройство из 30 на линии не быстрее, в среднем, через 1050мс... Как в этом случае работает опрос через конфигуратор, если я заведомо задаю малый период для модуля?

    Всё оказалось хуже, чем расчёт... Тайм-Аут проходит без ошибок 10мс, но опрос получился почти 4 секунды!!!

    Непонятный косяк ещё с COM-портами. COM5 - тайм-аут 10мс - без проблем - ошибок нет (на нём 29 модулей), COM2 - тайм-аут в среднем 40мс - функция 03 постоянно с ошибками, увеличение тайм-аута не помогает... При уменьшении тайм-аута другие функции тоже начинают "сыпаться".
    Последний раз редактировалось Sergeba; 06.01.2020 в 15:41.

  7. #387

    По умолчанию

    Читаю через конфигурацию данные из стороннего прибора, modbus-rtu. Иногда (редко, но бывает) гдето чтото подвисает, и данные не обновляются (автоперезапуск стоит, не помогает).
    В Codesys2.3 был доступен статус соединения (ошибка или нет) и код последней ошибки. Здесь я чтото ничего подобного не вижу.
    Как сейчас правильно узнавать статус обмена по modbus?
    Life is complex: it has both real and imaginary components.

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

    По умолчанию

    Цитата Сообщение от SlavikP Посмотреть сообщение
    Читаю через конфигурацию данные из стороннего прибора, modbus-rtu. Иногда (редко, но бывает) гдето чтото подвисает, и данные не обновляются (автоперезапуск стоит, не помогает).
    В Codesys2.3 был доступен статус соединения (ошибка или нет) и код последней ошибки. Здесь я чтото ничего подобного не вижу.
    Как сейчас правильно узнавать статус обмена по modbus?
    П. 4.6, переменная byModbusError:
    https://ftp.owen.ru/CoDeSys3/11_Docu...odbus_v2.0.pdf

  9. #389

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    П. 4.6, переменная byModbusError:
    Ещё вопрос, в CDS2.3 у ФБ опроса модулей была переменная Read (* активен режим чтения, запрос уже отправлен *). В CDS3 такой не нахожу...

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

    По умолчанию

    Цитата Сообщение от Sergeba Посмотреть сообщение
    Ещё вопрос, в CDS2.3 у ФБ опроса модулей была переменная Read (* активен режим чтения, запрос уже отправлен *). В CDS3 такой не нахожу...
    Опишите, пожалуйста, более подробно - о чем речь и зачем это нужно.

Страница 39 из 131 ПерваяПервая ... 2937383940414989 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

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