PDA

Просмотр полной версии : Формат времени %t работает неправильно



Фирст
18.01.2019, 13:58
Здравствуйте!

Пытаюсь вывести на окне визуализации сохраненное значение времени. Формат переменной - DT.
Формат в поле %t[dd'/'MM'/'yy' 'HH':'MM':'ss]

Формат соблюдается, но на экран выдается текущее время. В свойствах "Текстовая переменная" стоит правильное имя переменной. И эта переменная имеет нужное значение.

Пробовал Тип элемента "Текстовое поле" и "Прямоугольник" - одинаково.

Что нужно сделать?
Прошивка 5.472.

Евгений Кислов
18.01.2019, 14:07
Здравствуйте!

Пытаюсь вывести на окне визуализации сохраненное значение времени. Формат переменной - DT.
Формат в поле %t[dd'/'MM'/'yy' 'HH':'MM':'ss]

Формат соблюдается, но на экран выдается текущее время. В свойствах "Текстовая переменная" стоит правильное имя переменной. И эта переменная имеет нужное значение.

Пробовал Тип элемента "Текстовое поле" и "Прямоугольник" - одинаково.

Что нужно сделать?
Прошивка 5.472.

Добрый день.
Это ошибка в CODESYS V3.5 SP5 Patch 5, исправили в более поздних версиях.
В вашем случае лучше считывать время через библиотеку CAA DTUtil, конвертировать в STRING и выводить на визуализации в виде строки.

Фирст
18.01.2019, 14:40
Я пробовал DT_TO_STRING, некрасиво выходит.
Есть еще какое либо преобразование по формату?

Евгений Кислов
18.01.2019, 14:43
Я пробовал DT_TO_STRING, некрасиво выходит.
Есть еще какое либо преобразование по формату?

Посмотрите здесь пример 11.2.5 - там как раз по вашей теме:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Visu_v.1.2.pdf

Фирст
18.01.2019, 14:57
Это понятно ... Я уже использовал такой текст, чтобы добавлять лидирующие нули:


cur.RTC();

cur.temp_str := mid( UINT_TO_STRING(cur.RTC.Hour+100),2,2);
cur.str_time := concat(cur.temp_str,':');

cur.temp_str := mid( UINT_TO_STRING(cur.RTC.Minute+100),2,2);
cur.str_time := concat(cur.str_time,concat(cur.temp_str,':'));

cur.temp_str := mid( UINT_TO_STRING(cur.RTC.Second+100),2,2);
cur.str_time := concat(cur.str_time,concat(cur.temp_str,' '));

cur.temp_str := mid( UINT_TO_STRING(cur.RTC.Day+100),2,2);
cur.str_time := concat(cur.str_time,concat(cur.temp_str,'/'));

cur.temp_str := mid( UINT_TO_STRING(cur.RTC.Month+100),2,2);
cur.str_time := concat(cur.str_time,concat(cur.temp_str,'/'));

cur.str_time := concat(cur.str_time,UINT_TO_STRING(cur.RTC.Year));

Перешел на DT - хотел избавится от текстовых преобразований ....

Осинский Алексей
19.01.2019, 11:06
Это понятно ... Я уже использовал такой текст, чтобы добавлять лидирующие нули:

Перешел на DT - хотел избавится от текстовых преобразований ....

