Вопросы и предложения по Simple-Scada 2

Автор Simple-Scada, 11 мая 2015, 20:34:39

Victor_P.

#1305
Уже как-то поднимал вопрос о масштабировании, вот еще просьба появилась.
Можно в окне редактирования программ для масштабирования текста добавить еще пару плюсиков вверх, а то сейчас даже с макс увеличением все мелковатое.
Вот два скриншота с 4К с увеличением 0 и +1. +2+3 явно не помешали бы.
И еще было б неплохо редакторы программ и переменных сделать отдельными окнами,- на 27" 4К мониторе или на системе с несколькими мониторами это позволило бы эффективнее использовать свободное пространство, да и в работе удобнее чтоб все было на виду, а не переключаться между разными редакторами.

alan54

Здравствуйте.
Я переместил папку Users на другой диск, и сервер перестал видеть проект. Как можно изменить путь к папке Projects?

Simple_Scada

#1307
Здравствуйте.

Вячеслав, добавление возможности поворота трубопровода на 90 градусов не планируется.

Victor_P, под мониторы 4К необходимо адаптировать весь интерфейс, в ближайшем будущем таких изменений не планируется, в будущем возможно появятся. Редакторы программ и переменных разделять на отдельные окна не планируется.
UPD: в обновлении 2.5.9.0 появилась возможность задать масштаб интерфейса редактора.

alan54, произведите повторную установку Simple-Scada и на шаге выбора директории пользовательских данных укажите новый путь. После установки, скопируйте папку с проектом в указанную директорию. Если в проекте используются пользовательские изображения, то их также нужно перенести в новое расположение.

alan54

Цитата: Simple_Scada от 17 февраля 2021, 10:15:56Здравствуйте.
alan54, произведите повторную установку Simple-Scada и на шаге выбора директории пользовательских данных укажите новый путь. После установки, скопируйте папку с проектом в указанную директорию. Если в проекте используются пользовательские изображения, то их также нужно перенести в новое расположение.
Получилось, спасибо.

GEW

#1309
Добрый день! Имеем несколько АСУТП в разных технологических зданиях. Для диспетчеризации требуется обзорная экранная форма (видеопанель). Для каждого АСУТП и техпроцесса в редакторе проектов -> Сообщения созданы группы (папки) особо важных сообщений. Диспетчеру для межцеховой координации нескольких зданий важно параллельно в режиме реального времени наблюдать за определёнными группами сообщениями одновременно нескольких зданий. Т.е. нужно вывести несколько компонентов «Список сообщений» на мнемосхему, сообщения в списках должны выводиться только от назначенной группы (папки). Пока такого функционала нет. Дополнительно электроники, обслуживающие АСУТП давно просят раздельные списки сообщений по группам DI/DO и т.д. и т.п. Существуют ли планы и возможность ввести такой функционал на ближайшие 3-6 месяцев (система диспетчеризации пока на стадии проектирования и выбора средств)?

Вячеслав

Здравствуйте!
Прошу подсказать решение по следующему вопросу. В проекте имеется скрипт с логическим выражением над переменными. В данный момент в строке 10 переменных и в результате этого строка не помещается в редакторе скриптов. Конец строки уже не виден и не понятно как дальше добавлять переменные к выражению. Возможен ли какой то способ деления строки или переноса на строку ниже и так далее для более удобного восприятия выражения на экране? ???

Galkin

Предложение к улучшению скады:

Часто при разработке скады приходится менять свойства переменных в редакторе переменных (Шкалы, Архивация, и др. свойства). Когда переменных много, тратится очень много времени для изменения параметров по одной переменной, так как нет групповых операций с переменными. В этом случае очень удобно менять эти свойства в таблице Excel через Экспорт/Импорт переменных, но тут возникает другая проблема: Для импорта переменных необходимо удалить эти переменные из проекта, т.к скада пропускает их при совпадении имени переменной в проекте и переменной в таблице. А при удалении из проекта, переменные отвязываются от объектов скады.

