PDA

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



Vitamin
26.03.2015, 06:45
Здравствуйте! Как можно из даты (не из текущей) которую я задаю, например 1.06.2015, выделить день недели? За ранее спасибо!!!

SCADAMaster
26.03.2015, 08:14
Можно при помощи ФБ "скрипт C#" - методом DayOfWeek
https://msdn.microsoft.com/ru-ru/library/system.datetime.dayofweek(v=vs.110).aspx
Например так:
ДеньНедели=(int)Дата.Value.DayOfWeek;

Vitamin
27.03.2015, 06:26
Спасибо! Еще вопрос. Как архивировать значение в файловый архив, а потом ЗА определенную дату его оттуда достать? Т.е. значение(или несколько) надо привязать к дате и вводя на мнемосхеме дату будут показываться значения за эту дату. Спасибо!

SCADAMaster
27.03.2015, 08:16
Воспользуйтесь модулем "Расчет" - у него есть функция AbsArchMomentValue, которая выводит значение на определенную метку времени. Описание функции есть в справке.

Vitamin
27.03.2015, 09:18
Достаточно ли галочки "Архивировать" для записи в файловый архив? И где он хранится, как его посмотреть?

SCADAMaster
27.03.2015, 10:40
Да, достаточно.
Принцип архивации следующий. Файловый архив хранится в папке проекта. Папка проекта имеет аналогичную структуру проекта. В папке объекта, в которой находится архивируемая переменная создается папка _Data. В этой папке для каждой переменной этого объекта создается кольцевой буфер файлов с данными. То есть создается файл вида F-823_1. Как только его размер превышает 256 килобайт, создается новый файл, F-823_2 и так далее.
Когда длительность или объем архива превышают заданные пользователем, самый старый из файлов кольцевого буфера удаляется, и на его место записывается новый.

Посмотреть архив можно только средствами SCADA системы - выделяете переменную и переходите на закладку "Данные". Либо через тренд

Vitamin
27.03.2015, 11:43
А подскажите пожалуйста, как удалить принудительно архив из "Данные"?

SCADAMaster
27.03.2015, 14:01
Выделяете объект, вкладка "Архив" - кнопка "Удаление архивов".

Vitamin
27.03.2015, 14:21
Спасибо! А по какой причине ФБ "Мгновенное значение по архиву", аналог (я так понял) AbsArchMomentValue, не корректно работает? Т.е. я задаю значение 28.03.2015г., а он возвращает мне событие из архива 29-ым числом. Или вообще "0" иногда. Не могу понять логику его работы. В чем я ошибку допускаю. Спасибо за ответ!

Vitamin
27.03.2015, 14:47
Можно интересно в этом ФБ сделать чтобы он только дату учитывал без времени? Т.е. выборку только по дате делал?

SCADAMaster
27.03.2015, 16:19
А по какой причине ФБ "Мгновенное значение по архиву", аналог (я так понял) AbsArchMomentValue, не корректно работает?
Он только за текущие сутки


Можно интересно в этом ФБ сделать чтобы он только дату учитывал без времени? Т.е. выборку только по дате делал?
Передавайте ему тогда только дату - без времени (полночь 00:00:00). Функции для определения начала суток в расчете есть.

Vitamin
29.03.2015, 07:34
Здравствуйте! Т.е. я смогу просмотреть архив только за текущие сутки? А если мне надо за определенную дату просмотреть значение как мне это сделать? Т.е. я выбираю дату и хочу просмотреть значение за эту дату!

SCADAMaster
29.03.2015, 09:08
Создаете команду, в свойствах контрола на вкладке "Дата/время" включаете отображение только даты.
У команды нужно будет также установить значение до опроса, в качестве времени указав 00:00:00

Vitamin
30.03.2015, 06:57
Спасибо! А вот я ввожу значение за 30.03.2015, выхожу из режима исполнения и опять вхожу - значение исчезает из архива за эту дату "= 0". Галочка архив стоит. Пишет в файловый архив. За ранее спасибо!!!

Vitamin
30.03.2015, 08:05
В общем вопрос состоит в том, чтобы произвести чтение из файлового архива за определенную дату! Помогите пожалуйста!!!

SCADAMaster
30.03.2015, 08:06
Нужно у команды на закладке "Опрос выхода" поставить галочку "Восстановление при рестарте".

Vitamin
30.03.2015, 09:07
Спасибо! Не знаю как описать свою проблему! Работаю, я с ФБ "Мгновенное значение по архиву", к "Время" подключил команду-тип Время. Значение времени в команде поставил 0.00.00. К "Работа" подключил команду-тип целый и поставил-архивировать. Вожу значение, ставлю дату а "Результат" показывает - то "0", то перекидывает на день вперед, то показывает старые значения вводимые ранее, а то что нужно - никак. В чем я допускаю ошибку? Мне просто нужно за определенный день(дату) считывать значение из файлового архива. Т.е. ввел значение за определенную дату, потом ввел эту дату и значение это должно быть. И чтобы при вводе нового значения- затиралось старое! Как это сделать? Помогите! Спасибо!!!

SCADAMaster
30.03.2015, 09:22
Данный ФБ работает только за текущие сутки. Используйте модуль расчет - у него есть функция AbsArchMomentValue( ). Описание функции есть в справке

Vitamin
30.03.2015, 10:45
Я так понял, что AbsArchMomentValue( ) и ФБ "Мгновенное значение по архиву" жестко привязаны к текущему времени. И сделать что-то типа расписания (записать значение на будущую дату) не получится?

SCADAMaster
30.03.2015, 11:04
Что значит "жестко привязаны к текущему времени"?

Vitamin
30.03.2015, 11:39
Я имел в виду, что нельзя вписать значение в архив на дату которая будет через месяц. А потом, соответственно, ее считать за эту дату. Может как-то по другому можно сделать?

SCADAMaster
30.03.2015, 13:31
Можно при помощи ФБ "Установка метки времени" (закладка "работа со временем" палитры ФБ). Подаете на его вход нужную вам метку времени, а выход архивируете.
Имейте ввиду что записав значение на месяц вперед, записать более ранее время вы уже не сможете.