PDA

Просмотр полной версии : Вопросы по MasterSCADA 4D



Страницы : 1 2 3 [4] 5 6 7 8

a1exwin0
24.11.2022, 10:52
Я наверное не правильно задал вопрос,
мне не нужно чтобы открывались все архивируемые параметры.
Я бы хотел управлять отображаемыми перьями в зависимости от условий.
Например в тренде отображаются при нажатии :
кнопки 1 - Перо1, Перо2, Перо3
кнопки 2 - Перо1, Перо2
кнопки 3 - Перо3
а остальные 99 архивируемых параметров не отображались в том числе и в "Дереве объектов".
Или, как вариант, из скрипта расставить галочки в "Дереве объектов" для нужных мне в данный момент перьев.
Опять же "Дерево объектов" доступно пользователю только если не стоит "Минимальный вид" у тренда.

Minarion
24.11.2022, 12:36
Здравствуйте!
Можете подсказать как реализовать линию с динамизацией её цвета в библиотеке? Делал по аналогии с иконкой, но что-то идёт не так(

Насколько я понимаю там можно сделать статичный объект, а если мне нужно будет чтоб эти линии рисовать под разными углами - то тут-то и возникают сложности.

Maria Momotova
24.11.2022, 12:49
Есть возможность сделать группы перьев (они работают под каждого пользователя)
Какие перья по кнопкам открывается, это в режиме разработки настраивается?
Дерево можно вызвать через методы тренда (кнопка, действие, вызвать метод....)

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

Maria Momotova
24.11.2022, 12:53
Может найдете ответ в разделе справочной системы: "Создание пользовательской библиотеки примитивов"

Minarion
24.11.2022, 13:21
Может найдете ответ в разделе справочной системы: "Создание пользовательской библиотеки примитивов"

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

Maria Momotova
24.11.2022, 14:09
Там примитив изменяется через параметр окна. Также нужно сделать динамизацию угла поворота через параметр окна, который добавляется в клеммник.

Minarion
24.11.2022, 14:11
Там примитив изменяется через параметр окна. Также нужно сделать динамизацию угла поворота через параметр окна, который добавляется в клеммник.

то есть просто мышкой задавать линии необходимый угол не получится? Только руками забивать градусы?

Maria Momotova
24.11.2022, 14:48
в режиме исполнения мышкой, что делаете мышкой, что происходи?? Что сделатьхотите?, изначальная задача какая?

Minarion
25.11.2022, 08:27
в режиме исполнения мышкой, что делаете мышкой, что происходи?? Что сделатьхотите?, изначальная задача какая?

Здравствуйте!
64040

Задача нарисовать кучу линий произвольной длины и углом в пространстве. Хотелось бы создать в библиотеке линию с динамизацией её цвета.

sapozhnikovba
25.11.2022, 18:44
Отвечу сам себе, забавно но факт, если вы в Программу перетягиваете Переменную сначала на Input и только потом делаете её InOut, то у неё остаётся отношение Приём 64060, так оно работать в скипте не будет.
А вот если сначала в Output а затем в InOut то она останеться Передача 64061 и так всё будет работать правильно.
Однозначно это не фича.:confused:

Maria Momotova
25.11.2022, 21:41
Вы эти линии в режиме исполнения хотите рисовать? или только в RT цвет менять?

Minarion
28.11.2022, 08:04
Вы эти линии в режиме исполнения хотите рисовать? или только в RT цвет менять?

Здравствуйте!
Нарисовать в редакторе, а цвет менять в режиме исполнения.

Maria Momotova
28.11.2022, 10:16
Здравствуйте!
Нарисовать в редакторе, а цвет менять в режиме исполнения.
непонятно в чем вопрос, чем это будет отличаться от примера из справки. СОздаете окно, там рисуете из набора линий фигуру как вам нужно. МОжет быть имеет смысл взять одну линию, а не отдельные и нарисовать произвольную геометрию, добавить в клемник параметр, задинамизировать по нему цвет или одной линии, или всех линий. И вставить это окно как контрол. Параметр из клемника будет как параметр этого окна, которые вы связываете с элементом.

Minarion
28.11.2022, 10:27
непонятно в чем вопрос, чем это будет отличаться от примера из справки. СОздаете окно, там рисуете из набора линий фигуру как вам нужно. МОжет быть имеет смысл взять одну линию, а не отдельные и нарисовать произвольную геометрию, добавить в клемник параметр, задинамизировать по нему цвет или одной линии, или всех линий. И вставить это окно как контрол. Параметр из клемника будет как параметр этого окна, которые вы связываете с элементом.

Вот именно что не фигуру в окне из кучи линий нарисовать, а каждая линия это отдельный элемент. Мне нужно 300 таких линий, в разных окнах, которые имеют свой размер и угол поворота в пространстве, и у каждой линии свой параметр, который отвечает за динамизацию цвета конкретной линии.

Maria Momotova
29.11.2022, 11:11
Вот именно что не фигуру в окне из кучи линий нарисовать, а каждая линия это отдельный элемент. Мне нужно 300 таких линий, в разных окнах, которые имеют свой размер и угол поворота в пространстве, и у каждой линии свой параметр, который отвечает за динамизацию цвета конкретной линии.
Если каждую линию нужно прорисовывать отдельно (они все у вас уникальны)- вы их и рисуете отдельно через контрол Линия и у каждой динамизируете цвет и задаете другие настройки длины и координаты каждой линии.
Если линии чем-то похожи и большинство настроек у них общие, то можно сделать типовую линию, в библиотеке на клеммник добавить два параметра например, цвет и угол поворота. Связать их со свойствами линии. Получится типовое окно. ПОтом это окно вставляете в другое окно, как обычный элемент и задаете настройки угла поворота и динамизируете цвет уже не через свойства линии, а через параметры окна, которые будут видны ка свойства. Скоро выйдет лайфхак на 'ютьюб канале MasterSCADA. Может будет понятнее, что я имею в виду.

Minarion
29.11.2022, 11:17
Если каждую линию нужно прорисовывать отдельно (они все у вас уникальны)- вы их и рисуете отдельно через контрол Линия и у каждой динамизируете цвет и задаете другие настройки длины и координаты каждой линии.
Если линии чем-то похожи и большинство настроек у них общие, то можно сделать типовую линию, в библиотеке на клеммник добавить два параметра например, цвет и угол поворота. Связать их со свойствами линии. Получится типовое окно. ПОтом это окно вставляете в другое окно, как обычный элемент и задаете настройки угла поворота и динамизируете цвет уже не через свойства линии, а через параметры окна, которые будут видны ка свойства. Скоро выйдет лайфхак на 'ютьюб канале MasterSCADA. Может будет понятнее, что я имею в виду.

Общее у этих линий это формула динамизации цвета. Задавать вручную каждой линии угол поворота - весьма неудобная история (там не будет ровных значений 45, 90 и т.д.). Значит придётся каждую линию рисовать вручную и забивать динамизацию вручную.

В любом случае спасибо за информацию.

Maria Momotova
29.11.2022, 13:45
Общее у этих линий это формула динамизации цвета. Задавать вручную каждой линии угол поворота - весьма неудобная история (там не будет ровных значений 45, 90 и т.д.). Значит придётся каждую линию рисовать вручную и забивать динамизацию вручную.

В любом случае спасибо за информацию.
А какие варианты если не вручную? есть правило для линий уву они формируются?? Можно в таблицу выгрузить и в excel проставить настройки. Задача ваша до конца не понятна.

FireLizzard
04.12.2022, 15:46
Добрый вечер.
Для управления RGB диммером в интерфейсе добавил элемент UI "Выбор цвета". На выход он отдаёт значение вида #FFCCAA00, в представлении RGBA, по байту на каждый цвет. А диммер, подключаемый по modbus, принимает значения вида 0-255 на каждый из каналов R, G, B.
Разбираю и собираю RGBA строку с помощью BYTE_OF_DWORD() и DWORD_OF_BYTE(), с последующим преобразованием, эта часть вроде работает.
А как явно перевести представление переменной из DEC в HEX и обратно? То есть, чтобы получив на входе CC она отдала 204, и наоборот?

b_aleks2
05.12.2022, 08:30
А как явно перевести представление переменной из DEC в HEX и обратно? То есть, чтобы получив на входе CC она отдала 204, и наоборот?

C#

int decValue = Convert.ToInt32(hexValue, 16);

melky
05.12.2022, 09:23
Если получили byte цвета 0xCC то еще проще, (int)byteR, (int)byteG, (int)byteB и обратно ваше число, которое не превышает 0-255 потом в байт (byte)collorR и т.д.

FireLizzard
05.12.2022, 10:13
C#

int decValue = Convert.ToInt32(hexValue, 16);

А как обвязать это в рабочий код? Создал скрипт С#, добавил hexValue - In типа STRING и decValue - Out типа UINT. Связи пока не делал, в ручном режиме на подачу значений типа ff или ff00aa не реагирует.

FireLizzard
05.12.2022, 10:23
Если получили byte цвета 0xCC то еще проще, (int)byteR, (int)byteG, (int)byteB и обратно ваше число, которое не превышает 0-255 потом в байт (byte)collorR и т.д.

Ещё одна точка стыка. Отдельные байты хорошо режутся и склеиваются в типе STRING. А Графический элемент выдаёт тип HMI.SolidColorType, вида rgba(255,255,255,1.0). Как преобразовать этот тип в string без скобок и прочих лишних элементов? Информации по работе с этим типом данных очень мало, всё сваливается к прямой передаче из цвета одного элемента в цвет другого. А как бы его разобрать/собрать в понятный базовый тип STRING, которым все вычисления гораздо проще?
Думал на тему работы с указателями, но компилятор ругается на конструкции вида
VAR
pt : POINTER TO BYTE; (* Указатель на символ *)
END_VAR
IF pt^ = CHR THEN ..

melky
05.12.2022, 10:36
Ну это не совсем ко мне, просто прочитал, что вам байтами оперировать надо в C# В вашей строке видимо еще какой-то параметр и он уже фактически double.
А так, поймать скобки, и в массив строк, первые 3 (0-2) ячейки массива целые числа, последнее double, после обработки все обратно и в строку.

и это можно сделать средствами скрипта C# не прибегая еще и к ST или на чем вы там последнее написали.

FireLizzard
05.12.2022, 10:57
Идею понял, но пока мои познания C# невелики, горожу костыли на ST )). Эх, без посимвольного парсинга не обойтись. Задача облегчается тем, что формат стабильный, можно сразу отрезать постоянную начальную и конечную часть строки 'rgba(' и ')' ,а затем расклеивать оставшееся по признаку запятой. В таком случае и преобразование в HEX не потребуется, оно там в десятичном представлении.
Всё было бы гораздо проще, если бы в MasterScada 4D библиотеку OSCAT.BASIC реализовали в полном объёме, а не избирательно.

melky
05.12.2022, 11:03
Не нужен вам посимвольный парсинг, вам нужно для C#
1. работа со строками, чтобы взять в строку то, что между скобками
2. забрать в строковой массив данные, они у вас разделены ,
3 обработать как вам надо (первые три ячейки парсинг в int, последню парсинг в double)
4. вырезать из исходной то, что между скобками
5. свой массив в строку и сделать инсерт в исходную между скобками

FireLizzard
05.12.2022, 13:07
Работает, только вот RedOUT где-то подвисает посередине.. Хотя, вроде всё по фен-шую, и следующие строки находятся нормально, а вот первая почему-то хромает.

sRGBA := OBJECT_TO_STRING(RGBA_IN);
IF LEN(sRGBA) > 0 AND FIND(IN1:= sRGBA, IN2:= 'rgba') > 0 THEN
sRGBA := DELETE(IN:= sRGBA, L:= 5, P:= 1);
sRed := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
RedOUT := STRING_TO_USINT(sRed);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sGreen := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
GreenOUT := STRING_TO_USINT(sGreen);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sBlue := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
BlueOUT := STRING_TO_USINT(sBlue);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sAlpha := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ')')-1));
AlphaOUT := REAL_TO_USINT(TRUNC(STRING_TO_REAL(sAlpha)*255));
END_IF

Осталось Всё это в цикл завернуть и работу с элементами массива.

FireLizzard
05.12.2022, 13:16
Не нужен вам посимвольный парсинг, вам нужно для C#
1. работа со строками, чтобы взять в строку то, что между скобками
2. забрать в строковой массив данные, они у вас разделены ,
3 обработать как вам надо (первые три ячейки парсинг в int, последню парсинг в double)
4. вырезать из исходной то, что между скобками
5. свой массив в строку и сделать инсерт в исходную между скобками

