Страница 10 из 63 ПерваяПервая ... 891011122060 ... ПоследняяПоследняя
Показано с 91 по 100 из 623

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

  1. #91

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я так понимаю, речь о примере с библиотекой Modbus - потому что при опросе через конфигуратор процесс опроса нескольких каналов не должен вызывать вопросов, а библиотека ModulsOwenLib опрашивает модули целиком
    Да, всё правильно, извиняюсь, что не уточнил.
    Поясню почему возникает некоторая неоднозначность в части ModulsOwenLib. В тексте документе отражена особенность нумерации устройств (с учётом конфигурации по протоколу OWEN), и помня об этом при переработке примера 5.9 под чтение двух каналов первое, что приходит в голову, это необходимость последовательно изменять номер адреса (Addr), так же в тексте не увидел, что библиотека ModulsOwenLib опрашивает модули целиком. Это касается и описания библиотеки Modbus (в примерах тоже адреса начальные и не нашёл про групповое чтение).
    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    1. Считать групповым запросом все нужные данные (при условии, что нет "дырок" в карте регистров) и дальше в программе разобрать их;
    Я и стал прорабатывать этот вариант для МВ110-8А (читаем 10 регистров начиная со 2-го для получения данных с 1-го и 2-го канала), но возник ламерский вопрос: Как правильнее сделать преобразование WORD_TO_REAL для двух каналов одного устройства в этом случае?
    Спрашиваю, так, как в железе пока проверить не могу (в закупке).

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

    По умолчанию

    Цитата Сообщение от vyachko Посмотреть сообщение
    Да, всё правильно, извиняюсь, что не уточнил.
    Поясню почему возникает некоторая неоднозначность в части ModulsOwenLib. В тексте документе отражена особенность нумерации устройств (с учётом конфигурации по протоколу OWEN), и помня об этом при переработке примера 5.9 под чтение двух каналов первое, что приходит в голову, это необходимость последовательно изменять номер адреса (Addr), так же в тексте не увидел, что библиотека ModulsOwenLib опрашивает модули целиком. Это касается и описания библиотеки Modbus (в примерах тоже адреса начальные и не нашёл про групповое чтение).

    Я и стал прорабатывать этот вариант для МВ110-8А (читаем 10 регистров начиная со 2-го для получения данных с 1-го и 2-го канала), но возник ламерский вопрос: Как правильнее сделать преобразование WORD_TO_REAL для двух каналов одного устройства в этом случае?
    Спрашиваю, так, как в железе пока проверить не могу (в закупке).
    1. Нет, адреса изменять не надо. Вы сейчас как раз описали методику опроса по протоколу Овен - но этот документ о Modbus, а в Модбасе устройство определяется одним адресом. По поводу принципа работы ModulsOwenLib - спасибо за замечание, в следующей версии опишем это в явном виде. По поводу группового опроса через библиотеку Modbus - в принципе, в примере как раз показан групповой опрос модуля 8А (считываются 4 регистра, с 2 по 5).

    2. В принципе, точно также, как и для одного. После чтения данных вы получаете массив байт. Вы знаете, в каких байтах лежат ваши REAL. Если вы читаете 10 регистров, начиная со второго - то это байты 4-7 (первый REAL, как в примере) и 16-19 (второй REAL). Записываете байты первого REAL в объединение, меняя их порядок - опять же, как в примере. Забираете из объединения значение с плавающей точкой в нужную переменную. Теперь точно также записываете в объединение байты второго REAL, поменяв их порядок - и забираете из объединения второе значение.

    Т.е. в случае увеличения числа опрашиваемых каналов и модулей примеры концептуально не изменятся - просто увеличится кол-во типовых кусков кода.

  3. #93

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    2. В принципе, точно также, как и для одного. После чтения данных вы получаете массив байт. Вы знаете, в каких байтах лежат ваши REAL. Если вы читаете 10 регистров, начиная со второго - то это байты 4-7 (первый REAL, как в примере) и 16-19 (второй REAL). Записываете байты первого REAL в объединение, меняя их порядок - опять же, как в примере. Забираете из объединения значение с плавающей точкой в нужную переменную. Теперь точно также записываете в объединение байты второго REAL, поменяв их порядок - и забираете из объединения второе значение.
    Концептуально это всё понятно, но вот механически...(потому и назвал вопрос ламерским).
    Так можно?
    Example.png

  4. #94

  5. #95

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Да, совершенно верно.
    Спасибо за помощь.

  6. #96

    По умолчанию

    Не думаю, что открою что-то новое, но тем не менее...
    Имеются: СПК-107, МВ1100-8А, МВ110-16Д и МУ110-16Р. Первая попытка вязать их через шаблоны провалилась: связь не устойчивая, отклики на изменения входов несколько секунд. Перепробованы всевозможные варианты скоростей обмена, тайм-аутов и т.д. Попытка вторая - через ModulsOwenLib.Результат такой же. Далее МВ110-8А был посажен на один порт, остальные на другой и о, чудо! все заработало. Однако у дискретных модулей тайм-аут должен быть 45 мс, а иначе почему то не работает (скорость обмена 115200)... Что еще было подмечено: если в конфигураторе любого из модулей задержку ответа установить 1000мс (ну кроме МВ110-16Д, у него почему то дурацкое ограничение в те самые 45мс), то модуль зависает и становится недоступным ни для СПК, ни для конфигуратора. Решается подключением по заводским настройкам и изменением того самого тайм-аута в меньшую сторону.
    Теперь про модуль вывода. В данный момент связь идет, лампочки моргают, физически выхода срабатывают с минимальной задержкой, но код ошибки 255. Как так?
    Почему? Как теперь контролировать наличие связи? Мне, как нормальному человеку надо, чтобы при потери связи выходы сбрасывались, а сейчас этого не происходит. Почему этого нельзя сделать на уровне самой библиотеки? Как это красиво оформить в программе? Упаковывать в ворд и если код ошибки не ноль (а у меня, напоминаю, почему-то 255), отправлять ноль в этот ворд или же проделывать тоже самое с каждым битом отдельно?
    И последнее: в мыслях посадить на шину еще два ПЧВ. Как это лучше сделать и на какой порт?

  7. #97
    Пользователь Аватар для Эдуард_Н
    Регистрация
    22.09.2014
    Адрес
    Курган
    Сообщений
    1,437

    По умолчанию

    Далее МВ110-8А был посажен на один порт, остальные на другой и о, чудо! все заработало.
    Но это же не нормально! К примеру у меня на одном порту модули, а к другому прицеплен модем, и как тогда выкручиваться?

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

    По умолчанию

    Цитата Сообщение от Drahtor Посмотреть сообщение
    Теперь про модуль вывода. В данный момент связь идет, лампочки моргают, физически выхода срабатывают с минимальной задержкой, но код ошибки 255. Как так?
    Почему?
    Без архива проекта трудно сказать что-то конкретное. Пожалуйста, выложите его или отправьте мне на почту.

    Чтобы создать архив: Файл - Архив проекта - Сохранить архив.

  9. #99

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Без архива проекта трудно сказать что-то конкретное. Пожалуйста, выложите его или отправьте мне на почту.
    Архив проекта
    Появилась, конечно, мысль, что опрос одного слэйва надо начинать только после завершения опроса другого....
    Вложения Вложения
    Последний раз редактировалось Drahtor; 26.07.2016 в 09:45.

  10. #100
    Пользователь
    Регистрация
    11.11.2015
    Адрес
    Ивановская обл.
    Сообщений
    242

    По умолчанию

    не получается скачать документ из первого поста!!

Страница 10 из 63 ПерваяПервая ... 891011122060 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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