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

Тема: дискретный выход ТРМ 1032 управление КЗР ( 4-20 мА) возможно?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию дискретный выход ТРМ 1032 управление КЗР ( 4-20 мА) возможно?

    Прошу помочь в разработке программы для управления КЗР ( АСТА ЭПА-204-220В). управление данным КЗР организовано 4-20 мА. проблема в его управление связана с тем что щит автоматики ИТП собран на контролере ТРМ1032 с дискретным управлением.в наличие есть ПР200-220.22.1.0. как это можно реализовать ?

  2. #2

    По умолчанию

    Цитата Сообщение от Сергей Сергеевич Посмотреть сообщение
    Прошу помочь в разработке программы для управления КЗР ( АСТА ЭПА-204-220В). управление данным КЗР организовано 4-20 мА. проблема в его управление связана с тем что щит автоматики ИТП собран на контролере ТРМ1032 с дискретным управлением.в наличие есть ПР200-220.22.1.0. как это можно реализовать ?
    Вот здесь есть эмулятор 3-позиционного ИМ (в файле "Test_EMU_3pos.owle" - ФБ "Emulator_3Pos_") - можете его применить

  3. #3

    По умолчанию

    спасибо. буду пробовать

  4. #4

    По умолчанию

    Была задача управления моторизованной задвижкой без обратной связи ни по концевикам ни по положению - в приводе отсутствовали для подключения и те и другие. А заказчик требовал снимать напряжение при расчётном достижении крайних положений. Хоть сразу на скорую руку просто сделал импульсы заданной длины, позже собрал модель моторизованной задвижки.
    Модель MOV (моторизованной задвижки):
    Код:
    ///<Description>Эмулятор задвижки, меняющей состояние под воздействием трёхпозиционнгог регулятора.</Description>
    ///<Author>!!FPA!!</Author>
    ///<GroupName>Управляющие и регулирующие модули</GroupName>
    
    function_block Emulator_Damper_
    
        var_input
            ///<Description>Сигнал Открыть</Description>
            xOpen: BOOL;
            ///<Description>Сигнал Закрыть</Description>
            xClose: BOOL;
            ///<Description>Время полного хода задвижки, мс</Description>
            udiFullStroke: udint;
            ///<Description>Время выборки люфта задвижки при открытии</Description>
            udiBacklash_Open: udint;
            ///<Description>Время выборки люфта задвижки при закрытии</Description>
            udiBacklash_Close: udint;
            ///<Description>Верхний предел обратного сигнала задвижки (положения). Для задвижки с контролем положения</Description>
            rPos_Max: REAL:=100.0;
            ///<Description>Нижний предел обратного сигнала задвижки (положения). Для задвижки с контролем положения</Description>
            rPos_Min: REAL:=0.0;
    
        end_var
    
        var_output
            ///<Description>Обратный сигнал задвижки. Для задвижки с контролем положения</Description>
            rPos: REAL;
            ///<Description>Сигнал верхнего предела задвижки</Description>
            bOpened: BOOL;
            ///<Description>Сигнал нижнего предела задвижки</Description>
            bClosed: BOOL;
        end_var
    
        var
            udiCurrent, udiCycle: udint;
            udiPrevious: udint := 0;
            udiBacklash_Open_: udint;   // выбранная часть люфта при открытии
            udiBacklash_Close_: udint;  // выбранная часть люфта при закрытии
            udiRunTime: udint;          // часть времени udiCycle, потраченная на перемещение
            rFullStroke: real;
            h: real;
        end_var
    
        // вычисление длительности текущего цикла
        udiCurrent  := time_to_udint(get_time());
        udiCycle    := udiCurrent - udiPrevious;
        udiPrevious := udiCurrent;
    
        // обработка люфта - часть сигнала перемещения расходуется на компенсацию люфта
        udiRunTime := udiCycle;
        if xOpen then
            if udiRunTime <= udiBacklash_Close_ then
                udiBacklash_Close_ := udiBacklash_Close_ - udiRunTime;
            else
                udiBacklash_Close_ := 0;
            end_if;
            if udiBacklash_Open_ < udiBacklash_Open then
                udiBacklash_Open_ := udiBacklash_Open_ + udiRunTime;
                if udiBacklash_Open_ > udiBacklash_Open then
                    udiRunTime := udiBacklash_Open_ - udiBacklash_Open;
                    udiBacklash_Open_ := udiBacklash_Open;
                else
                    udiRunTime := 0;
                end_if;
            end_if;
        end_if;
        if xClose then
            if udiRunTime <= udiBacklash_Open_ then
                udiBacklash_Open_ := udiBacklash_Open_ - udiRunTime;
            else
                udiBacklash_Open_ := 0;
            end_if;
            if udiBacklash_Close_ < udiBacklash_Close then
                udiBacklash_Close_ := udiBacklash_Close_ + udiRunTime;
                if udiBacklash_Close_ > udiBacklash_Close then
                    udiRunTime := udiBacklash_Close_ - udiBacklash_Close;
                    udiBacklash_Close_ := udiBacklash_Close;
                else
                    udiRunTime := 0;
                end_if;
            end_if;
        end_if;
    
        // вычисление положения задвижки, концевых переключателей
        rFullStroke  := udint_to_real(udiFullStroke);
        h := (rPos_Max - rPos_Min) * udint_to_real(udiRunTime);
        if xOpen then
            rPos := rPos + h / rFullStroke;
        end_if;
        if xClose then
            rPos := rPos - h / rFullStroke;
        end_if;
        if rPos >= rPos_Max then
            rPos := rPos_Max;
            bOpened := true;
            bClosed := false;
        elsif rPos <= rPos_Min then
            rPos := rPos_Min;
            bOpened := false;
            bClosed := true;
        else
            bOpened := false;
            bClosed := false;
        end_if;
    
    end_function_block

    Модель можно использовать для требуемого преобразования импульсов управления 3-позиционным приводом в аналоговый сигнал.

    В коде есть комментарии к переменным, их назначение можно понять.

    Задавайте люфт равным нулю, значение выхода от 0,0 до 1,0, время полного хода от 30 до 90 секунд (30000...90000 мс).
    Должно работать.

    Мне кажется, что тип выхода в ПР200 настраивается перемычками, а может и путаю.

    Ошибся в примере с моделью ПР200, не увидел её в первом сообщении, ну да ничего страшного - переделаете...
    Если не знаете, что исправить - спрашивайте.
    Вложения Вложения
    Последний раз редактировалось FPavel; 07.11.2024 в 21:13.

  5. #5

    По умолчанию

    спасибо за помощь! в субботу поеду на объект буду пробывать

  6. #6

    По умолчанию

    тип входа настраивается перемычками, тип выхода заказной.....

Похожие темы

  1. Дискретный вход - аналоговый выход
    от EL2019 в разделе Среда программирования OWEN Logic
    Ответов: 5
    Последнее сообщение: 08.07.2019, 23:07
  2. Управление нагревателем через дискретный выход.
    от Jakan в разделе Программируемые реле
    Ответов: 20
    Последнее сообщение: 04.05.2019, 07:34
  3. Дискретный вход/выход в ПМ01.
    от Flint в разделе Разработки
    Ответов: 2
    Последнее сообщение: 23.01.2014, 06:41
  4. дискретный выход от аналогово сигнала
    от evgeha в разделе Master SCADA 3
    Ответов: 7
    Последнее сообщение: 20.10.2010, 17:51
  5. Дискретный транзисторный выход
    от Crazy в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 05.06.2008, 13:12

Ваши права

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