Попробую на обоих языках реализовать

VladGC
05.12.2022, 13:17
Работает, только вот RedOUT где-то подвисает посередине.. Хотя, вроде всё по фен-шую, и следующие строки находятся нормально, а вот первая почему-то хромает.

sRGBA := OBJECT_TO_STRING(RGBA_IN);
IF LEN(sRGBA) > 0 AND FIND(IN1:= sRGBA, IN2:= 'rgba') > 0 THEN
sRGBA := DELETE(IN:= sRGBA, L:= 5, P:= 1);
sRed := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
RedOUT := STRING_TO_USINT(sRed);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sGreen := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
GreenOUT := STRING_TO_USINT(sGreen);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sBlue := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ',')-1));
BlueOUT := STRING_TO_USINT(sBlue);
sRGBA := DELETE(IN:= sRGBA, L:= FIND(IN1:= sRGBA, IN2:= ','), P:= 1);

sAlpha := LEFT(IN:= sRGBA, L:= (FIND(IN1:= sRGBA, IN2:= ')')-1));
AlphaOUT := REAL_TO_USINT(TRUNC(STRING_TO_REAL(sAlpha)*255));
END_IF

Осталось Всё это в цикл завернуть и работу с элементами массива.

Вот еще посмотрите,
набросал

FireLizzard
05.12.2022, 15:44
Вот еще посмотрите,
набросал

Благодарю, часть решения понятна, применил. Дочитался в хелпе, что "C# программы поддерживается только в тех версиях исполнительной системы, которые работают под ОС Windows." интересно, а как оно будет себя вести на ПЛК110 при обращении с мобильных клиентов (Телефоны)? Там же .NET и не пахло..

FireLizzard
05.12.2022, 18:35
В общем, для задачи работы с RGB диммером допилил ФБ на ST.
Двусторонняя конвертация из формата строки rgba(255,255,255,1.0) в отдельные значения USINT, и обратно. Мне важно было оставить возможность задания цветов не только через элемент выбора цвета, но и числом через параметры.

AlexBut
07.12.2022, 12:09
Здравствуйте!
В MS 3 работали с OPC-серверами,но в связи с переходом на Linux(исп система)
использование OPC под вопросом.
Пытался перетянуть тэги из OPC в модуль Modbus TCP,но как указать что
Bool тэг это бит слова Holding register(в OPC это "Извлечение бита из данных" и "Номер бита данных",
а в модуль Modbus TCP пока не нашёл(в настройках модуль Modbus TCP указываю IP адрес,затем добавляю канал(или DI) и указываю адрес ячейки 1002,тип значения "Целый", Тип ячейки "Регистр хранения" а где указать номер бита ? Если указать тип значения "Логический" то настройки Номер бита тоже нет)?

b_aleks
07.12.2022, 12:51
Здравствуйте!
В MS 3 работали с OPC-серверами,но в связи с переходом на Linux(исп система)
использование OPC под вопросом.
Пытался перетянуть тэги из OPC в модуль Modbus TCP,но как указать что
Bool тэг это бит слова Holding register(в OPC это "Извлечение бита из данных" и "Номер бита данных",
а в модуль Modbus TCP пока не нашёл(в настройках модуль Modbus TCP указываю IP адрес,затем добавляю канал(или DI) и указываю адрес ячейки 1002,тип значения "Целый", Тип ячейки "Регистр хранения" а где указать номер бита ? Если указать тип значения "Логический" то настройки Номер бита тоже нет)?

Читайте регистр, а потом программно извлекайте нужный бит.

AlexBut
08.12.2022, 04:00
Благодарю, часть решения понятна, применил. Дочитался в хелпе, что "C# программы поддерживается только в тех версиях исполнительной системы, которые работают под ОС Windows." интересно, а как оно будет себя вести на ПЛК110 при обращении с мобильных клиентов (Телефоны)? Там же .NET и не пахло..

Это действительно так :"C# программы поддерживается только в тех версиях исполнительной системы, которые работают под ОС Windows."?

AlexBut
08.12.2022, 08:51
Здравствуйте!
Как перейти из окна "Ошибки проекта" к конкретной ошибке в проекте,
ни щелчок, ни двойной не помогают. И что значит идентификатор, например, CS1001,
в начале строки "Сообщение" этого окна.
Спасибо.

AlexBut
08.12.2022, 09:10
Читайте регистр, а потом программно извлекайте нужный бит.

И опять здравствуйте,
есть FB byte_to_bits в библ-ке OSCAT-Логические модули, а где взять word_to_bits или uint_to_bits?

melky
08.12.2022, 09:16
Word те же самые байты, смещенные на 8 битов, чем дальше байт, тем больше смещение... SHR используйте перед тем как подавать на byte_to_bits очередного байта из Word

b_aleks
08.12.2022, 10:23
Word те же самые байты, смещенные на 8 битов, чем дальше байт, тем больше смещение... SHR используйте перед тем как подавать на byte_to_bits очередного байта из Word

Либо в справке почитайте статью "Работа с отдельными битами". Можно самому написать ФБ WORD_TO_BITS

ЛогическийПараметрБит0 := ЦелочисленныйПараметр.0
ЛогическийПараметрБит1 := ЦелочисленныйПараметр.1
...
ЛогическийПараметрБит15 := ЦелочисленныйПараметр.15

AlexBut
08.12.2022, 12:48
Открываю окно из другого (стартового) окна и каждый раз спрашивает пароль(логинится) , хотя надо
чтобы пароль спрашивался один раз при загрузке стартового окна?
И ещё -если закрыть стартовое окно то окно открытое из стартового тоже закрывается(открываю как новое окно)
а мне нужно чтобы осталось открытым.
Спасибо

Maria Momotova
08.12.2022, 14:05
Здравствуйте!
Как перейти из окна "Ошибки проекта" к конкретной ошибке в проекте,
ни щелчок, ни двойной не помогают. И что значит идентификатор, например, CS1001,
в начале строки "Сообщение" этого окна.
Спасибо.

Это ошибки из программы C#.

Maria Momotova
08.12.2022, 14:21
Открываю окно из другого (стартового) окна и каждый раз спрашивает пароль(логинится) , хотя надо
чтобы пароль спрашивался один раз при загрузке стартового окна?
И ещё -если закрыть стартовое окно то окно открытое из стартового тоже закрывается(открываю как новое окно)
а мне нужно чтобы осталось открытым.
Спасибо

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

Larrrik
09.12.2022, 16:18
Коллеги, доброго дня.
Может кто-то знает регулируется ли где-то шрифт всплывающих подсказок при отображении в клиенте визуализации? А то в самой среде разработки подсказки миниатюрные и четкие, а в клиенте - монструозные. (может, Мария знает?:rolleyes:)

Minarion
13.12.2022, 09:00
Здравствуйте!
Не могу понять где я допускаю ошибку, может кто-то уже сталкивался и сможет подсказать.
64492

Нарисованы две группы фигур (линии и прямоугольники). Отличия в том что в нижней группе фигур (конкретно к линиям) назначено событие по клику мышки открыть всплывающее окно, а на верхнем ничего не привязано. Для удобства выделения всем фигурам добавлены всплывающие подсказки с названиями.
Проблема в том что если линиям назначить всплывающие окна, то их зона захвата мышки живет совершенно своей жизнью (при наведении на прямоугольник или на зону рядом с линией выделяется линия), и некоторые прямоугольники либо доступны частично, либо выделить совершенно невозможно.

Есть идеи как это побороть?

FireLizzard
13.12.2022, 14:40
Проблема в том что если линиям назначить всплывающие окна, то их зона захвата мышки живет совершенно своей жизнью (при наведении на прямоугольник или на зону рядом с линией выделяется линия), и некоторые прямоугольники либо доступны частично, либо выделить совершенно невозможно.


Попробуйте заменить жирные линии на прямоугольники. С большой долей вероятности при построении линии (x1,y1 to x2,y2) интерпретатор расценивает координаты концов линии как угловые точки прямоугольника с такими же координатами.
Либо поиграться с Z порядком фигур, вытащив прямоугольники на передний план

Minarion
14.12.2022, 12:08
Попробуйте заменить жирные линии на прямоугольники. С большой долей вероятности при построении линии (x1,y1 to x2,y2) интерпретатор расценивает координаты концов линии как угловые точки прямоугольника с такими же координатами.
Либо поиграться с Z порядком фигур, вытащив прямоугольники на передний план

Спасибо! Как промежуточное решение подойдет. С прямоугольниками тоже не очень выходит.

ВВВ555
14.12.2022, 18:57
Здравствуйте, подскажите почему при выставлении логарифмической шкалы на элементе "тренд", ось значений превращается в infinity во всех точках? При том что у передаваемого в перо параметра точно нет нулевых значений в архиве и в текущий момент.

Maria Momotova
15.12.2022, 18:08
Коллеги, доброго дня.
Может кто-то знает регулируется ли где-то шрифт всплывающих подсказок при отображении в клиенте визуализации? А то в самой среде разработки подсказки миниатюрные и четкие, а в клиенте - монструозные. (может, Мария знает?:rolleyes:)

В текущей версии это не настраивается. Но я знаю, что такая задача стоит в в планах у разработки.

b_aleks
16.12.2022, 08:53
В текущей версии это не настраивается. Но я знаю, что такая задача стоит в в планах у разработки.

То есть лет через 50 добавят в релиз

Larrrik
16.12.2022, 10:44
То есть лет через 50 добавят в релиз

Поздравляю с разбаном )

b_aleks
16.12.2022, 14:38
Поздравляю с разбаном )

Пасибки)))

FireLizzard
17.12.2022, 22:42
Доброго времени суток.
На ST не могу никак разобраться с применением перечислений для формирования индекса массива структур.
В примерах на CodeSys 3.5 тип перечисление EleventType: (eElement1, eElement2, .. ,eElement10)
определялся между тегами TYPE, после чего в VAR спокойно можно было объявить массив вида:
Massive: ARRAY[EleventType.eElement1..EleventType.eElement10] OF StructureType;
MS4D на теги TYPE начинает ругаться, мол, "Не вижу объявления функционального блока". Пробовал добавить тип данных Перечисление в структуру программы через перетаскивание в дерево, в Локальные параметры программы - не видит определяемого перечисления, и не хочет использовать его в качестве индекса массива.

Хорошо бы было пример кода определения перечисления на чистом ST без внешних коннекторов, и пример обращения к элементу массива с такой индексацией.

FireLizzard
17.12.2022, 22:51
В текущей версии это не настраивается. Но я знаю, что такая задача стоит в в планах у разработки.

Хорошо бы ещё добавить возможность отображения всплывающих подсказок от типа клиента, на который выводится визуализация. Если на стационарном мониторе они смотрятся нормально, то на мобильных клиентах мешают работе, даже если фейс и написан с прицелом на совместимость с разными платформами. Достаточно бы было свойства вроде "Показать всплывающую подсказку"

Update: Гм.. есть конечно обходные решения, но это каждому элементу тыкать.. А так бы за радость - определил несколько типов фейса, и выбрал для каждой подсказки тип фейса для которого её отображать.. ))

Aleksandr
24.12.2022, 21:32
Добрый день. При работе с таймером заметил, что если изменить уставку после того как таймер начал отсчет, новая уставка не принимается. Отсчет заканчивается и включение выхода происходит по уставке заданной до начала отсчета. Так задумывалась работа таймеров?64797

melky
25.12.2022, 10:39
Не знаю реализацию кода в MS4D но если время PT передается одновременно со сработкой входа IN то так и будет. IN в таймерах работает строго по проверке фронта сигнала.

Как вариант попробовать TON_1.PT изменить после инициализации таймера.

mf_
26.12.2022, 15:05
Добрый день. Есть 15 одинаковых окон с 15ю единицами оборудования с кучей параметров, которые нужно привязать к куче переменных OPC. Есть способ настроить в одном окне привязку и конвертацию, а остальные окна создать копией, сохранив конвертацию, но поменяв в настройках индекс переменных? Чтобы не перетаскивать кучу переменных в каждом окне на элемент и заново не настраивать конвертацию для каждого элемента/переменной?

b_aleks
26.12.2022, 16:09
Добрый день. Есть 15 одинаковых окон с 15ю единицами оборудования с кучей параметров, которые нужно привязать к куче переменных OPC. Есть способ настроить в одном окне привязку и конвертацию, а остальные окна создать копией, сохранив конвертацию, но поменяв в настройках индекс переменных? Чтобы не перетаскивать кучу переменных в каждом окне на элемент и заново не настраивать конвертацию для каждого элемента/переменной?

