В свете расчета времени наработки оборудования возникли следующие вопросы:
В документации на СT скрипты есть описание фукций T_I(Time): integer. но компилятор ее не понимает.
приходится извращятся Блок (Time_to_Float)--->блок (Float_To_Integer). Причем!! данная цепочка написаная на СТ не работает, а вот на блоках-работает(ошибка типов)
Как использовать функцию T_I() ?
П.С про DateTime позже сформулирую.
2.
flash,
27.05.2009 09:07
Здравствуйте!
К сожалению, в документации содержится ошибка. Функция T_I(Time): Integer не поддерживается.
Компилятор языка ST действительно содержит ошибку, из-за которой использование Time_to_Float в редакторе алгоритмов версии 3.2.20 не представляется возможным. Если вы более подробно опишете свою задачу, то, вероятно, мы сможем подсказать вам альтернативное решение.
Замеченные вами ошибки будут исправлены в обновлении Каскад-САУ до версии 3.2.21
Изменено: flash, 27.05.2009 09:43
3.
Neurox,
11.06.2009 12:49
Пожелания по поводу переменных типа Time и DateTime.
элемент Diff:
1.удобней было-бы получать разность не в полных часах, минутах и т.д. в в виде переменной DateTime. а ее уже можно потом разложить на Integer значения. годы и месяцы тоже должны вычитатся.
например 11/06/2009 10ч-25м-36сек минус 10/06/2009 9-25-36 равно 0/0/0 23-0-0.
2.для таймерной переменно тоже удобно DateTime применить.
Еще несовсем понятны настройки элемента управления "Дата и время" описания на него нигде не нашел.
ну "дата и время" понятно.
а как работают "счетчик времени" и "интервал времени"?
4.
Roman,
11.06.2009 13:34
Для хранения интервала времени используется тип TIME. Выход mS блока DT_Diff как раз и содержит значение интервала в виде TIME значения, а не долю миллисекнд в дополнение к секундам, минутам и часам, как может показаться. Значение выходов Hrs, Min, Sec - тот же результат, что и на выходе mS, но в разных единицах - в часах, в минутах и в секундах.
Все строго в соответствии со стандартом. Тип DATE_TIME - это календарное время. Тип TIME - длительность, интервал времени.
Документ "Редактор мнемосхем. Руководство оператора", пункт 3.10.11.
"Дата и время" - простое отображение времени, полученного с помощью блока DT_Get() и записанного в точку.
"Интервал времени" - отображение значения переменной типа TIME, записанной в точку. Используется для отображения интервала между двумя временами, напрмер, с выхода mS блока DT_Diff().
"Счетчик времени" - разница между временем, записанным в точку с помощью блока DT_Get() и текущим временем контроллера. Используется, как правило, для отображения времени работы оборудования. Например, если в момент включения насоса в точку записать текущее время, то элемент Счетчик времени будет показывать увеличивающееся время работы насоса.
5.
Neurox,
11.06.2009 13:48
это не так.
мне приходится делать
hours:=hours+переменная_возвращающая часы
minutes:=minutes+переменная возвращающая минуты
hours:=hours+(minutes/60)
minutes:=minutes mod 60
в меременной минуты отображаются часы*60. в секундах секунды*60
Это кстати в приложении №1 к документации по редактору алгоритмов описано.
Изменено: Neurox, 11.06.2009 13:52
6.
Roman,
11.06.2009 14:00
Извините, ошибся. Сообщение #4 выше подправил.
7.
Neurox,
11.06.2009 14:22
я собственно об этом и говорю. неудобно работать с Diff.
8.
Roman,
11.06.2009 15:32
Объясните, пожалуйста, а в чем неудобство блока DT_Diff()? Как Вы используете разницу между двумя датами?
9.
Neurox,
11.06.2009 16:50
мне нужно расчитывать общее время в течении которого переменная допустим Status_M9A (BOOL) была равна TRUE.
допустим в течении месяца она менялась то FALSE то TRUE с разными интервалами. ну надо эти интервалы поскладывать и получить итоговое за месяц. (и за год тоже).
причем формат отображения часы:минуты---- 512 часов 32 минуты
10.
Roman,
11.06.2009 17:01
А чем не подходит тип TIME? Заведите переменную, прибавляйте к ней значение с выхода DT_Diff(время_TRUE, время_FALSE) и записывайте в точку. Отображение на мнемосхеме сделайте с помощью элемента "Дата и время" в нужном формате.
11.
Neurox,
11.06.2009 17:11
точно.
я это какраз попробовал после вашего описания работы элемента "Дата и время".
действительно удобней для реализации отображения.
для записи в сводки всеравно преобразование делать.
или есть механизм встроенный как в сводке тип Time в виде часов и минут отобразить?
Изменено: Neurox, 11.06.2009 17:12
12.
Roman,
11.06.2009 17:16
В сводках тоже есть поле типа "Дата и Время" для отображения интервала. Почему бы не попробывать его использовать?
13.
Neurox,
11.06.2009 17:28
там год/месяц/число убрать нельзя (( даже обнулть.
14.
flash,
15.06.2009 15:56
там год/месяц/число убрать нельзя (( даже обнулть.
Объясню, как сделать отображение интервала времени в сводках, таким же, как на мнемосхемах:
1. В сводках, диалоге свойств поля "Дата и время" на закладке "Точка" в списке "Значение" выбираем тип значения "Интервал времени (миллисекунды)"
2. Переходим на закладку "Отображение". В списке "Максимум" выбираем "Часы", в списке "Формат" выбираем "Часы+Минуты".
Это должно помочь.
15.
Neurox,
16.06.2009 11:00
Подскажите, какой максимальный интервал времени может хранится в переменной типа Time?
16.
flash,
16.06.2009 11:05
Подскажите, какой максимальный интервал времени может хранится в переменной типа Time?
Значение Time-переменной ограничено константой Timer_Max = 1E15 миллисекунд
Изменено: flash, 16.06.2009 11:08
17.
Neurox,
18.06.2009 09:27
Добрый день!
Подскажите, можно ли управлять таймерной переменной из блоков ST?
18.
flash,
18.06.2009 09:44
Добрый день!
Подскажите, можно ли управлять таймерной переменной из блоков ST?
Здравствуйте!
Управлять TIME-переменной из ST можно. Для этого используются вызовы процедур TStart(TIME_VAR) и TStop(TIME_VAR).
Вызовы TStart/TStop могут быть внутри IF, CASE, WHILE, FOR, REPEAT.
Например, условное управление таймером:
if NeedStartTimer then
TStart(MyTimer);
end_if;
19.
dmitry,
11.08.2015 17:11
Документ "Редактор мнемосхем. Руководство оператора", пункт 3.10.11.
"Дата и время" - простое отображение времени, полученного с помощью блока DT_Get() и записанного в точку.
Добрый день!
Задача нетривиальная, но... прошу проконсультировать.
Требуется вывести на мнемосхему значение текущих даты и времени.
Для этого разместил на мнемосхеме два элемента "Дата и время" - для первого задал формат отображения "dd/mm/yyyy" для второго "hh:nn:ss".
В редакторе алгоритмов создал переменную типа DateTime "VarDT", которой присваиваю значение функцией DT_Get; "VarDT := DT_Get;".
Как я понимаю, типов точек всего три: FLOAT, INTEGER и BOOLEAN.
Не совсем понятно, какой должен быть тип точки для привязки к переменной типа DateTime "VarDT" в редакторе алгоритмов и в последствии для привязки к двум элементам "Дата и время" в графическом редакторе.
20.
dmitry,
13.08.2015 17:07
Документ "Редактор мнемосхем. Руководство оператора", пункт 3.10.11.
"Дата и время" - простое отображение времени, полученного с помощью блока DT_Get() и записанного в точку.
Добрый день!
Задача нетривиальная, но... прошу проконсультировать.
Требуется вывести на мнемосхему значение текущих даты и времени.
Для этого разместил на мнемосхеме два элемента "Дата и время" - для первого задал формат отображения "dd/mm/yyyy" для второго "hh:nn:ss".
В редакторе алгоритмов создал переменную типа DateTime "VarDT", которой присваиваю значение функцией DT_Get; "VarDT := DT_Get;".
Как я понимаю, типов точек всего три: FLOAT, INTEGER и BOOLEAN.
Не совсем понятно, какой должен быть тип точки для привязки к переменной типа DateTime "VarDT" в редакторе алгоритмов и в последствии для привязки к двум элементам "Дата и время" в графическом редакторе.