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

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

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

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


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

Страницы: 1 2 [3] 4 5 ... 11
31
Ваши вопросы / Re: MessageViewer
« : 10 Июля 2023, 08:53:11 »
Здравствуйте.

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

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

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

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

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

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

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

1. Компоненты "Кнопка" и "Флажок" могут работать с битом переменной напрямую - см. свойство "Бит". Поэтому, если требуется работа с битами в данных компонентах, то в этом случае можно обойтись без скриптов. Для других компонентов можно работать с битами через скрипты. Например, чтобы извлечь нужный бит из значения переменной, нужно использовать функцию GetBit. См. примеры изменения цвета по биту переменной по ссылке.
2. Если требуется работать с переменной, созданной в редакторе переменных, то ее не нужно объявлять в скрипте. В Вашем случае, в разделе "var", объявлена локальная переменная скрипта с именем "Data_net" и далее в скрипте Вы работаете именно с ней. Соответственно, при изменении внешней переменной с именем "Data_net" результат выполнения скрипта будет неправильным.
3. Чтобы скрипт выполнялся по изменению переменной, указанной в свойстве объекта "Переменная" или "Доп.переменная" он должен быть назначен на событие OnDataChange или OnDataChangeEx соответственно. Либо можно использовать скрипт с типом события "Изменились переменные".
4. Если в свойстве "Переменная" для компонента "Поле" указать переменную, то в нем будет отображаться ее значение. Поэтому для вывода преобразованного значения нужно использовать компонент "Текст".

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

35
Ваши вопросы / Re: Alarm при условиях
« : 26 Мая 2023, 17:53:54 »
Здравствуйте.

Цитировать
Мне нужно чтоб всё границы работали только тогда когда включён компрессор,
Нужный бит выведен, а как к нему привязаться не могу найти, тойсть допустим bit5 =0 , alarm не требуется ни какой.
Bit5=1 нужно задействовать границы всех переменных,
+ ещё это нужно сделать после 15 секунд как bit5 стал =1, так как оборудование выходит в рабочий режим только после 10-15 сек!

1. Используя свойство LimitType, можно изменять тип границ переменной или отключить границы, например:
Код: (delphi)
myVariable.LimitType := ltNone;              // отключить границы переменной
myVariable.LimitType := ltAlarmsOnly;        // активировать только аварийные границы переменной
myVariable.LimitType := ltAlarmsAndWarnings; // активировать аварийные и предупреждающие границы переменной
2. Отследить изменение переменной можно в скрипте по событию "Изменились переменные". Добавив необходимые переменные в список скрипта, как это описано по ссылке.
3. Задержки можно реализовать только на основе таймеров (пример работы с таймерами можно найти в демо-проекте -> страница "Скрипты" -> "Простые скрипты (1)" -> пример №3) или событий. Если есть возможность, то проще и правильнее будет реализовать это на ПЛК.
4. Чтобы извлечь нужный бит из значения переменной, нужно использовать функцию GetBit.
Пример проекта во вложении.

36
Пришлите нам для проверки на support@simple-scada.com текущую версию Вашего проекта из директории (..\Simple-Scada 2\Projects\).

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

Цитировать
Т.е. переменные в фильтрах работают только через выражения?
Да.

Возможно ли также через выражения реализовать фильтр по тексту сообщения: Аварийные_сообщения.Текст сообщения содержит 'Т3:'
В скриптах редактора отчётов используется язык программирования С#, поэтому можно использовать доступные для С# методы работы со строками. Например, "Contains" - проверяет, содержится ли заданная подстрока в строке:
Код
Аварийные_сообщения.Текст_сообщения.Contains(vrRepSNMB)

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

Доступные свойства и методы для работы с компонентом "Список" можно найти в руководстве по ссылке. Чтобы вывести текст выбранной строки списка, нужно использовать свойство "Text". Также по скриншотам видно, что используется шаблонное окно. Поэтому в скрипте формирования отчета нужно выполнять поиск компонента "Список" используя функцию "GetTemplateObject":
Код: (delphi)
var
  aReport: TM_Report;
  aComboBox: TM_ComboBox;
begin
  aComboBox := GetTemplateObject('ComboBox2') as TM_ComboBox;
  vrDynamic_name.Value := aComboBox.Text;
  vrDynamic_A_Begin.Value := vrAsumm.Value;
  vrDynamic_A_End.Value := vrAsumm.Value;
  vrDynamic_A_Raznica.Value := vrAsumm.Value;
 
  aReport := ReportBuild('Периодический1');
  aReport.View(GetClientName);
end.

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

