Страница 74 из 76 ПерваяПервая ... 24647273747576 ПоследняяПоследняя
Показано с 731 по 740 из 758

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

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

    По умолчанию

    С чего зациклится? Индексы сравняются и все
    Не нужны никакие массивы булей
    Возможно что есть смысл сделать еще и входной (+ синхронизирующий) Enable, но это хотелка-свистелка

    Тема зажила своей жизнью))

  2. #732

    По умолчанию

    Точно, там же индекс по отличию входа от предыдущего его значения меняется. ИИ всё же могет... Ну да, какой нибудь бит на старт. Ещё дня 2 поживёт и сойдёт на нет.

  3. #733

    По умолчанию

    Предлагаю немного сменить тему. Например, попробовать решить давний спор между программистом и инженером АСУТП.

    И: - Этот ST испоганил всю идею ПР. Я понимаю, что ST сильно расширяет возможности ПР, но требует обращаться к программистам за помощью.
    Лучше бы расширяли библиотеки ФБ с подробным комментариями и примерами. Вот 1С пошла по пути замены программирования конфигурированием.
    Пользователь расставляет нужные галочки и тем самым создает нужный алгоритм работы универсальной программы.

    П: - Это сколько же надо времени пользователю, чтобы разобраться во всех галочках? Это сколько времени понадобиться Вам, чтобы нарыть в такой библиотеке нужный ФБ?
    Если допустить, что в такой библиотеке будут ФБ на все случаи жизни.

    И: - Так все производители стараются создавать универсальные приборы, впихивая по максимуму функциональность.
    WEB-интерфейс с десятками страниц для настройки.

    П: - А какой процент этих страниц Вы реально используете? Как часто, однажды настроив такой прибор в щиту управления, Вам приходится его перенастраивать?

    Что лучше? Универсальный прибор с большим функционалом или ПР и знание ST?
    Последний раз редактировалось EFrol; 10.05.2026 в 21:14.

  4. #734
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,382

    По умолчанию

    На самом деле не правы оба.
    Потому что есть простые алгоритмы, а есть составные.
    Для 1-ого конфигурирование ("простые" имеется ввиду готовая программа, которую просто надо настроить)
    Для 2-го нужно писать программу, пусть даже пользуясь более простыми.

    Ну пример для 1. Готовые алгоритмы того же щита вентиляции. Выбрал через настройки датчики, схему вентмашины и т.д.
    Пример для 2. Когда схема не является одной из стандартной.

    Вообще не надо делать из асутп-шников программистов. У них немного другие задачи.

  5. #735

    По умолчанию

    Грамотный асутпшник на производстве заменяет сисадмина, технолога, несколько киповцев и ещё кучу народа, а вот чтоб наоборот ещё ни разу не встречал...

  6. #736
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,382

    По умолчанию

    так вот это и плохо, когда человеку надо знать больше, чем ему надо в рамках специализации

    надо проще - дал команду админу, тот выполнил, может что-то подсказал. А не так, что асушник рассказывает админу как сделать.
    Просто когда читаешь, например что на вакансию должен человек знать и уметь, удивляешься. Требуется и жнец и швец и на дуде игрец, но на зарплату только жнеца

  7. #737

    По умолчанию

    У нас не запад, в России надо уметь всё и программировать и руками работать. Поэтому только программируемые устройства.
    Все кто напишет наоборот, не хотят учиться или работать головой.
    Последний раз редактировалось kondor3000; 10.05.2026 в 23:54.

  8. #738

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Блинк просто имитирует серию импульсов от датчика
    убрал из схемы блинк.
    сделал вход на bDelay со входа I1 (от датчика).
    В режиме симулятора bDelay не дожидаясь импульса со входа I1 генерирует сигнал на выход Q2, после чего не реагирует на появление сигнала со входа I1.

  9. #739

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Чел написал что нужно повторить входное следование сигналов с задержкой а не создать независимую генерацию.
    Предполагать что что-то механическое на входе имеет строгие 2 сек, насколько это принципиально, учесть банальное отсутствие одного (или.. ) изделий на ленте, колебания скорости конвейра прям в процессе - автор внятно не объяснил. Пока ясно только то, что нужны только передние фронты. Если это всё учесть, то на квадратиках и без массива-архива зае...тесь пыль глотать.
    Допускаю что это всё вообще не нужно и есть какие-то принципиально другие решения, но это нужно знать полную технологию и итоговые задачи. Но "кушает" за это - автор.

    Всех с Днем Великой Победы!
    спасибо за проявленный интерес.
    строгие 2 сек на входе - непринципиально.
    про отсутствие изделия на конвейере я писал: нет изделия - нет сработки исполнительного механизма.
    колебания скорости конвейера некритичны, т.к. на этот случай у исполнительного механизма есть механическое решение по точности позиционирования подъехавшего на конвейере изделия.
    на квадратиках решение я выложил, но оно не изящное, конечно.

  10. #740

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Как-то так, вероятно:
    Вложение 89142
    задержка на 10 сек.

    Код:
    function_block Delay
        
        var_input
            in : bool;                          // Входной сигнал
            t : udint;                          // Сдвиг сигнала
        end_var
        
        var_output 
            Q : bool;                           // Выходной сигнал
        end_var
        
        var 
            dTS : array [0..100] of udint;      // Время фиксации состояния сигнала
            dS : array [0..100] of bool;        // Состояние сигнала
            nState, i : udint;                  // Номер последнего зафисированного состояния и итератор
            rtStart : SYS.RTRIG;                // Триггер начала записи
        end_var
        
        rtStart(I:=true);                       // Фиксируем начальное состояние
        if rtStart.Q then
            nState := 0; dTS[0] := time_to_udint(get_time()); dS[0] := in;
        end_if
        
        if in <> dS[nState] then                // При каждом изменении входного сигнала
            nState := nState + 1;               // Фиксируем новое состояние
            // Ограничим число фиксируемых состояний на всякий случай
            // если частота смены будет больше запланированной
            if nState > 100 then nState := 100; end_if
            dTS[nState] := time_to_udint(get_time());   // Метка времени
            dS[nState] := in;                           // Состояние
        end_if
        
        // Через время t выдаем следующее состояние на выход и смещаем массив
        if time_to_udint(get_time()) - dTS[0] >= t then
            Q := dS[0];
            if nState > 0 then  // Подготовим следующий переход, если есть
                nState := nState - 1;
                for i := 0 to nState do
                    dTS[i] := dTS[i+1]; dS[i] := dS[i+1];
                end_for
            end_if
        end_if
    
    end_function_block
    вот это годное и изящное решение.
    спасибо.

Страница 74 из 76 ПерваяПервая ... 24647273747576 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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