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

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

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

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


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

Страницы: 1 [2] 3 4 ... 19
16
Здравствуйте.

Можно использовать следующие способы:
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".

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

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

18
Ваши вопросы / 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);

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

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

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

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

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

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

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

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

22
Ошибки / 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" и укажите, что именно не работает. Если в проекте имеются конфиденциальные данные, то создайте копию проекта, удалите всё лишнее, проверьте, что проблема повторяется и пришлите нам полученный проект.

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

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

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

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

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

25
Ваши вопросы / 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. Готово.

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

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

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

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

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

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

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

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

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

1. Какую версию Simple-Scada Вы используете? Посмотреть можно на вкладке "Состояние сервера". Процедура "ToExcel" доступна в версиях Standard, Professional и Demo-Time.
2. На ПК-сервере установлен MS Excel?
3. "export_end_time.Value" – используйте явное приведение значения переменной к типу DateTime.
4. После выполнения скрипта (клика по кнопке "Экспортировать") проверьте журнал сервера скады, возможно в нём есть ошибки, которые помогут понять причину проблемы.
5. Сервер Simple-Scada установлен в обычном режиме или в режиме службы?
6. Повторите проблему и пришлите на support@simple-scada.com целиком папку с логами "..\Simple-Scada 2\Logs".
7. Пришлите на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects".

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

К сожалению, такой возможности нет. Если переменная изменяется в большом диапазоне, то можно использовать логарифмическую шкалу – см. кнопку "log" при создании/редактировании шкалы.

Также, при просмотре трендов шкалы можно перемещать по вертикали при помощи курсора, а масштабировать – колесиком мыши (если включена опция "Масштаб и перемещение шкалы"). При клике ПКМ по шкале произойдет возврат к оригинальному виду шкалы. Режим масштабирования трендов для web-клиента рассмотрен по ссылке.

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