В итоге остается 2 варианта:
1 - Изменять свойства переменных по одному (долго).
2 - Изменять свойства переменных в Excel через экспорт (быстро), удалять из проекта эти переменные и перепривязывать их к объектам (долго).

Решение: При импорте не только добавлять новые переменные, но и обновлять свойства (если они отличаются) при совпадении имени переменной в проекте и таблице.

Simple-Scada

#1312
Цитата: GEW от 19 февраля 2021, 08:53:41Т.е. нужно вывести несколько компонентов «Список сообщений» на мнемосхему, сообщения в списках должны выводиться только от назначенной группы (папки). Пока такого функционала нет. Существуют ли планы и возможность ввести такой функционал на ближайшие 3-6 месяцев (система диспетчеризации пока на стадии проектирования и выбора средств)?
Да, такие планы есть, и возможность выбора групп для компонента "Список сообщений" обязательно будет добавлена. Но, к сожалению, мы не может назвать точный срок, т.к. вынуждены отвлекаться на другие задачи.

Цитата: Вячеслав от 19 февраля 2021, 09:59:45Здравствуйте!
Прошу подсказать решение по следующему вопросу. В проекте имеется скрипт с логическим выражением над переменными. В данный момент в строке 10 переменных и в результате этого строка не помещается в редакторе скриптов. Возможен ли какой то способ деления строки или переноса на строку ниже и так далее для более удобного восприятия выражения на экране? ???
Что именно мешает перенести строку? Приведите пример кода. Обычно никогда не пишут код в одну строку, условия и строки всегда можно перенести.


Galkin, всё что Вы описали, уже есть в скаде.
Цитата: Galkin от 19 февраля 2021, 11:19:34Часто при разработке скады приходится менять свойства переменных в редакторе переменных (Шкалы, Архивация, и др. свойства). Когда переменных много, тратится очень много времени для изменения параметров по одной переменной, так как нет групповых операций с переменными.
Групповые операции есть. Выделите несколько переменных, нажмите кнопку "Редактировать" и измените нужные свойства. Это описано в руководстве по ссылке.

ЦитироватьВ этом случае очень удобно менять эти свойства в таблице Excel через Экспорт/Импорт переменных, но тут возникает другая проблема: Для импорта переменных необходимо удалить эти переменные из проекта, т.к скада пропускает их при совпадении имени переменной в проекте и переменной в таблице. А при удалении из проекта, переменные отвязываются от объектов скады.
Не нужно удалять переменные, В разорвёте связи и потеряете ID-переменных и их архивные данные. Прочитайте текст в окне импорта. Там написано, что можно выполнить импорт удерживая клавишу SHIFT, чтобы свойства переменных обновились. Также об этом написано в руководстве по ссылке.

Вячеслав

#1313
Вот такой скрипт:
Код: pascal
begin
     Atten_M1.Value:=(ID1_Atten.AsBool or ID2_Atten.AsBool or ID3_Atten.AsBool or ID4_Atten.AsBool or ID5_Atten.AsBool or ID6_Atten.AsBool or ID7_Atten.AsBool or ID8_Atten.AsBool or ID9_Atten.AsBool or ID10_Atten.AsBool);
     Focus_M1.Value:=(ID1_Focus.AsBool or ID2_Focus.AsBool or ID3_Focus.AsBool or ID4_Focus.AsBool or ID5_Focus.AsBool or ID6_Focus.AsBool or ID7_Focus.AsBool or ID8_Focus.AsBool or ID9_Focus.AsBool or ID10_Focus.AsBool);
end.

Simple-Scada

