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

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

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Simple Scada

Страницы: [1] 2 3 ... 18
1
Ваши вопросы / Re: Элемент Флажок
« : Сегодня в 11:08:30 »
Здравствуйте.

Цитировать
Как исключить повторное отжатие флажка, не используя его скрытие с экрана
Для изменения доступности объекта нужно использовать свойство "Enabled".

Цитировать
получились вопросы по временным функциям, спасибо за ответы
Методы для работы с датой/временем можно найти в руководстве по ссылке. Текущую дату/время можно получить с помощью функции "Now". Если требуется получить количество секунд между переменными "DateTime", то можно использовать функцию "SecondsBetween". Далее, используя функцию "SecondsToDateTime", можно перевести количество секунд в значение "DateTime". Используя функцию "SecondsToStr", можно перевести количество секунд в строку вида "чч:мм:сс".

2
Здравствуйте.

Код: (delphi)
var
  aTemp_Corr, aCorr: TM_Variable;
begin
  aTemp_Corr := GetVariableByName(Variable.Name + '_Corr');  // выполняем поиск переменной vrTemp_Corr
  aCorr := GetVariableByName('CorrValue_' + Variable.Name);  // выполняем поиск переменной CorrValue_vrTemp
  if (aTemp_Corr <> nil) and (aCorr <> nil) then             // если переменные существуют, то
    if Variable.IsGoodQuality then                           // если переменная имеет хорошее качество, то
      aTemp_Corr.Value := Variable.AsInt + aCorr.AsInt       // в переменную vrTemp_Corr записываем значение переменной vrTemp + значение переменной CorrValue_vrTemp
    else                                                     // иначе (если переменная имеет плохое качество)
      aTemp_Corr.Value := 0;                                 // в переменную vrTemp_Corr записываем 0
end.

3
Здравствуйте.

Можно использовать следующие способы:
1. Если требуется преобразовать значение из одной шкалы в другую, то можно использовать режим масштабирования переменной.
2.1. Создать внутреннюю переменную (в которую будем записывать результат вычисления) с именем, как у исходной переменной + приставка "_Corr". Например, для переменной "vrTemp" -> "vrTemp_Corr". Далее создать скрипт с типом события "Изменились переменные", добавить внешнюю переменную, изменение которой необходимо отслеживать, в список скрипта и написать такой скрипт:
Код: (delphi)
var
  aTemp_Corr: TM_Variable;
begin
  aTemp_Corr := GetVariableByName(Variable.Name + '_Corr');  // выполняем поиск переменной vrTemp_Corr
  if aTemp_Corr <> nil then                                  // если переменная существует, то
    aTemp_Corr.Value := Variable.AsInt + corr.AsInt;         // записываем в нее значение переменной vrTemp + значение переменной "corr"
end.
Теперь в переменную "vrTemp_Corr" будет записываться значение переменной "vrTemp" + значение переменной "vrTemp_Corr". Данный скрипт универсальный, если таких переменных несколько, то их все можно добавить в список скрипта и он будет выполняться для каждой переменной отдельно.
Данный пример подойдет для группы переменных с одинаковым значением корректировки.
2.2. Если для каждой внешней переменной будет уникальное значение корректировки, то для переменных корректировки также нужно задать однотипные имена, например "CorrValue_" + имя исходной переменной, и использовать следующий код скрипта:
Код: (delphi)
var
  aTemp_Corr, aCorr: TM_Variable;
begin
  aTemp_Corr := GetVariableByName(Variable.Name + '_Corr');  // выполняем поиск переменной vrTemp_Corr
  aCorr := GetVariableByName('CorrValue_' + Variable.Name);  // выполняем поиск переменной CorrValue_vrTemp
  if (aTemp_Corr <> nil) and (aCorr <> nil) then             // если переменные существуют, то
    aTemp_Corr.Value := Variable.AsInt + aCorr.AsInt;        // в переменную vrTemp_Corr записываем значение переменной vrTemp + значение переменной CorrValue_vrTemp