Добрый день.
Предлагаю использовать функцию DT_TO_STRING_FORMAT библиотеки OwenStringUtils (ссылка на библиотеку (http://www.owen.ru/forum/showthread.php?t=25981))

Использовать ее просто (полный перечень заполнителей в приложении А документа "Пользовательское описание OwenStringUtils v2.pdf" по ссылке выше):
объявляем переменные


VAR CONSTANT
m_c_sDtFormat : STRING := '%t[dd/MM/yy HH:mm:ss]'; // Как форматировать вывод даты и времени в строку
END_VAR
VAR
m_dtNow : DT := DT#2019-01-19-9:5:00; // Дата и время, которые необходимо конвертировать
m_sNow : STRING; // Дата и время, конвертированные в строку
END_VAR


разбавляем капелькой кода:


m_sNow := OSU.DT_TO_STRING_FORMAT (m_dtNow, m_c_sDtFormat);


готово: '19/01/19 09:05:00'.
Дело за малым: отобразить строку на визуализации.

Фирст
24.01.2019, 12:39
Спасибо, посмотрю.

По этой же теме. Использую WCONCAT и WLEN из библиотеки SPK_Tools.
Свой ноутбук настраивал года полтора назад и проблем не было.
Вчера настраивал ноутбук Заказчика, и не смог найти на сайте ОВЕН библиотеку SPK_Tools.

Пришлите, пожалуйста, ссылку.

Евгений Кислов
24.01.2019, 12:45
Спасибо, посмотрю.

По этой же теме. Использую WCONCAT и WLEN из библиотеки SPK_Tools.
Свой ноутбук настраивал года полтора назад и проблем не было.
Вчера настраивал ноутбук Заказчика, и не смог найти на сайте ОВЕН библиотеку SPK_Tools.

Пришлите, пожалуйста, ссылку.

Это из библиотеки Standard64, а не SPK_Tools.
Она входит в дистрибутив CODESYS.

Фирст
24.01.2019, 14:57
Оборудование уже в работе, проект передан Заказчику.
Вот фрагмент программы:
40856
Требуется настроить ноутбук у Заказчика, и теперь уже без моего участия.
Я должен отправить ссылку на библиотеку ....

Фирст
24.01.2019, 15:26
И еще, если удалить из проекта библиотеку SPK_Tools, то не находится Real_Time_Clock.
Чем можно ее заменить? Версия 3.5.5.5.

Евгений Кислов
25.01.2019, 07:42
Вообще, использовать SPK_Tools крайне не рекомендуется, но если других вариантов нет в принципе, то вот ссылка на библиотеку:
https://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/08_SPK_Tools/1.3.0/SPK_Tools_1.3.12.compiled-library

Роман13
29.01.2019, 13:45
Добрый день Уважаемые форумчане, прошу извинения заранее, может не сюда пишу (не в эту ветку). Дело в том, что имеем в наличии овен спк 110-управляет освещением и рекламной вывеской. Вопрос, можно ли сделать, два режима управления? (т.е. вывеска включается в 6-00, выключается в 7-30 и опять включается в 16-00 и выключается в 01-00. В целях так сказать экономии. Да, есть еще режим по восходу и заходу солнца. А так просто время вкл и выкл(в автоматическом режиме если) Подскажите пожалуйста.

Евгений Кислов
29.01.2019, 13:51
Добрый день.
Все описанное можно реализовать.
Пример чтение системного времени:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_SystemTime_v.1.1.pdf

Блоки для определения восхода/заката солнца есть в библиотеке OSCAT:
https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/02_Libraries/OSCATBasic.package

Адлан
21.08.2019, 17:57
Здравствуйте!
Можно ли по-простому сделать расписание: чтобы какая-то переменная переключалась в заданные моменты - для задания суточного графика работы (утром включить, вечером выключить)?

Евгений Кислов
21.08.2019, 18:33
Здравствуйте!
Можно ли по-простому сделать расписание: чтобы какая-то переменная переключалась в заданные моменты - для задания суточного графика работы (утром включить, вечером выключить)?

Добрый день.
Какой контроллер вы используете?

Адлан
21.08.2019, 22:48
СПК105 старый

Евгений Кислов
22.08.2019, 06:25
СПК105 старый

Посмотрите здесь, как считать текущее время в переменные программы:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_SystemTime_v.1.1.pdf

Дальше можно в коде обрабатывать время и включать/выключать оборудование в нужные моменты.

Zerling
23.09.2019, 10:40
Добрый День!
CDS SP11 patch 5 hotfix 4 (32bit)
Исчез адекватный вывод %t - значения случайные, не изменяющиеся. Однако, вывод мирового времени - нормальный.
Раньше был такой баг - просто вырезал визуализацию из старой версии ПО - помогло. Но теперь визуал изменен и так выкрутится не получится(
Разъясните, пожалуйста, как сделать работающий вывод без излишнего усложнения кода.
Ну, и как понять, есть ли "ненужные" библиотеки?..

Евгений Кислов
23.09.2019, 10:42
Добрый День!
CDS SP11 patch 5 hotfix 4 (32bit)
Исчез адекватный вывод %t - значения случайные, не изменяющиеся. Однако, вывод мирового времени - нормальный.
Раньше был такой баг - просто вырезал визуализацию из старой версии ПО - помогло. Но теперь визуал изменен и так выкрутится не получится(
Разъясните, пожалуйста, как сделать работающий вывод без излишнего усложнения кода.
Ну, и как понять, есть ли "ненужные" библиотеки?..

Добрый день.
Какие у вас спецификаторы в %t?

Zerling
24.09.2019, 04:43
%t[mm:ss]
%t[ss]
%t
все одинаково не работает - и на спк107 и на спк107[m01] и на виртуалке.
44756

Евгений Кислов
24.09.2019, 08:35
По вашему скриншоту не очень понятно, что именно не так.
У себя не смог воспроизвести проблему - все корректно (%t[mm:ss]):

44759

Если есть возможность - предоставьте доступ по TeamViewer.