Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18

Тема: Алгоритм управления задвижкой или двигателем

  1. #11
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,116

    По умолчанию

    Цитата Сообщение от melandr Посмотреть сообщение
    Это не диплом. проблема состоит не в чем делать, а как сделать правильно. Я работаю в SCADA DeltaV. Так вот в ее библиотеке есть такой функциональный блок DC(управление устройством). Он реализует логику управления или задвижкой, или двигателем с 2-мя или 3-мя состояниями. При этом контролируется полностью работа управляемого механизма. Например, при поступлении команды на запуск, если через заданное время не пришел сигнал подтверждения, происходит отключение механизма с выдачей аварии. Также на выходе статуса выдается состояние устройства: стоит, работает, авария, запускается и т.д.. У меня стоит задача реализовать такое же управление только на чистом FBD, используя элементы И, ИЛИ, НЕ, триггеры, таймеры. Просто пытаюсь делать, но не хватает опыта.
    Потому вас и отсылаю к ПР (Овен лоджик),что там вам помогут в освоении данного языка и составлении алгоритма (проекта) ,а потом уже реализуете на чем хотите . .Но я не настаиваю -решать вам .
    электронщик до мозга костей и не только

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

    По умолчанию

    Цитата Сообщение от melandr Посмотреть сообщение
    Это не диплом. проблема состоит не в чем делать, а как сделать правильно. Я работаю в SCADA DeltaV. Так вот в ее библиотеке есть такой функциональный блок DC(управление устройством). Он реализует логику управления или задвижкой, или двигателем с 2-мя или 3-мя состояниями. При этом контролируется полностью работа управляемого механизма. Например, при поступлении команды на запуск, если через заданное время не пришел сигнал подтверждения, происходит отключение механизма с выдачей аварии. Также на выходе статуса выдается состояние устройства: стоит, работает, авария, запускается и т.д.. У меня стоит задача реализовать такое же управление только на чистом FBD, используя элементы И, ИЛИ, НЕ, триггеры, таймеры. Просто пытаюсь делать, но не хватает опыта.
    Цитата Сообщение от melandr Посмотреть сообщение
    Пытаюсь это сделать в Кодесис. Подключил библиотеку OSCAT. Но те модули, которые есть в библиотеке работают не так, как мне нужно. И нет нормального описания, для того чтобы понять, как работает каждый модуль
    Обратите внимание на то, что кроме "oscat_basic.lib" есть еще и "oscat_building_100.lib".
    В этой библиотеке уже есть похожие ФБ
    ACTUATOR_3P

    Тип Функциональный блок
    Входы VAL : REAL (Входной управляющий сигнал 0 - 1)
    FORCE : BOOL (Режим управления ON / OFF, если TRUE)
    ON : BOOL (Управляющий сигнал, когда FORCE = TRUE)
    END_POS : BOOL (Вход для позиционного переключателя)
    DIAG : BOOL (Запуск диагностики)
    Выходы OUT1 : BOOL (Управляющий сигнал на открытие клапана)
    OUT2 : BOOL (Управляющий сигнал на закрытие клапана)
    POS : REAL (Имитация положения клапана)
    BUSY : BOOL (TRUE, когда клапан работает)
    ERROR : BOOL (Выход ошибки)
    Настройки MIN_ONTIME : TIME (Минимальное время работы двигателя)
    MIN_OFFTIME : TIME (Минимальное время простоя двигателя)
    MAX_RUNTIME : TIME (Максимальное время работы двигателя)
    AUTO_DIAG_TIME : TIME (Врмя, после которого автоматически осуществляется диагностика)
    CAL_RUNTIME : TIME (Время работы двигателя, после которого автоматически выполняется калибровка.)
    SWITCH_AVAILABLE : BOOL (TRUE, если концевой выключатель подключен)
    ACTUATOR_3P представляет собой интерфейс трехпозиционного привода для управления исполнительными устройствами (например, клапанами) с управляющими сигналами на открытие и закрытие.
    Сигнал на входе IN преобразуется в управляющие импульсы на выходах OUT1 и OUT2, которые соответственно управляют двигателем.
    Входной сигнал IN обрабатывается, а состояния обоих выходов (OUT1 и OUT2) изменяются таким образом, что при входном значении 0 клапан закрыт, при значении 1 клапан открыт, при 0.5 клапан полуоткрыт, и т.д.
    Если вход FORCE установлен в TRUE, то положение клапана соответствует не входному сигналу IN, а двоичному управляющему сигналу ON. Значение ON=FALSE означает, что клапан закрыт, а ON=TRUE означает, что клапан на 100% открыт.
    В режиме FORCE промежуточные положения невозможны. Клапан может быть только на 100% открытым или закрытым.
    Блок может также обрабатывать состояние концевых выключателей.
    Концевые выключатели должны быть подключены таким образом, чтобы при достижении как верхнего, так или нижнего положения, вход END_POS принимал значение TRUE и тем самым указывал, что клапан достиг одного из крайних положений.
    Чтобы включить функцию обработки концевых выключателей, настроечная переменная SWITCH_AVAILABLE должна иметь значение TRUE, в противном случае состояние концевых выключателей игнорируется.
    Вход диагностики (DIAG) позволяет в любое время запустить диагностику клапана и двигателя.
    После этого блок проводит цикл диагностики и сообщает об ошибке с помощью выхода ERROR. Цикл диагностики возвращает клапан в положение 0%, затем отрабатывает открытие 0% - 100% и следом закрытие до 0%.
    При этом также проверяется функционирование концевых выключателей (в том случае, если они были активированы настроечной переменной SWITCH_AVAILABLE).
    По завершении диагностического цикла клапан возвращается в положение, определяемое входом IN.
    Измеренные при прохождении диагностики времена хода используются при работе, чтобы максимально точно позиционировать клапан в заданную позицию.
    С помощью настроечной переменной AUTO_DIAG_TIME указывается, по истечении какого срока диагностика запускается автоматически, без её активации входом DIAG.
    При запуске, диагностический цикл автоматически проводится всегда. Если это значение равно 0, автоматический цикл диагностики не проводится.

    Выход BUSY показывает, что клапан меняет свое положение в данный момент или же проводится диагностика, и на выходе POS присутствует сигнал 0 – 1, соответствующий текущей позиции клапана.
    Для предотвращения биений клапана и, в случае мощных двигателей, для учета времени выбега привода можно установить минимальное время работы (MIN_ONTIME) и минимальное время простоя (MIN_OFFTIME).

    Клапан обычно то открывается, то закрывается, принимая различные положения. Чем больше перемещается клапан, тем сильнее он отклоняется от идеальной абсолютной позиции, поскольку с каждым шагом возникает небольшая ошибка в позиционировании, которая накапливается в течение множества перемещений.
    Чтобы бороться с этой ошибкой, с помощью настроечной переменной CAL_RUNTIME можно по прошествии определенного времени работы (совокупного времени всех перемещений) клапана автоматически выполнять калибровку.
    При этой калибровке двигатель переводит клапан в закрытое положение, а затем возвращает клапан в состояние, заданное значением входной переменной IN.
    Значение 0 для CAL_RUNTIME означает, что автоматическая калибровка не осуществляется.
    Настроечная переменная MAX_RUNTIME устанавливает максимальное время, которое требуется двигателю для полного хода от 0% до 100% или наоборот.

    Вызывает: T_PLC_MS, _RMP_NEXT

    Использует библиотеку Oscat Basic
    Что бы посмотреть программный код библиотечного ФБ, нужно открыть библиотеку как проект.
    Еще похожие ФБ из "oscat_building_100.lib"
    ACTUATOR_2P - является интерфейсом для двухпозиционных приводов, таких как электромагнитные клапаны.

    ACTUATOR_A

    ACTUATOR_A служит для управления исполнительными приводами с аналоговым входом. Блок имеет два входа (I1 и I2), значения которых от 0 до 255 перекрывают весь рабочий диапазон выхода Y. Выход Y имеет тип WORD, и его рабочий диапазон задается настроечными переменными OUT_MIN и OUT_MAX. Входное значение 0 формирует выходное значение OUT_MIN, а входное значение 255 формирует значение OUT_MAX на выходе.
    ACTUATOR_COIL - служит для управления простыми клапанами. Выход OUT при этом меняет состояние вслед за входным сигналом IN. Если для настроечной переменной SELF_ACT_CYCLE установлено значение больше 0, клапан автоматически активируется на время SELF_ACT_TIME в случае, если он был выключен в течение времени SELF_ACT_CYCLE. Совместимый с ESR выход состояния передает изменения состояния клапана для дальнейшей обработки или для архивации.
    ACTUATOR_PUMP

    ACTUATOR_PUMP представляет собой интерфейс насоса со счетчиком часов наработки. Насос может включаться входом IN либо MANUAL. Переменные настроек MIN_ONTIME и MIN_OFFTIME задают минимальную периодичность включения и минимальную продолжительность работы. Если вход IN установлен в TRUE меньшее, чем MIN_ONTIME время, то насос продолжает работать, пока не будет достигнута минимальная продолжительность его работы. Если вход IN установлен в TRUE дольше, чем MIN_ONTIME, то насос работает, пока IN снова не станет FALSE.

    Если насос нужно запустить снова через короткое время, блок ожидает, пока не истечет время MIN_OFFTIME, и только затем насос снова включается. С помощью настроечной переменной RUN_EVERY задается время простоя насоса, после которого он автоматически включается, чтобы предотвратить блокировку насоса. В этом случае после автоматического включения насос работает в течение времени MIN_ONTIME. Установкой RUN_EVERY = T#0s можно отключить автоматический запуск насоса.

    Встроенный счетчик часов наработки подсчитывает время работы насоса в часах, а также количество циклов включения. Оба значения могут быть сброшены в ноль подачей TRUE на вход RST. Значение счетчика является реманентным и не теряется при потере питания или сбросе контроллера. И RUNTIME, и CYCLES являются значениями типа REAL, и поэтому не переполняются, как обычные TIME, после 50 дней.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    если
    Цитата Сообщение от melandr Посмотреть сообщение
    Это не диплом.
    то чего такая упёртость
    Цитата Сообщение от melandr Посмотреть сообщение
    реализовать такое же управление только на чистом FBD
    Если Вам в принципе знакомо программирование а не только поиск готовых блоков то это :
    Цитата Сообщение от melandr Посмотреть сообщение
    . Например, при поступлении команды на запуск, если через заданное время не пришел сигнал подтверждения, происходит отключение механизма с выдачей аварии. Также на выходе статуса выдается состояние устройства: стоит, работает, авария, запускается.
    превращается в это :

    Код:
    входы
      команда на запуск :буль;
      подтверждение:буль;
      заданное время:время;
    выходы
      механизм:буль;
      статус:(стоит,запускается,работает,авария);
    внутри
      таймер:задержка включения;
    
    если нет механизма и есть подтверждение тогда
      статус := авария;  (*тупо контакт реле прилип ?  ау .. постановщик*)
    если нет команды на запуск тогда 
      статус := стоит;  (*и из аварии тоже выходим ? ау.. постановщик*)
    конец_если; 
    
    ходим по статусу
      стоит:
        если команда_на_запуск тогда 
          статус := запускается; 
          таймер сбросить; 
        конец_если;
      запускается:
        таймер ждет подтверждения заданное время;
        если таймер не дождался тогда
          статус:=авария;
        иначе если подтверждение тогда
          статус:=работает;
        конец_если;
      работает:
        если нет подтверждения тогда
          статус:=авария;
        конец_если;
    больше_не_ходим;
    
    механизм:=статус = запускается или статус = работает;
    Это всего лишь развернутый вариант решения.Вариант под квадратики

    Код:
    таймер активируется если команда на запуск и нет подтверждения
    статус 'стоит' если нет комады на запуск
    статус 'запускается' если активирован таймер
    статус 'работает' если подтверждение и статус не 'авария'
    статус 'авария' если фиксация таймера или (нет команды и есть подтверждение) или (статус 'работает' и нет подтверждения)
    механизм включен если статус не 'авария' и есть команда на запуск
    PS
    Кстати - текст конвертируется в мазохисткий FBD (при наличии CFC)
    Последний раз редактировалось Валенок; 21.04.2013 в 14:33.

  4. #14

    По умолчанию

    Валенок большое спасибо, немного прояснили ситуацию. Правда я ST не очень знаю, больше FBD или CFC.
    Всем большое спасибо, по поводу редактирования блоков не знал. Хотя хотелось посмотреть, что у них внутри

  5. #15

    По умолчанию

    Валенок, а можно поподробней по поводу конвертации ST в FBD(или CFC)

  6. #16

    По умолчанию

    ну там же все в кдсе, наводите курсор на ФБ, кликаете правой кнопкой, в открывшемся меню выбираете конвертировать, ну или справку почитайте(хотя я не знаю есть ли там про это или нет). в цфц и сфц конечно никак, а обратно и из всех остальных в три доступных, плиз..
    Последний раз редактировалось lazhator; 22.04.2013 в 04:17.

  7. #17

    По умолчанию

    Melandr, если есть большое стремление к познанию нового, нарисуйте свою диаграмму в пакете StateFlow (в MatLAB), затем с помощью пакета Simukink PLC Coder (в MatLAB) получаете программу на языке ST для CoDeSys. Останется заменить переменные реальными входами и выходами. Это настоящее автоматное программирование для ПЛК.
    Для контроллеров Siemens есть готовое средство.Называется - Hi-Graf.

  8. #18
    Пользователь
    Регистрация
    17.02.2015
    Адрес
    Можга
    Сообщений
    51

    По умолчанию

    2017-02-01_06-23-52.png
    Не могу разобраться в макросе.
    на вход IN подаю от 0 до 255
    END_POS сигнал от концевика = 1
    ARE = 0
    TEST = 0
    ARX = 0
    И ничего не происходит.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. управление двигателем 12в
    от slava2006 в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 04.12.2009, 22:15
  2. САУ-МП алгоритм 20
    от незарегистрированный в разделе Подбор Оборудования
    Ответов: 15
    Последнее сообщение: 15.12.2008, 17:56
  3. Алгоритм ПВУ
    от Назаров Александр в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 05.06.2008, 21:21
  4. управление задвижкой
    от незарегистрированный в разделе Подбор Оборудования
    Ответов: 11
    Последнее сообщение: 29.11.2007, 09:22

Ваши права

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