В клеммник окна добавьте параметры, настройте динамизацию. Дольше либо копируете, либо добавляете окно в библиотеку и добавляете как экземпляр.

mf_
26.12.2022, 16:35
...
Понял, попробую. А то я без клеммников делал, напрямую из ОРС тянул на элемент.

Спасибо.

Aleksandr
27.12.2022, 00:47
Заметил еще одну странность. В окне использую текст и вложенное окно объекта (в котором у меня используется инкремент) 64852. Есть параметр, который должен управлять видимостью текста и вложенного окна. Привязываю этот параметр к видимости текста - все работает как надо. При привязке этого же параметра к видимости вложенного окна - динамизация видимости не работает. Причем перестает она работать и на тексте, пока не отвяжешь эту переменную от вложенного окна. Хотелось бы получить коментарии техподдержки MasterScada.

pavel.migdalev
27.12.2022, 08:18
Коллеги!
Есть предложение перестать писать сообщения в этой теме, потому что:
1. Это нарушает принципы SOLID - большинство программистов знают что это такое.
2. Когда одна тема содержит кучу разных тем, то в ней сложнее искать ответы на свои вопросы.
Предлагаю: создавать свою отдельную тему по каждому вопросу.

mf_
27.12.2022, 09:58
Коллеги!
Есть предложение перестать писать сообщения в этой теме, потому что:
Да ну, зачем. Это же по сути "вопросы новичков", здесь никто тебя тапком не отшлёпает за то, что ты задал вопрос, который уже 100 раз обсуждали.
И потом, никто не запрещает создать новую тему, если Вам кажется, что вопрос этого достоин.

mf_
30.12.2022, 23:11
Прошу подсказать где можно поймать событие появления аварийных сообщений (тревог) в журнале. Я хочу по появлению активных сообщений в журнале подсвечивать кнопку перехода к журналу.

Maria Momotova
10.01.2023, 19:09
Прошу подсказать где можно поймать событие появления аварийных сообщений (тревог) в журнале. Я хочу по появлению активных сообщений в журнале подсвечивать кнопку перехода к журналу.

для этой задачи можно использовать индикатор сообщений.

mf_
10.01.2023, 21:21
для этой задачи можно использовать индикатор сообщений.
Если я не использую в проекте индикатор сообщений, то я нужно всё равно разместить в какой-то области окна (пусть и невидимым), настроить его и только после этого привязать наличие сообщений к кнопке. На данный момент у меня сделано именно так, но считаю это, в какой-то степени, костылём. Нет ли более правильного решения? Странно, что журнал сообщений не содержит в себе информации о их наличии. Спасибо.

VladGC
11.01.2023, 08:55
Если я не использую в проекте индикатор сообщений, то я нужно всё равно разместить в какой-то области окна (пусть и невидимым), настроить его и только после этого привязать наличие сообщений к кнопке. На данный момент у меня сделано именно так, но считаю это, в какой-то степени, костылём. Нет ли более правильного решения? Странно, что журнал сообщений не содержит в себе информации о их наличии. Спасибо.

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

Maria Momotova
11.01.2023, 12:24
Если я не использую в проекте индикатор сообщений, то я нужно всё равно разместить в какой-то области окна (пусть и невидимым), настроить его и только после этого привязать наличие сообщений к кнопке. На данный момент у меня сделано именно так, но считаю это, в какой-то степени, костылём. Нет ли более правильного решения? Странно, что журнал сообщений не содержит в себе информации о их наличии. Спасибо.

Есть ФБ, которые по фильтру определяют наличие сообщений. Те которые работают с архивными и актуальными сообщениями.GetActualEvents, например.

mf_
11.01.2023, 22:01
VladGC, Maria, спасибо!!!

Shogun
14.01.2023, 22:39
Делаю копку с фиксацией, в привязанном параметре жму галочку - архивировать. Но после перезапуска сервера RT, кнопка выключена. Как сделать что бы после перезапуска скады все нажатые ранее кнопки были нажатыми и не сбрасывались?

mf_
15.01.2023, 19:39
Shogun, мне кажется, что архивирование это совсем не то, что вы хотите. Чтобы кнопка была нажатой нужно в контроллере эту переменную сделать retain. Это для того, чтобы она была нажатой после перезапуска контроллера, а можно и не делать, если вы перезапускаете только скаду. Далее для кнопки прописать вход от этой переменной, а не только выход. Тогда всё получится.

Спорягин Кирилл
16.01.2023, 10:40
Уважаемая тех. поддержка Мастерскады!
Ответьте, пожалуйста, на вопрос в этой теме: https://owen.ru/forum/showthread.php?t=37239

Спасибо!

Юлия Лукина
16.01.2023, 13:02
Добрый день!
Оставьте, пожалуйста, заявку по вашему вопросу на сайте https://support.masterscada.ru/

Maria Momotova
20.01.2023, 14:19
За восстановление значения после перезапуска отвечает свойство параметра "Сохранять". В категории свойств "Общие". Нужно поставить значение "Да"

Maria Momotova
20.01.2023, 14:20
Уважаемая тех. поддержка Мастерскады!
Ответьте, пожалуйста, на вопрос в этой теме: https://owen.ru/forum/showthread.php?t=37239

Спасибо!

Техподдержка тут не отвечает. Все ответы техподдержки по адресу, который дали ниже.

Larrrik
30.01.2023, 10:43
Доброго дня.
Прошу подсказать кто знает - для параметров, созданных в объекте, исполняемом в задаче экрана, свойство "Сохранять" работает или нет?
Если нет, то как в MS4D штатно реализуется задача хранения настроек для разных клиентов (например: разрешение/запрет звуковой сигнализации - на АРМ нужно чтобы был звук, на удаленном клиенте: да или нет)
Можно ли сделать управляемую настройку так, чтобы она сохраняла свое значение для каждого клиента отдельно?

mf_
01.02.2023, 21:45
Друзья, подскажите, что делаю не так. Запускаю Multiprotocol OPC server, запускаю MasterScada 4D RT, запускаю Masterscada 4D Client, окно клиента открывается, проект загружается, но не подключается к Multiprotocol OPC серверу. Если запускать из среды разработки без загрузки конфигурации, то подключение к серверу происходит, все данные отображаются.
Где-то галочку забыл поставить? Спасибо.

Юлия Лукина
02.02.2023, 10:59
Добрый день! Отправьте, пожалуйста, Ваш проект на support@owen.ru.

mf_
02.02.2023, 12:00
Добрый день! Отправьте, пожалуйста, Ваш проект на support@owen.ru.

Добрый день. Ваше сообщение адресовано мне?

Юлия Лукина
02.02.2023, 15:54
Здравствуйте! Да, Вам.

mf_
02.02.2023, 16:31
Здравствуйте! Да, Вам.
Юлия, отправил на указанный адрес проект и конфигурацию. Тема письма "Выгруженная конфигурация проекта не подключается к master opc серверу". К сожалению забыл указать, что это Masterscada 4D.

wellguy
04.02.2023, 23:46
Добрый вечер. Парочка вопросов.
1. Есть ли в МС4Д таймер-секундомер? Необходимо вывести на экран время с последнего запуска процесса, затем сбрасывать при следующем запуске процесса.
2. Был проект в Версии 1.2.14. Установил 1.2.18 и проект теперь не запускается. Точнее стартует клиент визуализации, но вечно висит на "Загрузка". В старой версии точно работало, проверял. На новой не работает ни на ПК, ни на ноуте. Пробовал компилировать под новую версию, обновлять библиотеки. Так же не обновлять ничего, просто открыть проект. Ничего не помогает

Makarovas
11.02.2023, 14:51
Поведение условий теперь не работает как раньше - например, я раньше ставил в условии триггера в проверке параметра "!=", и получал сработку при каждом изменении параметра. Теперь это не работает! Есть ли способ обойти эту "фичу"?

Nikkiollu
13.02.2023, 10:37
Ответ от ТП: низзя.

Самое обидное что в справке есть описание что для генерации отчета можно использовать SQL запрос, однако это работает только в 3 версии. В 4 такого не предусмотрено.
50630

В 1.2 MasterSCADA 4D я вывела структурный массив через запрос SQL протокол PostgreSQL и ввела выход канала результат запроса как новый архив ( перетащила выход в Проект (Текущий проект) в дереве отчёта ) Выход задавала как динамический массив структуры

sanya0971
13.02.2023, 16:51
Добрый день!
MasterScada 4d обменивается данными с PLC OWEN по Modbus TCP.
Хочу сделать единое всплывающее окно для всех элементов моторов итд.
Набросал элементы подвязал их напрямую, явно указывая адрес регистров. Все работает.
Но почему нет связи - если пытаешься "динамизировать" свойство адрес ячейки с помощью обычной целочисленной переменной ?
Спасибо!
65884

b_aleks2
13.02.2023, 16:53
Добрый день!
MasterScada 4d обменивается данными с PLC OWEN по Modbus TCP.
Хочу сделать единое всплывающее окно для всех элементов моторов итд.
Набросал элементы подвязал их напрямую, явно указывая адрес регистров. Все работает.
Но почему нет связи - если пытаешься "динамизировать" свойство адрес ячейки с помощью обычной целочисленной переменной ?
Спасибо!
65884

Потому что данное свойство нельзя менять в режиме исполнения

sanya0971
13.02.2023, 17:11
Потому что данное свойство нельзя менять в режиме исполнения
Благодарю!
А есть идеи, как можно это реализовать?
Может скриптом как-то?

VladGC
13.02.2023, 17:47
Благодарю!
А есть идеи, как можно это реализовать?
Может скриптом как-то?

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

Вы хотите в одном окне, перебирать адреса, и в нем получать нужную инфу?
Можете добавить все нужные регистры в протокол, далее все засунуть в массив, а затем, на экране перебирать индекс этого массива

sanya0971
13.02.2023, 18:08
Думается, что это связано с лицензионной моделью, где вы покупаете количество тегов. А таким образом его можно обойти, опрашивая по очереди сотни регистров.

Вы хотите в одном окне, перебирать адреса, и в нем получать нужную инфу?
Можете добавить все нужные регистры в протокол, далее все засунуть в массив, а затем, на экране перебирать индекс этого массива
Да, одно окно - для всех элементов одного типа (для моторов свое, для датчиков свое, для клапанов свое итд).
Просто у меня 3тыс переменных в общем.
Слишком долго это все)

VladGC
13.02.2023, 20:10
Да, одно окно - для всех элементов одного типа (для моторов свое, для датчиков свое, для клапанов свое итд).
Просто у меня 3тыс переменных в общем.
Слишком долго это все)

На самом деле все просто
берете c# и в цикле перебираете все входы в один массив или куда еще хотите

bdw11@mt-holding.ru
13.02.2023, 23:53
Здравствуйте. Почему при компиляции даже пустой программы столько ошибок?

Minarion
14.02.2023, 07:18
На самом деле все просто
берете c# и в цикле перебираете все входы в один массив или куда еще хотите

Добрый день!
Подскажите, а можно ли такое же провернуть в программе ST?

VladGC
14.02.2023, 09:26
Добрый день!
Подскажите, а можно ли такое же провернуть в программе ST?

На сколько я знаю нет,
но вы можете допустим сделать промежуточную программу, что бы записать в массив, а еще лучше в глобальные переменные, тогда доступ будет из всего проекта

sanya0971
14.02.2023, 12:12
На самом деле все просто
берете c# и в цикле перебираете все входы в один массив или куда еще хотите
очень круто, что показали пример скрипта, за что очень благодарен.
Но я правильно понимаю, что для того, чтобы им пользоваться, нужно предварительно описать все переменные, причем желательно в ключе ValueN (N = 1....).
У меня шаблон просто вот такой для одного экземпляра аналогового датчика, например... а их штук 150
65913

VladGC
14.02.2023, 12:25
очень круто, что показали пример скрипта, за что очень благодарен.
Но я правильно понимаю, что для того, чтобы им пользоваться, нужно предварительно описать все переменные, причем желательно в ключе ValueN (N = 1....).
У меня шаблон просто вот такой для одного экземпляра аналогового датчика, например... а их штук 150
65913

То есть у вас 150 устройств, которые опрашиваются скадой, имеют такой шаблон( похожий на параметры шкалы переменной самой ms4)?
Или это одно modbusTCP 150 * х регистров?

