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

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

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

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #315 : 17 Мая 2017, 15:12:50 »
Повторюсь... У кнопки есть 2 цвета... Когда она нажата-1, и когда отпущена-0. Если кнопка не фиксируемая, то цвет нажатой будет только пока вы ее удерживаете.

Вы можете менять цвет не нажатой (состояние 0) кнопки 11 по событию нажатия кнопки 10. Если допускается возможность блокирования кнопки в нажатом состоянии, то вам надо менять цвет кнопки в обоих состояниях (0 и 1).


LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #316 : 17 Мая 2017, 15:13:32 »
Ребят, спасибо! понял, заработало!

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #317 : 17 Мая 2017, 15:25:39 »
Кстати, я привязал к нефиксируемой кнопке скриптик, который при нажатии инкрементирует переменную на 1, и задает цвет (значок) зависимо от ее нового значения. При достижении граничного значения переменная скидывается в 0. Получилась кнопка с несколькими положениями :)

LIM_IA

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #318 : 17 Мая 2017, 15:27:44 »
Teodor, тогда бы уж скрипт приложили бы) а то заинтриговали)

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #319 : 17 Мая 2017, 15:56:42 »
Teodor, тогда бы уж скрипт приложили бы) а то заинтриговали)
Искать надо :) Если есть реальная необходимость, то найду и подчищу от лишнего.

ПС. Не марайтесь с РГБ... Есть готовые цветовые константы, которых более чем хватает для жизни
Например: clWhite, clRed, clGreen, clYellow, clBlack, clSilver и т.д. http://diversenok.ho.ua/articles/TColor

Оно и понятнее по тексту, что ты хотел сделать год тому. :)

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #320 : 17 Мая 2017, 16:40:35 »
Накидал по новой :)

OnMouseUp:
Код
begin
  if Sender is TM_Button then
    with Sender as TM_Button do
      if VariableEx.Value < 3 then
        VariableEx.Value:= VariableEx.Value + 1
      else
        VariableEx.Value:= 0;
 end.

OnChangeEx:
Код
begin
  if Sender is TM_Button then
    with Sender as TM_Button do
      case VariableEx.Value of
        0: States[0].Color:=clGray;
        1: States[0].Color:=clGreen;
        2: States[0].Color:=clYellow;
        3: States[0].Color:=clRed;
     end;
 end.

К кнопке цепляете эти скрипты и переменные основная (булеан) и дополнительная (инт).

Теперь, при нажатии(точнее отпускании) на кнопку, значение доп переменной изменится, что запустит второй скрипт, меняющий цвет. Если переменную сменить снаружи(например от ОРС), то цвет  все равно изменится.

Так-же, во втором скрипте можно менять и текст/иконки, но вместо
Код
        0: States[0].Color:=clGray;
надо писать:
Код
        0: begin
              States[0].Color:=clGray;
              .....
            end;
« Изменён: 17 Мая 2017, 17:04:30 от Teodor »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #321 : 17 Мая 2017, 17:25:50 »
еще вариант с фиксируемой кнопкой:
Код
begin
  if Sender is TM_Button then
    with Sender as TM_Button do
      if VariableEx.Value = true then
         States[1].Color:=clGreen
      else
         States[1].Color:=clRed;
end.

Отжатая кнопка имеет свой цвет(напр. серый), в нажатом виде зависит от доп переменной.

Полезно если основная переменная например, включает движок(с серого), а дополнительная меняет цвет c зеленого на красный, если нет сигнала с датчика оборотов. Отжав мы получим назад свой серый.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #322 : 17 Мая 2017, 17:29:47 »
Кстати, я привязал к нефиксируемой кнопке скриптик, который при нажатии инкрементирует переменную на 1, и задает цвет (значок) зависимо от ее нового значения. При достижении граничного значения переменная скидывается в 0. Получилась кнопка с несколькими положениями :)
Но ведь для этого можно сделать просто кнопку с фиксацией и множеством состояний, без скриптов, как на скрине во вложении. Такая кнопка есть в Демо-проекте на странице "Инструменты", блок 7.
« Изменён: 17 Мая 2017, 17:31:12 от Simple-Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #323 : 17 Мая 2017, 18:04:53 »
Гы... Век живи, век читай маны...

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #324 : 23 Мая 2017, 15:36:10 »
Здравствуйте уважаемые.
Сделайте пожалуйста  пример, новой функции S-S, автозаполнение таблицы.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #325 : 24 Мая 2017, 09:13:55 »
Здравствуйте.

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

1. Из БД будет сделана выборка всей таблицы с именем `my_table` и эта выборка отобразится в таблице myTable. В первой строке таблицы будут выведены названия столбцов.
Код: (delphi)
var
  aQuery: string;
begin
  aQuery := 'SELECT * FROM `my_table`;';
  myTable.RunSQL(aQuery, tsAll);
end.

2. То же самое, но у таблицы заполнятся все строки кроме первой. Это позволяет сохранить заголовок таблицы неизменным.
Код: (delphi)
var
  aQuery: string;
