Страница 43 из 66 ПерваяПервая ... 33414243444553 ... ПоследняяПоследняя
Показано с 421 по 430 из 658

Тема: Функциональные блоки на языке ST

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    У меня вроде попроще вышло, Таймер TON с паузой, Вложение 73824 PT можно перевести в секунды или ms
    Скрытый текст:
    Код:
    function_block TOnP // Таймер TON   с паузой
        var_input 
           In,P : bool;      
           PT : udint; // Задача времени таймера  udint
        end_var
        var_output 
           Q : bool; //
           ET: udint;  // Выход  времени таймера  udint
        end_var
        var 
           x : bool; 
           T3,T0,Tp :udint;
        end_var  
              
          PT:=(PT*1000);   // PT можно перевести в секунды или  ms  
          T3:=time_to_udint(get_time());      
          if In  and not x then T0:=T3; Q:=false; x:=true; end_if
          if In and P and  ET<=PT then Tp:=T3-T0-ET; end_if 
          if In and not P and  ET<=PT then ET:=T3-T0-Tp; end_if      
          if In  and  ET>=PT then ET:=PT; Q:=true;  end_if 
          if not In  then ET:=0;T0:=0;Tp:=0; x:=false; Q:=false; end_if       
    end_function_block
    Ну так я тоже могу "упростить"
    Код:
    tx:= time_to_udint(GET_TIME());
    IF P THEN StartTime:= tx - ET; END_IF
    IF IN AND NOT clk THEN StartTime:= tx; clk:= TRUE;
    ELSIF NOT IN THEN clk:= FALSE; Q:= FALSE; ET:= 0; END_IF
    IF clk AND NOT Q THEN IF PT > (tx - StartTime) THEN ET:= tx - StartTime; ELSE  ET:= PT; END_IF Q:= ET = PT AND IN; END_IF
    По числу строк кода мой ещё проще...
    Последний раз редактировалось petera; 23.02.2024 в 11:05.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #422

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Ну так я тоже могу "упростить"
    По числу строк кода мой ещё проще...
    Эээ, нет, угадаю не с 5 а с 4 нот)))
    Код:
          T3:=time_to_udint(get_time()); PT:=(PT*1000);   // PT можно перевести в секунды или  ms     
          if In  and not x then T0:=T3; Q:=false; x:=true; end_if
          if In and P and ET<=PT then Tp:=T3-T0-ET; elsif In and not P and  ET<=PT then ET:=T3-T0-Tp; end_if      
          if In and ET>=PT then ET:=PT; Q:=true; elsif not In then ET:=0;T0:=0;Tp:=0; x:=false; Q:=false; end_if

  3. #423

    По умолчанию

    Здравствуйте, товарищи. Всех с праздником, с "Днём Советской Армии". Попробовал ваши таймеры по всякому, всё прошло отлично, всё копируется и переносится, в вот ссылка на пост с проектом из коего не могу перенести текст: https://owen.ru/forum/showthread.php...l=1#post417787
    Кстати, не могли бы вы доработать этот блок, что бы в нём была нормальная пауза, а не дублирование Enable и Res, для отладки OnNext работал в режиме ожидания, а не только при работе блока, время задавалось и выводилось в часах, минутах и секундах. Сам собрал эту конструкцию в "квадратиках", но из-за большого количества линий задержек работает не совсем так, как бы хотелось. Значительно приятней конструкция работает когда блок написан "закорючками"
    Изображения Изображения

  4. #424

    По умолчанию

    Цитата Сообщение от Urfin_Dzhyus Посмотреть сообщение
    Здравствуйте, товарищи. Всех с праздником, с "Днём Советской Армии". Попробовал ваши таймеры по всякому, всё прошло отлично, всё копируется и переносится, в вот ссылка на пост с проектом из коего не могу перенести текст: https://owen.ru/forum/showthread.php...l=1#post417787
    Кстати, не могли бы вы доработать этот блок, что бы в нём была нормальная пауза, а не дублирование Enable и Res, для отладки OnNext работал в режиме ожидания, а не только при работе блока, время задавалось и выводилось в часах, минутах и секундах. Сам собрал эту конструкцию в "квадратиках", но из-за большого количества линий задержек работает не совсем так, как бы хотелось. Значительно приятней конструкция работает когда блок написан "закорючками"
    У вас проблема вообще не в раскладке, а в том, что вы не соблюдаете правила переноса. При переносе основного ФБ, надо перенести и все ФБ вложенные в него, таймеры в данном случае и другие ФБ.
    И если вы меняете таймер на другой, надо смотреть их отличия, в старом использовались Т_zikl, а в новом их нет, пауза может быть Р, а может Pause, это всё отображается внизу в ошибках. После исправления всех различий и обновления ФБ (если красный) всё заработает.

    Сделал паузу, вывод времени в часах мин и сек. Вам осталось только сделать задачу в час, мин и сек. (сейчас в секундах)
    Задача времени Val1:= Has_*3600+Min_*60+Sek_ ; // это надо вставить в начале блока.
    А в шагах сделать нужные корректировки, например
    3: CurMinute:=Val1+5; Q1 := funMul(Val2*3); // Где +5 - это +5 сек

    Добавил новый доработанный шаговый автомат, с Т-триггером, новым TON c паузой и задачей времени. 7 вариант 1 Шаговик с Таймером и паузой.jpg
    Вложения Вложения
    Последний раз редактировалось kondor3000; 13.05.2024 в 08:05.

  5. #425

    По умолчанию

    Как всё сложно с этими крякозябрами, не то что с кубиками, вообщем вот что получилось, хотя мне скорее нужен был отдельный блок преобразования в секунды, но как говориться сдаю домашнюю работу. Спасибо.
    Вложения Вложения

  6. #426

    По умолчанию

    Цитата Сообщение от Urfin_Dzhyus Посмотреть сообщение
    Как всё сложно с этими крякозябрами, не то что с кубиками, вообщем вот что получилось, хотя мне скорее нужен был отдельный блок преобразования в секунды, но как говориться сдаю домашнюю работу. Спасибо.
    А зачем вам отдельный блок? В секунды можно преобразовать одной строчкой. (На квадратах это займёт пол страницы.)
    Но в общем всё правильно, кроме нижнего блока, он не нужен вообще
    По поводу кракозябр и квадратиков, со временем, мнение измениться на противоположное)))
    Вложения Вложения
    Последний раз редактировалось kondor3000; 24.02.2024 в 10:03.

  7. #427

    По умолчанию

    Я рисую программу для водоподготовки, где всё сводится к последовательному дрыганью несколькими клапанами и парой насосов, поэтому я удаляю переменную Val2, а вместо этого в funMul записываю фиксированные значения. Ко входу блока Val1 подключаю мультиплексор, который будет управляться с выхода блока State и в зависимости от номера шага, будет загружать в блок продолжительность этого шага, а вот на входы мультиплексора с панели оператора при помощи преобразователя ЧасМинСек будет записываться нужное время.

  8. #428

    По умолчанию

    Цитата Сообщение от Urfin_Dzhyus Посмотреть сообщение
    Я рисую программу для водоподготовки, где всё сводится к последовательному дрыганью несколькими клапанами и парой насосов, поэтому я удаляю переменную Val2, а вместо этого в funMul записываю фиксированные значения. Ко входу блока Val1 подключаю мультиплексор, который будет управляться с выхода блока State и в зависимости от номера шага, будет загружать в блок продолжительность этого шага, а вот на входы мультиплексора с панели оператора при помощи преобразователя ЧасМинСек будет записываться нужное время.
    Тогда вам, возможно, лучше использовать другой пример, там 3 варианта, на каждый шаг можно задать время и выход( если нужен).
    При чём количество шагов можно менять и время каждого задать отдельно, хоть с экрана. И всё на 1 таймере.
    https://owen.ru/forum/showthread.php...39&page=11#105
    Последний раз редактировалось kondor3000; 24.02.2024 в 12:29.

  9. #429

    По умолчанию

    Те же штаны только наизнанку, что у нас с вами только разбито на кучу вспомогательных блоков, от чего не обоснованно усложнено для моего проекта. Хотя с точки зрения банальной эрудиции... Я даже откажусь от одного входа блока Val1, а сделаю входы по числу шагов с индивидуальной уставкой времени, тем самым исключу мультиплексор и обратную связь для его управления. Выложу вам на отценку, как только выйду на работу, дома рисовать не буду, а то чего доброго работа в хобби превратится) Вы лучше мне киньте парочку примеров с триггерами, даже лучше встройте триггер на вход Enable в "Шаги", хочу разобраться с этим.

  10. #430

    По умолчанию

    Цитата Сообщение от Urfin_Dzhyus Посмотреть сообщение
    Те же штаны только наизнанку, что у нас с вами только разбито на кучу вспомогательных блоков, от чего не обоснованно усложнено для моего проекта. Хотя с точки зрения банальной эрудиции... Я даже откажусь от одного входа блока Val1, а сделаю входы по числу шагов с индивидуальной уставкой времени, тем самым исключу мультиплексор и обратную связь для его управления. Выложу вам на отценку, как только выйду на работу, дома рисовать не буду, а то чего доброго работа в хобби превратится) Вы лучше мне киньте парочку примеров с триггерами, даже лучше встройте триггер на вход Enable в "Шаги", хочу разобраться с этим.
    В 3 примере, есть уже встроенные R и F триггеры, осталось только посмотреть и встроить самому.
    Либо вообще использовать встроенные триггеры, они вызываются при нажатии на s в VAR, типа Rtr1:SYS.RTRIG;
    Последний раз редактировалось kondor3000; 24.02.2024 в 21:20.

Страница 43 из 66 ПерваяПервая ... 33414243444553 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

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