Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 314342 раз)

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #360 : 09 Июня 2017, 16:38:36 »
а если так? :)

Код
if sysUpTime_0.IsGoodQuality = TRUE then
  Online.Value := TRUE
else
  Online.Value := FALSE;
« Изменён: 12 Июня 2017, 16:06:34 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #361 : 10 Июня 2017, 12:03:49 »
А можете теперь все то-же расписать, но с условием, что ExtVar может измениться "с той стороны"? Например есть еще один сервер работающий с тем-же регистром и нам надо переключить кнопки в актуальное положение? При том что щелкать по ним могут фактически одновременно. :-\
Для этого достаточно написать обратный универсальный скрипт на событие OnDataChangeEx для кнопок:

Код
begin
  if not (Sender is TM_Object) then Exit;

  with Sender as TM_Object do
    if (Variable <> nil) and (VariableEx <> nil) then
      Value := VariableEx.Value;
end.
Тогда виртуальная переменная будет всегда иметь актуальное значение и работа будет корректной.
« Изменён: 12 Июня 2017, 16:06:04 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #362 : 10 Июня 2017, 12:18:47 »
Но проблема в том, что не знаю к какому событию привязать данный скрипт, если привязать к посекундному, то каждую секунду будут появляться сообщения, что неправильно. К чему еще можно привязать данный скрипт?
Для данной задачи действительно лучше всего делать проверку в секундном скрипте. А чтобы сообщение не выдавалось каждую секунду, можно создать отдельную внутреннюю переменную с типом данных Boolean и именем, например, vrShown. Тогда секундный скрипт будет таким:
Код: (delphi)
begin
  if sysUpTime_0.IsGoodQuality = False then
  begin
    if vrShown.Value = False then   // если сообщение не было показано
    begin
      AddMessage(Now, mkAlarm, 'Потеря связи с контроллером!', True, True);
      vrShown.Value := True;        // отмечаем, что сообщение было показано
    end;
  end else                          // если качество хорошее, то
    vrShown.Value := False;         // разрешаем выдачу сообщения
end.
Добрый день, ув. форумчане. Помогите разобраться с таблицами. Есть переменная (счетчик), которая записывается в базу данных mysql. Стоит задача: вывести значение счетчика накопленное за час и общее количество за сутки. Т.е. в таблице 24 строки (для каждого часа) и столбец со значением счетчика. значение счетчика передается из контроллера в формате word.
Т.е. Вам нужно взять данные счетчика из БД и на основе этих данных подсчитать накопленное за час и общее за сутки, а затем вывести полученный результат в таблицу?

И еще как организовать перезапись данных в таблице, значения, полученного в этом же часу но днем раньше???
Можно просто связать ячейку таблицы с переменной. По изменению переменной, значение в ячейке будет обновляться.
« Изменён: 28 Ноября 2018, 11:28:18 от Simple-Scada »

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #363 : 11 Июня 2017, 11:25:36 »
Код
begin
  Button5.Value := 1;
  delay := 1000;
  Button6.Value := 1;
  delay := 2000;
  Button2.Value := 1;
  delay := 3000;
  Button1.Value := 1;
end.   
   

 Где ошибка в сценарии?
  Как выкроить время  между кнопками?
Мне нужно, чтобы иметь возможность установить время между : Button5,Button6,Button2,Button1
Помощь много мне нужно это изменение.
« Изменён: 12 Июня 2017, 16:06:59 от Simple-Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #364 : 12 Июня 2017, 10:05:34 »
Создайте секундный скрипт и переменные для времени начала (отсчета) и флажка начала отсчета.
По нажатию на кнопку установите флажок в TRUE.
Дальше после установки флажка увеличивайте на 1 переменную отсчета. Выполняйте действия по значению этой переменной.

Код
if Started.Value = TRUE then
  Counter.Value := Counter.Value+1
else
  Counter.Value := -1;

case Counter.Value of
  0:Button1.Value := 1;
  1:Button2.Value := 1;
  2:Button3.Value := 1;
...
  x:ButtonХ.Value := 1;
  y:Started.Value :=FALSE;
end;

тогда значения кнопок будут изменяться каждую секунду (точнее через Counter.Value секунд от момента установки флажка)
« Изменён: 12 Июня 2017, 16:07:24 от Simple-Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #365 : 12 Июня 2017, 15:32:15 »
..
Для этого достаточно написать обратный универсальный скрипт на событие OnDataChangeEx для кнопок:
...
Прям сейчас так и попробую... А то мои методы явный "оверкил".  ;D ;)

И сразу грабли... Еще нужен Тег... Для определения места начала поиска данных в переменной и записи ее в нужную часть регистра.
Код
var
  Mask:byte;
begin
  if not (Sender is TM_Object) then Exit;
  Mask:=7; //3bit
  with Sender as TM_Object do
    if (Variable <> nil) and (VariableEx <> nil) then
      VariableEx.Value := VariableEx.Value and (Mask shl Tag xor 65535) or (Value shl tag);
