Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

GEW

#465
Спасибо, видимо недоглядел. Искал по руководству скриптов в свойствах кнопки подсказку, наверно забыли добавить в руководство.
Было бы кстати неплохо добавить функцию GetVariableByID. Тогда бы можно было было писать в тэг ID переменной.

Simple-Scada

Цитата: GEW от 23 августа 2017, 11:49:49Искал по руководству скриптов в свойствах кнопки подсказку, наверно забыли добавить в руководство.
Все компоненты в Simple-Scada 2 имеют свои уникальные свойства, а остальные свойства наследуют из базовых классов TM_Control и TM_Object. Свойство Hint как раз является базовым и описано здесь. Прочтите эту короткую статью в руководстве по скриптам, чтобы лучше понять организацию объектов в Simple-Scada 2.

Миханик

С версии 2.2.3.0 свойства Временных трендов доступны для изменения из скриптов, но например, свойство Variable не доступно для редактирования, можно только получить ID переменной через свойство VariableID.
Можно ли добавить для редактирования свойство Variable?
То есть мне нужно из скриптов менять переменные временного тренда (скриншот), чтобы не плодить целый огород разных временных трендов. Может я не там ищу?

Simple-Scada

Миханик, да, можем добавить это свойство и сделать его доступным для изменения. В ближайшем обновлении сделаем.

Миханик

Спасибо, было бы очень здорово!

AutoCY

День добрый!

Подскажите, возможно ли с помощью ОТЧЕТА получить выборку времени наработки оборудования? Когда-то я уже писал вам по этому поводу, еще до появления ОТЧЕТА. Тогда пришлось создавать массу переменных.

Simple_Scada

Здравствуйте!

В последнем обновлении (2.2.5.0) появились процедуры для работы с архивом. Среди них есть процедура ArchiveTimeOn, с помощью которой можно легко получить время наработки оборудования за указанный промежуток времени. Такой вариант Вам подойдет?

AutoCY

#472
Да, похоже это как раз то, что нужно. Скачал на свой ПК полную версию 2.2.5.0 и time - версию, т.к. USB - ключ стоит у нас на сервере. Однако, ни в той ни в другой папке нет файла Client. exe. Как быть в этой ситуации?  И еще вопрос, раньше устанавливал MySQL на свой ПК, все работало, после вируса ПЕТЯ мой Server - скада пишет об отсутствии активных БД, хотя я переустанавливал MySQL. Не подскажите, в чем может быть проблема?

Спасибо за вашу работу!  ;)

Simple_Scada

#473
Здравствуйте!

ЦитироватьОднако, ни в той ни в другой папке нет файла Client. exe.
В архиве с любой версией имеются все необходимые для работы файлы, в том числе и клиент. Проверьте внимательно - может архив не до конца скачался или при распаковке Вы выделяете все содержимое кроме клиента. Либо файл клиента удаляется сторонним По (например антивирусом) после распаковки.

Цитироватьскада пишет об отсутствии активных БД, хотя я переустанавливал MySQL.
В настройках Вашего проекта на вкладке "База данных" укажите имя БД, а также имя пользователя и пароль, которые были заданы при установке MySQL. Нажмите кнопку "Проверить" - если
связь с БД установится, то выведется окошко об успешном соединении с БД.

AutoCY

#474
Все сделал по Вашей инструкции - получилось.
Теперь о самом формировании выборки. Написал следующий скрипт:

Код: pascal
var
  DateStart, DateEnd: TDateTime;
begin

  if bn_1.AsBool = true then //bn_1 - кнопка формирования выборки
     begin
      DateEnd:= End_.AsDateTime;
      DateStart:= Start.AsDateTime;
     end;

  ArchiveTimeOn(MyVariable, MyVariableRes, DateStart, DateEnd);

end.

Выборка формируется по календарю, однако дата выводится странная:
30.12.1899 и далее время в нормальном виде. В чем может быть моя ошибка по дате?

Simple_Scada

Вероятно Вы создали внутренние переменные "End_" и "Start" с типом DateTime для указания периода. Внутренние переменные при запуске проекта инициализируются нулем, поэтому и выводится дата 30.12.1899 - она соответствует нулю. Вам нужно инициализировать переменные - для этого создайте скрипт с типом события "Запуск проекта" и напишите скрипт:

Код: pascal
begin
  End_.Value := Now;
  Start.Value := Now;
end.

Скрипт выполнится при запуске проекта и переменные инициализируются текущей датой и временем. Либо можете указать произвольные дату/время воспользовавшись процедурами и функциями для работы с датой и временем.

Также, в Вашем скрипте можно не использовать локальные переменные - можно сразу указывать переменные начала/конца:

Код: pascal
begin
  if bn_1.AsBool = true then //bn_1 - кнопка формирования выборки
  ArchiveTimeOn(MyVariable, MyVariableRes, Start.AsDateTime, End_.AsDateTime);
end.

AutoCY

Цитата: Simple_Scada от 25 сентября 2017, 14:31:31Вероятно Вы создали внутренние переменные "End_" и "Start" с типом DateTime для указания периода. Внутренние переменные при запуске проекта инициализируются нулем, поэтому и выводится дата 30.12.1899 - она соответствует нулю. Вам нужно инициализировать переменные - для этого создайте скрипт "Запуск проекта" и напишите скрипт:

Написал два скрипта. Первый для установления начальной даты Now переменным при ЗАПУСКЕ ПРОЕКТА, второй - для отображения данных при нажатии кнопки. Локальные переменные удалил, по Вашему совету. Изначально пишется текущая дата без времени, далее при выборе времени по календарю опять дата превращается в 30.12.1899. Я уже менял и даты выборки помимо часов и минут, и изначально задавал их разными - это отображается в календаре, но при создании выборки дата опять возвращается на 30.12.1899.

Скрипт при запуске проекта:
Код: pascal
begin
  Time_start.Value := (Now -1);
  Time_end.Value := Now;
end.   

Скрипт универсальный при нажатии кнопки:
Код: pascal
begin
  if btn_resultat.AsBool = true then
    ArchiveTimeOn(Start_time, Time_resultat, Time_start.AsDateTime, Time_end.AsDateTime) ;
end.  
Наименования переменных изменены.

Simple_Scada

Теперь понятно о чем Вы говорите. Вы имеете ввиду, что в календаре, в который выводится переменная наработки "Time_resultat" отображается дата 30.12.1899? Но у наработки нет даты - в нее выводится время наработки. У календаря наработки скройте дату и будет отображаться только время. Если нужно выводить наработку в другом формате, то напишите как Вы хотите выводить наработку, например, в формате "дни, часы, минуты" или как то по другому? Мы приведем пример как это сделать.

Уточнение - мы совсем забыли, что в последних обновлениях внутренние переменные DateTime уже сами инициализируются текущей датой. Поэтому нет необходимости инициализировать их при запуске проекта.

AutoCY

#478
Цитата: Simple_Scada от 25 сентября 2017, 16:19:38Теперь понятно о чем Вы говорите. Вы имеете ввиду, что в календаре, в который выводится переменная наработки "Time_resultat" отображается дата 30.12.1899?

Здравствуйте!

Не совсем так. Я извиняюсь за не точность изложения.
В проекте я ввел два календаря: начало и конец даты и времени выборки Time_start и Time_end. Отображение времени и даты в них корректны. Далее я ввел цифровое поле с переменной Time_resultat и именно в нем отображается дата 30.12.1899 совместно с нормальным временем.

AutoCY

Работа с архивом - процедура ArchiveTimeOn. У нее есть параметр ALayer, который определяет слой архива. Основной слой - какой выводит формат?