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

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

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

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


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

Страницы: [1] 2 3 ... 9
1
Пытался вытащить предыдущее значение переменной, чтобы получить как "в оригинале": Было:...  Стало:... ! но не вышло!
Использовать пытался PrevAsInt ... подскажите как правильно сделать и можно ли....
Сообщение должно быть строкой, поэтому нужно использовать функцию "PrevAsStr"(работает только в скриптах с типами событий "Изменились переменные" и "Нарушена граница"). Также, чтобы исключить вывод сообщений при перезапусках проекта, можно использовать функцию "IsFirstChange":
Код: (delphi)
begin
  // пропускаем первое изменение, чтобы сообщения не выдавались при перезапусках проекта
  if IsFirstChange then Exit;
  // добавляем сообщение в список действий оператора
  AddActionMessage( 'Было: ' + PrevAsStr + ' Стало: ' + Variable.AsStr,'Кнопка М156');
end.

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

как это работает и как этот журнал вообще настроить? все настройки в проекте излазил и не понимаю как с этим работать, да и в руководстве ни слова не нашел! мне нужно чтобы я точно понимал, какие совершены действия (нажата кнопка аварийного останова или выполнен пуск насоса) а то сейчас это у меня через сообщения сделано, что мне не нравится...
В текст сообщения "Действия оператора" выводится имя объекта и переменной, для которых выполнено действие. Если у переменной указано описание, то при условии, что используется система архивации v2, в текст сообщения выводится описание переменной, а не имя. Соответственно, чтобы получить подробный текст сообщения, всем объектам и переменным нужно давать понятные имена и описания. Также, начиная с версии 2.6.10.0 (при использовании системы архивации v2) в настройках проекта можно менять формат сообщений о действиях оператора.

а я думал, что сюда еще можно прикрутить внешние теги (физические кнопки)
Если действия выполняются не из клиента Simple-Scada, то сообщения для таких действий можно добавлять через скрипты, используя процедуру AddActionMessage.


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

Цитировать
Есть необходимость отображения дискретных сигналов. Не подскажете, как правильно сделать отображение на трендах входных переменных типа Bool?
Для дискретных переменных рекомендуем выбирать "Тип архивации -> По-изменению" и "Тип отрисовки тренда -> Ступенчатый". Тогда, при просмотре трендов переходы из одного состояния в другое будут четко видны – точки тренда в местах перехода будут соединяться в виде "ступенек". Также см. свойство тренда "Задать положение", при помощи него для однотипных трендов, которые могут накладываться друг на друга можно задать разное положение или при необходимости расположить тренды друг над другом.

Цитировать
И по шкале - ее границы ставить 0- минимум и 1 максимум?
Шкала переменной обычно должна соответствовать реальному диапазону значений, которые может принимать переменная. Если переменная изменяется в диапазоне от 0 до 1, то шкалу данной переменной нужно установить 0-1.

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

В данном случае можно использовать цикл for и функцию GetVariableByName для поиска переменных по имени:
Код: (delphi)
var
  i: integer;
  aVar: TM_Variable;
begin
  for i := 1 to 120 do
  begin
    aVar := GetVariableByName('Block' + IntToStr(i)); // ищем переменную с именем Block№
    if aVar <> nil then     // если переменная существует
      aVar.Value := 1;        // то, записываем в нее 1
  end;
end.

5
Ваши вопросы / Re: Создаём мнемознак
« : 12 Октября 2023, 16:18:27 »
Здравствуйте.

Вместо использования нескольких изображений и изменения их видимости нужно создать одно изображение, состоящее из нескольких кадров. Далее с помощью утилиты "Pictures" разбить его на кадры и менять их через свойство "Кадр(Frame)". Пример универсального скрипта:
Код: (delphi)
begin
  if Sender is TM_Image then   // проверяем, что Sender это изображение
    with Sender as TM_Image do // приводим Sender к типу "TM_Image"
      Frame := AsInt;          // показать кадр изображения равный значению переменной
end.
Данный скрипт нужно назначить на событие "OnDataChange" изображения, а в свойство "Переменная" указать переменную "varSost". Теперь кадр изображения будет меняться в зависимости от значения переменной "varSost". Например, если переменная равна 1, то будет показан 1 кадр, если 2, то 2 кадр и тд.

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

Если данные берем с arOPC, и у нас качество связи к примеру в положении "BAD", я бы хотел, отображая этот параметр в SimplkeScada, просигнализировать, к примеру, обведя поле параметра красной рамочкой, да и сообщение о недостоверности параметры каким то образом выдать бы.
См. опцию "Контроль качества" (Options.exe -> Simple-Client -> "Контроль качества"). Если опция активна, то при плохом качестве считываемых тегов на клиентах рядом с объектом будет отображен знак "!" (вместо этого в web объект будет выделен оранжевой рамкой). Также, значок "!" может появляться, если сетевой трафик между сервером Simple-Scada и OPC-сервером блокируется фаерволом или антивирусным ПО.
 
Также, для контроля связи с ПЛК/устройством можно воспользоваться перечисленными по ссылке способами и, например, выводить предупреждение при потере связи.

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

На первом скриншоте видно, что начало и конец периода времени, за который требуется сформировать отчёт — равны. Соответственно, при формировании такого отчета "Источник данных" будет пустой, поэтому он не будет выводиться в отчет.

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

