Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: Цикл на языке ST

  1. #1

    По умолчанию Цикл на языке ST

    Прошу помочь в такой задаче: Нужно опрашивать датчик давления один раз в 5 секунд и сравнивать с предыдущим значением. Если этот алгоритм реализовать на языке ST через цикл FOR, то как установить время (Опроса)задержки, возможно для этого использовать оператор Delay или есть другие решения? Заранее спасибо!

  2. #2
    Пользователь
    Регистрация
    10.12.2009
    Адрес
    Воронеж
    Сообщений
    673

    По умолчанию

    tm1(PT:=T#5s);
    IF tm1.IN=0 THEN tm1.IN:=1; DAT_PREV:=DAT;
    END_IF;
    IF tm1.Q=1 THEN
    IF DAT_PREV>DAT THEN DAT_BOOL:=1; ELSE DAT_BOOL:=0;
    END_IF;
    DAT_REAL:=DAT_PREV-DAT;
    tm1.IN:=0;
    END_IF;

    DAT - текущие показания датчика;
    DAT_BOOL - логическое сравнение двух показаний;
    DAT_REAL - разница между предыдущим и текущим значением;
    tm1 - таймер TON.

  3. #3
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Функция-BLINK. По фронту импульса Проводите сравнение значения входа и промежуточной переменной, затем записываете значение входа в промежуточную переменную

  4. #4
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    А почему именно раз в пять секунд? Что мешает опрашивать постоянно?
    возможно для этого использовать оператор Delay
    Забудьте, что вы знали о программировании на ПК. Здесь поток тормозить нельзя.

  5. #5

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    А почему именно раз в пять секунд? Что мешает опрашивать постоянно?Забудьте, что вы знали о программировании на ПК. Здесь поток тормозить нельзя.
    Циклы опроса мне необходимы для определения разницы между предыдущим значением с датчика и последующим, таким образом хочу реализовать алгоритм определения момента когда давление перестает расти, не превысит какое-то заданное значение , а именно момент когда перестает расти давление.

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    всё что описываете, это должен делать ПИД-регулятор а не Вы
    У меня немного не так, регулирование мне не нужно, мне нужно перейти от аналоговой величины(давление) к дискретной переменной которая будет инициировать запуск устройств. т.е. другими словами такое условие: если давление перестало расти и не меняется в течении скажем 30сек, то я могу запускать устройства, мешалки, шнеки и.т.д.

  7. #7
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Тогда всё проще. Надо определить порог значимого изменения и запоминать время, когда такое изменение накапливается. А дальше это время сравнивать с текущим, и если оно, скажем, больше 30 сек, то производить нужные вам действия. Как-то так:
    Код:
    thrs, cur, last: REAL;
    lastTimeStamp: TIME;
    
    IF ABS(last - cur) > thrs THEN
    	last := cur;
    	lastTimeStamp := TIME();
    END_IF
    
    IF TIME() - lastTimeStamp > T#30s THEN
    	whatever;
    END_IF

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    повторюсь, это все работа регулятора, надо просто представлять как себя ведет регулятор когда входная величина перестает изменятся
    А хотя ладно, можете и по формуле искать желаемое
    IF ABS(curr-2*last+last2)>const THEN ; (* что то там *) END_IF
    last2:=last
    last:=curr

  9. #9

    По умолчанию

    здравствуйте! подскажите пожалуйста как сделать , чтоб давление подавалось (открывались клапаны) заданное количество раз. То есть клапаны открываются на 15 мс и закрываютсяю Цикл не работает

  10. #10
    Пользователь
    Регистрация
    24.12.2012
    Адрес
    Нижняя Куэнга
    Сообщений
    85

    По умолчанию

    CTU TP BLINK RS

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Задержка на языке ST
    от burn в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 13.10.2017, 11:38
  2. Вызов POU на языке LD
    от ZPavel в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 28.02.2012, 00:55
  3. Работа с портами. на языке ST
    от binaryman в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.01.2012, 01:45
  4. Несколько AND и OR в языке ST
    от Wanted в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 18.11.2008, 15:19
  5. Ответов: 3
    Последнее сообщение: 25.09.2008, 18:38

Ваши права

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