PDA

Просмотр полной версии : Разбор даты



VanoKing
23.08.2011, 15:34
В ФБ структурированный текст возможно разобрать переменную time на часы и минуты? очень важно использовать только один выход фб. разбираю несколько входов со временем в одну строковую переменную.
Time_to_int ставлю не получается перетащить связь с команды типа время на вход фб. Time_to_string тоже не получается

lara197a
23.08.2011, 21:18
RTC1(EN:=M_Time , PDT:=DT#1970-01-01-00:00:00, Q=> , CDT=> );

Time_RUN:=DT_TO_TIME(RTC1.CDT); (*Преобразуем время и дату во время*)

Time_RUN_M:=TIME_TO_DWORD(Time_RUN)/60000; (*получаем минуты*)

Time_RUN_M_p:=DWORD_TO_WORD(Time_RUN_M-Time_RUN_H*60); (*передаем в панель минуты*)

Time_RUN_H:=TIME_TO_DWORD(Time_RUN)/3600000; (*получаем часы*)

Time_RUN_H_p:=DWORD_TO_WORD(Time_RUN_H); (*передаем в панель часы*)

SCADAMaster
23.08.2011, 21:32
В приложении рабочий пример.
Можете на основе сделать функцию и загнать в библиотеку

VanoKing
24.08.2011, 08:15
RTC1(EN:=M_Time , PDT:=DT#1970-01-01-00:00:00, Q=> , CDT=> );


Можно подробнее. Скажите как эту функцию в скаде прописать. Только начинаю знакомиться с программированием на таком уровне.

VanoKing
24.08.2011, 08:17
В приложении рабочий пример.
Можете на основе сделать функцию и загнать в библиотеку

немного неточное преобразование идет. счас пробую переделать? округляет часы преобразование real_to_int, а там нужно выделить целое число.
9:59:05 => h=10,min=-1

Вот немного исправил получилось:
sec:=mlsek/1000;
sec:=sec mod 60;
min:=(mlsek-sec*1000)/60000;
min:=min mod 60;
hour:=(mlsek-min*60000-sec*1000)/3600000;

lara197a
24.08.2011, 10:27
Использована функция RTC. (см. справку КДС)
M_Time- команда на пуск(BOOL)
Можно погонять в эмуляции.

Кусок вырезан из рабочей программы.

VanoKing
06.09.2011, 09:33
Можно еще вопрос по теме, а как же обратное преобразование.
передать переменную время не получилось. Передаю из плк число минут int"ом, какое преобразование нужно сделать чтобы результат видно было в поле значение типа "только время".
грубо говоря:
ПЛКвремя(01:23)=>int(83)=> ??? СКАДА(01:23)

VanoKing
06.09.2011, 11:08
вопрос отпал, есть же функция Sec2Time() в блоке расчет