#1314
Чтобы код был удобочитаемым, делают обычно так:
Код: pascal
begin
  Atten_M1.Value := (
    ID1_Atten.AsBool or ID2_Atten.AsBool or ID3_Atten.AsBool or ID4_Atten.AsBool or
    ID5_Atten.AsBool or ID6_Atten.AsBool or ID7_Atten.AsBool or ID8_Atten.AsBool or
    ID9_Atten.AsBool or ID10_Atten.AsBool
  );

  Focus_M1.Value := (
    ID1_Focus.AsBool or ID2_Focus.AsBool or ID3_Focus.AsBool or ID4_Focus.AsBool or
    ID5_Focus.AsBool or ID6_Focus.AsBool or ID7_Focus.AsBool or ID8_Focus.AsBool or
    ID9_Focus.AsBool or ID10_Focus.AsBool
  );
end.

metamorphogenesis

Обратил внимание, что если в TM_Text.Text записать строку 'String   ', то в объекте останется все, без пробелов в конце. Это очень сильно сбивает с толку и усложняет работу со строками. Пожалуйста, сделайте так, чтобы строковые проперти сохраняли свой первозданный вид.

Второе замечание/пожелание: в инспекторе объектов формировать список свойств в алфавитном порядке, как в том же делфи. Это намного упростит поиск свойств

Victor_P.

Цитата: metamorphogenesis от 19 февраля 2021, 14:31:06...в инспекторе объектов формировать список свойств в алфавитном порядке, как в том же делфи. Это намного упростит поиск свойств
И в зависимости от языка интерфейса получить получить совершенно разное расположение свойств? Нет уж, пусть будет как есть сейчас.

metamorphogenesis

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

В таком случае, лучшим решением была бы возможность включить сортировку свойств в настройках среды

master74

Доброй ночи.
Подскажите, у меня в скаду из aropc приезжает пакет MQTT, как тег,  вида
{"T1":70, "P1":2.5}. Как мне разобрать его скриптами на два внутренних тега.

pan2000

#1319
   Здравствуйте.

Цитата: master74 от 21 февраля 2021, 02:51:30... у меня в скаду из aropc приезжает пакет MQTT, как тег,  вида
{"T1":70, "P1":2.5}. Как мне разобрать его скриптами на два внутренних тега.

 Для выделения подстроки, содержащей значение тега, необходимо определить индексы левого и правого ограничителей подстроки.
Правым ограничителем являются одиночные символы "запятая" или "закрывающая фигурная скобка".
Левым ограничителем, в зависимости от способа выборки подстроки, может быть или "двоеточие" (последовательная выборка подстрок) или уникальное имя или часть имени тега завершающаяся символом "двоеточие" (доступ к произвольной подстроке).
Скрипт выборки подстроки по имени тега (выборка произвольной подстроки). Скрипт последовательной выборки см. пример во вложении.
Код: pascal
function TagSubString(TagName: string; InputString: string): string;
var i: integer;
    aStr: UTF8String;
begin
  i := StrPos(TagName, InputString);                             // поиск левого ограничителя
  if i = 0 then begin Result := ''; exit; end;                   // ОШИБКА: тега с таким именем нет
  aStr := UTF8Copy(UTF8Encode(InputString), i + Length(TagName),
          Length(InputString));                                  // обрезать строку по началу подстроки

  i := StrPos(',', UTF8ToString(aStr));                          // индекс правого ограничителя "запятая"
  if i = 0 then i := StrPos('}', UTF8ToString(aStr));            // если "запятая" отсутствует, то проверить на "скобку"
  if i = 0 then begin Result := ''; exit; end;                   // ОШИБКА: отсутствует правый ограничитель
  Result := UTF8ToString(UTF8Copy(aStr, 1, i - 1));              // подстрока
end;
var aStr: string;
begin
  aStr := TagSubString('"T1":', MQTTstring.AsStr);       // выделение подстроки тега "T1":
  if aStr <> '' then Tag1.Value := StrToInt(aStr);       // контроль наличия тега и перевод в целое
  aStr := TagSubString('"P1":', MQTTstring.AsStr);       // выделение подстроки тега "Р1":
  if aStr <> '' then Tag2.Value := StrToFloat(aStr);     // контроль наличия тега и перевод в вещественное
end.