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

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

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

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


Темы - pan2000

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

Для остановленного проекта при закрытии WEB-страницы или клиента Simple-Scada не выдается сообщение об отключении клиента, но на вкладке сервера "Клиенты" состояние отображается правильно.

2
Ошибки / Ошибка деактивации проекта
« : 05 Декабря 2023, 06:26:47 »
После изменения свойства объекта UserData на допустимое, исключая NIL, в версиях старше 2.6.3.3 деактивация проекта завершается с ошибкой.
Тест во вложении.

3
    Алгоритм проверки изменения цвета ячейки:
1. Полная очистка таблицы.
2. Пауза 1-2 сек.
3. Запрос на заполнение таблицы заданной длины (поле "Limit", SQL-таблица - "trends_data").
4. По событию "Выполнен SQL-запрос отправленный от таблицы" изменяется цвет первой и последней строк таблицы.
5. С интервалом 1 секунда изменяется цвет предыдущей строки.
6. Визуальный контроль и проверка реального значения цвета ячейки (по клику ЛКМ на этой ячейке).

   Результат:
Изменение цвета ячейки непосредственно по событию выполняется только для некоторых ячеек, но все ячейки содержат правильное значение цвета.

4
И таймер, и скрипт могут использоваться для измерения временных интервалов в единицах "секунда". Таймер предполагает изменение связанной с ним переменной с момента запуска таймера через одну секунду. Скрипт предполагает изменение по сетке, привязанной ко времени ПК.
Предлагаемый проект строит распределение моментов наступления события относительно текущего времени (NOW) для каждого из процессов.
Контролируется монотонность изменения секунд сравнением предыдущего и текущего значения, которые должны отличатся на 1 при сравнении по модулю 60.



5
Исправили событие OnClick у TM_MessageViewer в обновлении Simple-Scada 2.3.4.0.
Но событие OnClick наступает при отпускании ЛКМ, т.е. это OnMouseUp.

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

6
Тест во вложении.

7
Ваши вопросы / Лишний символ TextFileReadLn
« : 01 Августа 2018, 08:55:53 »
Функция TextFileReadLn при первом обращении возвращает лишний первый символ.

Пример во вложении.

8
Ошибки / Неприятности тэга типа Int64.
« : 15 Февраля 2018, 19:41:47 »
При записи переменной в тэг, значение тэга отлично от значения переменной, если значение старшего байта не равно 0.

Во вложении проект и вывод результата.

9
1. Событие OnDoneInput объекта TM-Field не наступает при вводе значения равного исходному. Т.е. это событие сейчас определяется как "Пользователь ввел новое (отличающееся от старого) значение в поле".
Возможные варианты обхода зтого ограничения:
- добавить 0 перед вводимым значением (проверено на integer);
- добавить отдельную кнопку и не использовать событие OnDoneInput.

2. Соообщения "Редактора ..." с настройками "Бит i = 1 : <Текст...> для битов, поступающих от OPC-сервера со значениями = 1, отображаются в сообщениях при запуске проекта. Такие сообщения не связаны с фактическим изменением состояния объекта управления, и в архиве сообщений можно увидеть, что "некое устройство включилось, и так 7 раз подряд".
Для определения изменения состояния необходимо два последовательных значения. Сейчас, предположительно, в качестве начального используется 0, а не первое принятое от OPC-сервера.

 ;D Значение числа "Пи" во времена ЭВМ М-20 было 3.14159265 (Руководство по скриптам - Глобальные константы)

10
Переменная типа WORD преобразуется в вещественные типы как число со знаком:

Код
var
  x: word;
  y: double;
begin                                      // Пример для x = 40000
  x := TM_Text(Sender).Variable.Value;
  Field2.Text := IntToStr(x);              // Field2.Text = '40000'

  y := x;
  Field3.Text := FloatToStr(y);            // Field3.Text = '-25536.00'

  y := TM_Text(Sender).Variable.Value;
  Field4.Text := FloatToStr(y);            // Field4.Text = '40000.00'
end.       

11
Участник форума TeNQ задал вопрос ( Re: Вопросы и предложения по Simple-Scada 2 < Ответ #520 : 16 Май 2017, 11:35:58 >):

"Есть функция GetVariableByName. ... Можно ли ввести по аналогии функцию GetObjectByName для того, чтобы обратиться к объекту в универсальном скрипте"?

Из документации по скриптам:

       function FindObjectByName(const AName: string): TM_Control;
       Описание: Возвращает объект подстраницы с именем AName...

Создание страниц, подстраниц и объектов в редакторе показывает, что "Подстраница 1" содержит те же объекты, что и сама родительская страница. Проверка показала, что объекты страницы доступны на "Подстранице 1" (для одностраничного проекта  SubPage1 соответствует Page1):

      { собственно выборка объекта TEXTi, размещенного на странице Page1}
      ObjSelect := SubPage1.FindObjectByName('TEXT' + IntToStr(i));

Т.е. можно создать универсальный скрипт для объектов одной страницы (По крайней мере в действующей сейчас редакции Simple-Scada).
Пример во вложении.


12
Ошибки / Проблемы с тегом типа Int64
« : 11 Июля 2017, 14:17:39 »
При записи достаточно большой величины в тег типа Int64 значение изменяется на 1.

Скрипт с примером изменения:
Код
var
  a: int64;
begin
  a := $20000000000003;
  x1.Value := a;
  Text1.Text := 'Int64 =' + IntToHex(a,8);                  // Text1 = '00000003'
  Text2.Text := 'AsInt64 =' + IntToHex(x1.AsInt64,8); // Text2 = '00000004'  !
  a := $20000000000001;
  x1.Value := a;
  Text3.Text := 'Int64 =' + IntToHex(a,8);                  // Text3 = '00000001'
  Text4.Text := 'AsInt64 =' + IntToHex(x1.AsInt64,8); // Text4 = '00000000'  !
end.

Поле Text2 показывает увеличение значения на 1, поле Test4 - уменьшение на 1, простая переменная значение не изменяет.

Проект во вложении.

Страницы: [1]