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

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

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

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


Темы - Teodor

Страницы: [1]
1
Ваши вопросы / Работа с трендами
« : 21 Сентября 2017, 15:52:29 »
Есть 2 просьбы по трендам, точнее по работе с ними.

1. Очень не хватает (или я не нашел) "временных папок" для трендов. Часто при возникновении внештатных ситуаций  приходится лопатить папки и выискивать там нужные данные в поиске бага. Например в такое то время проседает пемпература на ГВП. Почему? И погнали пересматривать что делали насосы, клапана, соседние ветки... Утомительно и непонятно. Ооочень пригодилась бы возможность создать одну или несколько временных папок с трендами для каждого клиента (даже до обрыва сессии). Добавлять их прямо в вьювере "добавить к сравнению/папкеХ". В самой "папкеХ" возможность удалить и очистить добавленые в нее тренды. Тогда можно накладывать тренды из разных категорий, добавляя/удаляя "подозрительные" тренды к парочке базовых для наглядности происходящего процесса. Это очень поможет в наладке/настройке системы.

2. Раз уже архивация переменной задается в настройках переменной, то хорошо было бы, чтобы там и отображались пути к трендам в которые она выведена (если по ней они есть). Еще лучше, если бы там-же можно было и добавить ее в конец заданной папки с трендами с ее названием. Дальнейшую сортировку  и переименования можно производить в редакторе трендов, чтобы не дублировать функционал.
Объясню суть проблемы. Я подтянул 100500 переменных с ОРС, пописал 100500 скриптов для внутренних переменных. Раскидал их по визуализациям. Сейчас сижу с листочком и по визуализации переписываю названия переменных и их описания, чтобы потом создавать папочки и раскидывать по ним трендики. Мало того, я уже не понимаю, какие тренды я поделал, а какие еще нет. А потом насяльника спрашивает, "а что там у нас с той переменной?"... А я ее провтыкал...

2
Ваши вопросы / Интересные скрипты
« : 13 Июня 2017, 13:06:39 »
Я тут пробежался по граблям и решил что конечный вариант может пригодиться не только мне...

Если возникает проблема в получении из одного регистра нескольких значений и их обратной записи. Например биты управляющих сигналов, или побайтная запись в ворд... Мало ли как могут изгольнуться производители.

Предлагается построить следующую конструкцию: ОРС переменная, локальные переменные для каждого параметра, элементы управления для каждого параметра, скрипты:
OnChange
Код
var
  Mask,Pos:byte;
begin
  if not (Sender is TM_Object) then Exit;
  with Sender as TM_Object do
    if (Variable <> nil) and (VariableEx <> nil) then
    begin
      Mask:=Round(Power(2, (tag shr 4))-1); //bitMask
      Pos:= Tag and 15;
      VariableEx.Value := VariableEx.Value and ((Mask shl Pos) xor 65535) + (Value shl Pos);
     end;
end.
OnChangeEx
Код
var
  Mask,Pos:byte;
begin
  if not (Sender is TM_Object) then Exit;
  with Sender as TM_Object do
    if (Variable <> nil) and (VariableEx <> nil) then
      begin
        Mask:=Round(Power(2, (tag shr 4))-1); //bitMask
        Pos:= Tag and 15;
        Value := (VariableEx.Value shr Pos) and Mask;
      end;
end.

К управляющему элементу привязываем переменную(локальная), доп.переменную (ОРС), скрипты и устанавливаем тег:
16*к-во_бит + стартовый_бит. (например младший байт тег 16*8+0=128, старший 16*8+8=136, или побитно 16*1+х = 16,17,18...31)

ВСЕ! Наше поле меняет и отображает только заданную часть ОРС переменной

3
Ваши вопросы / Сообщения
« : 11 Мая 2017, 11:56:40 »
Меня заинтересовала возможность работы с сообщениями из скриптов, в связи с чем хотел бы понять суть сообщений как таковых.

1. Есть типичное сообщение: "В номере Х поменяли заданную температуру"

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

При этом "Х" в сообщении зависит от сендера.

У меня для этого должно быть Х сообщений, или я могу менять текст в одном сообщении? Если хватит одного, то будут ли они отображены все неподтвержденные, или только последнее?

2. Состояния сообщения. У меня никак не выходит задать больше одного.

Задача: есть пороги сообщения(1)/предупреждения(2)/аварии(3)

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

Как это побороть?

4
Ваши вопросы / Кнопка
« : 10 Мая 2017, 11:35:24 »
У меня нарисовалась следующая задача:
Сделать кнопку "напоминалку" вызывающую окошко с параметрами "напоминалки".

Собсно, зависимо от ситуации должен меняться цвет и иконка на ней (4 варианта).

Как это правильно сделать?

