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

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

Автор Тема: Вопросы и предложения по Simple-Scada 2  (Прочитано 1394052 раз)

Rinat

  • Новичок
  • *
  • Сообщений: 24
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #975 : 22 Ноября 2018, 12:29:25 »
Здравствуйте, столкнулся с проблемой вывода переменных. Есть прибор "КАРАТ 307" установил Фирменный OPC сервер, в скаде вижу прибор и все переменные но! Выбрав нужные переменные и нажав добавить, ничего не добавляется и не происходит. В чем проблема? куда смотреть? Производителю написал, но ответа пока нет. Спасибо.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #976 : 22 Ноября 2018, 13:48:26 »
Здравствуйте. При импорте с OPC-DA серверов для каждого тега сначала запрашивается тип данных. Если OPC-DA сервер не возвращает тип данных, то импорт тега игнорируется (при этом вы можете вручную добавить тег, через окно создания новой переменной, указав тип данных и другие свойства тега самостоятельно). Так и происходит при работе с КАРАТ 307. Судя по информации "О программе" этот OPC-сервер не разрабатывается с 24.07.2012, неудивительно, что он содержит данную проблему.
« Изменён: 22 Ноября 2018, 13:51:58 от Simple-Scada »

kolya_asu

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #977 : 23 Ноября 2018, 03:31:52 »
Здравствуйте. Подскажите пожалуйста, как будет выглядеть скрипт который бы вызывал окно трендов с активным тегом по которому кликнули мышью (например по компоненту поле). Переменная с именем temperatur_1, или нужно обращаться к имени/названию тренда (Trend1/Trend1)?
Скрипт с демо-проекта:
Код
begin
  GoToTrendsClient(GetClientName);
end.
Не понимаю куда "прикрутить" имя/название тренда.
« Изменён: 23 Ноября 2018, 03:33:13 от kolya_asu »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #978 : 23 Ноября 2018, 10:01:34 »
Здравствуйте!

Цитировать
Не понимаю куда "прикрутить" имя/название тренда.
Через скрипты перейти к просмотру тренда по его имени или ID нельзя. Процедура GoToTrendsClient предназначена для перехода в меню трендов на заданном клиенте. Если нужно перейти в определенную группу трендов, то можно использовать процедуру GoToTrendsGroupClient, которая позволяет перейти в меню трендов к заданной группе.

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


kolya_asu

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #979 : 27 Ноября 2018, 02:32:53 »
Добрый вечер. Пытаюсь повторить анимацию на подобие той, которую вы выложили на 65 странице. Создавал анимацию в Фотошоп, в Пайнт.нет 4.1.4, и в обоих случаях утилита Pictures отображала правильную анимацию, но только добавляю сохраненный рисунок через компонент "Изображение", то отображаются сразу два кадра!? Подскажите пожалуйста, каким образом вам удается правильно "склеить" два кадра, что бы он правильно отображался на экране.(фото свое прилагаю)
Возможно где-то есть инструкция?
И еще вопрос:
- есть ли возможность запретить закрытие работающего клиента (кн.Esc), или установить пароль на закрытие?
- как можно скопировать/экспортировать страницу с одного проекта в другой (БЕЗ ЭТОГО НЕ УДОБНО ОЧЕНЬ)
 Спасибо.
« Изменён: 27 Ноября 2018, 02:40:56 от kolya_asu »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #980 : 27 Ноября 2018, 10:35:48 »
Здравствуйте!

Изображение должно быть сохранено в формате ".png" с глубиной цвета 32 бита или ниже. Ваше изображение сохранено в формате ".gif". Во вложении Ваше изображение сохраненное в ".png". Откройте его в Pictures.exe, установите свойство "Кадров по ширине" = 2 и нажмите кнопку "Сохранить изменения". После сохранения настроек анимированное изображение станет доступно в редакторе. Если у Вас несколько ПК-клиентов, то необходимо скопировать папку "Pictures" на все ПК-клиенты. Инструкцию по созданию анимации можно найти по ссылке, также имеется подробнаявидеоинструкция.

Цитировать
есть ли возможность запретить закрытие работающего клиента
Можно изменить сочетание клавиш для выхода - см. опцию "Комбинация клавиш для выхода" в Options.exe на вкладке "Simple-Client".

Цитировать
как можно скопировать/экспортировать страницу с одного проекта в другой
Такой возможности пока нет - в будущем планируем добавить. Сейчас можно только сохранить проект под другим именем и удалить из него все лишнее.

