Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: Как из ФБ и Ф управлять DO

  1. #11
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,317

    По умолчанию

    Да сделайте же промежуточные массивы и обращайтесь по индексу раз приперло

  2. #12

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Да сделайте же промежуточные массивы и обращайтесь по индексу раз приперло
    Вопрос именно в том и заключается, как привязать индекс массива к выходу плк.
    Т.е. чтобы при изменении элемента массива включался соотв. выход. И наоборот.

  3. #13

    По умолчанию

    Цитата Сообщение от Barboris Посмотреть сообщение
    Вопрос именно в том и заключается, как привязать индекс массива к выходу плк.
    Т.е. чтобы при изменении элемента массива включался соотв. выход. И наоборот.
    Во вложении - пример привязки элементов массива входов и массива выходов (20 входов и 20 выходов), соответственно, к входам и выходам ПЛ110-60 (данная модель плк выбрана для примера).
    Далее, при написании задачи, можно отслеживать состояние i-го элемента массива входов, и, соответственно, управлять j-м элементом массива выходов, не занимаясь каждый раз многократными повторами и присваиваниями.

    P.S. Если честно, то алгоритм самой задачи не совсем ясен.
    Вложения Вложения
    • Тип файла: rar PR_1.rar (6.9 Кб, Просмотров: 33)
    Последний раз редактировалось kolyan; 11.08.2012 в 20:58.

  4. #14

    По умолчанию

    Kolyan, cпасибо за ваш пример. Именно так все конечно работает. А я хотел присваивание делать внутри функции. Или хотя бы ФБ. Пока переделал примерно по методу Yegor - все кроме DO присваивается функцией внутри ФБ, а DO - в основной программе снаружи ФБ (как его выходная переменная (и используется внутри него))

    Вот так примерно

    Последний раз редактировалось Barboris; 13.08.2012 в 11:08.

  5. #15

    По умолчанию

    Не рекомендую делать управление выходами и работу с входами в функциях и ФБ.
    1. Программа становится не переносима, ФБ и Ф не универсальные.
    2. Вспомнить потом что и зачем делалось сложно.

    Не поленитесь, и создайте в основной программе массив в него записывайте данные из ФБ и из этого массива берите данные для выходов.
    В дальнейшем сильно облегчит жизнь.

  6. #16

    По умолчанию

    Стоит подобная задача, управлять множеством реле с обратной связью и неким контролем на разрешение включения реле и обрыве. Но в этой теме все примеры, которые выкладывали недоступны((. Как правильно организовать ФБ, передавать каждый раз в него значения входа, выхода и других переменных как параметры, а после ФБ присваивать входы\выходы обращаясь к внутренним переменным ФБ или можно как-то через указатель один раз передать и потом уже использовать в теле ФБ?
    Первым способом вроде как работает, я каждый раз в параметры ФБ передаю значения входа, бит ModBus(устанавливается\сбрасывается по команде с ПК) и число(мощность нагрузки), внутри происходит проверка, таймер на включение с интервалом 1с, если после истечение времени на входе не будет сигнала, то выключаем реле. Также проходит проверка на мощность. Проверяется текущая мощность с допустимой, если текущая мощность + мощность реле > допустимой, то мы не включаем реле иначе к текущей + мощность реле. А после отработки ФБ я входу и регистру ModBus присваиваю значения обращаясь к экземпляру ФБ через точку к его внутренним переменным или выходным.
    Что посоветуете?

  7. #17
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Я делал булевый массив. В ФБ\ПОУ оперировал по индексу. В конце ПЛЦ_ПРГ ставил вызов на собственную ПОУ (проще делать на LD), где массив раскладывается на реальные DO.
    На картинке показано упаковка входов в массив и распаковка другого массива на выхода.
    vjgfjdgj.jpg

  8. #18

    По умолчанию

    В LD не силен совсем, мне понятнее будет ST где все операции наглядно видно, что и как происходит. А какая разница, что мы будем после каждого вызова ФБ устанавливать значения выхода, что после всех ФБ установим значения выходов обращаясь выход:=массив[0] и т.д.
    В общих чертах у меня сейчас выглядит так:
    FB1(in1, mb_bit1, power1);
    out1:=FB.output;
    mb_bit1:=FB.mb_bit;

    FB2(in2, mb_bit2, power);
    out2:=FB.output;
    mb_bit2:=FB.mb_bit;
    И таких вызовов от 40шт, на каждое реле. Мы в ФБ передаем бит из ModBus_slave, значение выхода и некий параметр мощности за который отвечает конкретное реле. И внутри ФБ происходит логика включения и выключения реле с контролем обрыва и мощности.
    Это примерный вариант, по памяти, так как весь проект на работе.
    Последний раз редактировалось Casper17; 09.08.2019 в 10:13.

  9. #19
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Я привел пример своей работы. Задача была обрабатывать в цикле четыре одинаковых процесса, но с разными параметрами для каждого процесса. Причем в одно время должен работать только один процесс, остальные ждать его завершения. Что бы не городить тонны букав на ST я делал свою ПОУ на LD, а в PLC_PRG на ST делается общий контроль всей работы.
    В моем случае массивы объявлены глобально, следовательно доступны из любого ФБ\ПОУ как прямо указанному индексу, так и по индексу, в качестве которого работает переменная типа INT.
    Вообще, упрощено ФБ работает так - затолкали ему на вход данные>ФБ их прожевал, используя только локальные переменные своего экземпляра, а так же глобальные>выкинул на выход. Используя массивы можно затолкать в цикл FOR (например) свои ФБ, которые используют переменную цикла (глобальная) в качестве индекса, а это сильно сократит количество кода при выполнении большого количества однотипных задач.

  10. #20

    По умолчанию

    А если как-то передать указатель на вход, выход один раз каждому экземпляру ФБ и внутри него уже сразу менять состояние, а не после того как ФБ отработал, брать его выходные данные и устанавливать значения входа\выхода.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. трм 151 можно ли управлять к1 и к2 без
    от Ermak в разделе Эксплуатация
    Ответов: 14
    Последнее сообщение: 01.10.2010, 12:14
  2. управлять не через Scada
    от AntoNechayuk в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.12.2009, 09:11
  3. Вход 1-10В, управлять напряжением
    от termsl в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 16.10.2008, 15:16
  4. Вход 1-10В, управлять напряжением
    от termsl в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 16.10.2008, 15:06
  5. Как управлять МВУ8 У с компьютера
    от Валера Храмцов в разделе Мх110
    Ответов: 4
    Последнее сообщение: 26.05.2008, 15:09

Ваши права

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