- кнопок 60
- состояния: "неактивно", "активно", "внимание"(10 минут до указанного времени), "пора"(указанное время наступило)
- проверять достаточно раз  минуту

5
Ваши вопросы / Время и дата
« : 31 Марта 2017, 11:39:01 »
Есть пара вопросов по времени/дате

1. StrTodate как должна выглядеть строка, которую эта функция может корректно обработать.

2. SetDateFormat отвечает только за вывод, или от нее собсно зависит п.1

3. При SetDateFormat('dd.mm.yyyy');
S= DateToStr (date) = '27.03.2017', но StrToDate (S) = 31.03.2017 (не получилось).
Как правильно отработать строку в дату?

6
Есть задача (пока теоретическая) собрать и логировать данные с нескольких сотен электрических счетчиков(через разные ОРС), с последующей передачей уже перепакованных данных в глобальную скаду. То-есть, фактически, я хочу вашу скаду попользовать именно в к-ве софтового контроллера, чего вы так не любите :)

Насколько вы видите такое использование реальным?
Задача сводится к записи полученных регистров в БД и отправке их в другую скаду, но уже в ужатом виде (у ханивела точки дико дорогие).
Если есть такая возможность, то организовать доступ к конкретным данным для конкретных юзеров (вопрос в к-ве клиентов, которые могут подключиться и забыть отключиться). Есть ли возможноть насильно отключать клиентов через 5-10 минут.


7
Есть тактико-технический вопрос.

Нужно посоздавать кучу страниц, часть из которых не должны присутствовать в меню (или быть там третим уровнем), а переход на них должен производиться с кнопок.

Как это сделать максимально корректно и без проблем?

Суть в том, что у меня иерархия страниц: корпус-крыло-этаж-(часть этажа). Корпус с кралом я еще объеденил на верхнем уровне, а вот дальше хуже. Идея в том, чтобы по нажатию кнопки переходить на нужную страницу и зозвращаться с нее назад. В окнах я сомневаюсь, т.к. не уверен в правильности создания окон с несколькими сотнями объектов.

8
Столкнулся с одной странностью, которую пока объяснить себе не могу.

Скрипт ОnDataChange (поля с ОРС переменной) устанавливает переменную (внутреннюю) в TRUE.

При запуске проекта переменная вcтает в TRUE. Минимум для OPC переменной 150 (по факту в регистре больше). Но устанавливается в поле именно это значение.

Можете описать что происходит при старте скады с переменными/полями, и что я не так делаю? Те же скрипты на другом объекте (до последнего обновления) работают чудесно(я его еще не обновил и уже боюсь). Еще есть разница во времени обновления. На старом 1с(лектус 1с), на новом 2с (лектус 4с).

Скрипты и проект я уже скидывал.

9
Ошибки / Баг со скролбаром в редакторе
« : 28 Февраля 2017, 11:54:20 »
Если выделить управляющий элемент в редакторе, нажать "выбор переменной" нажать на указателе положения скрола и потянуть вниз, то, если при протягивании скролом, вывести мышь за пределы полосы скроллинга на область проекта, выбранный объект начинает чудным образом  менять размер и/или положение. Самое обидное, что Ctrl+Z при этом не помогает. Восстанавливать размер/положение приходится в ручную.

10
Ваши вопросы / Универсальные скрипты
« : 18 Января 2017, 17:39:51 »
Задача: Есть 60 переменных Т1 и 60 Т2, надо высчитать 60 дельт.

Скрипт я вызову, сендером выступит одна из температур по ченджу, а дальше?
Как объяснить какие именно температуры Т1, Т2 или дТ высчитывать?

Не, я конечно могу пройтись кейсом по тегу сендера и перебрать там все 60 комбинаций.
Могу не перебирая по ченджу Т1 или Т2 пересчитать все строка за строкой...

Но как-то это неправильно. Может есть более экономные по тексту и ресурсам варианты?

11
Ваши вопросы / Иконки
« : 17 Января 2017, 18:44:02 »
А есть возможность добавить/сменить набор штатных иконок кнопок?

ПС. Я имею ввиду легальные методы, без взлома запароленых архивов :)

12
Ваши вопросы / ModBus-OPС-Scada и RW регистры
« : 11 Января 2017, 19:24:22 »
Раньше работал с Ареной, там ОРС встроен и незаметен глазу.

Тут начались вопросы дивные.

Имеем: Контроллер (МВ Slave), Lectus (MBMaster - OPC), SimpleScada.

В целях экономии биты пакуются в один регистр.

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

Контроллер свои регистры перечитывает регулярно, но реагирует (перезаписывет) если только регистры изменились или он сам внес изменения. Скада делает нечто темное и непонятное с лектусом, парсит биты из "ОРС переменной" по факту изменения значения и пишет в "ОРС переменную" по факту внесения изменений.

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

Как, вообще, правильно в таком случае работать?

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