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

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

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

AJR

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #885 : 02 Августа 2019, 07:12:01 »
Можно подробнее?

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #886 : 02 Августа 2019, 08:49:35 »
добрый день ,подскажите , а почему многие скрипты не работают в вэб , например  вызов окна,  как то можно в будущем это изменить

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #887 : 02 Августа 2019, 09:59:11 »
Здравствуйте.

Цитировать
Можно подробнее?
Поясните пожалуйста, что именно требуется объяснить подробнее?

Цитировать
добрый день ,подскажите , а почему многие скрипты не работают в вэб , например  вызов окна,  как то можно в будущем это изменить
С ограничениями, имеющимися при работе через web-клиент можно ознакомиться по ссылке. Привязка окон в web-клиенте, а также событие OnClick работает только у компонентов "Кнопка", "Флажок", "Список" "Фигура", "Текст", "Изображение", "Трубопровод", "Линия", "Резервуар", "Заслонка". Посмотреть пример вызова окон в web через скрипты можно на нашем web-сервере -> страница "Скрипты" -> пример №8. Если не получится разобраться, пришлите нам для проверки папку с проектом из директории "\Simple-Scada 2\Projects\Имя_проекта" на support@simple-scada.com и укажите какой скрипт не работает.
« Изменён: 02 Августа 2019, 10:09:11 от Simple-Scada »

AJR

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #888 : 02 Августа 2019, 10:02:11 »
Подробнее о скрипте. Как два тега с опс сервера привязать.

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #889 : 02 Августа 2019, 10:28:45 »
Подробнее о скрипте. Как два тега с опс сервера привязать.
А инструкцию читать не пробовал? Говорят, что помогает иногда.

Simple_Scada

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

Цитировать
Подробнее о скрипте. Как два тега с опс сервера привязать.
Добавить теги с OPC-сервера можно одним из следующих способов:

1. Импорт тегов с OPC DA, OPC UA сервера.
2. Импорт из файла.
3. Добавление вручную.

После этого теги будут видны в редакторе переменных и с ними можно работать в проекте и скриптах.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #891 : 13 Августа 2019, 13:35:34 »
Добрый день , возможно ли сделать разбор строки , несколько значений через разделитель, и второе главное , возможно из одного скрипта вызвать другой скрипт, если да то как , какой синтаксис.
« Изменён: 13 Августа 2019, 17:31:48 от lipvasko »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #892 : 13 Августа 2019, 21:12:21 »
Добрый день , ещё вопрос есть скрипт  в редакторе проходит компиляцию, а при сохранении нет , постоянно ищет begin или пишет внутренняя ошибка в ядре скады строка 0 символ 0, менял конструкцию разными способами , результат 0. Насколько понимаю работать это не хочет , а мне очень надо, что бы не плодить кучу скриптов .
Код: (delphi)
var
  i: integer;
  sw: string;
begin
  i := 99;
  while i <= 0 do
  begin
    sw := IntToStr(i);
    if FileExists('vesy_1_'+sw.'txt', 'C:Base/') and (read.Value) then
      RenameFile('C:Base/vesy_1_'+sw.'txt', 'C:Base/vesy_1.txt')
  end;

  i := i - 1;
  end;
end.
« Изменён: 13 Августа 2019, 21:33:37 от Simple-Scada »

Миханик

  • Постоялец
  • ***
  • Сообщений: 185
    • Просмотр профиля
    • www.vpa-dv.ru
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #893 : 14 Августа 2019, 04:57:41 »
Странно почему проходит компиляцию в редакторе - у вас в этом цикле один "end;" лишний, скорее всего первый
Код: (delphi)
  begin
    sw := IntToStr(i);
    if FileExists('vesy_1_'+sw.'txt', 'C:Base/') and (read.Value) then
      RenameFile('C:Base/vesy_1_'+sw.'txt', 'C:Base/vesy_1.txt')
  end;
 
  i := i - 1;
  end;
