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

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

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

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


Сообщения - Серега

Страницы: [1] 2 3 ... 17
1
Добрый день!
В официальной документации написано:
Цитировать
...сообщения подтверждаются на всех клиентах сразу. В v1 сообщения нужно отдельно подтверждать на каждом клиенте;...
Соответственно проект переведен на версию 2. Как разработчик мне 2 версия нравиться больше. Но вот операторам стало не удобно.
При версии 1 каждый квитировал и видел ошибки на своем месте. А при версии 2 кто то 1ый квитировал и получается как бы другие операторы уже активные сообщения не видят.
И вот теперь вопрос как оставаясь на версии архивирования 2 "вернуть" ситуацию при версии 1 (ошибки на каждом клиенте).
Сейчас видеться следующие направления:
1. более широко использовать систему пользователей, настроить для каждого свои права
2. использовать отдельные окна сообщений для каждого участка со своими группами сообщений
Если кто-то уже делал так или есть идеи как сделать присоединяйтесь к обсуждению.
Ну а товарищи из суппорта возможно подскажут как это сделать правильно :)

2
Ваши вопросы / Re: Ввод данных типа Single
« : 26 Марта 2025, 15:59:36 »
Спасибо! будем пробывать

3
Ваши вопросы / Re: Ввод данных типа Single
« : 26 Марта 2025, 14:20:46 »
В проекте я использовал вот такую конструкцию:
Код
     case Trunc(PositionTC.Value * 10) of
        0..160      : wNumberPlace.Value := 1;
        161..1000   : wNumberPlace.Value := 2;
        1001..5000  : wNumberPlace.Value := 3;
        5001..7000  : wNumberPlace.Value := 4;
        7001..10000 : wNumberPlace.Value := 5;
      end;
и получается как бы физически объект находиться на позиции 100.1 это уже 3 участок, оператор вводит 100.1, но у нас получается 100.099998 и нарушается логическая цепочка.
Я так понимаю в моем случае надо все делать через if.

4
Ваши вопросы / Ввод данных типа Single
« : 25 Марта 2025, 17:01:16 »
Добрый день!
В ходе экспериментов для одной идеи наткнулся на не совсем понятное поведение.
Создал переменные, скрипты, мнемосхему. И при вводе в поле например значения 100.1 должен сработать скрипт. Но не срабатывает.
Начал выяснять и получается что я набираю 100.1 а отображается в поле значение 100.099998 (это уже в настройках поставил 6 знаков после запятой чтобы увидеть).
При этом небольшое тестирование показало, что для переменной типа Single до значения 32 все нормально.
Поясню. Если вводим 19.1 то и отображается 19.1. Вводим 31.1 отображается 31.1. Но если 32.1 и больше, то отображается 32.099998.
Можете пояснить?

5
Ошибки / Линии и их выделение
« : 06 Марта 2025, 11:34:57 »
Добрый день!
Прикольный глюк нашел.
Если в столбец расположить линии, то при выделении сверху вниз в любом порядке но строго вниз по середине предыдущей линии остается серый круг центра объекта.
Если идти снизу верх то все нормально. Так же если фокус с выделенных линий переместить на другой любой элемент то же все работает правильно.
В тестовом проекте также получилось повторить. При этом там разные ситуации и комбинации получаются, даже если сбоку поставить такие же линии.
Можете у себя проверить.

6
Ваши вопросы / Массивы и работа с ними
« : 19 Февраля 2025, 15:02:01 »
Добрый день!
Итак вводные данные.
Согласно темам с форума объявляем и инициализируем статический массив в глобальном модуле (3ий по счету, когда то Вы писали, что так делать можно).
например такой:
Код: (delphi)
interface
var
  MinArrayNamesObjects: array[1..2] of string = (
    'человек',
    'автомобиль'
   );

  ArrayNamesObjects: array[1..4] of string = (
    'человек',
    'велосипед',
    'автомобиль',
    'кошка'
  );
На мнемосхеме выставляем элемент Текст (например с именем Camera1Text).
Заводим новый скрипт по изменению переменной например IDObject тип LongWord.
Текст скрипта ниже.
Код: (delphi)
begin
  Camera1Text.Text := ArrayNamesObjects[IDObject.AsInt];
end.
Ошибок компиляции нет, проект сохраняется без ошибок.
Запускаем клиента и тут...
При попытке перейти на страницу с элементом Camera1Text клиент просто делает переподключение к серверу. Все остальное работает.
Подозрение на новые введения. Сравнение указывает только на глобальный модуль и скрипт. Комментируем скрипт, перезагрузка проекта и - все работает в штатном режиме.
В журнале ни каких аварийных записей.
Повторил эту же ситуацию на локальном ноуте в простом проекте. Все то же самое "Соединение с сервером было разорвано" и потом подключение.
Можете проверить у себя.

7
Ваши вопросы / Архивирование и точность
« : 27 Января 2025, 15:12:58 »
Добрый день!

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

В БД например при создании таблицы можно использовать команду DECIMAL(X,Y). жестко прописывая количество знаков после запятой, которые будут записаны в архив.

