Показано с 1 по 9 из 9

Тема: СП3ХХ. Функциональная область

  1. #1

    По умолчанию СП3ХХ. Функциональная область

    Добрый день!
    Не знаю с чего начать.
    Итак в конфигураторе есть функциональная область.
    Одна из функций "Копировать группу регистров".
    В проекте используется:
    - панель сп307б является мастером,
    - ПЛК110 [М02] слайвом,
    - связь MODBUS RTU (RS-485).
    Настроено и работает.
    На форуме довольно много различных топиков о применении функциональной области.
    Но вот что не понятно.
    Если мы напрямую можем использовать регистры например через 04 команду, как использование функциональной области увеличивает быстродействие и оптимизирует работу самой панели?
    Если в адресном пространстве со стороны ПЛК все передается word/dword/real согласно рекомендациям об организации этого пространства, упаковки битов в word/dword, без разрывов в нумерации регистров, то по сути согласно настройкам modbus rtu будет передаваться вся информация 1..2 пакетами в зависимости от количества регистров (возможно я не прав).
    Если строить графики на панели, например XY график, то здесь возможно действительно лучше использовать локальную (или все таки глобальную?) функциональную область.
    Допускаю что я ничего не понимаю или понимаю не правильно, делаю что то не так и опять не выложил проект.
    Вопрос теоретический скорее, чем практический. Функциональную область применяю с другими функциями и все работает прекрасно (например переход на определенный экран после 5 сек включения панели).
    Из справки не совсем понятно в каких случаях оптимальнее использовать область.
    Есть анекдот про молодого и опытного программиста. И там есть окончание: "...вот видишь молодой, ты не знаешь как, а я не знаю каким способом". Я молодой.
    Уважаемые профи можете поделиться своими наработками по оптимизации работы панели? Или может быть есть пару подводных камней, где использование функциональной области снижает нагрузку на железо панели и ускоряет ее работу.
    Или например есть ряд бестпрактик, например кнопки или ввод уставки делаем адресацию напрямую через регистры, все остальное через функциональную область.
    Или все привязки через внутренние регистры панели, а отправка и прием через функциональную область.
    Просто как разработчику мне не нравиться как работает панель. Как то медленно. Хотя панель новая и прошивка тоже новая.
    Жду вопросов и предложений.

  2. #2

    По умолчанию

    Насколько я понял, панели опрашивают только те регистры, в которых расположены данные отображаемого в данный момент экрана, либо данные, которые периодически опрашиваются (типа архивов трендов и переменных, используемых для аварий). Эти регистры она по возможности группирует в запросы.
    Наверное есть смысл расположить в ПЛК последовательно те данные, которые опрашиваются панелью независимо от отображаемого экрана.
    Также наверное есть смысл организовать периодическое чтение регистров, содержащих битовые переменные и уже в панели работать непосредственно с битами внутренних регистров.

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от БугиВуги Посмотреть сообщение
    Добрый день!
    Не знаю с чего начать.
    Итак в конфигураторе есть функциональная область.
    Одна из функций "Копировать группу регистров".
    В проекте используется:
    - панель сп307б является мастером,
    - ПЛК110 [М02] слайвом,
    - связь MODBUS RTU (RS-485).
    Настроено и работает.
    На форуме довольно много различных топиков о применении функциональной области.
    Но вот что не понятно.
    Если мы напрямую можем использовать регистры например через 04 команду, как использование функциональной области увеличивает быстродействие и оптимизирует работу самой панели?
    Если в адресном пространстве со стороны ПЛК все передается word/dword/real согласно рекомендациям об организации этого пространства, упаковки битов в word/dword, без разрывов в нумерации регистров, то по сути согласно настройкам modbus rtu будет передаваться вся информация 1..2 пакетами в зависимости от количества регистров (возможно я не прав).
    Если строить графики на панели, например XY график, то здесь возможно действительно лучше использовать локальную (или все таки глобальную?) функциональную область.
    Допускаю что я ничего не понимаю или понимаю не правильно, делаю что то не так и опять не выложил проект.
    Вопрос теоретический скорее, чем практический. Функциональную область применяю с другими функциями и все работает прекрасно (например переход на определенный экран после 5 сек включения панели).
    Из справки не совсем понятно в каких случаях оптимальнее использовать область.
    Есть анекдот про молодого и опытного программиста. И там есть окончание: "...вот видишь молодой, ты не знаешь как, а я не знаю каким способом". Я молодой.
    Уважаемые профи можете поделиться своими наработками по оптимизации работы панели? Или может быть есть пару подводных камней, где использование функциональной области снижает нагрузку на железо панели и ускоряет ее работу.
    Или например есть ряд бестпрактик, например кнопки или ввод уставки делаем адресацию напрямую через регистры, все остальное через функциональную область.
    Или все привязки через внутренние регистры панели, а отправка и прием через функциональную область.
    Просто как разработчику мне не нравиться как работает панель. Как то медленно. Хотя панель новая и прошивка тоже новая.
    Жду вопросов и предложений.
    Читать все регистры слейва в промежуточные регистры панели (PSW) функцией " и затем на экранах использовать эквивалентные PSW - на здоровье!
    Только эта ф.область должна быть ГЛОБАЛЬНОЙ!

    Какая отправка через ф.область? Зачем????. Ведь команда записи из панели, например цифрового ввода или битовой кнопки всегда ОДНОКРАТНАЯ!!!, в момент нажатия кнопки или ENTER на панели.
    Для записи используем непосредственно регистры слейва
    Вот так
    Захват-01.png Захват-02.png

    Здесь вкл. галка "Мониторинг" и таким образом отображается информация из промежуточных PSW, а запись новой информации, однократно!, сразу в регистры ПЛК.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Если в адресном пространстве со стороны ПЛК все передается word/dword/real согласно рекомендациям об организации этого пространства, упаковки битов в word/dword, без разрывов в нумерации регистров, то по сути согласно настройкам modbus rtu будет передаваться вся информация 1..2 пакетами в зависимости от количества регистров (возможно я не прав).
    Одним двумя пакетами не факт.
    Панель при чтении из ПЛК стремится сгруппировать ближайшие регистры в группы по 16 регистров. И читает эти группы одним запросом.
    Даже если в функции "Копировать группу регистров" сделать группу больше 16 регистров, например 40, то будет 3 запроса на чтения по 16 регистров и один - на чтение оставшихся 2 регистров.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    В общем случае
    Регистры 3х и 4х. Чтение
    Все регистры, используемые в качестве источника данных для элементов активного экрана, постоянно и безусловно читаются из слейва с периодичностью заданной в настройках "Коммуникационный интервал" порта панели.
    Чтение будет осуществляться группой если адреса регистров отличаются не более чем на 5, например
    - для двух дисплеев с регистрами Wrd 4х00 и 4х5 будет одна команда чтения шести регистров 0,1,2,3,4,5. А для двух дисплеев с регистрами Wrd 4х00 и 4х6 будут две отдельные команды чтения по одному регистру.
    - для двух дисплеев с регистрами DWrd 4х00 и 4х6 будет одна команда чтения восьми регистров 0,1,2,3,4,5,6,7. А для двух дисплеев с регистрами DWrd 4х00 и 4х8 будут две отдельные команды чтения по два регистра.
    Соответственно к вышеописанной цепочки из двух регистров могут добавляться последующие регистры, если их адрес отличаются не более чем на 5 от предыдущего. Например
    - для трех дисплеев с регистрами Wrd 4х00, 4х5 и 4х8 будет одна команда чтения девяти регистров 0,1,2,3,4,5,6,7,8.
    и т.д.
    Но максимальное число регистров в групповой команде чтения не может превышать 16.

    Запись регистров 3х и 4х, используемых в полях ввода - однократная, в момент нажатия ENTER.
    Запись регистров из ф. областей тоже по возможности группами из 16 рег.
    Если на экране есть регистры на чтение и на запись, то чтение запись чередуются
    -чтение 1 группы
    - запись 1 группы
    -чтение 2 группы
    - запись 2 группы
    и т.д

    Таблицы в группировке с другими элементами экрана не участвуют. Для таблиц всегда будут свои групповые(если столбцов несколько) или одиночные(если только один столбец) запросы к слейву.
    Таблица представлена массивом структур.
    Формат структуры и количество регистров в ней определяется количество столбцов и типом данных в каждом столбце.
    Таблицы читаются построчно. Причем второе правило "максимальное число регистров в групповой команде чтения не может превышать 16" на таблицы не распространяется, в одной группе будет столько регистров, сколько нужно для одной строки, хоть 125!
    Запросы на чтение строк разнесены по разным циклам выполнения программы.
    В каждом цикле читаются все регистры только одной строки

    Например на экране есть ДИСПЛЕЙ и ТАБЛИЦА 1 столбец 3 строки
    1. чтение 4х0 (дисплей)
    2. чтение 4х2 (первая строка таблицы)
    3. чтение 4х0 (дисплей)
    4. чтение 4х3 (вторая строка таблицы)
    5. чтение 4х0 (дисплей)
    6. чтение 4х4 (третья строка таблицы)
    и т.д.

    Если ДИСПЛЕЙ и ТАБЛИЦА 10 столбцов 3 строки
    1. чтение 4х0 (дисплей)
    2. чтение группы 4х2, 4х3...4х19 (первая строка таблицы)
    3. чтение 4х0 (дисплей)
    4. чтение группы 4х20, 4х21...4х29 (вторая строка таблицы)
    5. чтение 4х0 (дисплей)
    6. чтение группы 4х30, 4х31...4х39 (третья строка таблицы)
    и т.д.

    Надо различать элементы экрана
    - обычные, глобальные, на системных экранах
    Например, на экране есть
    дисплей с регистром 4х0
    Функциональная область в которой
    - читать один рег. 4х3
    - читать группу из 5 рег. с адреса 4х5

    Если дисплей и ф. область обычные, то будет один групповой запрос
    читать группу из десяти регистров - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    Если и дисплей и ф. область будут глобальными, то также будет один групповой запрос
    читать группу из десяти регистров - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

    Но если только дисплей или только ф. область будут глобальными, то будет два отдельных запроса
    1. читать рег. 4х0
    2. читать группу из семи регистров - 3, 4, 5, 6, 7, 8, 9

    Следует иметь ввиду, что кроме обычных экранов у панели есть еще системные (невидимые) экраны, их несколько.
    И выполнение(обслуживание) экранов происходит как и в ПЛК - циклически
    - системный экран 1
    - системный экран 2
    ........
    - системный экран N
    - пользовательский активный экран
    Считайте, что элементы со свойством глобальный находятся на невидимом системном экране
    Группировка с правилом "разница между стартовыми адресами не более 5" на активном экране своя, на системных (не видимых) экранах своя
    Последний раз редактировалось petera; 15.03.2023 в 12:30.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6

    По умолчанию

    Внесу свои пять копеек.
    1) Если можно обойтись без ФО, обходитесь без неё. Если без неё никак используйте.
    2) Гораздо важнее на мой взгляд расположить однотипные регистры подряд, без пропусков, для возможности опрашивать регистры группой.
    3) Основную работу должен проделывать ПЛК, а панель только выводить результаты (минимум простых операций).
    4) Лучше спрашивать на конкретном примере, чем как вы, всё сразу. Толку будет мало.
    Последний раз редактировалось kondor3000; 15.03.2023 в 12:55.

  7. #7

    По умолчанию

    Огромнейшее спасибо всем!
    Думаю "молодым", если найдут данную тему будет очень полезно почитать.
    Все сомнения после чтения Ваших ответов, соотнесение со справкой и темами форума развеялись.
    Если рассматривать конкретный пример, то пожалуй совет понадобиться.
    На ПЛК организована работа с "рецептами" (retain, чтение, запись).
    Заказчик при формировании рецепта просит:
    1. отображать время в виде ч : м
    2. в % от номинальной частоты уставку для ПЧ
    3. отобразить в виде графика-профиля = профиль
    4. показать точку на графике где сейчас процесс.
    Должно быть как на картинке.
    для_темы.png
    XY график для построения профиля подходит и с функциональной областью Вы дали исчерпывающий ответ.
    Но вот как показать текущую позицию процесса?
    При этом надо не забывать, что нет возможности динамически управлять позицией графических примитивов.
    Думаю использовать график реального времени без фона, 24 среза с периодом в 3600 с.
    Что думаете?
    Жду ответов и вопросов.

  8. #8
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от БугиВуги Посмотреть сообщение
    Но вот как показать текущую позицию процесса?
    При этом надо не забывать, что нет возможности динамически управлять позицией графических примитивов.
    Позицией ЛЮБОГО графического элемента можно управлять динамически
    Захват-01.png

    Включайте галки и выбирайте регистры для управления положением

    Итоговая координата примитива - верхняя левая точка будет как результат начальной координаты (там где поставили в проекте) и + или - значения в регистре управления ( операция сложения со знаком)
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #9

    По умолчанию

    Блин совсем не смотрел и не экспериментировал в эту сторону.
    petera Вам +100500 респекта и уважухи!!!
    Все харе, отдыхать!!!
    Думаю тему можно закрывать.

Похожие темы

  1. Функциональная область
    от piligrim в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 25.03.2022, 14:58
  2. СП270 PFW область
    от БлинВсеименаЗаняты в разделе Панели оператора (HMI)
    Ответов: 4
    Последнее сообщение: 03.06.2020, 17:01
  3. Область ввода
    от ASo в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 30.09.2015, 09:50
  4. СП270 функциональная область- ошибка связи
    от dm55 в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 23.01.2015, 13:57
  5. Вопрос по конфигуратору СП200 "функциональная область"
    от Malyshevsergey в разделе Панели оператора (HMI)
    Ответов: 5
    Последнее сообщение: 16.12.2011, 20:46

Метки этой темы

Ваши права

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