kolya_asu

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #981 : 04 Декабря 2018, 05:01:06 »
Здравствуйте. Картинку *GIF, я ошибочно загрузил. Вообщем я разобрался почему у меня не получалось сделать аним. картинку, ошибка в программе Pictures.exe. Попробуйте создать несколько разных анимашек подряд, а будет работать правильно лишь первая. Нужно каждый раз после создания аним. картинки, временно ее убрать из папки Pictures. Вот так все работает. Проверял на нескольких ПК.
Помогите мне пожалуйста, как правильно сделать. Картинка на три кадра (3-й, авария например).
Как переключать 1-2й кадр между собой - я разобрался. Хочу заставить включится 3 кадр по дополнительной переменной со скриптом в "ДатаЧейнжЕХ".
Код
begin
  if Sender is TM_Image then   
    with Sender as TM_Image do
      if AsInt = 1 then
        Frame := 3       
      else               
        Frame := 1;       
end. 
Проблема: когда дополн. переменная в состоянии "1", то включается третий кадр, а когда переходит в "0" то картинка не меняется.
Для переключения 1-2 кадров скрипт:
Код
begin
  if Sender is TM_Image then   
    with Sender as TM_Image do
      if AsInt = 1 then
        Frame := 1       
      else               
        Frame := 2;       
end.
Подозреваю, что это может быть из-за того что, скрипт "ДатаЧейнж"  выполняется только  по изменению переменной? То есть не постоянно обрабатывается. Подскажите пожалуйста как правильно подправить скрипт, чтобы прежнее состояние клапана (соотв. кадр) включался снова. Спасибо.
« Изменён: 04 Декабря 2018, 05:04:12 от kolya_asu »

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #982 : 04 Декабря 2018, 09:08:44 »
kolya_asu, предлагаю тебе сделать вариант который использую во всех проектах.

Допустим у тебя есть 2 переменных, числа, биты которых указывают на открытие клапана и аварию - RunValve, ErrValve. При этом 0 бит первой переменной связан с открытием клапана №1, 0 бит второй переменной - авария клапана №1 и так далее по количеству клапанов. Создай скрипт "Изменились переменные", выбери эти 2 переменные. Далее такой код:

Код: (delphi)
 var
  wbit_run: Boolean;
  wbit_err: Boolean;
  obj: TM_Image;
  i: Integer;
begin
  for i:=0 to 15 do                                    // обрабатываем все клапана в проекте, например 16 штук
   begin
     wbit_err := GetBit(ErrValve.Value,i);
     wbit_run := GetBit(RunValve.Value,i);
     obj := GetImageByName('valve_'+IntToStr(i));
     if obj <> nil then
       if wbit_err = FALSE then
         if wbit_run = TRUE then obj.Frame := 2
         else obj.Frame := 1
       else obj.Frame := 3;
   end;

Теперь достаточно назвать все клапана в проекте именами valve_0, valve_1 и т.д. в соответствии с битами переменных и одним этим скриптом будут обрабатыватьтся все клапана меняя своё состояние.
Если ты используешь просто булевые тэги для каждого клапана, тогда привязать их в скрипте и вместо GetBit искать их по GetVariableByName.

« Изменён: 04 Декабря 2018, 09:18:13 от Timofei »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #983 : 04 Декабря 2018, 09:51:20 »
Здравствуйте!

Цитировать
Вообщем я разобрался почему у меня не получалось сделать аним. картинку, ошибка в программе Pictures.exe. Попробуйте создать несколько разных анимашек подряд, а будет работать правильно лишь первая.
Создали несколько анимированных изображений подряд - все работает корректно. Убедитесь, что для каждого нового изображения Вы не забываете установить необходимое кол-во кадров по ширине/высоте и нажать кнопку "Сохранить". Если есть возможность, пришлите видео Вашего процесса создания анимации.

Цитировать
Проблема: когда дополн. переменная в состоянии "1", то включается третий кадр, а когда переходит в "0" то картинка не меняется.
В обоих скриптах Вы работаете со значением основной переменной, а в скрипте по OnDataChangeEx Вам нужно проверять значение доп. переменной(свойство VariableEx). Правильный скрипт будет таким:
Код: (delphi)
begin
  if Sender is TM_Image then   
    with Sender as TM_Image do
      if VariableEx.AsInt = 1 then
        Frame := 3       
      else               
        Frame := 1;       
end.

