Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Замер времени

  1. #1

    Post Замер времени

    Здравствуйте, имеется ПЛК 110-60, есть два дискретных входа (подключены индуктивные датчики), необходимо замереть время прохождения расстояния, расстояние между конечными выключателями 300 см, это необходимо сделать для замера скорости перемещения, по формуле скорость= расстояние/время, я хочу высчитать этот интервал...........при помощи какой функций это можно осуществить??? Спасибо в заранее. При этом таймер необходимо сбрасывать и запускать по команде дискретного входа.

  2. #2

    По умолчанию

    наваял и себе и людям))
    вроде работает.
    секундомер Вам в руки)


    Код:
    FUNCTION_BLOCK P1P2MTRS
    (*порядок датчиков не имеет значения*)
    VAR_INPUT
    	iDi1 : BOOL;			(*Вход датчик 1*)
    	iDi2 : BOOL;			(*Вход датчик 2*)
    	iRes : BOOL;			(*Сброс / запрет работы*)
    	iMtrsSP : REAL;		(*Расстояние датчик1-датчик2, м*)
    	iErrSP : TIME;			(*Время на ожидание второго датчика*)
    END_VAR
    VAR_OUTPUT
    	oDone : BOOL;		(*Расчет выполнен, =TRUE только 1 цикл*)
    	oErr : BOOL;			(*Ошибка: нет сигнала второго датчика*)
    	oSpd : REAL;			(*Расчетная скорость, м/с*)
    END_VAR
    VAR
    	Trig1: BOOL;
    	Trig2 : BOOL;
    	Trig :BOOL;
    	TimeTrig : TIME;
    	TDelta : TIME;
    	Init: BOOL;
    	Di1Old :BOOL;
    	Di2Old : BOOL;
    END_VAR
    
    
    
    IF iRes THEN Init := oErr := FALSE; END_IF
    IF oErr THEN RETURN; END_IF
    
    (*INIT*)
    IF NOT Init THEN
    				Init := TRUE;
    				Di1Old := iDi1;
    				Di2Old := iDi2;
    				iRes := oDone := Trig1:= Trig2 := Trig := FALSE;
    				TimeTrig := TDelta := t#0ms;
    				oSpd := 0;
    END_IF
    
    oDone := FALSE;
    
    IF iDi1 > Di1Old THEN Trig1 := TRUE; END_IF
    IF iDi2 > Di2Old THEN Trig2 := TRUE; END_IF
    
    Di1Old := iDi1;
    Di2Old := iDi2;
    
    
    IF Trig1 OR Trig2 THEN
    							IF NOT Trig THEN TimeTrig := TIME(); Trig := TRUE; END_IF
    							TDelta := TIME() - TimeTrig;
    							IF TDelta > iErrSP THEN oSpd := 0; oErr := TRUE; RETURN; END_IF
    
    
    							IF Trig1 AND Trig2 THEN
    														IF TDelta < t#10ms THEN oSpd := 0; oErr := TRUE; RETURN; END_IF
    														oSpd := iMtrsSP * 1000 / TIME_TO_REAL(TDelta);
    														oDone := TRUE;
    														Trig1 := Trig2 := Trig := FALSE;
    							END_IF
    END_IF
    Последний раз редактировалось spectrum48k; 22.09.2015 в 00:32. Причина: убрал TON. исправил сброс.

  3. #3

    По умолчанию

    Сергей, не поверите)) Я взял таймер и TIME() Для двух разных целей. А во время отладки случайно заметил, что внутренние переменные таймера совпадают с результатами от TIME() и по сути выполняется дублирование переменных. Поэтому остался один таймер, выполняющий 2 функции сразу.

  4. #4

    По умолчанию

    Вы и мёртвого убедите) Сарказм засчитан.

  5. #5

    По умолчанию

    Извините за наглость..............но я не знаю этот язык,к сожалению, знаю FBD,LD,CFC............ кто то сможет помочь и показать эту программу на одном из указанных языков???

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

    По умолчанию

    Цитата Сообщение от Тугарин Посмотреть сообщение
    Извините за наглость..............но я не знаю этот язык,к сожалению, знаю FBD,LD,CFC............ кто то сможет помочь и показать эту программу на одном из указанных языков???
    А почему SFC нет в этом перечне?
    Захват-3.png

    Захват-2.png
    Специально для Вас действия для шага Spep2 сделал на CFC
    Вложения Вложения
    Последний раз редактировалось petera; 22.09.2015 в 17:32.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #7

    По умолчанию

    Спасибо большое, буду пробовать, SFC не успеваю изучить, работы много.....не получается пока что CODESYS освоить полностью, обычно проекты на базе контроллера DELTA делаю, с ними как то попроще всё)

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

    По умолчанию

    По просьбе трудящихся тоже самое, но на LD
    Захват-1.png

    Захват-2.png
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #9

    По умолчанию

    Я дал текст для копирования/вставки. Знания языка ST не обязательны. Минимальные знания интерфейса CDS v2.3 - обязательны.
    Будет выглядеть в CFC примерно так:


    Вот файл. Разархивируете и просто импортируете его в дерево POU. Появится функциональный блок. Использовать его как на картинке примера, только замените имена тестовых переменных на свои.
    Вложения Вложения
    Последний раз редактировалось spectrum48k; 22.09.2015 в 20:31.

  10. #10

    По умолчанию

    вопрос почти по теме - а что делает функция time? при вызове берет текущее время плк?
    имеет ли смысл написанное ниже?

    var
    a:time;
    end_var
    a:=TIME;
    Последний раз редактировалось ВЗМП; 23.09.2015 в 21:22.

Страница 1 из 4 123 ... ПоследняяПоследняя

Похожие темы

  1. О времени
    от olegV в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 31.12.2010, 14:12
  2. переменные времени
    от vvu2011 в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 18.11.2010, 00:48
  3. коректировка времени
    от кубанец в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 21.07.2010, 15:45
  4. Замер напряжения на аккамуляторах
    от andrush в разделе Подбор Оборудования
    Ответов: 10
    Последнее сообщение: 10.02.2010, 10:45
  5. необходимо производить замер нагрузки
    от echen в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 20.04.2009, 22:51

Ваши права

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