sanya0971
14.02.2023, 12:33
То есть у вас 150 устройств, которые опрашиваются скадой, имеют такой шаблон( похожий на параметры шкалы переменной самой ms4)?
Или это одно modbusTCP 150 * х регистров?
Контроллеров три, но пока хочу с одним разобраться.
Шаблон для одного датчика. Идея была в том, чтобы при вызове всплываюего окна подставлять целочисленную переменную в свойство "Адрес ячейки" для каждой из показанной на скрине перенной (там их около 15 вроде плюс минус).
К примеру для первого датчика значение Value лежит в Holding регистре 0, для второго датчика 30, для третьего датчика 60 и так далее. И вот эту тридцатку бы добавить как-нибудь) Даже на панелях вайнтек все получилось сделать.
Ключ лицензии вроде есть, может надо действительно его попробовать вбить и протестить?

VladGC
14.02.2023, 13:54
Контроллеров три, но пока хочу с одним разобраться.
Шаблон для одного датчика. Идея была в том, чтобы при вызове всплываюего окна подставлять целочисленную переменную в свойство "Адрес ячейки" для каждой из показанной на скрине перенной (там их около 15 вроде плюс минус).
К примеру для первого датчика значение Value лежит в Holding регистре 0, мдля второго датчика 30, для третьего датчика 60 и так далее. И вот эту тридцатку бы добавить как-нибудь) Даже на панелях вайнтек все получилось сделать.
Ключ лицензии вроде есть, может надо действительно его попробовать вбить и протестить?

В первом приближении, я бы создал новый тип структура, который повторяет 30 регистров от датчика
и присвоил массиву
Ну или вообще создать в библиотеке шаблон устройства в протоколе, добавить нужное окно и затем открывать

sanya0971
14.02.2023, 15:18
В первом приближении, я бы создал новый тип структура, который повторяет 30 регистров от датчика
и присвоил массиву
Ну или вообще создать в библиотеке шаблон устройства в протоколе, добавить нужное окно и затем открывать

А на C# адрес ячейки тоже я так понял не изменить и в итоге все равно придется создавать все теги (каналы) руками.

VladGC
14.02.2023, 16:52
А на C# адрес ячейки тоже я так понял не изменить и в итоге все равно придется создавать все теги (каналы) руками.

В рантайме нет,
Но если тыкнуть на устройство , то появится удобный редактор

AndrejR
16.02.2023, 11:48
Добрый день!
Подскажите по тренду - раньше в позиции курсора показывались значения всех перьев. С какой-то версии - выводит только значения, сохраненные в этот момент в архиве . Т.е. для редко изменяемых, например уставки, на графике прямая линия с неизвестным значением. Есть возможность переключиться к старому виду?

b_aleks2
16.02.2023, 12:42
Добрый день!
Подскажите по тренду - раньше в позиции курсора показывались значения всех перьев. С какой-то версии - выводит только значения, сохраненные в этот момент в архиве . Т.е. для редко изменяемых, например уставки, на графике прямая линия с неизвестным значением. Есть возможность переключиться к старому виду?

Я на какой-то версии ловил этот косяк, если мне не изменяет память, то после выхода 1.2.18. У меня решение было простое - просто не обновляться

Юрий Хайретдинов
02.03.2023, 12:46
Добрый день. Подскажите, как получить номер активного экрана скады?

VladGC
02.03.2023, 19:24
Добрый день. Подскажите, как получить номер активного экрана скады?

А что значит номер активного экрана?
Если по сути, у вас один экран,
или вы имеете ввиду, текущий фрейм в контейнере окна?

Вы какую задачу решаете ?

Юрий Хайретдинов
03.03.2023, 06:43
В скаде несколько полноразмерных окон. Нужен номер (id) того окна, которое сейчас открыто пользователю.

b_aleks2
03.03.2023, 09:51
В скаде несколько полноразмерных окон. Нужен номер (id) того окна, которое сейчас открыто пользователю.

Единственное, что пришло в голову - это вешать событие на кнопки открытия окон, которое будет присваивать параметру id последнего открытого окна. Начальное значение этого параметра - Id стартового окна

Юрий Хайретдинов
03.03.2023, 10:49
Спасибо. Так и реализовал.
Не могу разобраться со средой исполнения. Как в ней, стоящей на отдельном АРМ, запустить проект.

b_aleks2
03.03.2023, 11:24
Спасибо. Так и реализовал.
Не могу разобраться со средой исполнения. Как в ней, стоящей на отдельном АРМ, запустить проект.

Можно со среды разработки загрузить, надо в свойствах узла указать IP удаленного хоста, где стоит среда исполнения. Либо два раза кликаете по узлу в дереве, откроется окно, там нажимаете "Экспорт проекта". Далее грузите ручками в среду исполнения.

Юрий Хайретдинов
03.03.2023, 11:36
Можно со среды разработки загрузить, надо в свойствах узла указать IP удаленного хоста, где стоит среда исполнения. Либо два раза кликаете по узлу в дереве, откроется окно, там нажимаете "Экспорт проекта". Далее грузите ручками в среду исполнения.

Какие-то определенные порты должны быть открыты на компе со средой исполнения. Выключил антивирус, брэндмауэр, но все равно при запуске проекта пишет подключение к серверу.

b_aleks2
03.03.2023, 13:19
Какие-то определенные порты должны быть открыты на компе со средой исполнения. Выключил антивирус, брэндмауэр, но все равно при запуске проекта пишет подключение к серверу.

Я на самом деле так ни разу не пробовал, но встроенная справка по этому поводу ничего не говорит.

Minarion
06.03.2023, 08:16
Добрый день!
Подскажите, как в качестве источника данных использовать СУБД Firebird (по аналогии с PostgreSQL, MSSQL и MySQL)?

Minarion
06.03.2023, 15:29
И ещё один момент: обновился до версии 1.3. Сконвертировал проект в новую версию, но ReportFB теперь не видит название отчета. Кто-то в курсе что там изменилось в правилах написания?

Minarion
07.03.2023, 08:34
Добрый день!
Подскажите, как в качестве источника данных использовать СУБД Firebird (по аналогии с PostgreSQL, MSSQL и MySQL)?

Тут разобрался. Есть MPS-OPC-CONV-ODBC-UNL. Он то похоже и может помочь)

Александер2008
11.03.2023, 09:30
Добрый день!
Должна ли работать библиотека BACNET в демо версии?
11.03.2023 9:25:05 Ошибка: Не удалось установить связь с 'Библиотеки.BACnet.Протоколы.BACnet.OBJECTS_ANALOG _INPUTxxxxxxx.PresentValue.Вход' Источник: Объекты.Объект 1.PresentValue 1

Вова13
14.03.2023, 19:39
Добрый день. Подскажите по тренду.Можно ли, при каждом новом входе на окно с графиком, автоматически сбрасывать до этого выбранные элементы в дереве. Т. Е. Выбрал я два параметра, график закрыл, а при следующем входе всё галочки сброшены ?

Вова13
14.03.2023, 19:42
Добрый день. Подскажите по тренду.Можно ли, при каждом новом входе на окно с графиком, автоматически сбрасывать до этого выбранные элементы в дереве. Т. Е. Выбрал я два параметра, график закрыл, а при следующем входе всё галочки сброшены ?
https://cloud.mail.ru/public/Ni4p/vDd6fp9ZQ

Minarion
15.03.2023, 15:32
Добрый день!
Подскажите каким образом можно построить отчет по данным их архивного журнала?

Aleksandr
19.03.2023, 20:48
Добрый день. В проекте использую отчет. При проверке отчета выводится ошибка - "В отчете 'Report' выявлена ошибка компиляции:' "Reports.Report" не содержит определение для "Item29_LineMarker". Не удалось найти метод расширения "Item29_LineMarker", принимающий первый аргумент типа "Reports.Report" (пропущена директива using или ссылка на сборку?)"
И предварительный просмотр отчета невозможен. Хотя на объекте в режиме исполнения отчет строится нормально. Где и что посмотреть для исправления ошибки?

dreambelarus
23.03.2023, 09:00
Доброго дня. Подскажите пожалуйста такой вопрос. Как реализовать в MS4D контроль(учет) временного интервала между определенными процессами можно ссылку на пример. Есть битовый статус процесса прошел/не прошел 0/1(может и не пройти успешно) есть тег пуска ...можно привязаться еще к признакам температура давление как дополнение. то есть просто к статусу пуск не получится так как процесс может и не пойти..если можно в кратце чтобы мог смоделировать данный процесс в тестовой версии MS4D.

Shogun
24.03.2023, 18:21
Можно ли в Журнале действий оператора сделать так, что бы было видно какое значение ввели в инкремент (уставка) оператор?

Dzherenov
27.03.2023, 18:28
Подскажите, можно ли в булевой функции AND или OR добавить дополнительные входы IN3 IN4 и тд? И еще вопрос, у меня есть прямоугольник и 2 сигнала и я хочу чтоб в зависимости от первого сигнала он был либо красный либо зеленый, а от второго либо серый либо цвет от первого сигнала. Но оно как-то неадекватно работает, если при наличии одного сигнала появляется другой и наоборот. Так как надо смог сделать только использовав 2 прямоугольника наложив их друг на друга и у верхнего эфект прозрачности фона (индикатор с функцией отслеживания).

asuwcc
28.03.2023, 13:00
День добрый.

Не могу понять, как использовать путь относительно рабочей папки исполнительной системы.
Насколько понимаю, нужные файлы должны лежать в рабочей папке проекта тут: C:\ProgramData\MPSSoft\MasterSCADA4DRT[номер версии]\Server (или все-таки здесь: c:\Users\1\AppData\Roaming\MPSSoft\MasterSCADA4D1. 2\[имя_проекта])
Как эти файлы будут переноситься на целевой ПК при прогрузке проекта? Руками чтоли?
Так же не понятен формат строки для использования пути относительно рабочей папки.
Например, в каком виде должна быть строка FileName в ФБ FILETOSTRING, чтобы файл читался из рабочей папки.

В руководстве пользователя больше 2200 стр, а примеров нет. И встроенная справка такая же. Много "воды".
Может кто подскажет?
Спасибо.

kvibsv
28.03.2023, 15:22
Добрый день.
Сделал библиотечный объект с окном --> добавил экземпляр этого объекта к себе в дерево объектов --> положил окно этого экземпляра на схему. Потом потребовалось немного поправить окно (например, убрать рамку окна). Как обновить экземпляр окна на схеме? У меня получается только, если на схеме старое окно экземпляра удалить и положить новое окно. Может, есть какой-то механизм обновления того, что сейчас лежит на схеме?

Shogun
28.03.2023, 19:57
Добрый день.
Сделал библиотечный объект с окном --> добавил экземпляр этого объекта к себе в дерево объектов --> положил окно этого экземпляра на схему. Потом потребовалось немного поправить окно (например, убрать рамку окна). Как обновить экземпляр окна на схеме? У меня получается только, если на схеме старое окно экземпляра удалить и положить новое окно. Может, есть какой-то механизм обновления того, что сейчас лежит на схеме?

да тоже интересует этот вопрос

Александр Пинэко-Скворцов
29.03.2023, 09:47
Добрый день.
Сделал библиотечный объект с окном --> добавил экземпляр этого объекта к себе в дерево объектов --> положил окно этого экземпляра на схему. Потом потребовалось немного поправить окно (например, убрать рамку окна). Как обновить экземпляр окна на схеме? У меня получается только, если на схеме старое окно экземпляра удалить и положить новое окно. Может, есть какой-то механизм обновления того, что сейчас лежит на схеме?

Добрый день!

Убедитесь, что у между объектом в библиотеке и экземпляром присутствует связь наследования, а не связь-ссылка.
В Локальной библиотеке нажмите ПКМ - Копировать на Вашем объекте. Далее на узле Объекты проекта ПКМ - Вставить как наследник.
О тиражировании объектов см. видео: https://youtu.be/3CZFbT7iwMw?t=136

kvibsv
29.03.2023, 11:26
Спасибо за ответ.
У меня оказались именно ссылки. В моем случае обновления применяются в экземплярах: ПКМ по объекту узла -> восстановить по умолчанию. Теперь буду следить за связями при добавлении объектов

inik_msn
29.03.2023, 11:42
Добрый день.
Первые шаги. Блуждаю в трёх соснах третий день.
Есть проект, в нём АРМ1 -> Окно1, в нём поле "Текстовый ввод".
В проекте также есть Объект1 и в нём параметры Time_Now и Alarm с типом TIME.
Вопросы :
1. Как при запуске проекта на выполнение инициализировать циклическое присвоение параметру Time_Now текущего времени ?
2. Как через текстовое поле изменять значение параметра Alarm ?