end.
3. Если эту переменную не требуется выводить в тренды, отчеты, генерировать по ней сообщения о нарушении границ и т.д., то можно использовать следующий способ: выводить значение переменной в компонент "Текст" (см. пример №5 по ссылке), с прибавлением необходимого значения. Для этого внешнюю переменную нужно указать в свойстве "Переменная", а переменную корректировки в свойстве "Доп. переменная", и на событие "OnDataChange" использовать следующий код:
Код: (delphi)
begin
  if Sender is TM_Text then                         // проверяем, что Sender это текст
    with Sender as TM_Text do                       // приводим Sender к типу "TM_Text"
      Text := IntToStr(AsInt + VariableEx.AsInt);   // записываем в текст значение основной переменной + значение доп. переменной
end.
Если необходимо выполнять скрипт после изменения значения переменной корректировки, то данный скрипт также необходимо назначить на событие "OnDataChangeEx".

4
Здравствуйте.

1. Вывести данные из сторонней БД в тренды не получится. В трендах отображаются только те данные, которые архивируются штатными средствами.
2. Получить данные из сторонней БД можно в системе отчетов, добавив в отчет свой источник данных. Далее, по аналогии с примером по ссылке, можно построить график по этим данным.

5
Ваши вопросы / Re: Шаблоны и OnInit
« : 04 Ноября 2025, 15:31:48 »
Здравствуйте.

1. В любых непонятных ситуациях нужно в первую очередь проверить журнал сервера скады. С большой вероятностью в нем будут содержаться ошибки или предупреждения, которые укажут, в чем именно проблема.
2. Работа с шаблонами в скриптах рассмотрена по ссылке.

Цитировать
(Sender as TM_Button).Tag
Sender – это объект, который вызвал скрипт. Событие "OnInit" вызывается для шаблона, а не для кнопки, поэтому данная конструкция работать не будет. В строчке "bTC := GetTemplateObject('tmp_butTC') as TM_Button;" Вы уже нашли необходимую кнопку шаблона, поэтому далее нужно использовать ссылку на эту кнопку:
Код: (delphi)
bTC.States[0].Caption := 'TU4' + IntToStr(bTC.Tag);

6
Ваши вопросы / Re: Виртальная клавиатура
« : 17 Октября 2025, 14:11:29 »
Здравствуйте.

В настройках "Options.exe" на вкладке "Simple-Client" доступна опция "Включить виртуальную клавиатуру". В работе устройств с сенсорным экраном есть несколько особенностей, подробнее см. по ссылке.

7
Здравствуйте.

Если имеется в виду перемещение и масштабирование в зоне редактирования проекта в редакторе, то перемещаться по области редактирования можно клавишами W, A, S, D или нажимая и удерживая среднюю кнопку мыши (колесико мыши). Масштабировать область редактирования можно с помощью колесика мыши. Ознакомиться с другими горячими клавишами можно в руководстве по ссылке.

Следует учитывать, что зона редактирования ограничена разрешением проекта. Подробнее о разрешении проекта см. по ссылке.

Если имеется в виду перемещение и масштабирование мнемосхемы проекта в клиенте, то такой возможности нет.

8
Здравствуйте.

Для этого можно использовать режим масштабирования переменной. Задайте переменной шкалу "0-100", а визуальную шкалу в режиме масштабирования "0-6". Тогда значение переменной будет автоматически преобразовываться из л/мин в м3/ч.

9
Ошибки / Re: Веб-клиент и значения объектов
« : 12 Сентября 2025, 10:50:55 »
Здравствуйте.

Ограничения могут задаваться:
1. В настройках прав групп пользователей.
2. В настройках прав для объектов.
3. В настройках прав для окон.
4. По умолчанию, при подключении через web проект доступен только для просмотра. Если требуется управление через web, то необходимо открыть проект в редакторе, перейти в настройки и на вкладке "Общие" в параметре "Web-доступ" выбрать "с управлением".

