Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 31

Тема: Релиз библиотеки OwenModbusSlave для CODESYS v2.3

  1. #1

    По умолчанию Релиз библиотеки OwenModbusSlave для CODESYS v2.3

    Как Вы знаете, во всех контроллерах ОВЕН под управлением CODESYS 2.3 есть возможность настроить обмен по сети в качестве Modbus-Slave’a через конфигурацию ПЛК
    plccong.png
    и для большинства случаев этого достаточно.
    Но бывают следующие ситуации:
    1. Необходимо поддерживать программу на разных типах ПЛК (например, на ПЛК100 и ПЛК154);
    2. Необходимо организовать доступ к данным по 2м интерфейсам сразу (например, по RS232 подключена панель, которая может как записывать, так и считывать данные из ПЛК, а по RS485 ПЛК подключен к облаку, которое может только вычитывать данные);


    И все было бы хорошо – 1 раз сделал конфигурацию и забыл. Но, как вы знаете, клиенты имеют неприятную привычку изменять требования к ПО уже в процессе разработки. И приходится вручную поддерживать актуальность конфигурации в разных ПЛК, либо на разных интерфейсах одного ПЛК.

    Чтобы облегчить Вам жизнь в вышеперечисленных ситуациях мы разработали библиотеку OwenModbusSlave_v2.3.9.4.
    В библиотеке всего 1 пользовательский ФБ, которому для работы требуется минимум обвязки:
    1. № COM-порта
    2. Сетевые настройки
    3. Область, в которой хранятся данные, доступные по сети
    4. Размер области данных




    Работа библиотеки тестировалась на ПЛК100, ПЛК150, ПЛК154, ПЛК110, ПЛК110 [m02]

    Примечание: библиотека не поддерживается на контроллерах ПЛК63/73
    Скачать последнюю версию:

    Список изменений:

    Версия Дата Список изменений
    2.3.9.4 19.06.2018 Первая версия библиотеки




    Документация

    Руководство пользователя:
    Последний раз редактировалось Евгений Кислов; 11.12.2018 в 20:31.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

  2. #2

    По умолчанию

    Библиотека OwenModbusSlave работает только на плк овен или на плк любого производителя поддерживающего кодесис 2.3 ?

  3. #3

    По умолчанию

    Цитата Сообщение от КИП Посмотреть сообщение
    Библиотека OwenModbusSlave работает только на плк овен или на плк любого производителя поддерживающего кодесис 2.3 ?
    На ПЛК других производителей мы не проверяли.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

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

    По умолчанию

    Так и примерчик бы выложили.

  5. #5

    По умолчанию

    Цитата Сообщение от Эдуард_Н Посмотреть сообщение
    Так и примерчик бы выложили.
    Я не подумал, что может быть полезен пример программы из одного блока.
    В документации (рисунок 3.3) есть пример на CFC.

    Его не достаточно?
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

  6. #6

    По умолчанию

    Добрый день.
    Спасибо за Ваш отзыв.
    Отвечу по порядку.

    Цитата Сообщение от Валенок Посмотреть сообщение
    1) а что за buffer_tools ?
    В ней реализованы функции побитового сдвига буфера.

    Цитата Сообщение от Валенок Посмотреть сообщение
    2) а чего не автоматический rtu/ascii ?
    Как часто вы подключаете к ПЛК устройства, которые являются Modbus ASCII Master?

    Цитата Сообщение от Валенок Посмотреть сообщение
    3) а где стартовый регистр ?
    Стартовый регистр = 0. Согласен, стоило указать.
    Если Вы имели в виду возможность задать номер первого регистра, то опишите пожалуйста, для каких задач это Вам понадобиться?

    Цитата Сообщение от Валенок Посмотреть сообщение
    4) а где разные области ? нужно и 0й и 60000й регистр - целиком штоли массив юзать ?
    Для какой задачи может потребоваться в Slave-устройстве хранить данные не последовательно, а с разрывами?
    Как часто Вы с этим сталкиваетесь?

    Цитата Сообщение от Валенок Посмотреть сообщение
    5) а как определить событие и направление текущей произведенной операции // типа OnRead/Write ?
    В текущей реализации библиотеки этого нет.
    Опишите пожалуйста задачи, для которых Вам это может понадобиться, и в каком виде Вам бы хотелось видеть эту информацию.
    Возможно структура на выходе ФБ, которая после запроса на 1 цикл ПЛК содержит
    1. признак чтение\запись
    2. признак операции с регистрами \ битами
    3. № первого регистра \ бита
    4. Количество регистров \ битов, участвующих в запросе?


    Цитата Сообщение от Валенок Посмотреть сообщение
    6) а акромя литл/биг концов бывают какие-то перестановки слов - как в ваших модулях, и ?
    Бывает и такое. Но, поскольку используется одна область для хранения данных отследить что именно по этому адресу находится - переменная из 2х регистров (и нужно применять перестановку) или переменная из 1 регистра (и перестановка не нужна) не представляется возможным.
    Подготовка данных для передачи по сети ложиться на пользователя библиотеки.

    Цитата Сообщение от Валенок Посмотреть сообщение
    7) а надо несколько девайсов поддерживать как дебаг или прокладку ?
    Прошу прощения, не понял вопрос. Уточните пожалуйста, что Вы имеете в виду.
    Последний раз редактировалось Осинский Алексей; 21.06.2018 в 08:49.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

  7. #7

    По умолчанию

    Добрый день.
    Немного не по порядку, но думаю ответ на последнее замечание будет исчерпывающим и дальше можно будет не читать.

    Итак:
    Цитата Сообщение от Валенок Посмотреть сообщение
    Бибка должна быть шире и/или гибче, иначе это шило на мыло
    Как сказал автор одной замечательной книги: "Опасайтесь вопроса: «Эту функцию реализовать легко — почему бы этого не сделать?»".
    Библиотека должна решать поставленные перед ней задачи, которые я обозначил в первом посте.
    Если по отзывам окажется, что есть реальная потребность в каком-либо дополнительном функционале - мы добавим.
    Но заметьте, потребность должна быть РЕАЛЬНОЙ, поэтому я и спрашиваю "на сколько часто?" и "для каких задач?".

    Цитата Сообщение от Валенок Посмотреть сообщение
    Простейший пример применения - отладка сети с кучей девайсов БЕЗ этих девайсов.
    Логика с мастером на rs-1 + слейвы-имитаторы на rs-2. Этакий localhost
    Цитата Сообщение от Валенок Посмотреть сообщение
    А полистав чужие карты частотников, измерителей .. сразу отпадут вопросы про разрывы и т.п.
    При разработке библиотеки цель "сэмулировать набор Slave'ов при помощи этой библиотеки" не ставилась.

    Цитата Сообщение от Валенок Посмотреть сообщение
    Касаемо ASCII - странный вопрос.
    Цена вопроса копейки, а жизнь облегчит
    Не понятно, только, кому это облегчит жизнь?
    За последние года 3 я с Modbus-ASCII ни сталкивался ни как программист, ни как сотрудник техподдержки.

    Цитата Сообщение от Валенок Посмотреть сообщение
    А зачем в местных модулях есть выбор протокола ?
    Не могу утверждать со 100% гарантией, но, вероятно, в то время, когда разрабатывались эти устройства Modbus-ASCII использовался чаще.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

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

    По умолчанию

    По поводу начальный регистр с нуля а как быть панели ИП320, она же читает только то что добавлено на экран, которых может быть несколько
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

    По умолчанию

    когда панель слейв я так и делаю, по номеру экрана отправляю соответствующие заготовленные данные, но когда панель мастер это избыточная трата времени, причем с хаосом на панели, потому что слейв в данной теме не самописный и когда панелька переключит экран она хоть и выдаст номер экрана, но как мне кажется за это время успеют "улететь" данные для чтения не относящиеся к нему, пока идет обработка экрана и заполнение слейва
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    По поводу начальный регистр с нуля а как быть панели ИП320, она же читает только то что добавлено на экран, которых может быть несколько
    Если я правильно понял, то мой ответ "Стартовый регистр = 0." Вы поняли как "всегда 1й регистр в запросе должен быть 0".
    Но это не так.
    Имеется в виду, что № первого регистра массива данных всегда 0, и его нет возможности изменить. Как указано на рисунке 4.1 "Пользовательское описание OwenModbusSlave.pdf"

    Цитата Сообщение от capzap Посмотреть сообщение
    когда панель слейв я так и делаю, по номеру экрана отправляю соответствующие заготовленные данные, но когда панель мастер это избыточная трата времени, причем с хаосом на панели, потому что слейв в данной теме не самописный и когда панелька переключит экран она хоть и выдаст номер экрана, но как мне кажется за это время успеют "улететь" данные для чтения не относящиеся к нему, пока идет обработка экрана и заполнение слейва
    На сколько я понял, то Вы используете следующий подход:
    1. На каждом экране ИП320 расположены элементы, которые читают (пишут) определенный диапазон регистров и на разных экранах один и тот же регистр может содержать различную информацию
      (например на экране 1 регистр 0 содержит температуру, а на экране 2 регистр 0 содержит влажность);
    2. ИП320 передает в контроллер № активного экрана;
    3. ПЛК подготавливает данные для передачи в зависимости от № текущего экрана.


    Если это так, то опишите пожалуйста, какой от этого выигрыш перед следующим вариантом:
    1. На экране 1 находятся 2 регистра:
      • температура в комнате (регистр №0)
      • влажность в комнате (регистр №1)
    2. На экране 2 находятся 2 регистра:
      • температура в комнате (регистр №0)
      • температура на улице (регистр №2)
    3. В зависимости от выбранного экрана ИП320 сама читает нужные ей данные.


    Единственное, что приходит на ум - создание "виртуальных" экранов, т.е. когда в системе несколько однотипных устройств (условно, задвижек) и мы не хотим делать отдельные экраны под каждую задвижку
    тогда
    1. на экране ИП есть регистр, отвечающий за то, информацию о какой задвижке пользователь хочет получить;
    2. ПЛК по значению этого параметра передает информацию об указанной задвижке.

    Если Вы действительно делаете "виртуальные" экраны, то да, согласен с
    Цитата Сообщение от Валенок Посмотреть сообщение
    Ну тут нужно будет пасти регистр куда ИП пришлет экран, и переписывать данные если они "параллельные".

    Цитата Сообщение от Валенок Посмотреть сообщение
    А вот у меня стандартные шаблоны для панели и в одном проекте юзаются экраны 1 2 9, а в другом - 1 2 50 - накой мне 10000 байт ? А на вопрос про лёгкость копирования экрана я отвечу - а у меня Единый проект панели для всего.
    Самое смешное, что если у Вас единый проект панели для всего -> во всех проектах у Вас назначение каждого регистра остается неизменным.
    И объявив структуру, которая содержит описание всех данных для всех экранов Вы смело можете переносить ее из проекта в проект без изменений, но использовать только те данные, которые нужны.
    Эту структуру можно даже вынести в библиотеку, чтобы копипастом не заниматься.
    Это проще, чем каждый раз добавлять конфигурацию в ПЛК. (помните, в первом сообщении темы, я именно это и обозначал как задачу, решаемую при помощи библиотеки?)

    Цитата Сообщение от Валенок Посмотреть сообщение
    накой мне 10000 байт
    Как часто Вы упираетесь в ограничение ПЛК по памяти?
    У меня удавалось использовать 100% доступной памяти только в ПЛК73\63. Если Вы разрабатываете не программы для ПЛК63\73, то есть ли смысл жертвовать удобством ради экономии байт?

    Цитата Сообщение от Валенок Посмотреть сообщение
    Унификация такая. Как пример.
    Я тоже радею за унификацию, и рад пообщаться на эту тему.
    Я 11.09 буду на Ежегодной конференции пользователей CODESYS 2018 в Москве.
    Если Вы планируете посетить - сможем пообщаться на эту тему в живую.

    Цитата Сообщение от Валенок Посмотреть сообщение
    Это были вопросы-предложения исходя из моих реальных потребностей
    На сколько я понял задавать № первого регистра и устраивать "разрывы" в хранимых данных Вам нужно для целей тестирования.
    Я для целей тестирования использую другой подход. Постараюсь на днях описать его и рассказать, какими инструментами я пользуюсь для тестирования, эмуляции устройств и установок.

    т.к. Вы не ответили на этот вопрос в сообщении #7 продублирую его сюда:
    как Вам было бы удобно видеть вот эту информацию:
    Цитата Сообщение от Валенок Посмотреть сообщение
    событие и направление текущей произведенной операции // типа OnRead/Write ?
    Цитата Сообщение от Валенок Посмотреть сообщение
    У меня все это есть.
    Если у Вас все это есть - поделитесь, возможно Ваш вариант реализации подойдет нашим пользователям больше.
    Возможно с Вашей помощью мне удастся создать универсальную библиотеку, которая будет решать все возникающие проблемы и, при этом, быть простой в использовании.
    Последний раз редактировалось Осинский Алексей; 24.06.2018 в 09:55.
    OSCAT.ru читать стандарты и статьи по автоматизации на русском без регистрации и СМС

Страница 1 из 4 123 ... ПоследняяПоследняя

Похожие темы

  1. библиотеки Codesys
    от Радик в разделе ПЛК1хх
    Ответов: 13
    Последнее сообщение: 24.08.2018, 18:16
  2. Релиз библиотеки OwenDebug
    от Осинский Алексей в разделе СПК2хх
    Ответов: 0
    Последнее сообщение: 07.08.2017, 14:05
  3. Ответов: 0
    Последнее сообщение: 23.01.2017, 15:32
  4. Библиотеки CoDeSys
    от Romjke76 в разделе Трёп (Курилка)
    Ответов: 11
    Последнее сообщение: 30.09.2016, 08:43

Ваши права

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