b_aleks2
29.03.2023, 17:08
Добрый день.
Первые шаги. Блуждаю в трёх соснах третий день.
Есть проект, в нём АРМ1 -> Окно1, в нём поле "Текстовый ввод".
В проекте также есть Объект1 и в нём параметры Time_Now и Alarm с типом TIME.
Вопросы :
1. Как при запуске проекта на выполнение инициализировать циклическое присвоение параметру Time_Now текущего времени ?
2. Как через текстовое поле изменять значение параметра Alarm ?

1. Через программу ST или FBD. На ST будет так:
Time_Now := GET_LOCAL_TIME();
2. Переменную типа TIME надо изменять через контрол "Интервал"

inik_msn
29.03.2023, 22:13
Спасибо, что откликнулись.
Time_Now := GET_LOCAL_TIME(); - компилятор даёт сообщение о несоответствии типов для операции присвоения Time := Data_And_Time
Time_Now := Time(); - при выполнении проекта параметр Time_Now отображает непонятное время. Оно не совпадает ни по часам ни по минутам с компьютерным.

b_aleks2
30.03.2023, 08:02
Спасибо, что откликнулись.
Time_Now := GET_LOCAL_TIME(); - компилятор даёт сообщение о несоответствии типов для операции присвоения Time := Data_And_Time
Time_Now := Time(); - при выполнении проекта параметр Time_Now отображает непонятное время. Оно не совпадает ни по часам ни по минутам с компьютерным.

Ну естественно, GET_LOCAL_TIME возвращает дату и время. Чтобы получить время, нужно воспользоваться функцией конвертации DT_TO_TIME.
Почитайте справку, там все есть.

Sergey_Byk
30.03.2023, 12:07
Мир всем! Как организовать хранение и редактирование параметра?

b_aleks2
30.03.2023, 13:04
Мир всем! Как организовать хранение и редактирование параметра?

Ставите галочку "Архивировать", тянете параметр в окно ПКМ, выбираете "Инкремент"

Sergey_Byk
30.03.2023, 13:37
Ставите галочку "Архивировать", тянете параметр в окно ПКМ, выбираете "Инкремент"
Спасибо помогло. Но только галочка 'сохранять'.

b_aleks2
30.03.2023, 13:39
Спасибо помогло. Но только галочка 'сохранять'.

Сохранять - это про другое. Чтобы параметр хранился в базе данных и отображался на графике, нужно ставить галочку "Архивировать".

Larrrik
03.04.2023, 12:05
День добрый.
Возможно ли как-то при формировании значения параметра типа STRING представлять данные WORD в шестнадцатеричном виде?
Например, формируем строку: "Значение регистра равно = ", а вместо десятичного значения параметра 12 должно выводится: "С".
Вопрос про строки, не про форматы отображения.

melky
03.04.2023, 12:09
Преобразовывать значение в HEX вид скриптом.

Larrrik
03.04.2023, 12:17
Преобразовывать значение в HEX вид скриптом.
В смысле самостоятельно переводить десятичное в шестнадцатеричное? Ничего готового для этого не предусмотрено?

melky
03.04.2023, 12:49
Larrrik в MS4D не знаю. Но обычно да, для отображения в виде строки требуется код. потому что в строке 1-ца имеет код 0x31, 2-ка 0x32 ну и так далее по таблице символов.

b_aleks2
03.04.2023, 12:56
В смысле самостоятельно переводить десятичное в шестнадцатеричное? Ничего готового для этого не предусмотрено?

Не проще для этого C# использовать?

Larrrik
03.04.2023, 13:03
Не проще для этого C# использовать?
Может и проще. Там есть готовая функция форматирования?

melky
03.04.2023, 13:10
public static string HexToString(byte[] ba)
{
string text = BitConverter.ToString(ba);
return text;
}

Тут предварительно в массив загонялось

b_aleks2
03.04.2023, 13:15
Может и проще. Там есть готовая функция форматирования?

string hexValue = intValue.ToString("X");
66976

VladGC
03.04.2023, 13:16
День добрый.
Возможно ли как-то при формировании значения параметра типа STRING представлять данные WORD в шестнадцатеричном виде?
Например, формируем строку: "Значение регистра равно = ", а вместо десятичного значения параметра 12 должно выводится: "С".
Вопрос про строки, не про форматы отображения.

Вот так можно
Только тип надо поправить на нужный

Larrrik
03.04.2023, 13:24
Всем спасибо за предложенные решения. Путь теперь понятен.

melky
03.04.2023, 13:27
Может ошибаюсь, но если в байте предположим FE, то человек в строке хочет видеть FE а не 254 в виде десятичного числа

Shogun
04.04.2023, 16:29
Как реализовать Аналоговый D-триггер ? При поступления сигнала по фронту на входе "А", на выходе "Х" фиксировалось значение которое было на входе В. Значение нужно REAL или LONG.

Хочу реализовать опрос параметра раз в 30 минут..

b_aleks2
04.04.2023, 16:39
Как реализовать Аналоговый D-триггер ?
Написать свой ФБ

Хочу реализовать опрос параметра раз в 30 минут..
Сделайте обычное присвоение в программе, но назначьте ее в задачу с периодом 30 минут. Тогда значение параметра у вас будет обновляться раз в 30 минут.

Shogun
04.04.2023, 16:47
Написать свой ФБ
Это понятно. Я бы сюда иначе не писал. Не найду там нужные блоки для работы с аналоговым сигналом. Ни блоков памяти, ни реализации защёлки...только есть с булевыми переменными.

Сделайте обычное присвоение в программе, но назначьте ее в задачу с периодом 30 минут
а где назначается период задачи?

b_aleks2
05.04.2023, 08:03
а где назначается период задачи?

В ее свойствах, логично же

VladGC
05.04.2023, 09:07
Как реализовать Аналоговый D-триггер ? При поступления сигнала по фронту на входе "А", на выходе "Х" фиксировалось значение которое было на входе В. Значение нужно REAL или LONG.

Хочу реализовать опрос параметра раз в 30 минут..

Вам может подойдет такой fb, при необходимости можно скопировать к себе в библиотеку и поправить тип входа выхода

FireLizzard
05.04.2023, 11:58
Доброго дня.
Сталкивался ли кто-нибудь с потерей связи с контроллером ПЛК110-60 при переезде с версии MS4D 1.2.18 на 1.3.1?
Конфигурацию не менял, файервол пробовал отключать полностью, как и антивирусник - не помогает.
Пробовал найти информацию, какие из компонентов .net доустанавливаются с дистрибутивом, чтобы переставить их вручную - не нашёл, а при переустановке среды больше приглашения об установке компонентов не выводится. На второй машине с Win10 такая-же ситуация, у новой версии среды коннекта с контроллером нет. Старая версия продолжает коннектиться, а новая не хочет, говорит что нет связи.
СП отписали что официальной поддержки ещё нет, но как мне кажется - просто отмазались, у других то апдейт состоялся бесшовно?

kvibsv
05.04.2023, 15:42
Добрый день.
Почему у тега InOut при записи в Выход 0 из Входа продолжается прием ненулевого значения? В контроллере логики нет, только адреса для проверки HMI. Не понимаю...67039

kvibsv
06.04.2023, 07:51
Добрый день.
Почему у тега InOut при записи в Выход 0 из Входа продолжается прием ненулевого значения? В контроллере логики нет, только адреса для проверки HMI. Не понимаю...67039


Гм... А на другом ПК все работает корректно. Видимо, нужно было перезагрузиться. Вопрос снят.

Siinthd
09.04.2023, 00:46
Вопрос, связанный с лицензированием. Если у внешней точки(скажем одно булевое значение в OPC UA) больше одной связи в проекте на вход или на выход, сколько задействованных точек учитывается?
(например,одна исходящая связь в выход на запись в ПЛК,а у входа 3-4 исходящих на несколько экранов. А то что-то быстро набралось 500 точек)

VladGC
09.04.2023, 10:09
Вопрос, связанный с лицензированием. Если у внешней точки(скажем одно булевое значение в OPC UA) больше одной связи в проекте на вход или на выход, сколько задействованных точек учитывается?
(например,одна исходящая связь в выход на запись в ПЛК,а у входа 3-4 исходящих на несколько экранов. А то что-то быстро набралось 500 точек)

Точка считается за одну, количество связей не важно(главное что есть минимум одна)

asuwcc
11.04.2023, 09:16
День добрый.

В плк есть переменная типа DateTime. В МС4Д читаю ее в переменную типа SYSTEM_DT_PARAM.
В МС прибавляется +7 к времени (в настройках ОС стоит +7, это и прибавляется). Но в плк уже настроен нужный часовой пояс. Это можно как-то отменить без использования скрипта?
Спасибо.

Larrrik
17.04.2023, 10:32
Доброго дня.
Нестандартная задача: требуется послать на устройство по Modbus TCP команду, которая в стандартной реализации Modbus интерпретируется как запись функцией 0х05 значения, отличного от ON (0xFF00) или OFF (0x0000).
В MasterOPC мы для этого использовали специальную функцию server.SendAndReceiveDataByMask, но в MS4D такого гибкого функционала не нашли.
Есть ли варианты решить данную задачу какими-либо средствами MS4D?

kvibsv
17.04.2023, 10:39
Добрый день.
Делаю отчет. Задаю период через "Начало" и "Конец" и интервал вывода строк отчета через "Интервал". Хочу получить суммарный расход параметра за ПЕРИОД. Для этого, в отчете требуемому параметру назначаю обработку данных "Интеграл" и выкладываю этот параметр в "Итог данных". В формируемом отчете получаю интегральное значение, но не за ПЕРИОД, а за ИНТЕРВАЛ. Как сделать, чтобы получить общий расход одним числом за период?

b_aleks2
17.04.2023, 10:52
Добрый день.
Делаю отчет. Задаю период через "Начало" и "Конец" и интервал вывода строк отчета через "Интервал". Хочу получить суммарный расход параметра за ПЕРИОД. Для этого, в отчете требуемому параметру назначаю обработку данных "Интеграл" и выкладываю этот параметр в "Итог данных". В формируемом отчете получаю интегральное значение, но не за ПЕРИОД, а за ИНТЕРВАЛ. Как сделать, чтобы получить общий расход одним числом за период?

Так он и должен выдавать за интервал. Чтобы получить суммарный за период добавьте раздел итогов в бэнд данных и выберите функцию обработки (в вашем случае сумма)

SolarisD
25.04.2023, 15:20
Доброго времени.
Подскажите, есть ли в рантайме мастерскады какой-нибудь rest api, необходимо по событию на сервере IT изменять пару параметров в рантайме.
Заранее спасибо.

VladGC
25.04.2023, 17:37
Доброго времени.
Подскажите, есть ли в рантайме мастерскады какой-нибудь rest api, необходимо по событию на сервере IT изменять пару параметров в рантайме.
Заранее спасибо.

ТП на мой вопрос по поводу rest api и вообще работы в роли http сервера готового принимать запросы, рекомендовала использовать opc ua и обрабатывать запросы в переменной типа string

