Показано с 1 по 3 из 3

Тема: время дата

  1. #1
    Пользователь Аватар для Пьер
    Регистрация
    26.01.2011
    Адрес
    Земля
    Сообщений
    518

    По умолчанию время дата

    Есть в кдс 3 такой блок GetDataAndTime. чтобы взять время, на соответствующий вход подаем Тrue, и получаешь, а если False то время 1970 года. я сделал, Фб где получаю реальное время.
    но очень часто проскакивает 1970 год. что не так я не знаю. подскажите пожалуйста.
    Код:
    FUNCTION_BLOCK CMG_ChMS
    VAR_INPUT
    	
    	bON:BOOL;
    END_VAR
    VAR_OUTPUT
    	wChislo:WORD;
    	wMesyac:WORD;
    	wGod:WORD;
    	wChas:WORD;
    	wMin:WORD;
    	wSec:WORD;
    	DayWeek:WORD;
    	sDMG:STRING;
    	sCMS:STRING;
    	
    	
    	
    END_VAR
    VAR
    	sDMGCMS:STRING;
    	GetDT_01:RTCLK.GetDateAndTime;
    	dInDate:DATE_AND_TIME;
    	dInDateSET:DATE_AND_TIME;
    	qq:TIME;
    	tt:TOD;
    	dd:DATE;
    	b1: BOOL;
    	b2: BOOL;
    	b3: BOOL;
    	b4: BOOL;
    	dat1: DATE_AND_TIME;
    	Bl_Time:blink; (*блинкер для постоянного обновления времени*)
    	
    	NomerNedely:RTCLK.WEEKDAY;
    	TimerTON:TON;
    	TimerTOF:TOF;
    	pe:POINTER TO ERROR;
    	RT_SET:R_TRIG;
    END_VAR
    ----------
    
    	
    IF RT_SET.Q THEN	
    
    sDMGCMS:=DT_TO_STRING(dInDate);
    qq:=DT_TO_TIME(dInDate);
    tt:=DT_TO_TOD(dInDate);
    dd:=DT_TO_DATE(dInDate);
    (*sDMG:=Right(DATE_TO_STRING(dd),8);*)
    (*sCMS:=Right(TOD_TO_STRING(tt),8);*)
    sDMG:=CONCAT(MID(DATE_TO_STRING(dd),2,11),'.');
    sDMG:=CONCAT(sDMG, MID(DATE_TO_STRING(dd),2,8));
    sDMG:=CONCAT(sDMG, '.');
    sDMG:=CONCAT(sDMG, MID(DATE_TO_STRING(dd),2,5));
    
    wChislo:=STRING_TO_WORD(MID(sDMG,2,1));
    wMesyac:=STRING_TO_WORD(MID(sDMG,2,4));
    wGod:=STRING_TO_WORD(MID(sDMG,2,7));
    
    
    
    sCMS:=MID(TOD_TO_STRING(tt),5,5);
    wChas:=STRING_TO_WORD(MID(sCMS,2,1));
    wMin:=STRING_TO_WORD(MID(sCMS,2,4));
    
    NomerNedely:=DTU.GetDayOfWeek(dtDate:=DT_TO_DATE(dInDate), peError:=pe );
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.MONDAY THEN
    		DayWeek:=1;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.TUESDAY THEN
    		DayWeek:=2;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.WEDNESDAY THEN
    		DayWeek:=3;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.THURSDAY THEN
    		DayWeek:=4;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.FRIDAY THEN
    		DayWeek:=5;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.SATURDAY THEN
    		DayWeek:=6;
    	END_IF
    	IF NomerNedely=DTU.RTCLK.WEEKDAY.SUNDAY THEN
    		DayWeek:=7;
    	END_IF
    
    END_IF
    (*******************************************)	
    	
    RT_SET(CLK:=b1 , Q=> );
    	
    Bl_Time(ENABLE:=bON , TIMELOW:=T#1S , TIMEHIGH:=T#1S , OUT=>b1 );
    
    GetDT_01(
    	xExecute:=b1 , 
    	xDone=>b2 , 
    	xBusy=>b3 , 
    	xError=>b4 , 
    	eError=> , 
    	dtDateAndTime=>dInDate , 
    	eTimezone=> );
    Не зная броду, не суйся в воду. (Пословица.)
    Век живи, век учись(а умрешь дураком).
    Опыт растет прямо пропорционально выведенному из строя оборудованию.

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,066

    По умолчанию

    Забирать данные с выхода блока надо только в тот момент, когда он завершил работу (т.е. когда xDone=TRUE). Подробнее об этом см. в документе СПК. Системное время.

    Вам, возможно, подойдет это:
    http://www.owen.ru/forum/showthread....l=1#post251252

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Забирать данные с выхода блока надо только в тот момент, когда он завершил работу (т.е. когда xDone=TRUE). [/url]
    Использую эту функцию для получения текущего времени, но заметил, периодически, на моём опыте использования, ПЛК304 (а это около месяца) дважды функция начинала глючить и выдавала 1970 год. Помогает перезагрузка ПЛК по питанию.

Похожие темы

  1. Дата и Время
    от Vitamin в разделе Master SCADA 3
    Ответов: 20
    Последнее сообщение: 20.02.2015, 11:34
  2. Время и дата с ип320 в плк100
    от Сергей Борисович в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 30.09.2011, 12:52
  3. время и дата в плк 150
    от new_name в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 25.05.2009, 10:32
  4. Дата и время в ПЛК-100
    от Роман26 в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 12.02.2009, 15:53

Ваши права

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