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

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

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

torchinsky

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1050 : 29 Июня 2020, 21:36:26 »
Здравствуйте!
Это кнопка с восьмью состояниями. Бонусом - индикация запрещенных комбинаций. При отсутствии оных - можно обойтись кнопкой с пятью состояниями. См. пример во вложении.

За пример спасибо. Возьму на вооружение прием с кнопкой и состояниями. Но этот пример не совсем решает мою проблему. Во вложении примерный вид элемента управления как я его себе представляю. Это все заблокированные кнопки. по ним нажимать нельзя. Только в качестве отображения)

pan2000

  • Постоялец
  • ***
  • Сообщений: 171
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1051 : 30 Июня 2020, 04:17:35 »
Но этот пример не совсем решает мою проблему. Во вложении примерный вид элемента управления как я его себе представляю.
     Здравствуйте!
Во вложении пример возможной реализации элемента управления.

msigx680

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1052 : 30 Июня 2020, 15:58:28 »
Здравствуйте! На первых страницах темы был пример реализации таймера наработки оборудования https://simple-scada.com/forum/index.php?topic=145.30
Но он в последней версии не открывается, может у кого есть пример реализации?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1179
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1053 : 01 Июля 2020, 17:42:13 »
Здравствуйте.

Цитировать
Оч удобно и красиво получилось сделать с помощью button с enabled = false. По факту это не кнопка уже, красивая такая метка.
Для таких целей правильнее использовать компонент "Текст", его внешний вид можно настроить также как у кнопки на Вашем скриншоте(см. вложение). 

Цитировать
На первых страницах темы был пример реализации таймера наработки оборудования https://simple-scada.com/forum/index.php?topic=145.30
Для такой задачи сейчас можно использовать процедуры для работы с таймерами. Пример можно найти в демо-проекте -> страница "Скрипты" -> "Простые скрипты(1)" -> Пример №3. Также, время наработки можно получить по архивным данным переменой при помощи процедуры ArchiveTimeOn. Если требуется создать отчет времени наработки/простоя, то пример такого отчета можно найти по ссылке.

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1054 : 13 Июля 2020, 13:22:59 »
Возник вопрос, как контролировать работоспособность скады, у меня скада используется для сбора и обработки  данных по производству, счетчики и т.д., и постоянно мониторить её работоспособность , часто не выходит , она зависает второй раз , за неделю, сейчас перегрузил сам сервер (ПК).   При зависании,  вэб интерфейс работает, но данные не изменяются , скрипты не работают, но  на первый взгляд , все нормально, в логах нет ничего интересного, хотелось бы в такие моменты отсылать письмо на адрес, но как это сдель если сама скада "мертвая".
« Изменён: 13 Июля 2020, 13:25:01 от lipvasko »

Saurin

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1055 : 14 Июля 2020, 09:33:53 »
Здравствуйте, как отправлять сообщения телеграмм боту (сообщение содержит текущее значение переменной) с помощью GET запроса?
из руководства по скриптам копипастил в проект, но он по чему то не работает, саму ссылку с гет запросом вставляю в браузер - сообщение присылается.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1179
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1056 : 14 Июля 2020, 10:29:59 »
lipvasko, это ненормальная ситуация и нужно разобраться, что приводит к зависанию сервера. Такое возможно если в скриптах допущены грубые ошибки, например зацикливание скриптов друг на друга, из-за чего очередь скриптов будет расти бесконечно. Или имеется скрипт с бесконечный циклом, который никогда не выполнится и соответственно не даст выполниться другим скриптам. Пример зацикленных друг на друга скриптов:

Код: (delphi)
// скрипт по изменению переменной vrA
procedure vrA_OnDataChange(Sender: TM_Control);
begin
  vrB.Value := Random(100);  // меняем значение переменной vrB
end.
 
// скрипт по изменению переменной vrB
procedure vrB_OnDataChange(Sender: TM_Control);
begin
  vrA.Value := Random(100);  // меняем значение переменной vrA
end.
В таких (и других подобных) ситуациях скада будет выдавать отдельное сообщение в журнал сервера о переполнении очереди скриптов.

Ошибки в скриптах, которые невозможно определить на этапе компиляции будут выводиться в журнал сервера. Откройте журнал сервера и просмотрите его на предмет наличия ошибок в скриптах, если в журнале имеются скрипты с ошибками, то их нужно исправить. В журнале будет указано имя скрипта, при выполнении которого возникла ошибка, а также номер строки вызвавшей ошибку. Также, для отладки скриптов можно в настройках Options.exe активировать опцию "Лог скриптов".

Если не получится разобраться, пришлите нам на support@simple-scada.com текущую версию проекта, а также целиком папку Logs из директории "...\Simple-Scada 2\Logs". Также уточните, Вы используете последнюю версию 2.3.6.12 или более старую?