SolarisD
25.04.2023, 19:51
ТП на мой вопрос по поводу rest api и вообще работы в роли http сервера готового принимать запросы, рекомендовала использовать opc ua и обрабатывать запросы в переменной типа string
"Какие хорошие люди" у ИТшнегов конечно на каждом серве OPC UA драйвер крутится...
Спасибо за ответ, так и придется извращаться, ну либо задом в перед сканить серв на наличие обновлений переменной(

Ready
26.04.2023, 00:14
Доброго времени.
Подскажите, есть ли в рантайме мастерскады какой-нибудь rest api, необходимо по событию на сервере IT изменять пару параметров в рантайме.
Заранее спасибо.

Доброго.
Rest api скорее нет. Как вариант, на C# написать небольшой http-сервер, используя HttpListener.

melky
26.04.2023, 07:38
SolarisD у IT шников как правило есть SNMP - кто вам мешает получить данные по SNMP и выполнить действие ?
з.ы. не знаю как на Windows сервере, можно ли скриптами сделать свой OID (Extended OID) но на Linux можно легко скриптами сделать. Останется только прописать полученный OID для опроса в Scada.

Siinthd
28.04.2023, 11:33
Добрый день!как сделать чтобы после перезагрузки ПЛК с OPC UA, СКАДА автоматически писала на него данные,а то на клемме Выход висит значение,я не могу записать такое же значение или обновить его.
67597

b_aleks2
02.05.2023, 08:20
Добрый день!как сделать чтобы после перезагрузки ПЛК с OPC UA, СКАДА автоматически писала на него данные,а то на клемме Выход висит значение,я не могу записать такое же значение или обновить его.
67597

Поставить периодический способ записи

Siinthd
02.05.2023, 10:04
Поставить периодический способ записи
Пробовал,только как эту периодичность можно выставить?я выставлял период записи и 100 мс и 10 мс,только изменений и записи приходилось ждать по 5 секунд,количество тегов для записи около 100.
Я думал что возможно есть какой-то метод чтобы скриптом это дело можно осуществить.

b_aleks2
02.05.2023, 11:54
Пробовал,только как эту периодичность можно выставить?я выставлял период записи и 100 мс и 10 мс,только изменений и записи приходилось ждать по 5 секунд,количество тегов для записи около 100.
Значит с настройками протокола что-то не то.


Я думал что возможно есть какой-то метод чтобы скриптом это дело можно осуществить.
Можно попробовать запись по условию, тоже в настройках есть

Bigcrash
22.05.2023, 14:13
Подскажите тако вопрос по MS4D: можно ли использовать RT и DT разных версий? Заканчивался год ТП, решил обновиться, написал в поддержку, они мне линки на их FTP скинули. Скачал, обновил (с 1.2 на 1.3), но чет RT вообще ни в какую работать не хочет, ну фиг с ней, думаю хоть DT обновилось. Но почему то проекты из DT теперь в RT не передаются, нужно импортом конфигурации делать, которая работает на раз через 10. Всякие косяки начали вылазить. Из среды исполнения проект запускается, импортирую его в RT.... а там уже фиг. "Смена пользователя".... и пусто.
Все должно быть одной версии или какой-то глюк?

b_aleks2
22.05.2023, 14:43
Все должно быть одной версии
Да, версии должны совпадать

Bigcrash
22.05.2023, 15:42
Помогите, не могу победить блок SysProcessCreate. Вроде все сделал по инструкции (https://masterscada.ru/faq/fb-sysprocesscreate), ошибок не было, но из под DT все работает, а из под RT ни в какую. Мозги кипят, не знаю уже куда копать

Larrrik
23.05.2023, 09:53
Но почему то проекты из DT теперь в RT не передаются
С версии 1.3 поменялся протокол взаимодействия с RT с UDP на TCP по умолчанию, поэтому у вас может не быть соединения с RT.
Подробнее здесь:
https://youtu.be/AWi7NvtBMDE?t=157

asuwcc
23.05.2023, 13:14
Помогите, не могу победить блок SysProcessCreate. Вроде все сделал по инструкции (https://masterscada.ru/faq/fb-sysprocesscreate), ошибок не было, но из под DT все работает, а из под RT ни в какую. Мозги кипят, не знаю уже куда копать

День добрый.
RT у вас на 32 тега?
У меня этот ФБ работает только в платной версии. В бесплатной нет.
У вас из под DT работает, т.к. там ограничений нет (на 1 час).
Создайте конфигурацию проекта, там в лицензиях покажет.

Bigcrash
23.05.2023, 13:42
С версии 1.3 поменялся протокол взаимодействия с RT с UDP на TCP по умолчанию, поэтому у вас может не быть соединения с RT.
Подробнее здесь:
https://youtu.be/AWi7NvtBMDE?t=157
Спасибо! Этот вопрос закрыт. С Вашего позволения я позадаю еще кучу нубских вопросов, потому что даже платная ТП отвечает неделями.
У нас приобретен сетевой ключ, но пока что проект в стадии написания, поэтому установлен локально (и RT и DT и ключ на одном АРМ). Установил Guardant Net Server, ключ в нем (http://localhost:3185/) отображается. Но в RT в настройках ключа пишет, что "не установлен сервер ключей" и есть кнопка его установки, которая к результату не приводит - "драйверы Guardant не были установлены" (но в диспетчере ключ так же отображается, при работе светится зеленым). При запуске проекта из DT в окне конфигураций пишется, что "тип лицензии - Demo". Почему так и как это все исправить?

Bigcrash
23.05.2023, 15:47
Может мне конечно так не везет, попробовал еще раз конвертировать с 1.2 в 1.3, теперь при загрузке из DT вообще ничего не происходит, он даже себя не видит.

ВВВ555
24.05.2023, 17:52
Здравствуйте, не удается записать переменную в Siemens logo по протоколу siemensplc. Статус badWaitingInitial. Добавляю через "добавить канал" -> DO, выставляю область Q, байт 0, бит 0. Так же не хочет записывать в M.
Считываются DI при этом нормально, без ошибок, статус Good.
Копался в лого, не нашел никаких защит от записи.
В чем может быть проблема?

ВВВ555
25.05.2023, 13:01
Здравствуйте, не удается записать переменную в Siemens logo по протоколу siemensplc. Статус badWaitingInitial. Добавляю через "добавить канал" -> DO, выставляю область Q, байт 0, бит 0. Так же не хочет записывать в M.
Считываются DI при этом нормально, без ошибок, статус Good.
Копался в лого, не нашел никаких защит от записи.
В чем может быть проблема?

Настроил подключение просто к орс-DA серверу и мастерскада так же не хочет записывать туда ничего. Выдает тот же статус. Не понимаю что не так.

Larrrik
25.05.2023, 17:17
Доброго времени суток.
Извиняюсь за совсем примитивный вопрос:
каков наиболее естественный для MS4D способ запуска программы/ФБ по расписанию? (Например, автоматически сформировать отчет в определенное время)
Нужно писать программку, которая исполняясь периодически будет постоянно мониторить текущее время и при совпадении с заданным запускать формирование отчета, или есть что-либо более нативное?

b_aleks2
25.05.2023, 17:23
Доброго времени суток.
Извиняюсь за совсем примитивный вопрос:
каков наиболее естественный для MS4D способ запуска программы/ФБ по расписанию? (Например, автоматически сформировать отчет в определенное время)
Нужно писать программку, которая исполняясь периодически будет постоянно мониторить текущее время и при совпадении с заданным запускать формирование отчета, или есть что-либо более нативное?

Я для этого писал программу, как раз по такому же алгоритму
67997

Дмитрий Орлов
26.05.2023, 14:09
Добрый день! Подскажите пожалуйста, мне нужно написать функцию типа (bool1 and bool2) or (bool3 and bool4) or (bool5 and bool6), для текстовой ячейки свойства мигания. Я только начинаю осваивать прошел базу на степике по мастерскаде4 но там я не очень понял как программировать именно. Все эти bool это параметры.

Дмитрий Орлов
26.05.2023, 14:47
а все, разобрался))

Дмитрий Орлов
29.05.2023, 12:55
А подскажите пожалуйста, допустим у меня на панели есть некоторый индикатор, в нерабочем состоянии он просто серый, если включен должен менять цвета допустим на красный/желтый. От одного параметра я могу изменить фон на красный, и заставить мигать. Я так понял мигание его просто делает видимым/невидимым. Просто не охота плодить много объектов и скрывать их друг под другом если есть возможность сделать такое в одном объекте.

Siinthd
01.06.2023, 09:30
Добрый день!как открыть адрес в интернете в фрейме?планируется запускать web-интерфейс камеры.Сколько ни пытался - не выходит. только ошибка "Сайт не позволяет установить соединение." как в фрейме так и в новом окне.Есть сомнения что СКАДА вообще ссылки никакие открыть не может,даже проводник

Minarion
13.06.2023, 10:30
Добрый день!
Может кто-то сталкивался или знает как реализовать контроль за работоспособностью процессов и служб в операционной системе?
Готовых решений нет, но может есть идеи чего-то рукотворного?

b_aleks2
13.06.2023, 11:31
Добрый день!
Может кто-то сталкивался или знает как реализовать контроль за работоспособностью процессов и служб в операционной системе?
Готовых решений нет, но может есть идеи чего-то рукотворного?

C# вам в помощь

Дмитрий Орлов
22.06.2023, 13:57
Добрый день! Подскажите пожалуйста как настроить клиент? где прописывается адрес сервера к которому он должен подключаться? у меня сейчас на сервере запущен тестовый проект а с операторского ПК не могу до него достучаться, ПК в сети, пингуются, сделал разрешение на порт 8043, и все равно никак

UPD: с клиентом разобрался, увидеть проект на операторской станции все равно не получается
UPD: оказывается порт 8043 и во входящие и исходящие надо добавлять...

Knight27
25.06.2023, 01:39
Здравствуйте, есть маленький проект, сделанный на очень старую версию, 1.2.9, надо бы запустить его в Runtime с 32 тегами, но такую версию runtime я нигде не нашел. Пробовал чуть более новые, которые удалось найти, самое близкое из которых 1.2.15, но во всех случаях проект работал некорректно. Где то можно раздобыть столь старую версию?

Дмитрий Орлов
27.06.2023, 10:23
Может кто знает как сделать объект (конкретно "Линия") двигался без привязки к сетке, по 1 пикселю?
UPD: Понял, на схеме убрал галочку привязка к сетке))

b_aleks2
27.06.2023, 10:48
Может кто знает как сделать объект (конкретно "Линия") двигался без привязки к сетке, по 1 пикселю?

В редакторе мнемосхемы что ли? Отключить привязку
68474

Siinthd
05.07.2023, 09:52
Подскажите,есть ли способ соединить в поле сообщение входящий тэг и произвольный текст?например, {tag} +" включен".
68645

OlegGEORG
08.07.2023, 12:29
Добрый день! Подскажите, пожалуйста, как распаковать 16 битное число, полученной по Modbus?

asuwcc
10.07.2023, 07:31
День добрый.


Добрый день! Подскажите, пожалуйста, как распаковать 16 битное число, полученной по Modbus?

Как вариант, написать функцию с циклическим исполнением.

In_tag - WORD
Out_bit_0 .. Out_bit_15 - BOOL

Out_bit_0 := In_tag.0;
Out_bit_1 := In_tag.1;

и т.д.

ВВВ555
10.07.2023, 09:36
Здравствуйте, как посмотреть номер лицензионного ключа? Сходить физически посмотреть нет возможности, только удаленно подключиться к серверу.

Larrrik
10.07.2023, 10:47
Здравствуйте, как посмотреть номер лицензионного ключа? Сходить физически посмотреть нет возможности, только удаленно подключиться к серверу.
Через среду разработки:
если на вкладке "Конфигурация" Панели узла не отображается, то можно добавить в проект ФБ GetSystmeInfo, на выходе SerilaId будет номер лицензии.

ВВВ555
10.07.2023, 11:31
Через среду разработки:
если на вкладке "Конфигурация" Панели узла не отображается, то можно добавить в проект ФБ GetSystmeInfo, на выходе SerilaId будет номер лицензии.

Спасибо, нашел

AlexOpl
12.07.2023, 09:20
Добрый день!

Поддерживает ли MasterSCADA 4D использование самописных библиотек ВФБ C#? Как в MasterSCADA 3.x ?
Регистрация в системе и дальнейшее использование из палитры.

Александр Пинэко-Скворцов
13.07.2023, 08:37
Добрый день!

Поддерживает ли MasterSCADA 4D использование самописных библиотек ВФБ C#? Как в MasterSCADA 3.x ?
Регистрация в системе и дальнейшее использование из палитры.

Добрый день.

Да, можно написать собственные ФБ на C#.
См. справку в MS4D, раздел Программирование в MasterSCADA 4D - Редактор C#.

1exan
14.07.2023, 08:23
Получаю аналоговые данные с OPC UA в целочисленном виде.
Какой самый оптимальный способ связи тегов OPC с переменными объектов с выполнением масштабирования и преобразования в тип с плавающей запятой (и с сохранением данных времени и качества тега)?

И ещё вопрос - у OPC UA тега с доступом на чтение и запись 2 переменных - "Вход" и "Выход":
У переменной "Вход" значение полей "SourseTime" и "StatusCode" формируется в соответствии с состоянием связи с OPC UA, проблем нет.
Если мне нужно присвоить значение переменной "Выход", то как для неё формировать значения полей "SourseTime" и "StatusCode"?

Siinthd
18.07.2023, 11:46
Подскажите,через что можно получить триггер запуска исполнительной системы или запуска клиента?
ну или как выполнить стартап,через что его можно вызвать?

ilse
21.07.2023, 15:05
Добрый день
Есть необходимость в написании драйвера modbus подобного протокола для ускорения обмена между контроллером и скадой.
В этой теме вы предлагали обращаться за примерами и документацией, для начала хотелось хотя бы примерно оценить объем работ.
Техподдержка мпссофт молчит как третью неделю, у заявки до сих пор нет исполнителя.
Имеется опыт написания драйвера для другого протокола и другой скада системы на плюсах.