Если в скада-системе все настройки выполнены корректно, но запись в переменные не работает, то возможно, что:
1. У переменной на OPC-сервере/ПЛК установлен доступ "только чтение", из-за чего переданное из скада-системы значение не может записаться в переменную. После неудачной попытки записи проверьте журнал сервера скады, нет ли в нём сообщений об ошибках записи?
2. В настройках проекта для OPC-сервера включена опция "Только чтение".

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

10
Здравствуйте.

Для этого у полей необходимо включить свойства "Может расти" и "Расти в высоту". См. скриншот во вложении.

11
Здравствуйте.

Информацию по данному вопросу можно найти в руководстве по ссылке.

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

12
Ваши вопросы / Re: Цвет по биту переменной
« : 14 Августа 2025, 18:01:20 »
Здравствуйте.

Чтобы не писать отдельные скрипты для каждого клапана и его частей, можно использовать следующий способ:
1. Разбейте целочисленные внешние переменные на биты, как это описано по ссылке. Тогда с каждым битом переменной можно будет работать как с отдельной переменной.
2. Переменную бита закрытия укажите в свойстве "Переменная" фигуры.
3. Переменную бита открытия укажите в свойстве "Доп. переменная" фигуры.
4. Создайте скрипт с типом события "Универсальный скрипт" и следующим кодом:
Код: (delphi)
begin
  if Sender is TM_Object then         // проверяем, что Sender это объект
    with Sender as TM_Object do       // приводим Sender к типу "TM_Object"
    begin
      if AsBool then                  // если основная переменная объекта = true, то
        Color := RGB(139, 69, 19)     // Brown/closed
      else                            // иначе
      if VariableEx.AsBool then       // если доп. переменная объекта = true, то
        Color := RGB(21, 162, 39)     // Green/opened
      else                            // иначе
        SetInitialColor;              // вернуть изначальный цвет
    end;
end.
5. Данный скрипт назначьте на два события объекта: "OnDataChange" и "OnDataChangeEx" – это нужно для того, чтобы скрипт выполнялся по изменению двух переменных.
6. Готово.

Данный скрипт универсальный и его можно использовать для всех Ваших фигур, у которых необходимо менять цвет по аналогичным условиям. Так как в проекте предполагается использовать однотипные объекты, то рекомендуем применить систему шаблонов.

13
Ваши вопросы / Re: WEB клиент отчет
« : 06 Августа 2025, 15:23:27 »
Здравствуйте.

Для вывода данных из собственной таблицы БД можно использовать пример отчета по ссылке. Но из-за ограничений браузера (браузеры в целях безопасности блокируют попытки сохранения данных на жесткий диск через код) автоматически сохранить отчет на ПК не получится. Поэтому в web-клиенте возможно только открыть отчет для просмотра, а затем сохранить его вручную на жесткий диск в нужном формате, как показано на скриншоте во вложении (при этом обязательно должен использоваться "Продвинутый просмотрщик отчетов").

Для десктоп-клиента отчеты можно сохранять автоматически в различных форматах, в том числе и в Excel - см. пример №5 по ссылке.

14
Ваши вопросы / Re: Вывод сообщений в отчет
« : 06 Августа 2025, 13:34:04 »
Здравствуйте.

Если Вы всё сделали по инструкции из руководства – ссылка, то сейчас у Вас в столбец "Завершено" вместо пустых значений выводится "-". Соответственно, можно отфильтровать отчет по столбцу "Завершено" и значению "-" – см. скриншот во вложении. Как добавить фильтр, см. по ссылке.

15
Ваши вопросы / Re: Экспорт в Excel
« : 06 Августа 2025, 11:06:17 »
Здравствуйте.

Если речь о заголовке отчета, то как это сделать, можно найти в руководстве по ссылке. Если речь о заголовке данных, то у заголовка можно отключить свойство "Печатать на всех страницах", тогда заголовок отобразится один раз на первой странице отчета – см. скриншот во вложении.

Страницы: [1] 2 3 ... 18