Теперь ситуация. Например есть скорость объекта, указанно 2 знака после запятой. На клиенте все замечательно показывает 2 знака после запятой.
Но вот в БД, так как переменная стоит на архивации по изменению, не настроена зона нечувствительности(можно указать на это и я соглашусь, но сейчас в целом и не об этом),  наблюдаются записи при изменении переменной в 4 знаке после запятой. Как бы скорость равна 0.00, объект не движется, но в архиве есть данные типа 0.00005, 0.00012 и т.д. Как бы дополнительная нагрузка (чтение\запись на диск, передача и т.д.). Про зону нечувствительности написал выше.
Вопрос. Можно как то указать средствами SCADA количество знаков после запятой именно для БД?
Предложение. Может быть  в будущем Вы сможете привязать формат переменной к формату данных записывающихся в БД?
Жду вопросов и предложений!

8
Добрый день!
Нашли случайно весьма интересное событие. В ходе разработки, иногда некоторые элементы выносим за пределы видимой части мнемосхемы (например разные варианты решения или например тиражирования одного и того же набора элементов) и после опробывания удаляем.
Если режим одно мониторный, то как бы все нормально.
Если режим 2х мониторный по горизонтали и мнемосхема с элементами, выведенными за ее границы, стоит слева первой, то как бы на втором экране видны подсказки от элементов 1го экрана, которые за границей при подведении курсора мыши в эти зоны. В принципе их удаление решает вопрос.
Но возникли вопросы.
1. Это так и задумывалось (другими словами это фича или глюк)?
2. Если расположить кнопку за пределами видимой части мнемосхемы в 2х мониторном режиме будет сработка, если нажать приблизительно в месте, где кнопка находиться? Сейчас нет возможности самим это проверить.
Жду вопросов и предложений.

9
Добрый день!
В принципе к обнулению таблицы то же думал обратиться. Спасибо за решение.
Ну а сам скрипт думаю повесить на кнопку. Если надо нажми, посмотри, выбери и сделай что надо. А при окончании работы это все обнулиться.
 

10
Добрый день!
В секундном скрипте делаем обработку добавления в ячейки таблицы через ScanDirectory имен файлов в директории GetProjectPath + 'User files\'.
Создание файлов через проводник системы (так как знаем, что создать через скаду нельзя) четко отображается в скаде. Есть нюансы с превышением количества файлов над количеством таблицы. Но это чуть позже разбираться будем. Сейчас 3 строки = 3 файла.
Далее через скрипт Table1_OnCellClick(выбираем имя файла) и скрипт кнопки Button1_OnClick(директория + имя файла и действие удаление файла) удаляем файл.
В проводнике наблюдаем удаление файла.
Но вот обновление таблицы через секундный скрипт не происходит. Переход на другую страницу не помогло. Такое ощущение, что не меняется ответ от ScanDirectory.
Секундный скрипт:
Код: (delphi)
var
  i: Integer;
  pathFileLocal:string;
  aList: TM_ScanDirResult;
begin
  pathFileLocal := GetProjectPath + 'User files\';
  aList := ScanDirectory(pathFileLocal, sdtFiles);
  for i := 0 to aList.Count - 1 do
  begin
    Table1.Columns[0].Cells[i+1].Text := IntToStr(i);
    Table1.Columns[1].Cells[i+1].Text := aList[i].Name;
  end;
end.

Можете подсказать что не так?
Жду вопросов и предложений.

11
Ваши вопросы / Re: Кнопка "зависла"?
« : 13 Января 2025, 08:55:04 »
Добрый день!
Ну в принципе экспериментируя убедились в проблеме на стороне ОРС.
Спасибо за разъяснения. Будем думать.

12
Доброе утро!
Ясно. Будем думать.

13
Ваши вопросы / Re: Список сообщений
« : 13 Января 2025, 08:52:57 »
Доброе утро!
Я наверное еще не отошел от Нового года! Потому что ну точно вопрос человека который не умеет читать руководство.
Спасибо! Стало понятно.

14
Ваши вопросы / Список сообщений
« : 11 Января 2025, 09:13:30 »
Добрый день!
В системе есть возможность перехода к заранее заданной группе сообщений.
Есть элемент "Список сообщений".
И теперь вопрос.
Если убрать встроенную панель сообщений, как в элементе "Список сообщений" отобразить только сообщения заранее определенной группы сообщений без права изменения отображаемой группы для всех пользователей.
Идея в том, что при открытии соответствующей страницы/подстраницы отображались только сообщения для объектов этой страницы.
Жду вопросов и предложений.

15
Добрый день!
Ширина колонок как то настраивается?
Ситуация следующая. При анализе действий оператора смотрим какие кнопки нажимал и что где какое значение менялось.
Так как даются осознанные имена для кнопок (например TU4_VCU_Button_AutoOffSystem), то при анализе действий операторов не видны части названий. Нажимать на каждое сообщение вариант, но трудный.
В настройках и описании не нашел способа увеличить ширину колонки "Объект".
Можно было бы решить через сообщение, но есть только "доступные значения" для переменной, но не объекта.
Можете подсказать решение как увеличить ширину?
Может в планах есть внести изменения?
Жду ответов и предложений

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