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

Тема: Пр200 и Vacon NXL

  1. #11

    По умолчанию

    Вчера работал с VECON 100 - только вся документация по Modbus на английском.
    Возможно, что-то совпадёт из адресов и способов обработки.

    Как понимаю, 42101 и 32101 это такая форма записи функций и адресов - т.е. 3x и 2100, 4x и 2100 - все адреса из документа нужно уменьшить на 1.

    Обработчик обмена с ПЧВ
    Код:
    ///<Description>ФБ выполняет преобразование принятых и отправляемых команд при сетевом обмене с ПЧВ VACON.</Description>
    ///<Author>!!FPA!!</Author>
    ///<GroupName>ПЧВ</GroupName>
    
    function_block VFD_VACON_
    
        var_input
            bSetStart       :   bool;
            rSetSpeed       :   real;
            wGetSpeed       :   udint;  // адрес 0837h (2103) - рабочая скорость, диапазон 0-5000 => 0-50.00 (умножить на 0.01)
            wGetIout        :   udint;  // адрес 0839h (2105) - выходной ток
            wGetUChainDc    :   udint;  // адрес 083Dh (2109) - напряжение на ЗПТ *1 В
            wNoutPower      :   udint;  // адрес 083Bh (2107) - выходная мощность *0,1 %
            wGetIrate       :   udint;  // адрес 0070h (112) - номинальный ток (умножить на 0.1)
            wGetStateVFD    :   udint;  // адрес 0834h (2100) - регистр состояния:
                                        //  0001 - вращение в прямом направлении
                                        //  0002 - вращение в обратном направлении
                                        //  0003 - остановка
            wGetErrorCode   :   udint;  // адрес 083Eh (2110)
            bResetAlarm     :   bool;
        end_var
    
        var_output
            wSetCmd         :   udint;  // адрес 07D0h (2000):
                                        //  0001 - прямо,
                                        //  0008 - остановка выбегом,
                                        //  0016 - остановка замедлением,
                                        //  0004 - сброс аварии
            wSetSpeed       :   udint;  // адрес 1000h (4096), диапазон 0-100% => 0-10000 (умножить на 100)
            rGetSpeed       :   real;
            rGetIout        :   real;
            rGetUChainDC    :   real;   // напряжение на ЗПТ
            rNoutPower      :   real;   // выходная мощность
            rGetIout_A      :   real;
            rGetIrate_A     :   real;
            bStateStop      :   bool;
            bStateRun       :   bool;
            bStateFault     :   bool;
            wErrorCode      :   udint;
        end_var
    
        var 
            localVariable : real;
        end_var
    
    
    if bResetAlarm then
        wSetCmd := 4;
    else
        if bSetStart then
            wSetCmd := 1;
        else
            wSetCmd := 16;
        end_if;
    end_if;
    
    wSetSpeed   := real_to_udint(rSetSpeed * 100);
    rGetSpeed   := udint_to_real(wGetSpeed) * 0.02;
    
    rGetIout_A  := udint_to_real(wGetIout) * 0.1;
    rGetUChainDC :=udint_to_real(wGetUChainDc) * 0.1;
    rNoutPower  := udint_to_real(wNoutPower) * 0.1;
    rGetIrate_A := udint_to_real(wGetIrate) * 0.1;
    if wGetIrate = 0 then
        rGetIout := 0;
    else
        rGetIout := 100.0 * rGetIout_A / rGetIrate_A;
    end_if;
    bStateStop  := not (wGetStateVFD.1);
    bStateRun   := (wGetStateVFD.1);
    bStateFault := (wGetStateVFD.3);
    wErrorCode  := wGetErrorCode;
    
    end_function_block
    На вход поступают команды из программы:
    - bSetStart - включить ПЧВ
    - rSetSpeed - скорость вращения, в %
    - bResetAlarm - импульс длительностью 3 с от таймера TP - сброс ошибки
    На вход поступают значения из Modbus:
    - wGetSpeed - актуальная скорость ПЧВ с учётом разных ограничений в самом ПЧВ (например, максимального тока)
    - и др. - описаны в комментариях

    На выходе:
    - состояния ПЧВ,
    - скорость ПЧВ, в %
    - рабочий ток, в %

    Алгоритмы, которые дают мне для реализации не привязываются к абсолютным значениям, а всегда вычисляются в % - и рабочий ток и скорость. Поэтому и ФБ оперирует с %.

    Ещё, при разборе примера я неправильно понял и в конфигурации сделал слово управления и слово состояния размером в 2 регистра - нужно уменьшить до 1 регистра.
    Всё читается функцией 3, но и функция 4 тоже даёт правильный результат. Я везде оставил функцию 3.
    Изображения Изображения

  2. #12

    По умолчанию

    Добавлю примечание.

    Сразу не обратил внимание, что команда сброса ошибки bResetAlarm получила приоритет и при подаче на "исправный" ПЧВ прервёт команду пуск bSetStart.
    Наверное, нужно усложнить условие (bResetAlarm and 0bStateFault), тогда на исправный ПЧВ команда сброса не отправится.

  3. #13

    По умолчанию

    FPavel , спасибо! Использую Ваши наработки... если удастся связаться с частотником.

  4. #14

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Добавлю примечание.

    Сразу не обратил внимание, что команда сброса ошибки bResetAlarm получила приоритет и при подаче на "исправный" ПЧВ прервёт команду пуск bSetStart.
    Наверное, нужно усложнить условие (bResetAlarm and 0bStateFault), тогда на исправный ПЧВ команда сброса не отправится.
    Или записывать конкретный бит в слово wSetCmd (.0 - пуск, .2 - сброс и т.д.) во избежание прерывания других команд.

  5. #15

    По умолчанию

    Цитата Сообщение от KSergey Посмотреть сообщение
    Или записывать конкретный бит в слово wSetCmd (.0 - пуск, .2 - сброс и т.д.) во избежание прерывания других команд.
    Наверное, в конкретном ПЧВ VECON 100 для сброса можно сделать именно битовой операцией, но для остальных команд (старт вперёд и плавный останов) лучше оставить в виде чисел - т.к. они взаимоисключающие.
    Тогда получится
    Код:
        if bSetStart then
            wSetCmd := 1;
        else
            wSetCmd := 16;
        end_if;
        if bResetAlarm then
            wSetCmd.2 := true;
        end_if;
    Делал тогда в спешке, на основе каких-то других наработок, не всё учёл...

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

    По умолчанию

    Васон 100 небыло, был Васон 0010. Отметил главные особенности:
    1. Реальный регистр = идентефикатор (там именно так звалось в карте) - 1
    2. Его A, B это внезапно B, A
    Это все может быть родовым заклятьем

  7. #17

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Васон 100 небыло, был Васон 0010. Отметил главные особенности:
    1. Реальный регистр = идентефикатор (там именно так звалось в карте) - 1
    2. Его A, B это внезапно B, A
    Это все может быть родовым заклятьем
    Т.е. у него может быть перепутана полярность RS485? Внезапненько! Пожалуй, это то, с чего мне следует начать поиски.

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

Похожие темы

  1. Vacon 100 FLOW Slave + ПР200 MASTER. реализация слов состояния и управления.
    от Григори в разделе Среда программирования OWEN Logic
    Ответов: 7
    Последнее сообщение: 17.08.2023, 16:58
  2. Vacon 100 Flow + StreamLux + ПР200
    от Григори в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 06.09.2022, 20:49
  3. Vacon + ПР200
    от Григори в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 14.07.2022, 07:56
  4. Овен ПЛК 160 + Vacon ПЧ NXL
    от s3rjke в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 14.07.2015, 21:51
  5. Ип 320 и частотники vacon nxl
    от topor18 в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 24.12.2014, 12:35

Ваши права

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