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

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

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

Dmitry_Impuls

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #945 : 17 Октября 2019, 09:54:15 »
Здравствуйте. Для этого нужно отправить SQL-запрос на выполнение через RunSQL (пометить запрос уникальным тегом, например 20) и в отдельном скрипте с типом события "Выполнен SQL-запрос" убедиться что это запрос с тегом = 20. Далее пройти по полученному результату запроса и добавить каждую строку в раскрывающийся список через ComboBox.AddItem. Простой пример выполнения запроса и обработки результата описан в этой статье.

Позволю себе дополнить...
В запрос можно включить имя ComboBox`а по OnClick
Код: (delphi)
  if Sender is TM_ComboBox then
  with Sender as TM_ComboBox do
    aQuery:='SELECT '''+Name+''', `ItemName` FROM  `ItemList`;';

тогда будет универсальная обработка для любого ComboBox`а
Код: (delphi)
  if (aTag = 20) then  // наш запрос
  if (not (DataSet.IsEmpty)) then                                                        // не пустая выборка
    begin
      aCombo:=GetComboBoxByName(DataSet.Fields[0].AsUTF8String); // получили имя пославшего запрос объекта
      aCombo.Clear;                                                                            // очистили список
      aCombo.AddItem('');                                                                   // добавили (если надо)  первую пустую строку
      while not (DataSet.EOF) do
      begin
        aCombo.AddItem(DataSet.Fields[1].AsUTF8String);                     // заполняем список
        DataSet.Next
      end
    end
  else Exit;                                                                                        // если в выборке  нед данных - вышли