Saurin, для отправки Telegram-сообщений, не нужно использовать GET запросы. Для отправки сообщений через Telegram необходимо произвести предварительную настройку следуя инструкции. После этого можно отправлять Telegram-сообщения из скриптов используя процедуру SendTelegram. Для отправки значения переменной в Telegram-сообщении можно использовать свойство переменной AsStr, например:
Код: (delphi)
begin
  SendTelegram('Значение переменной = ' + MyVar.AsStr);
end.
« Изменён: 14 Июля 2020, 16:59:23 от Simple-Scada »

Saurin

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1057 : 14 Июля 2020, 10:32:51 »
Это да, но если стоит задача отправлять сообщения в разные телеграмм боты?

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1058 : 14 Июля 2020, 14:09:57 »
Да использую последнюю версию , в логах не было , сейчас и ранее , информации по превышению очереди скриптов,  зацикленных скриптов , так же не наблюдал.

Вопрос, при записи  в текстовый файл, необходимо записать информацию на кириллице (по русски) перепробовал уже кучу кодировок в  функции открытия файла ,а в блокноте все равно в  файле не читается информация по русски , вопрос какую кодировку использовать для вывода файл , что бы блокнотом читалось нормально.
« Изменён: 14 Июля 2020, 17:01:25 от Simple-Scada »

Victor_P.

  • Пользователь
  • **
  • Сообщений: 69
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1059 : 14 Июля 2020, 15:21:12 »
Вопрос, при записи  в текстовый файл, необходимо записать информацию на кириллице (по русски) перепробовал уже кучу кодировок в  функции открытия файла ,а в блокноте все равно в  файле не читается информация по русски , вопрос какую кодировку использовать для вывода файл , что бы блокнотом читалось нормально.
Используй юникод.
В блокноте поменяй шрифт и(или), возможно, кодировку. А лучше используй notepad++.

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1060 : 14 Июля 2020, 16:56:40 »
Так весь смех в том, что после юникода , я даже нотепадом в ютф8 прочитать не могу
« Изменён: 14 Июля 2020, 17:09:34 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1061 : 14 Июля 2020, 17:09:08 »
lipvasko, удобнее всего использовать UTF8. Но, судя по описанию, Вы неправильно записываете в файл, а кодировка здесь не при чем. Можно предположить что при записи Вы смешиваете разные типы данных - UTF8String и string.

Saurin, отправлять через разных ботов нельзя (через несколько токенов). Обычно создают одного бота (и один токен) и через него рассылают множеству получателей в чаты. Или в группу, на которую подписаны получатели. Можно используя Telegram API реализовать и свою отправку через GET-запросы, но это будет сложно.
« Изменён: 14 Июля 2020, 17:10:27 от Simple-Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1062 : 14 Июля 2020, 17:40:30 »
Возможно , тогда как можно записать текст ,  на кириллице , не объявляя переменную стринг или ютф8 стринг а просто  такого вида  +'это мир' ?  я , так пробовал писать на латинице и все было ок.
пишу в файл так TextFileWriteLn(DateTimeToStr(Now) +' Создан новый файл ' );
« Изменён: 14 Июля 2020, 22:56:16 от Simple_Scada »

lipvasko

  • Пользователь
  • **
  • Сообщений: 64
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1063 : 15 Июля 2020, 08:59:33 »
Добрый день, ещё подскажите , можно ли читать текстовые файлы по сери , в расшаренных папках и как это сделать , пример пожалуйста.

Миханик

  • Постоялец
  • ***
  • Сообщений: 180
    • Просмотр профиля
    • www.vpa-dv.ru
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1064 : 15 Июля 2020, 12:17:03 »
Подскажите, пожалуйста в чем может быть проблема.
Имеется таблица Table_term, показывающая температуру по дням из БД.
В сервере периодически возникает ошибка: "Ошибка в скрипте Global в строке 162. Access violation at address 00F425D1 in module 'Server.exe'. Read of address 000000BD"
Строка 162 - это: aVal := aCell.Variable.AsSingle;    // получим значение в ячейке

Код: (delphi)
// Раскраска ячеек таблицы в зависимости от значения температуры термоподвески
procedure TableColorCell();
var
  iRow, iCol : integer;
  aCell: TM_TableCell;
  aVal : Single;
begin
  if Table_term.RowCount > 0 then
    for iRow := 1 to (Table_term.RowCount-1) do        // Цикл со второй строки таблицы до конца
      for iCol := 2 to (Table_term.ColumnsCount-1) do  // Цикл с третьего столбца таблицы до конца
      begin
        aCell := Table_term.GetCell(iCol, iRow);       // Получим нужную ячейку
        if aCell <> nil then
        begin
          aVal := aCell.Variable.AsSingle;    // получим значение в ячейке

          if aVal >= Tmax_warning then        // Если значение больше предупредительной уставки, то
            if aVal >= Tmax_alarm then        // Если значение больше аварийной уставки, то
              aCell.Color := clIndianRed      // Раскрашиваем фон ячейки в красный цвет
            else
              aCell.Color := RGB(255,255,128) // Раскрашиваем фон ячейки в желтый цвет
          else
            aCell.Color := clWhite;           // Раскрашиваем фон ячейки в белый цвет, если значение в норме
        end;
      end;
end;