begin
  aQuery := 'SELECT * FROM `my_table`;';
  myTable.RunSQL(aQuery, tsSaveFixRow);
end.

3. Бывает нужно сделать выборку так, чтобы названия колонок были на русском языке, а в БД они обычно названы на английском. Тогда можно выполнить замену имён прямо в запросе:
Код: (delphi)
var
  aQuery: string;
begin
  aQuery := 'SELECT `col1` as `Столбец 1`, `col2` as `Столбец 2` FROM `my_table`;';
  myTable.RunSQL(aQuery, tsAll);
end.
« Изменён: 28 Ноября 2018, 11:23:05 от Simple-Scada »

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #326 : 24 Мая 2017, 10:25:36 »
Здравствуйте. Спасибо за помощь.
Но тут же возникает другой вопрос. Делая вот такой запрос.
Код: (delphi)
var
  aQuery:string;
begin
  aQuery := 'SELECT AR_NAM, AR_ARTICLECODE, DP_TOTALWEIGHT, DP_BATCHESSET'+
            'FROM CFG_ARTICLE INNER JOIN CFG_DAYPROGRAM'+
            'ON CFG_ARTICLE.AR_ARTICLE_ID = CFG_DAYPROGRAM.DP_PRODUCT_ID'+
            'WHERE DP_STATUS_ID IN (1,2) AND DP_PRODUCT_ID <> 42'+
            'ORDER BY DP_PRODUCTIONNUMBER;';
                                               
  tblPlan.RunSQL(aQuery, tsSaveFixRow);
end.

Выдает вот такое сообщение.


Хотя в СУБД запрос проходит на ура

В чем может быть ошибка?
« Изменён: 28 Ноября 2018, 11:23:19 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2998
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #327 : 24 Мая 2017, 10:40:20 »
Здравствуйте.
У вас пробел пропущен между DP_BATCHESSET и FROM. Затем между CFG_DAYPROGRAM и ON и т.д. в каждой строке.
Код: (delphi)
var
  aQuery:string;
begin
  aQuery := 'SELECT AR_NAM, AR_ARTICLECODE, DP_TOTALWEIGHT, DP_BATCHESSET '+
            'FROM CFG_ARTICLE INNER JOIN CFG_DAYPROGRAM '+
            'ON CFG_ARTICLE.AR_ARTICLE_ID = CFG_DAYPROGRAM.DP_PRODUCT_ID '+
            'WHERE DP_STATUS_ID IN (1,2) AND DP_PRODUCT_ID <> 42 '+
            'ORDER BY DP_PRODUCTIONNUMBER;';
                                               
  tblPlan.RunSQL(aQuery, tsSaveFixRow);
end.
« Изменён: 28 Ноября 2018, 11:23:49 от Simple-Scada »

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #328 : 24 Мая 2017, 11:01:17 »
Огромное Спасибо !!!!!!!!!
Вечно я с этими переносами путаюсь.

Миханик

  • Постоялец
  • ***
  • Сообщений: 180
    • Просмотр профиля
    • www.vpa-dv.ru
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #329 : 29 Мая 2017, 13:02:52 »
Подскажите почему может не отрабатывать ежесекундный скрипт, хотя компиляция проходит:
Это теги проекта:
T111_1, T111_2, ... T111_29
...
T255_1, T255_2, ... T255_29

Код: (delphi)
Const
  Cname : array[1..52] of string = ('T111', 'T112', 'T113', 'T114', 'T115', 'T116', 'T121', 'T122', 'T123', 'T124', 'T125', 'T126',
  'T133', 'T134', 'T135', 'T136', 'T141', 'T142', 'T143', 'T144', 'T145', 'T151', 'T152', 'T153', 'T154', 'T155',
  'T211', 'T212', 'T213', 'T214', 'T215', 'T216', 'T221', 'T222', 'T223', 'T224', 'T225', 'T226', 'T231', 'T232', 'T233', 'T234',
  'T241', 'T242', 'T243', 'T244', 'T245', 'T251', 'T252', 'T253', 'T254', 'T255');
Var
  Tmin, Tmax, Tavg, pp : Double;
  i, j, n : Word;
  Tname : string;
  p: ^string;
begin

  for i:=1 to 52 do
    begin
      n := 29;
      Tname := Cname[i] + '_01';
      p := @Tname;
      pp := Double(p);
      Tmin := pp;
      Tmax := pp;
      Tavg := pp;

      for j := 2 to n do
        begin
          Tname := Silosname[i] + '_' + IntToStr(j);
          p := @Tname;
          pp := Double(p);
          if pp < Tmin then Tmin := pp;
          if pp > Tmax then Tmax := pp;
          Tavg := Tavg + pp;
        end;
      Tavg := Tavg/n;
 
  //как теперь присвоить Тегам T111_avg, T112_avg, ..., T255_avg значение переменной Tavg?
    end;
end.
« Изменён: 28 Ноября 2018, 11:24:16 от Simple-Scada »