AlexBut
24.07.2023, 11:40
Столкнулся с такой проблемой- после создания копии объекта оказывается что изменения в копии передаются в оригинал,
но не все изменения и непонятно по какой логике. Вроде где-то читал что есть команда типа "сделать объект независимым
или что-то вроде. Много похожих, но не идентичных объектов и хотелось сделав копию работать с ней как с новым объектом,
внеся небольшие изменения но из-за этой особенности приходится создавать новые объекты почти с нуля копируя частями.

Спасибо

AlexBut
24.07.2023, 12:53
А чем не устраивает то, что уже есть в скаде MS4- Modbus TCP,RTU,RTU over TCP?

1exan
24.07.2023, 13:11
Столкнулся с такой проблемой- после создания копии объекта оказывается что изменения в копии передаются в оригинал,
но не все изменения и непонятно по какой логике. Вроде где-то читал что есть команда типа "сделать объект независимым
или что-то вроде. Много похожих, но не идентичных объектов и хотелось сделав копию работать с ней как с новым объектом,
внеся небольшие изменения но из-за этой особенности приходится создавать новые объекты почти с нуля копируя частями.

Спасибо

Посмотрите раздел "Типы, наследники и экземпляры MasterSCADA 4D" (по ссылке на слове "Ссылается" на первой странице справки), возможно поможет

Cooldush
25.07.2023, 12:34
Здравствуйте. Проблема такая: Пытаюсь сформировать отчет по одной переменной принимающей много значений извне. У нее есть значение по умолчанию, в состоянии покоя эта переменная принимает пустое значение. Проблема в том, что это пустое значение записывается в отчет и захламляет пустыми строками отчет. Необходимо как то игнорировать эти пустые значения. С обработкой плохих признаков не смог разобраться. Нужен совет, ребят..

b_aleks2
25.07.2023, 13:41
Здравствуйте. Проблема такая: Пытаюсь сформировать отчет по одной переменной принимающей много значений извне. У нее есть значение по умолчанию, в состоянии покоя эта переменная принимает пустое значение. Проблема в том, что это пустое значение записывается в отчет и захламляет пустыми строками отчет. Необходимо как то игнорировать эти пустые значения. С обработкой плохих признаков не смог разобраться. Нужен совет, ребят..

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

AlexBut
27.07.2023, 12:49
Посмотрите раздел "Типы, наследники и экземпляры MasterSCADA 4D" (по ссылке на слове "Ссылается" на первой странице справки), возможно поможет

Посмотрел, свойства "Ссылается" или "наследуется" у копии нет , но тем не менее связь остаётся и уже приходилось восстанавливать готовый объект
т.к. делал с него копию а в копии что-то менял.
Интересно это только у меня так?

ВВВ555
27.07.2023, 16:57
Добрый день, никак не могу найти информацию, как подключиться Мастерскадой к последовательному порту. Подскажите, как?

AlexBut
28.07.2023, 08:35
Не нашёл как в MS4D сделать звук по неквитированным авариям. Работал раньше в InTouch и там были тэги
Alarm(общая группа или можно было разделить на группы). А здесь как? Есть у объектов Сообщение-Тревога и у неё есть свойство квитированность ,
которое можно привязать к PlaySound.Но Тревога привязывается к одному тэгу а как все неквитированные?

Да и как работать с клавиатурой чтобы квитировать нажатием пробела?

Спасибо

Larrrik
28.07.2023, 10:43
А здесь как?
Через GetActualEvents. Фильтр по неквитированным сообщениям. В справке описано использование.

1exan
02.08.2023, 10:12
Окно восстановления связей при вставке:
69309
Эти кнопочки, полагаю, должны снимать и ставить галки оптом.
Как их нажать? (сейчас у меня там заголовок столбца таблицы и по нажатию только переключается сортировка)

1exan
03.08.2023, 10:46
С некоторого момента при компиляции начало появляться следующее предупреждение:
69325
О чём оно?

UPD:
После переименования параметра в одном из объектов локальной библиотеки предупреждение перестало появляться (параметр типа "SYSTEM_LREAL_PARAM").

1exan
09.08.2023, 09:49
В окне среди прочих элементов имеется контейнер другого окна, который очень мешается при разработке.
Можно ли как-то отключить отображение отдельных элементов в режиме разработки графического интерфейса?

ВВВ555
09.08.2023, 16:34
Вопрос такой, если у меня 1000 параметров и мне нужно писать в журнал тревогу (с индивидуальными параметрами) при превышении уставок каждого параметра, то нужно создавать 1000 отдельных тревог? Или есть способ проще?

1exan
09.08.2023, 18:27
Вопрос такой, если у меня 1000 параметров и мне нужно писать в журнал тревогу (с индивидуальными параметрами) при превышении уставок каждого параметра, то нужно создавать 1000 отдельных тревог? Или есть способ проще?

Посмотрите здесь (https://www.youtube.com/watch?v=2Y2AqNCAB7I), возможно поможет

ВВВ555
11.08.2023, 10:46
А можно ли сделать так, чтобы в шкале AI превышение HiHi использовалось, но при этом сообщения в журнале НЕ писались при активации HiHi?

it.lenin@preforma.ru
14.08.2023, 16:11
Добрый день.
как я понимаю, что я делаю проект, компилирую и потом могу просматривать его в любом браузере в сети?
На компе, где делаю проект все работает, а на других компьютерах, если в браузер вставляю ту же строчку http://192.168.122.95:8043/index.html?41282 (где 192.168.122.95 имя моего компьютера, где проект и запущен nginx) не может найти сайт.
Подскажите где копать? ИЛИ может я где не прав в своих рассуждениях?

ЗЫ Firewall отключал, не помогает...

Спасибо.

Ready
14.08.2023, 17:37
Firewall на этом ПК 192.168.122.95 отключали? Если есть антивирус, возможно он также блокирует. Обычно отключением брандмауэра это лечится, но лучше не отключать, а добавить "Входящее правило" для порта 8043.

Larrrik
15.08.2023, 10:52
ЗЫ Firewall отключал, не помогает...

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

AlexBut
04.09.2023, 12:08
Здравствуйте- не нашёл на форуме как исполнить какой-то код,FB например, один раз при старте RT?
Точнее сделать сделал но как-то замучено получилось а есть наверняка какое-то простое стандартное решение?


Спасибо

Сделал через TON(на входе всегда TRUE) +R_TRIG.Вроде работает.
А что-то мне подсказывает что есть другие варианты

Raman I
04.09.2023, 12:58
Добрый день. Прошу объяснить, как создать поле ввода/вывода, которое отображает данные из ПЛК и чтобы, из этого же поля была возможность изменить эти данные. Спасибо.
Делаю следующее:

Вариант 1 (НЕ РАБОТАЕТ)
- Связь узла с ПЛК настроена по протоколу Omron Fins UDP.
- В протоколе Omron Fins UDP создаю канал AIO тип данных Real.
- В объектах создаю параметр типа SYSTEM_LREAL_PARAM.
- Устанавливаю прием значений каналом AIO из параметра объекта.
- Устанавливаю прием значений параметром объекта из канала AIO.
- Вытаскиваю в окно параметр из объекта как "текстовый ввод".
- Запускаю на исполнение: Значение из ПЛК отображается, но записать из этого поля в ПЛК не удаётся.

Вариант 2 (РАБОТАЕТ, но не устраивает)
- Связь узла с ПЛК настроена по протоколу Omron Fins UDP.
- В протоколе Omron Fins UDP создаю канал AIO тип данных Real.
- В объектах создаю 2 параметра типа SYSTEM_LREAL_PARAM.
- Вытаскиваю в окно параметр 1 из объекта как "текстовый ввод".
- Устанавливаю связь из текстового ввода параметра 1 с параметром 2.
- Устанавливаю прием значений параметром 1 объекта из входа канала AIO.
- Устанавливаю прием значений выхода канала AIO из параметра 2 объекта.
- Запускаю на исполнение: Значение из ПЛК отображается, записать из этого поля в ПЛК получается, но отображение изменяется не сразу (мигает предыдущее значение, а потом появляется новое значение).

Вариант 2 не устраивает:
- при необходимости установления большого количества связей "Приём значения из" / "Передача значения в" с входом и выходом каналов AIO не получается использовать табличную обработку, только вручную.
- Отображение изменяется не сразу (мигает предыдущее значение, а потом появляется новое значение).

1exan
04.09.2023, 16:46
Попробуйте так:
К параметру элемента ввода "Текущее значение" у "Входящей связи" должна быть привязана часть тега "Вход", у "Исходящей связи" - часть тега "Выход".
При привязке связи устанавливаются одновременно и входящие и исходящие связи - удалите ненужные.
Флажок элемента ввода "Использовать входящую связь только для отображения" должен быть включен.

Raman I
04.09.2023, 17:39
Спасибо за ответ. Работает так же, как и у меня во втором варианте с использованием промежуточной переменной в объекте. Этот вариант не подходит, т.к. связывать теги непосредственно с элементом ввода при большем количестве объектов так себе удовольствие.

1exan
04.09.2023, 19:09
Спасибо за ответ. Работает так же, как и у меня во втором варианте с использованием промежуточной переменной в объекте. Этот вариант не подходит, т.к. связывать теги непосредственно с элементом ввода при большем количестве объектов так себе удовольствие.

Мигание при изменении значения говорит о образовании циклической связи (нескольких передачах значения между скадой и ПЛК)
Вместо 2-х параметров SYSTEM_LREAL_PARAM можно попробовать использовать базовый тег, указав внутри для входа и выхода SYSTEM_LREAL_PARAM

Raman I
05.09.2023, 08:51
Мигание при изменении значения говорит о образовании циклической связи (нескольких передачах значения между скадой и ПЛК)
Вместо 2-х параметров SYSTEM_LREAL_PARAM можно попробовать использовать базовый тег, указав внутри для входа и выхода SYSTEM_LREAL_PARAM

Спасибо большое:)
С булевыми выполняю те же действие, но мигание всё равно остаётся, это как-то можно побороть?

1exan
08.09.2023, 06:00
Спасибо большое:)
С булевыми выполняю те же действие, но мигание всё равно остаётся, это как-то можно побороть?

Наверняка можно, надо только разобраться что куда передаётся. Особенно что привязано к кнопке/переключателю во входящих и исходящих связях и обязательно ставить там флажок "Использовать входящую связь только для отображения":
Базовый тег (вход и выход - SYSTEM_BOOL_PARAM) - связываем его с тегом протокола (в обе стороны).
Вход и Выход базового тега связываем с кнопкой, потом во входящей связи убираем связь с "Выход", а из исходящей - часть вход.
Наверно немного запутано на словах, надо пробовать

Ready
08.09.2023, 10:15
С булевыми выполняю те же действие, но мигание всё равно остаётся, это как-то можно побороть?

Работает на примере с OPC UA, Базовый тег, параметры SYSTEM_STRING_PARAM. Миганий нет.
70104

AlexBut
12.09.2023, 07:53
Здравствуйте!
Часто выпадают сообщения с указанием ID элемента или параметра(например форматирование невозможно и ID).
Но как найти что это за параметр-элемент в проекте по его ID?

1exan
12.09.2023, 08:14
Здравствуйте!
Часто выпадают сообщения с указанием ID элемента или параметра(например форматирование невозможно и ID).
Но как найти что это за параметр-элемент в проекте по его ID?

В настройках среды во вкладке разное включите галочку "служебные свойства". После этого в свойствах элементов в служебных свойствах появится поле Id. Поиск можно сделать через запрос на вкладке "Таблица".

Изменением служебных свойств можно наделать ещё больше ошибок.
Поиск не всегда находит элемент по его Id (особенно если он удалён, а ссылки на него где-то зависли).
Попробуйте использовать Проект -> Проверить целостность проекта, иногда помогает.

Ready
12.09.2023, 08:30
Здравствуйте!
Часто выпадают сообщения с указанием ID элемента или параметра(например форматирование невозможно и ID).
Но как найти что это за параметр-элемент в проекте по его ID?

Здравствуйте.
В справке: "Поиск элементов".

1exan
13.09.2023, 06:41
Что за белый квадрат в панели инструментов контрола "Архивный журнал"?
Это типа маскировка кнопки "Квитировать страницу? Тогда это плохая маскировка, т.к. подсказка всё равно появляется, а при смене цвета тулбара возникает этот эффект
70169

UPD: После перезапуска квадрат пропал

