Страница 350 из 365 ПерваяПервая ... 250300340348349350351352360 ... ПоследняяПоследняя
Показано с 3,491 по 3,500 из 3644

Тема: разные вопросы новичка

  1. #3491

    По умолчанию

    Цитата Сообщение от p-nik Посмотреть сообщение
    Добрый день.
    Подскажите, макросы работают в общем цикле (как вызов Fb в обычном ПЛК) или как-то отдельно?
    В общем цикле, макросы на FBD, это ФБ на CFC (или ST).

  2. #3492

    По умолчанию

    Цитата Сообщение от Nsft Посмотреть сообщение
    Здравствуйте. Возник вопрос касательно чтения значения мощности с счетчика WB-MAP3e на ПР205. Видел на форуме, что возникала такая проблема, но она была решалась в Codesys, а не в owen logic. Связь ПР с счетчиком есть, значения напряжения считываются исправно, а вот значения суммарной активной мощности нет. Если кто-нибудь сталкивался, то не могли бы подсказать, как справиться с данной проблемой?Вложение 74276Вложение 74277Вложение 74278Вложение 74279
    Попробуйте считывать как два 32-битных регистра, потом пропустить через макрос rDIV (деление 64-битных чисел представленных как 2 32-битных)
    Он, кстати, покажет остаток от деления, который можно отображать как десятичную часть.
    Owen.jpg
    Код:
    function_block rDIV
    
        var_input
           x1h : udint;
           x1l : udint;
           x2h : udint;
           x2l : udint;
        end_var
    
        var_output
           QH : udint;
           QL : udint;
           
           MH : udint;
           ML : udint;
        end_var
    
        var
           cnt : udint; 
        end_var
    
        if x2h + x2l = 0 then return; end_if
    
        cnt := 1; QH := 0; QL := 0;
        
        while x2h < 2147483648 do
            x2h := shl(x2h, 1);
            if x2l > 2147483647 then x2h := x2h + 1; end_if
            x2l := shl(x2l, 1); cnt := cnt + 1;
        end_while
        
        while cnt > 0 do
            QH := shl(QH, 1);
            if QL > 2147483647 then QH := QH + 1; end_if
            QL := shl(QL, 1);
    
            if x1h > x2h then
                x1h := x1h - x2h; QL := QL + 1;
                if x1l >= x2L then
                    x1l := x1l - x2l;
                else
                    x1l := x2l - x1l; x1l := 4294967295 - x1l; x1l := x1l + 1;
                    x1h := x1h - 1;
                end_if
            elsif x1h = x2h then 
                if x1l >= x2l then
                    x1h := 0; x1l := x1l - x2l; QL := QL + 1;
                end_if
            end_if
    
            x2l := shr(x2l, 1);
            if x2h > shl(shr(x2h, 1), 1) then x2l := x2l + 2147483648; end_if
            x2h := shr(x2h, 1);
    
            cnt := cnt - 1;
        end_while
        MH := x1h; ML := x1l;
    
    end_function_block

  3. #3493

    По умолчанию

    Подскажите, в чем может быть ошибка в программе макроса?
    переменные P1_start и P2_Start должны запускать c интервалом в 5 сек (задается отдельно), но фактически они запускаются только в разные циклы.
    Если выполнять программу в основном листе, то все работает.
    Есть ли особенности хранения переменных внутри макроса?
    piv.PNG
    Последний раз редактировалось p-nik; 13.03.2024 в 15:44.

  4. #3494

    По умолчанию

    Цитата Сообщение от p-nik Посмотреть сообщение
    Подскажите, в чем может быть ошибка в программе макроса?
    переменные P1_start и P2_Start должны запускать c интервалом в 5 сек (задается отдельно), но фактически они запускаются только в разные циклы.
    Если выполнять программу в основном листе, то все работает.
    Есть ли особенности хранения переменных внутри макроса?
    piv.PNG
    А если так:
    Owen.jpg

  5. #3495

    По умолчанию

    Тогда, нажимаю старт - загораются оба с разностью в цикл.
    делаю сброс-сет старт - загораются как надо

  6. #3496

    По умолчанию

    Цитата Сообщение от p-nik Посмотреть сообщение
    Тогда, нажимаю старт - загораются оба с разностью в цикл.
    делаю сброс-сет старт - загораются как надо
    Было бы проще выложить ваш проект, чтобы не тратить время на перерисовку со скрина ( проблема скорее всего в переменной, которая не сохраняется в макросе)
    Возможно надо поставить энергонезависимость.

  7. #3497

    По умолчанию

    Цитата Сообщение от p-nik Посмотреть сообщение
    Тогда, нажимаю старт - загораются оба с разностью в цикл.
    делаю сброс-сет старт - загораются как надо
    Вы бы задачу поподробней изложили. Включение P2_start через 5 сек после P1_start по фронту включения можно проще сделать , не совсем понятно со сбросом. У Вас сейчас сброс происходит по снятию сигнала START .

  8. #3498

    По умолчанию

    я выложил упрощенную версию моей программы. Задача была - блокировка запуска одновременно 2 и более насосов.
    Сейчас условие блокировки поставил на тригеры и все теперь работает.
    piv.PNG

  9. #3499

    По умолчанию

    По сути задача задержки включения второго насоса относительно первого , верно?

  10. #3500

    По умолчанию

    Цитата Сообщение от Nsft Посмотреть сообщение
    Здравствуйте. Возник вопрос касательно чтения значения мощности с счетчика WB-MAP3e на ПР205. Видел на форуме, что возникала такая проблема, но она была решалась в Codesys, а не в owen logic. Связь ПР с счетчиком есть, значения напряжения считываются исправно, а вот значения суммарной активной мощности нет. Если кто-нибудь сталкивался, то не могли бы подсказать, как справиться с данной проблемой?Вложение 74276Вложение 74277Вложение 74278Вложение 74279
    На основе макроса rDIV можно сделать макрос dig64, который разложит 64-битное число на десятичные цифры до любого разряда:
    Код:
    function_block dig64
    
        var_input
            xH : udint;
            xL : udint;
        end_var
    
        var_output
           d0 : udint;
           d1 : udint;
           d2 : udint;
           d3 : udint;
           d4 : udint;
           d5 : udint;
           d6 : udint;
           d7 : udint;
           d8 : udint;
           d9 : udint;
           d10 : udint;
           d11 : udint;
           d12 : udint;
           d13 : udint;
           d14 : udint;
           d15 : udint;
           d16 : udint;
           d17 : udint;
           d18 : udint;
           d19 : udint;
           d20 : udint;
           d21 : udint;
           d22 : udint;
           d23 : udint;
           d24 : udint;
           d25 : udint;
           d26 : udint;
           d27 : udint;
           d28 : udint;
           d29 : udint;
           d30 : udint;
        end_var
    
        var
           div : rDIV;
           qH : udint;
           qL : udint;
        end_var
    
        div(x1h:=xH, x1l:=xL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d0);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d1);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d2);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d3);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d4);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d5);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d6);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d7);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d8);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d9);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d10);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d11);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d12);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d13);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d14);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d15);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d16);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d17);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d18);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d19);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d20);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d21);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d22);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d23);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d24);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d25);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d26);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d27);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d28);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d29);
        div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d30);
    end_function_block
    Owen.jpg

Страница 350 из 365 ПерваяПервая ... 250300340348349350351352360 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 24.05.2024, 13:53
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 15:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 10:29

Ваши права

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