Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Modbus TCP Slave

  1. #1

    По умолчанию Modbus TCP Slave

    Здравствуйте. Имею Owen ПЛК160[M02] и панель Weintek MT8050iE.
    Соединил их по протоколу Modbus TCP. Плк-slave, панель - master. Получилось настроить связь и передать некоторые данные посредством параметрирования пункта "Конфигурация ПЛК" в Codesys v2.3. Но проблема в том, что нужно передавать очень большие объемы данных (несколько десятков массивов по 50...200 значений). Вручную вбивать каждую переменную массива очень трудозатратно. Каким образом можно это осуществить? Иными словами, как можно передать весь массив целиком? Спасибо

  2. #2

    По умолчанию

    несколько десятков массивов по 50...200 значений
    рецепты? грубо 2000-5000 и т.д. переменных? а что им делать всем там делать?
    мне кажется вы переоцениваете возможности плк

  3. #3

    По умолчанию

    Цитата Сообщение от In_Da_Cher_A Посмотреть сообщение
    рецепты? 2000 переменных? а что им делать всем там делать?
    мне кажется вы переоцениваете возможности плк
    разве это много? У меня были проекты, где количество передаваемых переменных превышало 8000.
    Суть не в этом. Даже если нужно передать всего лишь два массива по 100 переменных. Как это сделать наиболее быстро? Без прописывания каждого канала по отдельности. В Codesys v3.5 такое возможно. Есть ли в Codesys v2.3 что-либо подобное?
    Последний раз редактировалось ivydy; 19.11.2021 в 14:23.

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    библиотеки использовать а не конфигурацию, а конфигурацию надо будет отключить.

  5. #5

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    библиотеки использовать а не конфигурацию, а конфигурацию надо будет отключить.
    Не могли бы вы сказать название библиотек или дать ссылку на обучающее видео? На ютуб-канале Owen при первом беглом просмотре я что-то не нашел ничего по этой теме

  6. #6
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Modbus Slave очевидно. ссылок на обучающее не дам, так как не знаю. Работа с Modbus возможна двумя способами, через Конфигуратор, что вам лень, хотя как Slave ПЛК читается групповыми запросами. Или через библиотеки, без добавления данных в Конфигуратор (хотя если ПЛК не мастер должно быть фиолетово, есть там что-то или нет, порт только может мешать будет)

    з.ы. до библиотек сам еще не добрался...

  7. #7

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Modbus Slave очевидно. ссылок на обучающее не дам, так как не знаю. Работа с Modbus возможна двумя способами, через Конфигуратор, что вам лень, хотя как Slave ПЛК читается групповыми запросами. Или через библиотеки, без добавления данных в Конфигуратор (хотя если ПЛК не мастер должно быть фиолетово, есть там что-то или нет, порт только может мешать будет)

    з.ы. до библиотек сам еще не добрался...
    что за Modbus Slave? Я нашел только библиотеку OwenModbusSlave, но она работает только для Modbus RTU, то есть в моем случае не подходит.

  8. #8

    По умолчанию

    Цитата Сообщение от ivydy Посмотреть сообщение
    разве это много? У меня были проекты, где количество передаваемых переменных превышало 8000.
    Суть не в этом. Даже если нужно передать всего лишь два массива по 100 переменных. Как это сделать наиболее быстро? Без прописывания каждого канала по отдельности. В Codesys v3.5 такое возможно. Есть ли в Codesys v2.3 что-либо подобное?
    Если бы был ПЛК мастер, то пятью String можно передать 200 переменных, упакованных в 5 массивов по 40 целочисленных ( или 20 REAL). Писанины меньше.
    Тоже можно сделать и в слейве, только добавлять придётся 200 шт. по 2 BYTE. Это всё через конфигурацию.
    Последний раз редактировалось kondor3000; 19.11.2021 в 15:42.

  9. #9
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    ivydy oscat networks или base не смотрели? где-то из них есть Modbus TCP

  10. #10

    По умолчанию

    Через конфигуратор всё делается достаточно просто.
    Максимальный размер слейва 999 переменных, если они будут DWORD, то можно зарезервировать область памяти до 3996 байт.
    Делается это копипастом достаточно быстро.
    Далее нужно создать структуру, которая содержит нужные типы данных, например:
    TYPE Motor :
    STRUCT
    uiState: UINT;
    uiPrt: UINT;
    xMan,
    xManStart,
    xSwitch ,
    xReady,
    xRun,
    xAuto,
    xDrvFault,
    xInhibition,
    xStartFault,
    xAlert,
    xReset: BOOL;

    END_STRUCT
    END_TYPE

    в глобальных переменных объявляем переменные требуемого типа:
    VAR_GLOBAL

    Pump1 AT %QD7.1.0:Motor;

    Pump2 AT %QD7.5.0:Motor;

    END_VAR
    Единственное неудобство - смещение в структурах надо считать вручную, избегать наложения переменных и помнить о выравнивании адресов.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 04.06.2019, 16:55
  2. Modbus (Master) не отображается в память Modbus (Slave)
    от ghoch в разделе Помощь Разработчикам
    Ответов: 3
    Последнее сообщение: 07.05.2018, 09:40
  3. ПЛК160: Modbus TCP Master и Modbus TCP Slave одновременно.
    от Антон Костюченко в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 18.07.2016, 10:36
  4. Переменная из Modbus (master) в Modbus (slave)
    от Zenr в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 25.10.2013, 12:38
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 14:42

Ваши права

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