Обнаружил некорректное отображение таблицы в web: содержимое ячейки съезжает вправо за пределы таблицы
Скорее всего, проблема в том, что ширина второй колонки уходит за габариты таблицы (см. скриншот во вложении). Вам необходимо увеличить размер таблицы так, чтобы край таблицы не заходил на ячейки, либо уменьшить ширину второй колонки. Если дело не в этом, то пришлите нам для проверки на support@simple-scada.com текущую версию Вашего проекта из директории (..\Simple-Scada 2\Projects\).

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

Цитировать
Из приведенного примера в описании типа обработки "точное" не совсем понятно чем оно отличается от "последнее значение".
Насколько мы поняли, проект с 14:40 по 15:30 был выключен и архивных данных за этот промежуток нет? В таком случае, если выбрать тип обработки "последнее значение", то в отчет попадет последнее значение, попавшее в архив за указанный интервал. Если выбрать тип обработки "точное" и на конец интервала нет данных, то результатом будет 0.

Цитировать
можно ли организовать вывод одного ряда данных (время-значение) в несколько пар столбцов на странице, а не в 2 столбца, как это делает стандартный бэнд?
К сожалению, такой возможности нет.

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

Пробовал создать виртуальную переменную string, но что то не получилось.
Все верно, строковую переменную (например с именем "vrGroupName") нужно добавить в отчет. Для этого нужно кликнуть по ней правой кнопкой мыши и в раскрывшемся меню выбрать пункт "Добавить переменную" (см. скриншот "ReportVar.png" во вложении). Далее в заголовке отчета разместить компонент "Текст" и написать в нем такое выражение: "Группа переменных: {vrGroupName}" (см. скриншот "ReportText.png" во вложении). После чего в скрипт формирования отчета нужно добавить строку с записью необходимой информации в переменную "vrGroupName":
Код: (delphi)
var
  aReport: TM_Report;
begin
  vrGroupName.Value := 'Имя группы переменных';

  vrDynamic_P.Value := P_47853769.ID;
  vrDynamic_A.Value := A__po_summe_tarifov_47853769.ID;
  vrDynamic_Q.Value := Q_47853769.ID;
  vrDynamic_Hz.Value := Hz_47853769.ID;
  vrDynamic_cos.Value := cos_47853769.ID;
  vrDynamic_U.Value := U1_47853769.ID;
  vrDynamic_I.Value := I1_47853769.ID;
 
  aReport := ReportBuild('Периодический');
  aReport.View(GetClientName);
end.


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

Ограничений на количество архивируемых переменных нет. Скорость записи в БД будет зависеть только от производительности ПК сервера и скорости жесткого диска.

В руководстве по ссылке можно ознакомиться с описанием параметров, которые влияют на быстродействие проекта и рекомендациями по достижению максимальной производительности при разработке большого проекта. Также, можно ознакомиться с разделом руководства "Системные требования", в данном разделе описаны примеры некоторых конфигураций и несколько приблизительных рекомендуемых конфигураций ПК. Рекомендуем ознакомиться с данными разделами.

43
Скорее всего, во время установки "MS SQL Server" на этапе "Настройки экземпляра" Вы выбрали опцию "Именованный экземпляр". Если так, то выполните шаги 16,17,18 из инструкции по ссылке и проверьте соединение повторно.

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

Данную задачу можно реализовать с помощью процедуры "SetTrendAll". Для этого у компонента "Поле", через которое задается "Обозначение резервуара", в свойство "Переменная" нужно указать переменную с подстановкой "vrNameTank_%№%", а в свойство "Доп. переменная" указать переменную с подстановкой (например "vrMyVar_%№%") у которой требуется изменить подпись в трендах. Соответственно, все переменные должны иметь однотипные имена. Также подстановку "%№%" нужно указать в свойство "Тег". Далее на событие "OnDataChange" данного поля написать скрипт:
Код: (delphi)
begin
  if Sender is TM_Object then
    with Sender as TM_Object do
      SetTrendAll(0, Tag, VariableEx.ID, Variable.AsStr);
end.
Теперь при изменении "Обозначения резервуара" будет меняться и имя соответствующего тренда. Но данный способ будет работать только с одной группой трендов (в примере с "ID группы трендов" = 0). При необходимости "ID группы трендов" можно указывать через свойство "Подсказка/Hint".

45
Ваши вопросы / Re: Таймаут StartPing
« : 14 Апреля 2023, 11:51:22 »
Здравствуйте.

Проверили, все работает корректно. Возможно, для проверки обрыва связи Вы отключаете сетевой интерфейс на ПК-сервере? Если так, то данный тест некорректен, так как происходит отключение сетевого устройства ПК и обрыв связи происходит без задержки. Также возможно, что после внесения изменений в скрипт Вы не перезапустили проект на сервере. После внесения изменений в проект его нужно перезапустить на сервере, чтобы сервер загрузил обновленный проект.

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