AlexBut
14.09.2023, 10:29
Снасибо, с ID разобрался.
Возник ещё вопрос.
Если к System_Bool_Param параметру привязать шкалу DI и сообщение при включении-то не работает
(в журналах нет ав сообщений)
(к Value такого параметра привязаться тоже нельзя-ошибка возникает)?

В то же время привязываю шкалу AI к System_Real_Param и сообщение HiHi (наверно и другие лолы и хаи -не пробовал),
или просто Bool со шкалой DI-то работает.
MS4D 1.2

Спасибо

Ready
15.09.2023, 08:09
Если к System_Bool_Param параметру привязать шкалу DI и сообщение при включении-то не работает

Скорее всего из-за статус-кода, нужен "StatusCode: Good".

AlexBut
20.09.2023, 09:27
Здравствуйте!
Возникает необходимость объединить по или множество битов(тип Bool),
но булева функция OR имеет только 2 входа и приходиться их размножать, что
неудобно.
Есть возможность увеличить число входов функции OR как в MS3?

Ready
20.09.2023, 10:16
Здравствуйте!
Возникает необходимость объединить по или множество битов(тип Bool),
но булева функция OR имеет только 2 входа и приходиться их размножать, что
неудобно.
Есть возможность увеличить число входов функции OR как в MS3?

Здравствуйте. Вот пример: MasterSCADA 4D: добавление входов у стандартных функций (https://www.youtube.com/watch?v=7oBgNwo1TYk)

plcmaster
21.09.2023, 08:50
Здравствуйте!
При отваливании ОРС сервера на экране ничего не меняется, как будто всё в порядке. В Мастерскада 3 в этом случае появлялись подчеркивания у значений. В ситект вообще все элементы с внешними переменными покрываются сеткой. Подскажите, можно ли где-то в мастерскаде 4 поставить галочку, чтобы при отвале связи что-то происходило на экране с элементами?

plcmaster
21.09.2023, 09:28
Здравствуйте! У меня на экране есть инкремент. Заметил, что при быстром измнении, когда больше 3х раз нажимаю на + или - значения не доходят до ОРС. Я задаю скорость частотника и вижу по обратной связи, если он не ускорился/замедлился. Стал проверять и увидел что в ОРС значения отличаются от того что показывает скада. Инкремент привязан к параметру, параметр к тегу ОPC.
Я открыл в дереве Протоколы-OPC DA и установил там параметры:
Способ получения данных: чтение и подписка (было подписка)
Период полного опроса: 10s (было 120s)
Период записи: 500мс
Задача, период: 200мс
способ записи: по изменению

Несмотря на то что каждые 10с должен происходить полный опрос. Этого не происходит и в инкременте висит значение которое обманывает пользователя. Что с этим можно сделать?

UPD. Проблема оказалась в самом элемнте Инкремент. Если быстро нажимать, то он не присваивает параметру значения, и показывает ерунду. Это ошибка работы скады.

UPD2. Если в Инкременте вводить значение вручную, они тоже никуда не отправляются. Пользователь думает что ввёл, ан нееет! Дичь какая-то.

UPD3. Текстовый ввод тоже работает через раз да через два раза! Ну и как мне вводить значения параметров, если базовая функциональность с такими косяками. Выводить везде обратную связь и просить пользователя тыкать, пока не получится? Вы вообще тестировали свою поделку?

plcmaster
21.09.2023, 11:18
Еще одна проблема - пляска значений при изменении.
У меня цепочка OPC DA- параметр объекта - инкремент
На инкременте меняю, с 46 на 47. И начинается пляска 46-47-46-47-46-47. При этом галочка стоит "Использовать входящую связь только для отображения". Подскажите что сделать чтобы этого не было?

1exan
21.09.2023, 11:21
Еще одна проблема - пляска значений при изменении.
У меня цепочка OPC DA- параметр объекта - инкремент
На инкременте меняю, с 46 на 47. И начинается пляска 46-47-46-47-46-47. При этом галочка стоит "Использовать входящую связь только для отображения". Подскажите что сделать чтобы этого не было?

А к тегу OPC как привязываетесь (к каким именно значениям)?

plcmaster
21.09.2023, 11:49
А к тегу OPC как привязываетесь (к каким именно значениям)?
Не совсем понял вопрос. Я добавил в объект параметр, перетянул его на OPC Тег, и ОРС тег перетянул на параметр, у параметра появились значки "прием значения из" , "передача значения в" которые связаны с ОРС тегом. Затем этот параметр в виде инкремента положил на экран. Появились на параметре значки исходящая связь и входящая связь, указывающие на инкремент. И теперь нажимаю на экране + - инкремента.

1exan
21.09.2023, 12:22
Не совсем понял вопрос. Я добавил в объект параметр, перетянул его на OPC Тег, и ОРС тег перетянул на параметр, у параметра появились значки "прием значения из" , "передача значения в" которые связаны с ОРС тегом. Затем этот параметр в виде инкремента положил на экран. Появились на параметре значки исходящая связь и входящая связь, указывающие на инкремент. И теперь нажимаю на экране + - инкремента.

Добавьте в объект не параметр, а базовый тег, у которого вход и выход такого же типа как OPC. Выше на пару страниц посмотрите в этой ветке

plcmaster
23.09.2023, 08:34
Добавьте в объект не параметр, а базовый тег, у которого вход и выход такого же типа как OPC. Выше на пару страниц посмотрите в этой ветке
Я не хочу всё переделывать. Я хочу чтобы скада выполняла то что от неё требуется.
Как это понимать что в отладчике в параметре показывает одно число, а в инкременте к нему привязанному совсем другое число. И меняет его инкремент 1 раз из 3х нажатий.

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

1exan
23.09.2023, 09:13
Я не хочу всё переделывать. Я хочу чтобы скада выполняла то что от неё требуется.
Как это понимать что в отладчике в параметре показывает одно число, а в инкременте к нему привязанному совсем другое число. И меняет его инкремент 1 раз из 3х нажатий.

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

Это не костыли, это изначальный принцип обмена, такой-же он был и в 3 версии.
И это действительно разные числа - то, что изменили в скаде и отправили на устройство и то, что получили с устройства. Если эти два числа пересекаются в одной точке (параметре в данном случае), то конфликт неизбежен

plcmaster
23.09.2023, 12:13
Это не костыли, это изначальный принцип обмена, такой-же он был и в 3 версии.
И это действительно разные числа - то, что изменили в скаде и отправили на устройство и то, что получили с устройства. Если эти два числа пересекаются в одной точке (параметре в данном случае), то конфликт неизбежен

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

plcmaster
23.09.2023, 12:17
Решил я самостоятельно обрабатывать обрыв связи. Сделал параметры с типом SYSTEM_REAL_PARAM привязал анимацию к их StatusCode. Переменные получают данные из ОРС.
При исполнении с одних ОРС тегов идёт диагностика, а с других не идёт. См. скриншот.
Вопрос почему?
70412

melky
23.09.2023, 12:17
1exan странный принцип, команда в устройство всегда должна быть в приоритете. то есть если есть команда, отправленная в устройство, то этот тег на чтение должен игнорироваться, пока устройство не подтвердит получение и выполнение команды. После чего внеочередной опрос данного тега из устройства для обратной связи.

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

Вспомните ПР и одновременную работы с переменными внутри ПР и верхнего уровня, это присуще и ПЛК в том числе когда Панель и Sсada - в программе надо разруливать, чтобы не возникало конфликтов записи переменных с панели и со Scada.
А здесь получается внутри самой Scada не продуман функционал и надо лепить костыли?

1exan
23.09.2023, 14:59
1exan странный принцип, команда в устройство всегда должна быть в приоритете. то есть если есть команда, отправленная в устройство, то этот тег на чтение должен игнорироваться, пока устройство не подтвердит получение и выполнение команды. После чего внеочередной опрос данного тега из устройства для обратной связи.

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

Вспомните ПР и одновременную работы с переменными внутри ПР и верхнего уровня, это присуще и ПЛК в том числе когда Панель и Sсada - в программе надо разруливать, чтобы не возникало конфликтов записи переменных с панели и со Scada.
А здесь получается внутри самой Scada не продуман функционал и надо лепить костыли?

Я не знаю почему такой подход сделан в MasterScada, но если есть необходимость с ней работать, то нужно просто принять эти "правила игры"

melky
23.09.2023, 18:27
ну пока MS4D не получит нормальную скорость работы, все равно на нее не смотрю. Пусть ядро переписывают для начала, может и этот момент исправят.

ASo
23.09.2023, 19:20
1exan странный принцип, команда в устройство всегда должна быть в приоритете. то есть если есть команда, отправленная в устройство, то этот тег на чтение должен игнорироваться, пока устройство не подтвердит получение и выполнение команды. После чего внеочередной опрос данного тега из устройства для обратной связи.

Каким образом подтвердит?

melky
23.09.2023, 21:31
ASo протоколы разные, а вы только о Modbus, ну как минимум чтение после команды для обратной связи и проверке, что в нужной ячейке оказалось отправленное значение.

ASo
24.09.2023, 02:12
Я про СКАДУ.
Ну про МОДБАС. А почему не окажется, после получения кода 0

AlexBut
25.09.2023, 04:00
Проект разросся до 3,5 ГБ и это только половина объектов введена, появились сбои в работе FB GetActualEvents,
хотя на усечённом проекте всё работает(выдаёт count 0 хотя аварии активные неквитированные есть).
Не подскажете как подсчитать объём памяти (и диска и ОЗУ) необходимое для работы проекта
(DT1.2 , RT1.2 Linux коммерческая лицензия)

Спасибо
Извините насчёт сбоев погорячился- перенёс FB GetActualEvents в область глобальных данных(Система-программы)
и заработало

imaex
25.09.2023, 08:57
Проект разросся до 3,5 ГБ и это только половина объектов введена


Можно поинтересоваться: а половина объектов - это сколько? Среднее кол-во точек в/в на объект? Ко-во экранов на объект?
Ну, и до кучи - что под объектом понимается, чтобы разночтений не было?

Спасибо.

Ready
25.09.2023, 15:05
Проект разросся до 3,5 ГБ

"Очистить всю историю действий"


Не подскажете как подсчитать объём памяти (и диска и ОЗУ) необходимое для работы проекта

Рекомендации от тех. поддержки:

1. "При большом проекте рекомендуем разбивать проект на несколько серверов – по 30 000 тегов каждый (параметры такие – процессор i7, не менее 32 Гб ОЗУ, 1ТБ SSD) , клиентов на каждый сервер - не более 50 клиентов."

2. "Процессор: Intel Core i7, 3100 Mhz и выше, ОЗУ: 16-32 Гб, SSD 128 Гб / HDD 1 ТБ." (Если не ошибаюсь, эта рекомендация для проекта с 10 000 точек в/в.)

3. "При расчёте объёма дискового пространства можно исходить из следующего предположения:

Вес SYSTEM_LREAL_PARAM в БД:
SQLite3 78 байт (в другом варианте 150 байт)
PostgreSQL 140 байт
MSSQL 270 байт

Если предположить, что ежесекундно в базу данных будут архивировать четыре параметра, то предполагаемый объём дискового пространства для PostgreSQL составит 16,5 Гб.
Расчёт для базы данных MS SQL можно определить опытным путём, используя SQL Server Management Studio, измерив рост Data space за интервал времени."

Как такового подсчета объема диска нет, это индивидуально для проекта и будет зависеть от настроек архивирования, логирования и т.д.

AlexBut
26.09.2023, 04:20
Спасибо, хотя я ошибся и размер проекта в два раза меньше, но всё равно не малый-1.8 ГБ.
(кто-то сохранил проект в папке проекта и получилось два проекта в одной папке-не сразу заметили)
Проект в MS3(переносим в MS4) имеет 7700 тэгов, сейчас у нас в MS4D 4200 точек(узел-сформировать конфигурацию, кол-во точек)
Так что всё впереди.

AlexBut
26.09.2023, 04:41
После копирования гл экрана(гл окна проекта) (копирование без установления связей)
в объект "Охрана" появляются сообщения внизу "Подписка восстановлена"
и "Передан недействительный id параметра/выборки".См скриншоты- хотя на скриншотах окна КНС , но эти сообщения появляются при
открытии скопированного в объект "Охрана" гл. окна.Хотя вроде на работу не влияет но раздражает.
(цель копирования- отображать те же объекты
но для охраны , без технологических ссылок, где связи к иконкам техн объектов только те которые касаются охраны-пожар, проникновение)

Почему появляются эти сообщения и как их убрать?

Спасибо