kolya_asu

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #984 : 04 Декабря 2018, 22:37:48 »
kolya_asu, предлагаю тебе сделать вариант который использую во всех проектах.
Спасибо Вам Timofei и модераторам форума за помощь. Ваш вариант попробую позже. Второй вариант заработал! Только вот дошел до одного исполнительного устройства у которого авария (третий кадр) вызывается по двум разным переменным, а дополнительная переменная то одна!
Мне, далекому пока что от Делфи, пришла идея выйти из положения так: создать еще один внутр. тег и вписать его в поле дополнительная переменная  и связать его с логическим "или" двух переменных которые вызывают аварийное сообщение.
Вообщем подскажите пожалуйста как сделать логическое "или" двух переменных (bool) с сохранением результата в третью переменную (bool) которая и будет вызывать скрипт в OnDataChangeEx. Как-то так...
Еще вопрос, посоветуйте мне пожалуйста хорошую, проверенную книгу(и) с примерами хорошо бы, возможно есть видео уроки для "чайников". Т.к. литературы много разной, а хочется начать с проверенных источников для быстрого освоения Симпл Скада. Спасибо заранее.
« Изменён: 05 Декабря 2018, 00:42:41 от kolya_asu »

kolya_asu

  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #985 : 05 Декабря 2018, 01:33:30 »
Еще такой вопрос. В СКАДЕ есть такая возможность, чтобы по состоянию переменной можно было бы останавливать, присваивать определенное значение или скрывать какой-либо тренд? Спасибо.

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #986 : 05 Декабря 2018, 08:40:22 »
Цитата: kolya_asu
Только вот дошел до одного исполнительного устройства у которого авария (третий кадр) вызывается по двум разным переменным, а дополнительная переменная то одна!
Мне, далекому пока что от Делфи, пришла идея выйти из положения так: создать еще один внутр. тег и вписать его в поле дополнительная переменная  и связать его с логическим "или" двух переменных которые вызывают аварийное сообщение.
Опять же Вам лучше в таком случае использовать один общий скрипт с типом "Изменились переменные" чем много скриптов OnDataChange для каждого объекта.

Код: (delphi)
       if (err1 = FALSE) && (err2 = FALSE) then            // Если обе булевых аварии 0, клапан открыт или закрыт
         if open1 = TRUE then valve_1.Frame := 2
         else valve_1.Frame := 1
       else valve_1.Frame := 3;
Упрощённый вариант прошлого кода для одного клапана, для универсальности и большого количества клапанов остаётся только добавить цикл с поиском переменных и объектов по имени, как в моём прошлом примере.
« Изменён: 05 Декабря 2018, 20:15:08 от Simple-Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1407
    • Просмотр профиля
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #987 : 05 Декабря 2018, 12:14:32 »
Здравствуйте!

Цитировать
Только вот дошел до одного исполнительного устройства у которого авария (третий кадр) вызывается по двум разным переменным, а дополнительная переменная то одна!
Если требуется отображать общую аварию исполнительного устройства, то оптимальным вариантом было бы создать на контроллере переменную общей аварии и использовать ее в скаде. Например, создать Bool переменную и записывать в нее 1 если имеется какая-либо авария или использовать целочисленную переменную, каждое значение которой будет соответствовать состоянию исполнительного устройства(к примеру: 0 - остановка, 1 - работа, 2,3 - аварийные состояния).  Если возможности сделать это на контроллере нет, то можно создать скрипт по событию "Изменились переменные", добавить в него необходимые переменные аварий и записывать результат в отдельную внутреннюю переменную общей аварии:
Код
begin
  CommAlm.Value := (aVar1.AsBool) or (aVar2.AsBool);
end.

Цитировать
Еще вопрос, посоветуйте мне пожалуйста хорошую, проверенную книгу(и) с примерами хорошо бы, возможно есть видео уроки для "чайников". Т.к. литературы много разной, а хочется начать с проверенных источников для быстрого освоения Симпл Скада.
Для того, чтобы использовать скрипты не обязательно изучать Delphi. В скриптах Simple-Scada в основном используются готовые процедуры, функции и свойства объектов описанные в руководстве по скриптам. Обо всех командах и операторах присущих языкам Pascal/Delphi  можно прочесть в интернете на сайтах связанных с языками Pascal/Delphi. Например, описание типов данных и ключевые слова.