P.S. Есть неприятный момент - список разворачивается и тут же сворачивается.
P.P.S. Можно уменьшить длительность двойного клика в системе или чётче давить на мышку  ;D

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #946 : 17 Октября 2019, 10:01:27 »
Цитировать
В запрос можно включить имя ComboBox`а по OnClick
Если нужно связать запрос с объектом, то использовать имя - плохое решение. Везде где это возможно, лучше избегать использования имён, т.к. в конечном счёте придётся искать ссылку на объект по имени, например через GetComboBoxByName и это затратная операция. Правильнее будет передавать объект напрямую в RunSQL:
Код
RunSQL(aQuery, ComboBox1, 20);

Затем обратиться к объекту можно также напрямую, через свойство DataSet.Sender, без поиска по имени.
Код: (delphi)
var
  aComboBox: TM_ComboBox;
begin
  aComboBox := DataSet.Sender as TM_ComboBox;
end.

Цитировать
Есть неприятный момент - список разворачивается и тут же сворачивается.
Да, вызов ComboBox.AddItem будет приводить к обновлению списка и если в этот момент список был развёрнут, то он свернётся.
« Изменён: 17 Октября 2019, 10:06:04 от Simple-Scada »

Dmitry_Impuls

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #947 : 17 Октября 2019, 15:01:32 »
Спасибо. Как-то упустил этот момент при чтении документации... :(
« Изменён: 17 Октября 2019, 15:47:12 от Simple-Scada »

VladD

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #948 : 21 Октября 2019, 08:10:17 »
Добрый день..Имеется переменная типа word, каждый бит которой работает со своим image на свойство color...возможно ли создать универсальный скрипт? Не нашел в свойсвах image работу с битами.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1365
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #949 : 21 Октября 2019, 09:07:43 »
Здравствуйте.

Да, возможно написать универсальный скрипт используя свойство изображения "Тэг". У изображений нужно задать свойство "Тэг" равным биту, по которому должен меняться цвет и написать такой скрипт:
Код: (delphi)
begin
  if Sender is TM_Image then        // сначала убедимся, что скрипт вызван объектом "Изображение"
    with Sender as TM_Image do      // далее будем работать с объектом Sender, как с изображением
      if GetBit(AsInt, Tag) = TRUE then
        Color := clGreen
      else
        Color := clRed;
end.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #950 : 23 Октября 2019, 15:53:13 »
Приветствую ... возникли вопросы , один интересный , другой серьезный.,
1) есть скрипт по чтению из своей таблицы , одинаковый в 3-х местах (проект запущен , выполнение раз в 1 час и на кнопке ) интересность в том ,что таймштамп передается  первый час после запуска сервера  в формате год.мес.день час.мин.сек , а после примерно часа работы сервера (но было на 3-4 обновление) и далее год_мес_день час_мин_сек, почему так происходит , почему разделитель меняется?
2)Вопрос на будущее , есть MICROSOFT SQL SERVER, зная  пароль , имя пользователя и место откуда  мне нужны данные , смогу я из скады  выкачать данные с базы M SQLСЕРВЕРА? или не выйдет , если да то примерный скрипт для ознакомления, если можно.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #951 : 23 Октября 2019, 22:46:23 »
Здравствуйте.

Цитировать
1) есть скрипт по чтению из своей таблицы , одинаковый в 3-х местах (проект запущен , выполнение раз в 1 час и на кнопке ) интересность в том ,что таймштамп передается  первый час после запуска сервера  в формате год.мес.день час.мин.сек , а после примерно часа работы сервера (но было на 3-4 обновление) и далее год_мес_день час_мин_сек, почему так происходит , почему разделитель меняется?
Куда передаётся? В скаду? В компонент таблица? Или в другой компонент? Или с неправильным форматом передаётся из скады в таблицу базы данных?

Цитировать
2)Вопрос на будущее , есть MICROSOFT SQL SERVER, зная  пароль , имя пользователя и место откуда  мне нужны данные , смогу я из скады  выкачать данные с базы M SQLСЕРВЕРА? или не выйдет , если да то примерный скрипт для ознакомления, если можно.
Сейчас можно только задать в параметрах БД проекта (меню Проект - Настройки - База данных) СУБД SQL Server. Но скада создаст в ней отдельную БД с нужной структурой и будет работать с этой БД, а обратиться к посторонним данных не получится. В будущем мы планируем дать возможность создавать отдельные подключения к множеству БД, чтобы можно было читать данные из них.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #952 : 24 Октября 2019, 13:00:45 »
Пишется сразу в таблицу, происходит так , запрос с определенным тэгом - ловится ответ в скрипт ответ от базы данных     с заранее заданным тэгом и отправляется сразу в таблицу
« Изменён: 24 Октября 2019, 13:12:17 от Simple_Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #953 : 24 Октября 2019, 14:43:29 »
Приведите код скрипта которым выполняется заполнение таблицы.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #954 : 25 Октября 2019, 12:49:19 »
добрый день , подскажите какие настройки должны быть для работы с  OPC DA удаленным  ПК, как настраивать DCON

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #955 : 25 Октября 2019, 14:23:36 »
Приведите код скрипта которым выполняется заполнение таблицы.
Код: (delphi)
procedure s22; var aQuery: string;
begin
  aQuery := 'SELECT `timestamp`,`vesy`,`sort` value FROM `silosa_download`  ' +
    ' WHERE ID=22  ORDER BY `timestamp`  DESC limit 1;'; 
  RunSQL(aQuery, nil, 22);
end;

Код: (delphi)
  if DataSet.Tag = 22 then 
  begin
    Table4.Columns[1].Cells[1].text := DataSet[0].AsUTF8String; 
    Table4.Columns[2].Cells[1].text := DataSet[1].AsUTF8String;
    Table4.Columns[3].Cells[1].text :=  DataSet[2].AsUTF8String;
  end;
« Изменён: 25 Октября 2019, 20:21:58 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #956 : 25 Октября 2019, 20:34:28 »
В обновлении 2.3.6.2 изменили формат на пользовательский при конвертации из наборов данных (DataSet), теперь формат всегда должен быть стандартный, т.е. "дд.мм.гггг чч:мм:сс".

подскажите какие настройки должны быть для работы с  OPC DA удаленным  ПК, как настраивать DCON
Настройки для разных OPC-серверов могут отличаться и обычно описаны в справке к OPC-серверу. Также в разных ОС настройки могут отличаться. Основные пункты настройки описаны в руководстве, в этом разделе. Эти настройки проверены с ОС Windows 7 + OPC-сервер KepServerEx.

VladD

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #957 : 29 Октября 2019, 08:20:16 »
Добрый день...с чем может быть связано такое проявление..объект Field..тип связанной переменной single..разрешен ввод по адресу ПЛК (в ПЛК переменная Real)..при попытке ввода (во время кликанья мышью в поле объекта) возникает неопределенное число ("мусор") в синем фоне..если ввести сразу новое значение то оно вступает в силу, но если сбросить синий фон, то приходится удалять "мусор" ручками. Спасибо.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #958 : 29 Октября 2019, 09:53:36 »
Здравствуйте.

В последней версии 2.3.6.2 (пока не опубликована официально) мы исправили формат при вводе значений типа Double и Single в поле. Раньше значение могло отображаться с большим количеством знаков после десятичной запятой, что и происходит в Вашем случае, судя по описанию. Обновление можно скачать в этой теме. Если Вы используете лицензионную версию (с USB ключом), то отправьте запрос на support@simple-scada.com с указанием организации на которую приобреталась лицензия, мы вышлем ссылку.

VladD

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #959 : 29 Октября 2019, 18:02:58 »
Обновился..но проблема не ушла...выскакивают цифры точности