Для этого можно изменить свойство "Вертикальное выравнивание", например на "Сверху за пределами". См. скриншот во вложении.

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

Имеются ввиду подписи к рядам диаграммы? Для этого в редакторе диаграмм необходимо перейти на вкладку "Подписи", выбрать необходимый стиль и отключить свойство "Разрешить применять стили". Тогда можно будет изменять любые свойства подписи, в том числе и шрифта. См. скриншот во вложении. Аналогичным способом можно менять и другие свойства диаграммы.

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

Возможно ли значение текстовой переменной использовать при формировании отчета путем подстановки ее значения ?
Да, возможно. Но, если имя отчета отличается только индексом (1,2,3 и тд), то можно обойтись без дополнительной строковой переменной и использовать следующий код для кнопки формирования отчета:
Код: (delphi)
var
  aReport: TM_Report;
begin
  aReport := ReportBuild('Отчет_Мотор_' + vrListInt.AsStr);
  aReport.View(GetClientName);
end.
Также для построения однотипных отчетов можно использовать способ, описанный по ссылке.

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

В данном случае можно создать внутреннюю переменную с типом данных DateTime и в свойство "Начальное значение" указать "Now" –  для хранения времени последнего изменения переменной (например с именем "vrPrevTime"). Далее разместить на мнемосхеме компонент "Текст", в свойство "Переменная" указать переменную "Count", в свойство "Доп. переменная" указать переменную "vrPrevTime" и на событие "OnDataChange" объекта Текст написать скрипт:
Код: (delphi)
var
  aSec : Integer;
begin
  if Sender is TM_Text then   // проверяем, что Sender это текст
    with Sender as TM_Text do // приводим Sender к типу "TM_Text"
      begin
        // получить кол-во секунд с последнего изменения переменной
        aSec := SecondsBetween(now, VariableEx.AsDateTime);

        if aSec > 0 then                   // если прошло более 1 секунды
          Text := IntToStr(aSec) + ' сек'  // то вывести время в секундах
        else                               // иначе в миллисекундах
          Text := IntToStr(MilliSecondsBetween(now, VariableEx.AsDateTime)) + ' мсек';
        VariableEx.Value := Now;
      end;
end.
Теперь при изменении значения переменной в компонент "Текст" будет выводиться время, за которое изменилось значение переменной. Данный скрипт универсальный и его можно назначить на событие "OnDataChange" любых объектов "Текст", в которые требуется выводить время за которое изменилось значение переменной. При этом следует учитывать, что первое показание времени после запуска/перезапуска проекта будет неправильным – в этом случае будет отображаться время с момента запуска проекта до первого считывания значения переменной с OPC-сервера.

12
Ваши вопросы / Re: MessageViewer
« : 12 Июля 2023, 08:29:20 »
Здравствуйте.

Возможность использовать подстановки для свойства "Группа" добавлена с версии Simple-Scada 2.6.4.0 при использовании системы архивации v2. Убедитесь, что Вы используете версию не ниже 2.6.4.0. Чтобы узнать какая версия используется, необходимо запустить сервер скады и посмотреть информацию на вкладке "Состояние сервера".

13
Ваши вопросы / Re: MessageViewer
« : 10 Июля 2023, 08:53:11 »
Здравствуйте.

При использовании компонента "Список сообщений" в шаблоне/шаблонном окне в свойство "Группа" можно указать подстановку. Но название группы сообщений может быть любым, в том числе и одинаковым для нескольких групп. Поэтому в шаблонах нужно указывать не название группы, а ее ID. ID групп сообщений можно посмотреть в меню редактирования сообщений. Если нужен переход в "системные" группы, то вот их ID:
 -1 : Все сообщения
 -2 : Нарушенные границы
 -3 : Пользователи
 -4 : Действия оператора
 -1000 : Неподтверждённые
 -1001 : Активные сообщения

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

1. Предположим, что для отображения значения переменной в скада-системе Вы используете компонент "Поле".  Убедитесь, что Вы указали необходимую переменную в свойство "Переменная".
2. Проверьте журнал сервера скады, вероятнее всего, в нем имеются ошибки или предупреждения, связанные с OPC-сервером, которые подскажут причину проблемы.
3. Возможно у переменной на OPC-сервере или устройстве установлен доступ "только запись". Из-за этого скада не сможет считать значение переменной, и рядом с полем будет отображаться знак "!" (вместо этого в web объект будет выделен оранжевой рамкой). Если это так, то установите у переменной доступ "чтение и запись".
 
Если дело не в этом, то повторите проблему, завершите работу сервера скады, пришлите целиком папку с логами "..\Simple-Scada 2\Logs", а также текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите проблемную переменную.

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

В данном случае можно создать отдельную "Рассчитываемую колонку", вывести в нее необходимые данные и указать в качестве "Колонки данных подсказок". Для этого нужно кликнуть по источнику ПКМ и выбрать пункт "Новая рассчитываемая колонка". В открывшемся окне ввести имя колонки, выбрать тип данных "string" и написать, например, такое выражение: (Источник1.vrPower.ToString("F1")) +" - " + ToString(Источник1.Время). Далее необходимо указать созданную колонку в качестве подсказки. См. скриншоты во вложении.

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

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