и вы уверены, что вот здесь: "while i <= 0 do" правильное условие? Может нужно изменить знак на ">"?

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #894 : 14 Августа 2019, 07:58:33 »
Странно почему проходит компиляцию в редакторе - у вас в этом цикле один "end;" лишний, скорее всего первый
Код: (delphi)
  begin
    sw := IntToStr(i);
    if FileExists('vesy_1_'+sw.'txt', 'C:Base/') and (read.Value) then
      RenameFile('C:Base/vesy_1_'+sw.'txt', 'C:Base/vesy_1.txt')
  end;
 
  i := i - 1;
  end;
и вы уверены, что вот здесь: "while i <= 0 do" правильное условие? Может нужно изменить знак на ">"?
да уверен, а по поводу енда, я же писал использовал разные конструкции , и энд убирал и добавлял беги и тд всегда один результат

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #895 : 14 Августа 2019, 08:05:51 »
Добрый день , возможно ли сделать разбор строки , несколько значений через разделитель, ...

Пример функции по разбору CSV-строки. Функция возвращает n-ое поле (n = 1..) или "пусто" для несуществующего поля.
Код: (delphi)
  function GetField(aStr: string; n: integer): string;
  var i, j: integer;
     aStr1: string;
  begin
    j := 1;                              // номер собираемого поля
    aStr1 := '';                         // собственно собираемое поле
    for i := 1 to Length(aStr) do begin
      if aStr[i] = ';' then begin        // проверить на разделитель
        if j = n then begin
          GetField := aStr1;             // поле найдено
          exit;
        end;
        aStr1 := ''; j := j + 1;         // на следующие поле
      end
      else aStr1 := aStr1 + aStr[i];     // продолжить собирать поле
    end;
    GetField := aStr1;                   // поле с номером n не найдено в строке
  end;


Цитировать
. .  и второе главное , возможно из одного скрипта вызвать другой скрипт, если да то как , какой синтаксис.
Единственный вызвыаемый из другого скрипт это "Изменились переменные". Можно было использовать для общего кода.


Добрый день , ещё вопрос есть скрипт  в редакторе проходит компиляцию, а при сохранении нет ...
Исправленный код:
Код: (delphi)
var
  i: integer;
  sw: string;
begin
  i := 99;
... и вы уверены, что вот здесь: "while i <= 0 do" правильное условие? Может нужно изменить знак на ">"?
Код: (delphi)
  while i > 0 do        // цикл выполнится 99 раз, i >= 0  - выполнится 100 раз 
  begin
    sw := IntToStr(i);
    if FileExists('vesy_1_' + sw + 'txt', 'C:Base/') and (read.Value) then  // ошибка выражения  +sw.'txt'
      RenameFile('C:Base/vesy_1_'+sw+'txt', 'C:Base/vesy_1.txt');
    i := i - 1;
  end;
end.
« Изменён: 14 Августа 2019, 09:43:07 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #896 : 14 Августа 2019, 08:11:09 »
Спасибо , за + , все получилось !

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #897 : 14 Августа 2019, 08:13:48 »
И еще вопрос , может кому то покажется глупым , но подскажите правила расстановки  end  end;  и ;   и без ;  ...... компилятор пропускает много вариантов их расстановки и этим путает, в других языках , все как то наглядней
« Изменён: 14 Августа 2019, 08:16:48 от lipvasko »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #898 : 14 Августа 2019, 09:26:06 »
если в блоке всего одна строка кода, то ";" после нее можно не ставить
но лучше все-же ставить для однообразности кода

Neskad

  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #899 : 14 Августа 2019, 10:57:18 »
Добрый день , возможно ли сделать разбор строки , несколько значений через разделитель, и второе главное , возможно из одного скрипта вызвать другой скрипт, если да то как , какой синтаксис.
Напрямую вызвать скрипт на выполнение из другого скрипта нельзя. Можно делать это косвенными методами (через событие "изменились переменные", "выполнен SQL-запрос"). Но вообще это обычно и не требуется. Если создать скрипт "глобальный модуль", то функции и переменные из этого модуля можно использовать в дальнейшем практически в любом другом скрипте. (насчет переменных - желательно не злоупотреблять).