end.
Код
var
  Mask:byte;
begin
  if not (Sender is TM_Object) then Exit;
  Mask:=7; //3bit
  with Sender as TM_Object do
    if (Variable <> nil) and (VariableEx <> nil) then
      Value := (VariableEx.Value shr Tag) and Mask;
end.
« Изменён: 12 Июня 2017, 16:02:40 от Teodor »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #366 : 12 Июня 2017, 16:30:49 »
Teodor, мы планируем в ближайшем будущем сделать сохранение присвоенного значения в оперативной памяти на определенное время. Тогда при быстром клике двух кнопок с разными битами одной переменной все присвоения будут корректными и данный вопрос не придется решить скриптами. Но разве у Вас именно такая проблема? Кажется Вы писали, что иногда присвоение у Вас просто не проходит с первого раза. Или тогда речь как раз шла о присвоении разных битов одной переменной?

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #367 : 12 Июня 2017, 17:21:10 »
Teodor, мы планируем в ближайшем будущем сделать сохранение присвоенного значения в оперативной памяти на определенное время. Тогда при быстром клике двух кнопок с разными битами одной переменной все присвоения будут корректными и данный вопрос не придется решить скриптами. Но разве у Вас именно такая проблема? Кажется Вы писали, что иногда присвоение у Вас просто не проходит с первого раза. Или тогда речь как раз шла о присвоении разных битов одной переменной?
Мы ж не просто так у вас 4 лицензии купили :) Это уже третий проект в работе, на котором такой проблемы не стоит, а все летает четенько и шустренько. Зато тут свои "заморочки" в виде подготовки под ханивел с ДИКОЙ ценой точки, потому каждый бит на счету, а тема просто удачно подвернулась :)

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #368 : 12 Июня 2017, 17:45:16 »
Teodor, я не могу сделать кнопки для включения последовательно в течение 30 секунд.
Загрузить проект, пожалуйста, сделайте это.
Администратор и попросить вас, чтобы помочь закончить проект.

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #369 : 12 Июня 2017, 17:45:32 »
Напомните почему так:
 VariableEx.Value := VariableEx.Value and ((Mask shl Tag) xor 65535) + (Value shl tag);
работает, а так:
 VariableEx.Value := VariableEx.Value and ((Mask shl Tag) xor 65535) or (Value shl tag);
нет?

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #370 : 12 Июня 2017, 17:47:13 »
Этот скрипт для кнопки AUTO это ?

Мне нужно, когда я нажимаю на кнопку AUTO.
Включите первую кнопку - 30 секунд второй-30 секунд третий -30 секунд четвертый и так до последнего.
« Изменён: 13 Июня 2017, 18:17:28 от emoxristov »

st-legal

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #371 : 13 Июня 2017, 07:57:05 »
Добрый день, ув. форумчане. Помогите разобраться с таблицами. Есть переменная (счетчик), которая записывается в базу данных mysql. Стоит задача: вывести значение счетчика накопленное за час и общее количество за сутки. Т.е. в таблице 24 строки (для каждого часа) и столбец со значением счетчика. значение счетчика передается из контроллера в формате word.
Т.е. Вам нужно взять данные счетчика из БД и на основе этих данных подсчитать накопленное за час и общее за сутки, а затем вывести полученный результат в таблицу?

И еще как организовать перезапись данных в таблице, значения, полученного в этом же часу но днем раньше???
Можно просто связать ячейку таблицы с переменной. По изменению переменной, значение в ячейке будет обновляться.
Доброе утро, примерно так, только не получится связать ячейку с переменной, т.к. одна и та же переменная должна появляться в своей строке: пример
01:00     300
02:00     350
и т.д.
Но на следующий день ячейка со значением переменной для 01:00 должна перезаписаться новым значением
« Изменён: 13 Июня 2017, 10:13:10 от Simple_Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #372 : 13 Июня 2017, 09:21:58 »
Загрузить проект, пожалуйста, сделайте это.
посмотрите. Я сделал отдельно кнопки, чтобы не поломать ваши и вывел счетчики, чтобы понятно было что происходит в скрипте. Цифры в Case, это секунды задержки включения кнопок после нажатия на АВТО.
вам надо будет поставить для вашей задержки:
0:
30:
60:
90:
« Изменён: 13 Июня 2017, 09:26:16 от Teodor »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #373 : 13 Июня 2017, 09:24:48 »
Но на следующий день ячейка со значением переменной для 01:00 должна перезаписаться новым значением
То есть у вас фиксированный размер таблицы? Тогда вам надо просто 24 переменных и забудьте о базах и таблицах. Выведите их в 24 поля. :)

st-legal

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #374 : 13 Июня 2017, 09:51:22 »
Но на следующий день ячейка со значением переменной для 01:00 должна перезаписаться новым значением
То есть у вас фиксированный размер таблицы? Тогда вам надо просто 24 переменных и забудьте о базах и таблицах. Выведите их в 24 поля. :)
тогда я не очень понимаю как это сделать без базы