Цитировать
Еще такой вопрос. В СКАДЕ есть такая возможность, чтобы по состоянию переменной можно было бы останавливать, присваивать определенное значение или скрывать какой-либо тренд?
Если нужно записать значение одной переменной в другую, то можно использовать свойство переменной "Value". Чтобы скрыть временный тренд нужно использовать свойство "Visible". Другие доступные из скриптов свойства компонента "Временный тренд" можно найти по ссылке. Архивные тренды нельзя скрывать из скриптов.

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #988 : 10 Декабря 2018, 16:55:33 »
Добрый день! Несколько вещей которые хотелось бы видеть в следующих релизах Simple-Scada:
1. Добавить к подписи поля свойство шрифт, которое изменяется независимо от шрифта самого поля, т.к. иногда нужно сделать цифры чуть крупнее чем подпись.
2. Наверное уже писали, хотелось бы иметь возможность рисовать диагональные линии или поворачивать нарисованные.
3. Добавить объект "Окно диагностики", что-то вроде консоли, в который будут писаться ошибки с сервера и можно из скриптов писать сообщения как уже реализована запись в логи. Реально было бы удобно при отладке сразу видеть что скрипт не работает из-за ошибки и выводить какие-то промежуточные данные в это окно.
4. Если это возможно, сделать поиск использования переменных и объектов проекта по всем скриптам со ссылками на их использование.
5. Изменить стандартную шкалу переменных по-умолчанию на -4294967296..4294967295, потому что при попытке записать в переменную из скрипта число более 100 (особенно при работе с битами), туда записывается 100 и, если значение никуда не выводится, это происходит неочевидно.
6. Добавить возможность скрывать не только всю панель страниц, но и отдельные вкладки панели, т.к. когда страниц много, они накладываются друг на друга, а переход на них хочется реализовать только через GotoPage(), но при этом иметь возможность открывать основные страницы кликом. Конечно можно сделать кнопками основные вкладки, а панель скрыть, но если не сложно хотелось бы видеть такую схему.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы и предложения по Simple-Scada 2
« Ответ #989 : 10 Декабря 2018, 18:30:23 »
Здравствуйте.

Цитировать
Добавить к подписи поля свойство шрифт, которое изменяется независимо от шрифта самого поля, т.к. иногда нужно сделать цифры чуть крупнее чем подпись.
Добавление свойств плохо сказывается на производительности, а именно на скорости загрузки/сохранения проекта и компиляции скриптов, поэтому мы стараемся использовать как можно меньшее кол-во свойств. Вы можете разместить вместо подписи компонент Текст с произвольным шрифтом для решения этой задачи.

Цитировать
2. Наверное уже писали, хотелось бы иметь возможность рисовать диагональные линии или поворачивать нарисованные.
3. Добавить объект "Окно диагностики", что-то вроде консоли, в который будут писаться ошибки с сервера и можно из скриптов писать сообщения как уже реализована запись в логи. Реально было бы удобно при отладке сразу видеть что скрипт не работает из-за ошибки и выводить какие-то промежуточные данные в это окно.
4. Если это возможно, сделать поиск использования переменных и объектов проекта по всем скриптам со ссылками на их использование.
Эти пункты постараемся реализовать по мере выхода обновлений.

Цитировать
5. Изменить стандартную шкалу переменных по-умолчанию на -4294967296..4294967295, потому что при попытке записать в переменную из скрипта число более 100 (особенно при работе с битами), туда записывается 100 и, если значение никуда не выводится, это происходит неочевидно.
Этого точно не будет, так как тренды, временные тренды и уровни зависят от шкалы и при шкале -4294967296..4294967295 практически любой тренд будет прямой линией, а менять значение через компонент Уровень станет сложно, перетягивание его на один пиксель приведёт к огромному приращению. Кроме этого нет никаких ограничений на запись значения через скрипты. Напишите пример кода при котором не удаётся присвоить значение более 100. Вот пример присвоения из скриптов:
Код: (delphi)
myVar.Value := 150;
Запишет значение 150 в переменную myVar, даже если у неё шкала 0..100.

Цитировать
6. Добавить возможность скрывать не только всю панель страниц, но и отдельные вкладки панели, т.к. когда страниц много, они накладываются друг на друга, а переход на них хочется реализовать только через GotoPage(), но при этом иметь возможность открывать основные страницы кликом. Конечно можно сделать кнопками основные вкладки, а панель скрыть, но если не сложно хотелось бы видеть такую схему.
Сейчас скрывать страницы/подстраницы можно для отдельных пользователей. Т.е. можно сделать так, что один пользователь будет видеть одни страницы, а другой пользователь - другие. Также можно скрыть панель страниц и разместить вместо неё кнопки со скриптами перехода и при необходимости скрывать их через скрипты, например: myButton.Visible := False;