PDA

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



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

Minarion
19.03.2020, 08:06
Здравствуйте!
Вопрос по редактированию сообщений. В архивный журнал падают тревожные сообщения. Параметр "активность" завязан с выходом ST программы. Возможно ли отредактировать данный тип сообщений, чтоб в архивном журнале отображалось не "появление" и "исчезновение", а, например, "На связи", "нет связи".

wellguy
19.03.2020, 09:30
Здравствуйте!
Есть ли в МастерСКАДА 4Д резервирование баз данных проекта на разные серверы с восполнением пропущенных данных при восстановлении утраченной связи в одном из серверов? Таким образом получить всегда полную текущую БД на обоих исправных серверах?

Владимир Протопланов
19.03.2020, 10:12
В среде разработки появился неприятный баг: при создании какого-то объекта из библиотечных элементов, которые уже есть в других объектах и построении связей внутри нового объекта с этими элементами, то есть вероятность, что при компиляции эти связи продублируются в другие, более старые объекты, вызвав ошибку "имеет более одного отношения передачи данных" или из старых объектов связи продублируются в новый. При вырезании всех связей и повторной компиляции появляются новые связи и так до бесконечности. Спасет вырезание всех лишних связей, сохранение проекта, закрытие среды разработки и повторное открытие, только после этого можно компилировать проект и ничего не появится лишнего.47963

VladGC
20.03.2020, 07:20
Здравствуйте!
Вопрос по редактированию сообщений. В архивный журнал падают тревожные сообщения. Параметр "активность" завязан с выходом ST программы. Возможно ли отредактировать данный тип сообщений, чтоб в архивном журнале отображалось не "появление" и "исчезновение", а, например, "На связи", "нет связи".

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

Только стоит помнить, что текст который записывается в тревогу происходит при переходе из false в true, по этому при необходимости надо создать две тревоги: Есть связь" и "нет связи"

VladGC
20.03.2020, 07:22
Здравствуйте!
Есть ли в МастерСКАДА 4Д резервирование баз данных проекта на разные серверы с восполнением пропущенных данных при восстановлении утраченной связи в одном из серверов? Таким образом получить всегда полную текущую БД на обоих исправных серверах?
Если силами самой скады, то у них есть опция резервирования, лучше на эту тему спросить в техподдержке

wellguy
20.03.2020, 08:21
Если силами самой скады, то у них есть опция резервирования, лучше на эту тему спросить в техподдержке

Спросил. Опция "Резервирование" не позволяет резервировать БД. Хотя вроде в третьей версии, судя по справке, это было возможно.

VladGC
20.03.2020, 10:53
Спросил. Опция "Резервирование" не позволяет резервировать БД. Хотя вроде в третьей версии, судя по справке, это было возможно.
Хм, может не так спросили ?

То есть вот такая схема не работает ?
47983

Вот даже тут есть схема на их сайте, если в такой схеме нет синхронизации архивов то это печально конечно
https://insat.ru/prices/info.php?pid=69981

nnnn1
20.03.2020, 17:55
Добрый день! OS Debian 9 , MS4D RT linux
Кто нибудь пробовал настроит опрос прибора через конвертер rs485 to usb (ch341) протокол modbus rtu . В windows платформе опрос идет.
Пробовал настроит через терминал minicom, lsusb , sudo chmod 777 /dev/ttyusb0 также не идет опрос. Подскажите пожалуйста как решит задачу?

manjey73
20.03.2020, 22:46
Наверное надо указывать не COM1 порт а именно как /dev/ttyUSB0 ? и убедиться что порт именно так определяется.

nnnn1
21.03.2020, 13:40
Наверное надо указывать не COM1 порт а именно как /dev/ttyUSB0 ? и убедиться что порт именно так определяется.

Здравствуйте.
Можете более подробно , где именно указать /dev/ttyUSB0 ?
В среде разработки в свойствах протокола modbus rtu нельзя указать /dev/ttyUSB0 вместо com port . Там только цифры можно указывать.

manjey73
21.03.2020, 15:21
Блин, ну это в техподдержке надо уточнить, почему в Linux RT системе нельзя указывать порты так, как они обозначаются в Linux

OlegGEORG
28.03.2020, 14:33
Добрый день.
Имеется несколько режимов работы оборудования со своими уставками.
Как проще сделать переключатель режимов работы.
Объясните, пожалуйста, по шагам.

b_aleks
28.03.2020, 17:17
Добрый день.
Имеется несколько режимов работы оборудования со своими уставками.
Как проще сделать переключатель режимов работы.
Объясните, пожалуйста, по шагам.

Если устроит, то можно через выпадающий список.
1. В библиотеке создаете новый тип данных Перечисление (подробно описано в справке).
2. В дереве объектов создаете параметр с этим библиотечным типом данных.
3. В программе описываете режимы работы оборудования для каждого значения перечисления.
4. Параметр из дерева объектов тащите в окно правой кнопкой мыши и вставляете контрол Выпадающий список.

48159
48160

OlegGEORG
28.03.2020, 17:41
Спасибо! Через выпадающий список и планировал. Но дальше дело не шло.

OlegGEORG
05.04.2020, 10:44
Добрый день.
Формирую таблицу из массива. В самом редакторе изменения таблицы не вижу, только когда
запускаю на исполнение в браузере вижу изменения. Так должно быть?
Т.е. если настраивать таблицу, при каждом изменении параметров таблицы необходимо каждый раз
запускать на исполнение?

OlegGEORG
05.04.2020, 10:54
В третье версии SCADA есть ФБ таблицы, которую можно редактировать в режиме исполнения.
В 4D для этих целей возможно использование только Стековой панели?
Хотел бы использовать таблицу для редактирования уставок параметров в зависимости
от режимов работы оборудования.

b_aleks
05.04.2020, 11:53
В третье версии SCADA есть ФБ таблицы, которую можно редактировать в режиме исполнения.
В 4D для этих целей возможно использование только Стековой панели?
Хотел бы использовать таблицу для редактирования уставок параметров в зависимости
от режимов работы оборудования.

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

wellguy
06.04.2020, 07:49
Здравствуйте. Вопрос по резервированию. Открыл на двух компьютерах один и тот же проект. Добавил службу резервирования. Указал IP второго узла на каждый компьютер, указывающий друг на друга. При запуске узлы постоянно переключаются, перезагружают конфигурацию. Никак не договорятся, кто мастер, а кто слейв. Подскажите куда смотреть?

Minarion
25.05.2020, 17:25
Здравствуйте! Кто-то пробовал подружить MS4D и Telegram?

SCADAMaster4D
26.05.2020, 12:49
Здравствуйте. Вопрос по резервированию. Открыл на двух компьютерах один и тот же проект. Добавил службу резервирования. Указал IP второго узла на каждый компьютер, указывающий друг на друга. При запуске узлы постоянно переключаются, перезагружают конфигурацию. Никак не договорятся, кто мастер, а кто слейв. Подскажите куда смотреть?

Неправильно настраиваете. Откройте один проект на одном компьютере, второй компьютер с запущенной mplc просто укажите в настройках резервирования. После этого загружайте проект. Конфиг проекта загрузится и в основной, и в резервный.

Voro6yov
29.05.2020, 06:50
Здравствуйте!
У меня возникла следующая проблема.
В архивном журнале необходимо найти события, произошедшие в определенный день. Для этого я нажимаю кнопку перейти к дате, выбираю необходимую дату, нажимаю ок, но в архивном журнале отображается ноль сообщений. Кто нибудь сталкивался с такой проблемой?
Версия 1.2.7.
49328
49329

SCADAMaster4D
29.05.2020, 15:40
Проверьте на актуальной версии.
ftp://ftpGuestDemo:8AA55D8A@support.insat.ru/MasterSCADA4D/1.2/MasterSCADA4D.exe

nub
19.06.2020, 15:49
Добрый день! Подскажите пожалуйста, как в mscada4d сделать так чтобы при нажатии на клавиатуре кнопки "s" закрывалось всплывающее окно. Заранее спасибо.

b_aleks
19.06.2020, 17:47
Добрый день! Подскажите пожалуйста, как в mscada4d сделать так чтобы при нажатии на клавиатуре кнопки "s" закрывалось всплывающее окно. Заранее спасибо.

Чтобы только закрывать - наверное никак. Если только каким-то образом повторно вызывать действие, которое это окно открывает. Единственный выход, который пришел в голову - это добавить событие в окно, которое по нажатию клавиши открывает всплывающее окно. Соответственно, по нажатию на "s" всплывающее окно сначала откроется, а по второму нажатию "s" - закроется. Но это будет работать только на HMI v2.

49727

nub
22.06.2020, 09:29
Спасибо за ответ. Версия: 1.2.9. по описанной последовательности открытие окна происходит при нажатии на любую клавишу на клавиатуре.49752
Т.е. выбрав объект - прямоугольник - в событиях указываем - нажатие клавиши - панель пуста - добавляем параметры - вводим переменную - dint - 83; далее указываем открытие окна.
В случае объекта - кнопка - в событиях уже есть параметры, остается добавить только окно и код клавиши.
При запуске эмуляции нет реакции на нажатие кнопки, после фокуса - клика на объект и нажатия кнопки - любой - происходит открытие окна. Как сделать открытие по нажатию конкретной кнопки?

Юный Падаван
25.06.2020, 11:06
Добрый день, только начал разбираться в MasterScada4D. Хочу получить данные с сервера apache(xampp) с БД mysql, пытался получить данные через службу mysql, создавая узел "сервер", но безуспешно. Заранее спасибо.

b_aleks
25.06.2020, 12:45
Добрый день, только начал разбираться в MasterScada4D. Хочу получить данные с сервера apache(xampp) с БД mysql, пытался получить данные через службу mysql, создавая узел "сервер", но безуспешно. Заранее спасибо.

Вам необходимо использовать протокол MySQL в узле. В справке описано получение данных из MSSQL и PostgreSQL, но с MySQL все будет аналогично.
49839

nub
25.06.2020, 14:36
Чтобы только закрывать - наверное никак. Если только каким-то образом повторно вызывать действие, которое это окно открывает. Единственный выход, который пришел в голову - это добавить событие в окно, которое по нажатию клавиши открывает всплывающее окно. Соответственно, по нажатию на "s" всплывающее окно сначала откроется, а по второму нажатию "s" - закроется. Но это будет работать только на HMI v2.

49727

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

b_aleks
25.06.2020, 15:23
Как определить действие открытие окна только по одной клавише - сейчас открывает окно при нажатии любой кнопки, хотя в параметрах указывал код кнопки. Заранее спасибо за ответ.

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

Скороспелов Андрей
25.06.2020, 17:29
Как определить действие открытие окна только по одной клавише - сейчас открывает окно при нажатии любой кнопки, хотя в параметрах указывал код кнопки. Заранее спасибо за ответ.

Говорили, что сейчас это не работает.

Юный Падаван
26.06.2020, 17:34
Спасибо большое, это помогло, но результата не дало. Создавал протокол mysql, все параметры указывал, добавлял запрос mysql, добавлял туда команду, но ответа так и не добился.

Minarion
29.06.2020, 09:46
Как вы пишите запрос? Как присваиваете результат переменной?

awa1973
30.06.2020, 10:16
Добрый день. Подскажите пожалуйста как по клику мыши открыть новое окно в развёрнутом виде на весь экран.
У меня открывается в центре небольшое окно, а только потом я могу его развернуть.

b_aleks
30.06.2020, 10:26
Добрый день. Подскажите пожалуйста как по клику мыши открыть новое окно в развёрнутом виде на весь экран.
У меня открывается в центре небольшое окно, а только потом я могу его развернуть.

Использовать действие "Открыть окно", связать его с окном, у свойства "Открыть новое" установить значение True, тогда окно будет открываться как новая вкладка в браузере.

awa1973
30.06.2020, 10:40
Так и делаю, только окно открывается не на весь экран, приходится его вручную разворачивать

awa1973
30.06.2020, 10:42
Работаю в клиенте

b_aleks
30.06.2020, 11:14
Так и делаю, только окно открывается не на весь экран, приходится его вручную разворачивать

Тогда у свойства "Открыть новое" установите значение False.

awa1973
30.06.2020, 11:40
Если ставлю false я не могу это окно перетащить на другой монитор

awa1973
30.06.2020, 14:53
Подскажите пожалуйста как в браузере сделать понятными названия вкладок? Например Освещение.
49964

b_aleks
30.06.2020, 15:21
Подскажите пожалуйста как в браузере сделать понятными названия вкладок? Например Освещение.
49964

https://owen.ru/forum/showthread.php?t=30695&p=314831&viewfull=1#post314831

Думаю, что сейчас ничего не поменялось.

awa1973
30.06.2020, 15:56
Прошёл почти год...

kait-volga
02.07.2020, 09:09
Добрый день.

Подскажите пожалуйста, как динамизировать параметр "список" элемента "Выпадающий список".

В справке указано следующее:
"Это свойство имеет тип STRING и определяет список доступных строк в выпадающем списке. Строки в списке разделяются символом ~. При установке входящей связи список строк может быть изменен в результате работы среды исполнения. Если параметр типа перечисление был перетащен в окно правой кнопкой мыши, и в контекстном меню был выбран пункт Выпадающий список, то данное свойство заполнится автоматически."

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

На ум пришел только вариант с хранением строк в массиве, склейка их с разделителем "~" конкатенацией, и передача переменной String в параметр "список".
Может есть другие варианты организовать выбор и хранение рецептов?

Валерий Артемьев
04.07.2020, 12:35
Вопрос по отчетам.
для учета переменных с плохим признаком качества нужно перетаскивать в отчет переменные типа SYSTEM_LREAL_PARAM?

VladGC
04.07.2020, 16:44
Вопрос по отчетам.
для учета переменных с плохим признаком качества нужно перетаскивать в отчет переменные типа SYSTEM_LREAL_PARAM?
Не совсем, можно и обычную переменную, если вы ее пишете в ручную используя fb write arch .
Но в отчетах беда и использованием плохих признаков

Minarion
31.07.2020, 15:53
Здравствуйте коллеги!
Кто-нибудь сталкивался с проблемой присваивания значений массиву в программе ST?
Мой путь: создал структуру, на ее основе создал массив. Это динамический массив в который загоняется результат SQL запроса. После этого значение передается в промежуточный параметр в узле с той же структурой (хз зачем, но ТП сказала что без этого не работает) В объекте созданы параметры с той же структурой. В ST программе пытаюсь присвоить результат SQL-запроса другому массиву с минимальной обработкой и ничего не получается. Не присваивается даже если использовать банальное ArrName[1].TimePgAP := "00:00:00". То есть в параметры на входе программы значения поступают, а обработать или присвоить другой переменной на выходе программы не получается (обычной переменной присвоить значение удается, а именно этому массиву нет). Во всех этих переменных используется единая структура массива.

kait-volga
01.08.2020, 07:19
Добрый день.
Тоже сталкивался с подобной проблемой, не передавались данные между структурами. Объяснение ТП "прямая передача сложных типов данных (структрур, массивов) между задачами невозможна". В справке также нашел упоминание:


"Важно! В текущей версии MasterSCADA 4D прямая передача сложных типов данных (структрур, массивов) между задачами невозможна. Например, если в задаче протокола было получено значение типа Структура, то его нужно связать сначала с глобальным параметром Узла, а затем уже глобальный параметр связывать напрямую с параметром задачи узла или непосредственно использовать в программах ST"


50455


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

Minarion
04.08.2020, 09:24
Локализовал проблему.
Значение в ST программе не присваивается если массив созданный на основе структуры динамический. Если размер задать вручную, то значение в ST программе присваивается корректно.

AlexanderUshakov
05.08.2020, 13:33
Добрый день!
Есть такая проблема, в проекте данные приходят через протокол OPC UA с opc сервера kepserverex 5. И некоторые из данных, которые во времени почти всегда имеют постоянное значение (заряд ибп = 100%, статус работа ИБП = true) не инициализируются при запуске проекта и имеют статус кодом BadWaitingInitialData. Переменные, которые постоянно обновляются (токи, напряжение) инициализируются нормально.
Но когда происходит изменение этих параметров в opc сервере (заряд ибп = 99%, статус работа ИБП = false), это случается когда ИБП самотестируется и меняет режим работы на тест и переходит на батареи, данные сразу инициализируются в скаде и корректно отображаются на мнемосхеме.
Кто-то сталкивался с такой проблемой?

Minarion
13.08.2020, 11:05
Здравствуйте!
Подскажите, возможно ли динамический массив напрямую передать в отчет?
С обычным параметром получается, а массив не передает значения и просто в строку пишет:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Minarion
14.08.2020, 15:37
Здравствуйте!
Подскажите, возможно ли динамический массив напрямую передать в отчет?
С обычным параметром получается, а массив не передает значения и просто в строку пишет:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Ответ от ТП: низзя.

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

Minarion
18.08.2020, 16:00
Здравствуйте!
И снова вопрос по массивам...

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

Делаю так:

n:=UPPER_BOUND(RevStatusAp,1);
FOR i:=1 to n do
If RevWEB[i].NameAP = RevFromPg[i].NameAP
THEN RevWEB[i].TimePgAP := RevFromPg[i].TimeAP
END_IF;
END_FOR;

Моя логика такая: если строковые значения NameAP совпадают, то .TimeAP должен записаться в ту последовательность, номер которой был в RevWEB[i].NameAP. Но что-то не так. Где я не прав?

Николай М
24.08.2020, 11:39
Здравствуйте.
Не могу отправить СМС.
пробовал два разных модема ZTE и один Телеофис
ход "передачи" для всех один
отправка (статус SEND_SMS = 17)
смс отправлено (статус 18)
но затем ошибка 3
и отправление всякий раз повторяется (статус 17).
(Получилось отправить без ошибок только на ОВЕН ПМ-01)
но там есть особенность не применимая к остальным модемам.
Может кто сталкивался с подобной проблемой.
На каких модемах такой ошибки нет, или как ее решить?

nub
27.08.2020, 15:23
Добрый день!

При передаче данных по ModbusTSP на ПЛК возникла необходимость конвертации в word переменной типа real. В блоках MasterScadaD есть ФБ, но он записывает только в одну переменную типа word, похоже обрезая real. Как сделать разбивку real на два word? Заранее спасибо!

b_aleks
27.08.2020, 20:24
Добрый день!

При передаче данных по ModbusTSP на ПЛК возникла необходимость конвертации в word переменной типа real. В блоках MasterScadaD есть ФБ, но он записывает только в одну переменную типа word, похоже обрезая real. Как сделать разбивку real на два word? Заранее спасибо!

Использовать функцию REAL_TO_DWORD, а затем DWORD разделить на младшее и старшее слово.

nub
28.08.2020, 20:37
Использовать функцию REAL_TO_DWORD, а затем DWORD разделить на младшее и старшее слово.

Да, но при использовании REAL_TO_DWORD число округляется до целого. Как сохранить при преобразовании десятичные и сотые? Возможно не так понял Вас - можно привести пример?
PS: В codesys есть библиотека ОСL - с помощью которой вопрос решается однозначно правильно. Есть ли в masterscada что-то подобное? К сожалению не нашел...

VladGC
28.08.2020, 22:44
Да, но при использовании REAL_TO_DWORD число округляется до целого. Как сохранить при преобразовании десятичные и сотые? Возможно не так понял Вас - можно привести пример?
PS: В codesys есть библиотека ОСL - с помощью которой вопрос решается однозначно правильно. Есть ли в masterscada что-то подобное? К сожалению не нашел...
Из скады в плк надо передать? Можно пойти с другой стороны, преобразовать в плк

b_aleks
29.08.2020, 10:10
Да, но при использовании REAL_TO_DWORD число округляется до целого. Как сохранить при преобразовании десятичные и сотые? Возможно не так понял Вас - можно привести пример?
PS: В codesys есть библиотека ОСL - с помощью которой вопрос решается однозначно правильно. Есть ли в masterscada что-то подобное? К сожалению не нашел...

Если вам надо, чтобы в одном слове была целая часть, а в другом - дробная, то можно с помощью программы, прикрепил во вложении.

nub
29.08.2020, 21:10
Большое спасибо за код.
Получается для передачи данных из Masterscada4d нам нужно из real преобразовать в word. Скажем 3.3 перекидываем в word_1 это 16467 и word_2 это 13107 (что за тип пока не разобрался -16-й возможно).
Подойдет ли данная программа для разбивки?
Перекинув по ModbusTCP в codesys3.5 (на ПЛК) значения word_1 и word_2 мы уже их можем объединить с помощью OCL.word2_to_real. Условная модель описанного обмена на рис -50833

VladGC
29.08.2020, 22:55
Почему вы не хотите сразу передать в real, заодно и на тегах сэкономить

wellguy
04.09.2020, 14:39
Добрый день. Скажите. Можно ли как-то вытащить сигналы о нарушении связи с узлами, нарушении сети.
Есть вроде системные окна с такими сообщениями. А как это вытащить на мнемосхему?

b_aleks
04.09.2020, 16:02
Добрый день. Скажите. Можно ли как-то вытащить сигналы о нарушении связи с узлами, нарушении сети.
Есть вроде системные окна с такими сообщениями. А как это вытащить на мнемосхему?

С узлом нет, можно с протоколами. Для этого надо использовать признак качества (StatusCode) одного из каналов модуля, а также параметр Отказ, который есть в каждом модуле.
50940

wellguy
10.09.2020, 11:14
Здравствуйте. Возник вопрос. Если в настройках подключения ModBus TCP указать два IP адреса через запятую, это будет резервированием каналов связи?

AlexanderUshakov
14.09.2020, 08:30
Проблема решилась тем, что я убрал шифрование в masterscada4 и убрал шифрование на opc-сервере. Все стало работать корректно.

OlegGEORG
17.10.2020, 14:12
Добрый день. Есть ли видео с примерами работы на языке SFC?

OlegGEORG
17.10.2020, 16:50
Помогите, пожалуйста, запрограммировать SFC-ветвление выбора.
51425
Спасибо

Юрий Горелый
18.10.2020, 16:44
Вы спросили пример SFC их есть у меня)
https://www.youtube.com/watch?v=Gg5dujnCE-w
в принципе я достаточно подробно описал как создал алгоритм работы светофора. И те знания, по Masterscada sfc что мне доступны.

OlegGEORG
19.10.2020, 19:23
Вы спросили пример SFC их есть у меня)
https://www.youtube.com/watch?v=Gg5dujnCE-w
в принципе я достаточно подробно описал как создал алгоритм работы светофора. И те знания, по Masterscada sfc что мне доступны.

Спасибо! Буду пробовать

valijon
02.11.2020, 09:20
Добрый день народ, возникла проблема с MS4D, при разработке его фризит будто CPU не хватает, но при этом система летает, кто сталкивался с такой проблемой и есть хотя-бы адекватное объяснения?

NoteBook:
CPU: Razen 7 4800, 8 ядер 16 потоков.
RAM: 64 GB DDR4.
GPU: RTX 2060 6GB
SSD: PCIE G3 SSD 512GB

b_aleks
02.11.2020, 10:53
Добрый день народ, возникла проблема с MS4D, при разработке его фризит будто CPU не хватает, но при этом система летает, кто сталкивался с такой проблемой и есть хотя-бы адекватное объяснения?

NoteBook:
CPU: Razen 7 4800, 8 ядер 16 потоков.
RAM: 64 GB DDR4.
GPU: RTX 2060 6GB
SSD: PCIE G3 SSD 512GB

Такая же проблема, проект весит 1 ГБ, при редактировании окон, компиляции проекта и т.п. все очень сильно тормозит. Единственное, что у меня проц слабоват, по остальному железу немного получше: i3-7100, 32GB DDR4, SSD 240 GB. Обращался по данному вопросу в саппорт, но ничего внятного сказать не смогли.

У вас сильно большой проект? Сколько весит? Просто задумывался о модернизации ПК, но раз у вас и на таком железе тормозит, то возникает вопрос о целесообразности улучшения ПК.

valijon
02.11.2020, 12:51
Проект весит 115 мб, да и мне саппорт не чего внятного не сказал, кроме как "очистить кеш, очистить историю обновить программу" и пишут что у них razen 5, 16 ОЗУ и все работает нормально =)

b_aleks
02.11.2020, 13:11
Проект весит 115 мб, да и мне саппорт не чего внятного не сказал, кроме как "очистить кеш, очистить историю обновить программу" и пишут что у них razen 5, 16 ОЗУ и все работает нормально =)

Да, мне тоже писали, что на 5 райзене и 16 ГБ ОЗУ все летает)))) Но вообще странно, что у вас такой небольшой проект медленно работает.

alex_vosc
20.11.2020, 00:50
Возможно ли подключение ПЛК110-32 в качестве узла (аналогично ПЛК110-30 и ПЛК110-60)?

AlekseyK
21.11.2020, 23:11
Добрый день.
Можно ли сделать окно визуализации больше разрешения монитора.
Хотелось бы реализовать экран, как Web-страницу большой "высоты", которую можно прокручивать вниз.
Поигрался с настройками "тип ширины", "тип высоты", у шаблона экрана и самого окна, но в итоге получается растягивание изображения в различных вариантах, но всегда вписанное в текущее разрешение монитора.

Это вообще реализуемо?

b_aleks
22.11.2020, 10:07
Добрый день.
Можно ли сделать окно визуализации больше разрешения монитора.
Хотелось бы реализовать экран, как Web-страницу большой "высоты", которую можно прокручивать вниз.
Поигрался с настройками "тип ширины", "тип высоты", у шаблона экрана и самого окна, но в итоге получается растягивание изображения в различных вариантах, но всегда вписанное в текущее разрешение монитора.

Это вообще реализуемо?

У контейнера стартового окна есть свойство "Подгонка". Выставляете его в значение "Прокрутить" (скрин во вложении). Остальные параметры всех окон оставляете по умолчанию.
52122

Alexey8723
23.11.2020, 22:11
Здравствуйте!Подскажите пожалуйста, а существует библиотека MQTT-клиента для MasterScada 4D? Например есть программа MQTT-FX,которая является брокером, и нужно передать информацию, например, с датчика температуры сразу в MasterScada 4D, так вот можно ли это реализовать и где примерно должен отобразиться этот параметр в MS4D? Просто очень мало информации про настройку MQTT протокола в MS4D. Заранее спасибо!

VladGC
24.11.2020, 10:57
Коллеги, добрый день!
Кто уже работал в версии 1.2.11, работает ли у вас построение периодического отчета ?

b_aleks
24.11.2020, 11:50
Коллеги, добрый день!
Кто уже работал в версии 1.2.11, работает ли у вас построение периодического отчета ?

Да, работает корректно.

VladGC
24.11.2020, 12:10
Да, работает корректно.

А у вас интервал в каких единицах работает ?
В версии 1.2.10 в интервал надо было подавать TIME.
В версии 1.2.11 появилась возможность выбирать единицу измерения интервала.
Я ожидал что при подаче на интервал числа 1 , при единице интервала месяц.
Получу интервалы за месяц.
То есть в 1.2.11 логично, что надо писать в значение количество часов минут или суток в формате int.

На проекте который изначально разработан в 1.2.10, переключатель не работает, отчет строится если интервал подается в TIME.
Создал новый тестовый проект в 1.2.11, периодический отчет не строится. То есть строится, но сам отчет пустой
52158
52159

b_aleks
24.11.2020, 21:29
А у вас интервал в каких единицах работает ?
В версии 1.2.10 в интервал надо было подавать TIME.
В версии 1.2.11 появилась возможность выбирать единицу измерения интервала.
Я ожидал что при подаче на интервал числа 1 , при единице интервала месяц.
Получу интервалы за месяц.
То есть в 1.2.11 логично, что надо писать в значение количество часов минут или суток в формате int.

На проекте который изначально разработан в 1.2.10, переключатель не работает, отчет строится если интервал подается в TIME.
Создал новый тестовый проект в 1.2.11, периодический отчет не строится. То есть строится, но сам отчет пустой
52158
52159

Я использую TIME. Сейчас попробовал с INT - строится пустой отчет.

AlekseyK
02.12.2020, 02:04
У контейнера стартового окна есть свойство "Подгонка". Выставляете его в значение "Прокрутить" (скрин во вложении). Остальные параметры всех окон оставляете по умолчанию.
52122

Спасибо за ваш ответ. Почему-то не пришло уведомление, о новом сообщении в теме. Временно решили вопрос через два вложенных окна.

У меня еще один вопрос.
Работаем в двух редакторах - один на инженерном ПК, где идет редактирование проекта, второй на рабочем ПК, установленном на производственной линии. Версии редакторов одинаковые. При переносе проекта простым копированием с одного компьютера на другой перестают работать связи параметров и элементов окон. Проект компилируется, загружается в рантайм. Но почти все связи при этом перестают работать. Если удалить связь и создать ее снова, то она начинает работать. Может сталкивались с подобной проблемой?

b_aleks
02.12.2020, 08:04
Спасибо за ваш ответ. Почему-то не пришло уведомление, о новом сообщении в теме. Временно решили вопрос через два вложенных окна.

У меня еще один вопрос.
Работаем в двух редакторах - один на инженерном ПК, где идет редактирование проекта, второй на рабочем ПК, установленном на производственной линии. Версии редакторов одинаковые. При переносе проекта простым копированием с одного компьютера на другой перестают работать связи параметров и элементов окон. Проект компилируется, загружается в рантайм. Но почти все связи при этом перестают работать. Если удалить связь и создать ее снова, то она начинает работать. Может сталкивались с подобной проблемой?

То есть связи вообще пропадают? Или связи остаются, но не работают? Как переносите проект и с какими элементами окон пропадают связи? Вообще с такой проблемой ни разу не сталкивался. Какая версия редактора?

AlekseyK
02.12.2020, 14:22
Вопрос снимается - проблема была не в копировании, а в пустом названием одно из перьев тренда. Проект стартовал, но как-то не полностью. К сожалению запуск проекта можем проверить только на ПК, на который копируем проект.

nub
07.12.2020, 13:36
Добрый день! Подскажите пожалуйста как реализовать работу с системным (реальным) временем без таймера? Допустим выполнить действие спустя час после нажатия кнопки. Как я понял есть ФБ Time -Функция возвращает текущее значение аппаратного таймера контроллера. Аппаратный таймер не следует путать с модулем часов реального времени - так а если нужно использовать модуль часов реального времени - как быть?

nub
07.12.2020, 13:41
есть еще GET_UTC_TIME - но как сделать обращение на сравнение только по параметру "часы/минуты"?

b_aleks
07.12.2020, 13:54
Для выполнения действия спустя час после нажатия кнопки не обязательно знать текущее время. Для этого есть ФБ TON, который представляет собой задержку на включение.

Юрий Горелый2
07.12.2020, 14:02
Вопрос:
"
есть еще GET_UTC_TIME - но как сделать обращение на сравнение только по параметру "часы/минуты"?"

есть функции преобразования типов. в блоках Конвертации.
т.е. если включить ф.б. GET_UTC_TIME то на выходе его будет переменная типа Date_and_time.
Это значение можно передать на вход функции
DT_TO_TOD (time of day) и получить текущее время в часах и минутах52348

nub
07.12.2020, 16:03
ФБ TON - это вычислительный ресурс ПК, зачем делать то, что уже имеется (не оптимально), на мой взгляд лучше просто сравнивать значение и по достижении нужного времени относительно системного выполнять действие.

nub
07.12.2020, 16:08
есть идея с помощью ADD TIME увеличивать исходное значение GET_UTC_TIME по флагу на нужный промежуток времени, а потом по достижению условия равенства прошедшего+нужный промежуток времени и текущего значения (GET_UTC_TIME) выполнять условие

Юрий Горелый2
07.12.2020, 16:22
есть идея с помощью ADD TIME увеличивать исходное значение GET_UTC_TIME по флагу на нужный промежуток времени, а потом по достижению условия равенства прошедшего+нужный промежуток времени и текущего значения (GET_UTC_TIME) выполнять условие

плохая идея играться с системным временем.
если надо в конкретное время для что-то делать - проще как я описал преобразовать тип GET_UTC_TIME к времени. ну а потом дальше преобразовать если надо.
Опять же есть интервалы.

b_aleks
07.12.2020, 16:26
есть идея с помощью ADD TIME увеличивать исходное значение GET_UTC_TIME по флагу на нужный промежуток времени, а потом по достижению условия равенства прошедшего+нужный промежуток времени и текущего значения (GET_UTC_TIME) выполнять условие

А что-то увеличивать исходя из условия, а потом что-то с чем-то сравнивать - это не вычислительный ресурс ПК? Уж лучше сделать проще и понятнее, чем какой-то колхоз городить. Да и не так много ресурсов требует рантайм ms4d.

nub
08.12.2020, 09:39
системное время используется постоянно. Вопрос как разово считать текущее системное время?
варианты:
real_time:=TIME();
или лучше
real_time:=GET_UTC_TIME();
,а далее просто работаем с переменной на сравнение.
sys_time:=ADD_TIME(IN1:=real_time , IN2:=T#1m); //вот эта функция пока не работает

if real_time=sys_time_hour THEN
флаг на включение

nub
08.12.2020, 11:36
какие преобразования работают с форматом DATE_AND_TIME? где он хранится ? в простых типах данных его нет.
скажем как из переменной DATE_AND_TIME получить переменную содержащую часы, минуты, секунды?
спасибо за ответ!

b_aleks
08.12.2020, 12:33
какие преобразования работают с форматом DATE_AND_TIME? где он хранится ? в простых типах данных его нет.
скажем как из переменной DATE_AND_TIME получить переменную содержащую часы, минуты, секунды?

52358
52359

nub
08.12.2020, 15:30
кстати как в форуме скрин с экрана вставить?

b_aleks
08.12.2020, 15:33
кстати как в форуме скрин с экрана вставить?

скрин
52370

nub
08.12.2020, 16:08
т.е. надо через pain формировать jpeg?
подскажите пожалуйста как реализовать локальный тип данных - диапазон, что бы он работал не только с целыми значениями, но и с десятичными и сотыми.
пока округляет веденное значение до целого, не получается исправить.

VladGC
09.12.2020, 07:29
т.е. надо через pain формировать jpeg?
Попробуйте lightshot скачать , скриншоты делает оч легко


подскажите пожалуйста как реализовать локальный тип данных - диапазон, что бы он работал не только с целыми значениями, но и с десятичными и сотыми.
пока округляет веденное значение до целого, не получается исправить.
Когда создаете тип диапазон, в свойствах, надо указать подтип какой нибудь из вещественных. Но все равно тип диапазон у меня не пойми как работает. Мне кажется для этих целей лучше использовать функцию limit
52380

nub
09.12.2020, 08:25
спасибо! но, дело в том что таких параметров нет.
последовательность: во вкладке библиотеки - локальная- создаем тип данных - диапазон. затем создаем во вкладке объекты переменную и задаем ей тип диапазон. real там отсутствует.5238352384

nub
09.12.2020, 08:46
да, и еще вопрос - есть ли контроль версий для masterscada? допустим если надо вдвоем проект разрабатывать.

nub
09.12.2020, 11:06
интересно у всех проекты Masterscada4D тормозят? посмотрел - проект съедает 5Гб оперативной памяти и это на этапе редактирования!!! - проект средних размеров. Пользовался альтернативными скадами там больше 1Гб не выходило.

b_aleks
09.12.2020, 11:36
интересно у всех проекты Masterscada4D тормозят? посмотрел - проект съедает 5Гб оперативной памяти и это на этапе редактирования!!! - проект средних размеров. Пользовался альтернативными скадами там больше 1Гб не выходило.

Да, также. Бывало и по 9 ГБ занимало.

nub
09.12.2020, 13:25
9 ГБ!!! да... а у меня ОЗУ на компьютере на 8Гб... явно что-то нужно менять .)

VladGC
09.12.2020, 14:14
спасибо! но, дело в том что таких параметров нет.
последовательность: во вкладке библиотеки - локальная- создаем тип данных - диапазон. затем создаем во вкладке объекты переменную и задаем ей тип диапазон. real там отсутствует.5238352384
Надо активировать служебные свойства:
Настройка редактора > настройка среды > разное > установить галочку служебные свойства,
после этого все появится.
52404


да, и еще вопрос - есть ли контроль версий для masterscada? допустим если надо вдвоем проект разрабатывать.

Контроль версий есть, но вот совместное редактирование под вопросом.
Можно выложить проект в сетевое хранилище, но лично у меня что то не сложилось. Не хочет проект нормально открываться из сети.
То же самое если и в google drive выложить.
Вообще, в какой то из версий, у них проскочило хранилище postgres. Я думаю в будущем такая возможность, как совместное редактирование, может быть появится
52405


интересно у всех проекты Masterscada4D тормозят? посмотрел - проект съедает 5Гб оперативной памяти и это на этапе редактирования!!! - проект средних размеров. Пользовался альтернативными скадами там больше 1Гб не выходило.
Думаю у многих)
У меня небольшой проект, на 100 точек, ~ 1 Гб оперативной потребляет.
Но тормоза судя по всему у многих есть. Но это проект, рантайм нормально работает

VladGC
09.12.2020, 14:16
Коллеги, может у кого есть красивый пример окна с трендами ? Что бы начало и конец архива, интервалы, шкала, все работало адекватно?

nub
09.12.2020, 16:18
служебные свойства - гениально! большое спасибо, помогли решить вопрос.

nub
09.12.2020, 16:47
кто-нибудь пробовал учетные записи прописывать? как это делать? кроме описания в хелпе ничего не нашел. Нужно создавать окно с ФИО и паролем +статус доступа - а как быть если нужно задать больше пользователей чем в шаблоне? да, и как обращаться к этому окну, оно должно идти сразу при запуске ведь.

VladGC
10.12.2020, 08:10
кто-нибудь пробовал учетные записи прописывать? как это делать? кроме описания в хелпе ничего не нашел. Нужно создавать окно с ФИО и паролем +статус доступа - а как быть если нужно задать больше пользователей чем в шаблоне? да, и как обращаться к этому окну, оно должно идти сразу при запуске ведь.

В дереве системы создаются пользователи, так же можно их добавлять в программе
Важно помнить , что не все фб которые работают с пользователями, работают с теми которые создали в дереве.
Сам в таком ключе не работал, по этому будет интересно узнать Ваш результат и опыт :)
52414
52415
52416
52417

Minarion
10.12.2020, 08:43
Здравствуйте!
Столкнулся с проблемой. Есть Master OPC MultiProtocol, в нём SNMP протокол на 2,5к точек. Используется 1,4к точек SNMP с периодом опроса 1с. Этот OPC добавлен в MS4D. С периодом опроса в 1с. Иногда MS4D "забывает" опросить переменную. Пример: в SNMP протоколе значение меняется с 1 на 0. В MS4D всё корректно передалось. Затем значение меняется на 1, но MS4D не меняет это значение у себя на выходе, считая что там всё ещё 0, хотя в самом OPC сервере видно что значение уже изменилось. Руками проверил в редакторе в режиме исполнения на момент ошибок присваивания, но там всё ровно.
В чем может быть проблема?

nub
10.12.2020, 10:34
да, работает в статическом режиме - фото отчет позже. Пока не разобрался как в режиме исполнения добавлять пользователей и задавать им статус. Удобство в указании прав доступа.

Юрий Горелый2
10.12.2020, 11:15
да, работает в статическом режиме - фото отчет позже. Пока не разобрался как в режиме исполнения добавлять пользователей и задавать им статус. Удобство в указании прав доступа.

ну к примеру
https://www.youtube.com/watch?v=DYeVsDw2rDs&t=142s

там можно прямо на том канале искать по интерисующей тематике.

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

Юрий Горелый2
10.12.2020, 11:19
Здравствуйте!
Столкнулся с проблемой. Есть Master OPC MultiProtocol, в нём SNMP протокол на 2,5к точек. Используется 1,4к точек SNMP с периодом опроса 1с. Этот OPC добавлен в MS4D. С периодом опроса в 1с. Иногда MS4D "забывает" опросить переменную. Пример: в SNMP протоколе значение меняется с 1 на 0. В MS4D всё корректно передалось. Затем значение меняется на 1, но MS4D не меняет это значение у себя на выходе, считая что там всё ещё 0, хотя в самом OPC сервере видно что значение уже изменилось. Руками проверил в редакторе в режиме исполнения на момент ошибок присваивания, но там всё ровно.
В чем может быть проблема?

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

Minarion
14.12.2020, 10:36
полторы тысячи точек в секунду это достаточно много для Скада системы.
возможно с ними что-то происходит и что-то анализируется. надо посмотреть насколько нагружен компьютер.

Да, наверное железо не справляется. Поставил интервал 3 секунды, вроде работает.

Детский вопрос: получаю значение частоты вида 500. Надо получить значение вида 50,0. Получается только таким образом: InFreq:=REAL_TO_STRING(InputFreq/10). Но строковое значение не запихнуть в тренд. Как можно цифровом типе сделать?

VladGC
14.12.2020, 12:35
Да, наверное железо не справляется. Поставил интервал 3 секунды, вроде работает.

Детский вопрос: получаю значение частоты вида 500. Надо получить значение вида 50,0. Получается только таким образом: InFreq:=REAL_TO_STRING(InputFreq/10). Но строковое значение не запихнуть в тренд. Как можно цифровом типе сделать?

А исходное число в int или в real ?
Если в real, то конвертировать не надо.
А если допусти в INT то надо сначала преобразовать само число в real, а потом делить

Параметр_2:=INT_TO_REAL(Параметр_1)/10;
А что бы число на экран выводилось в формате 50,0, необходимо на самом текстовом блоке вывода поставить формат F1.
В режиме отладке все равно останется число 50, а на экране будет 50.0

Скороспелов Андрей
14.12.2020, 13:45
На параметр можно повесить шкалу, где в формате прописать f1.

Minarion
15.12.2020, 09:23
Да, наверное железо не справляется. Поставил интервал 3 секунды, вроде работает.



Неть, не помогло. Через пять дней опять тоже самое. В OPC сервере 1, а в скада 0. И так 3 часа...
Нагрузка на проц не поднимается выше 60%, на память выше 40%.

VladGC
15.12.2020, 15:02
Неть, не помогло. Через пять дней опять тоже самое. В OPC сервере 1, а в скада 0. И так 3 часа...
Нагрузка на проц не поднимается выше 60%, на память выше 40%.
А HHD что пишет, какая скорость записи ?

alex55
15.12.2020, 20:52
Уважаемые, гуру! Предоставьте пожалуйста, пример подключения преобразователя частоты(любого) в мастер скада 4д, буду очень благодарен..

AlekseyK
17.12.2020, 08:56
Добрый день, всем.

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

Поясню на примере.
В проекте, у объекта есть параметр типа реал, который получает свое значение по OPC. Далее этот параметр передается на тренд и в текстовое поле. Меняется этот параметр очень редко.

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

Кто-нибудь сталкивался в подобной ситуацией?

P.S. По большой загрузке процессора и памяти.

На это очень сильно влияет отображение трендов. Например, если вы хотите показать на экране тренд за последние сутки, причем данные у вас снимались каждую секунду, то MS4D будет честно пытаться всунуть в вашу картинку 60сек*60мин*24часа=86 400 значений. Но по факту ваш тренд на экране отображает поле 500х300 точек. И фактически покажет только 500 точек по оси X, а никак не 86400. Для решения проблемы можно использовать параметр тренда - Step of Resampling (Шаг прореживания). Который можно формировать исходя из параметров тренда "Ширина" и "Интервал".

Dmitry!
17.12.2020, 11:06
У меня есть переменная типа BLOB в БД MySQL это переменная HEX массивб вопрос какую переменную нужно завести в МастерСкаде , чтобы можно было ее увидеть, считал как STRING выглядит как каракули, может есть переменная для HEX массивов

VladGC
17.12.2020, 17:12
Добрый день, всем.

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

Поясню на примере.
В проекте, у объекта есть параметр типа реал, который получает свое значение по OPC. Далее этот параметр передается на тренд и в текстовое поле. Меняется этот параметр очень редко.

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

Кто-нибудь сталкивался в подобной ситуацией?

P.S. По большой загрузке процессора и памяти.

На это очень сильно влияет отображение трендов. Например, если вы хотите показать на экране тренд за последние сутки, причем данные у вас снимались каждую секунду, то MS4D будет честно пытаться всунуть в вашу картинку 60сек*60мин*24часа=86 400 значений. Но по факту ваш тренд на экране отображает поле 500х300 точек. И фактически покажет только 500 точек по оси X, а никак не 86400. Для решения проблемы можно использовать параметр тренда - Step of Resampling (Шаг прореживания). Который можно формировать исходя из параметров тренда "Ширина" и "Интервал".

Если переменная из дерева системы, то да, у меня так же.
Я все переменные всегда в объект кладу, а оттуда уже на экраны, и тогда нормально все.
ДУмается мне что помимо изменения числа, переменной из дерева системы, отслеживается еще изменение во времени.
А то что на тренде у вас есть, я думаю это как написано в руководстве : дорисовка констант или что то в этом духе.
Я поставил на опрос модуль ввода, с периодом опроса 10 сек.
Картина как вы и описали, но через объект, все нормально отображается.
52549

VladGC
17.12.2020, 17:16
У меня есть переменная типа BLOB в БД MySQL это переменная HEX массивб вопрос какую переменную нужно завести в МастерСкаде , чтобы можно было ее увидеть, считал как STRING выглядит как каракули, может есть переменная для HEX массивов
А массив байт или ворд не подойдет? ( сам не работал, просто предположение), можно еще попробовать запихнуть ваш массив в программу с# Ю там возможностей больше

Dmitry!
17.12.2020, 18:34
А массив байт или ворд не подойдет? ( сам не работал, просто предположение), можно еще попробовать запихнуть ваш массив в программу с# Ю там возможностей больше
Пробовал с байтом, массив пустой получается со string только есть только кракозябры всякие

VladGC
17.12.2020, 21:51
Пробовал с байтом, массив пустой получается со string только есть только кракозябры всякие
Можно ещё попробовать преобразовать в string в самом запросе, кракозябры наверное от кодировки зависят.
Использовать что нибудь в сторону select cast() или to_char (utf8)

AlekseyK
18.12.2020, 11:02
Если переменная из дерева системы, то да, у меня так же.
Я все переменные всегда в объект кладу, а оттуда уже на экраны, и тогда нормально все.
ДУмается мне что помимо изменения числа, переменной из дерева системы, отслеживается еще изменение во времени.
А то что на тренде у вас есть, я думаю это как написано в руководстве : дорисовка констант или что то в этом духе.
Я поставил на опрос модуль ввода, с периодом опроса 10 сек.
Картина как вы и описали, но через объект, все нормально отображается.
52549

У меня тоже данные берутся с объекта, а не с системы. Повторюсь, стоит переменной немного измениться и она дальше верно будет отображаться в проекте.
52557

VladGC
18.12.2020, 11:51
У меня тоже данные берутся с объекта, а не с системы. Повторюсь, стоит переменной немного измениться и она дальше верно будет отображаться в проекте.
52557

Попробуйте как вариант, изменить тип переменной, вместо REAL , поставить SYSTEM * LREAL PARAM , а потом вытащить значение на экран.
По крайней мере у меня так сделано и сразу отображается

Игорь Владимирович
23.12.2020, 10:21
Всем привет!
Подскажите пожалуйста по элементу XY , нужно отрисовать график из массива 30 на 2, глубина 30, в каждом 2 значения для X и Y соответственно.
никак не разберусь с перьями..

Dmitry!
23.12.2020, 13:29
Возникает Ошибка: Внутренняя ошибка : Не найден файл/папка для загрузки : C:\User\AppData\Roaming\InSAT\MasterSCADA4DBeta\De bug_OpenStreetMapSODK_Kazan\Облачный сервис 1\cfg\netcore Источник: 'Система.Облачный сервис 1' [Id=365067] при любом коде на C# в чем может быть дело? проблема решена в новой версии скады

nub
23.12.2020, 17:42
Добрый вечер. Буду благодарен если скажете как решить ошибку: при использовании панели вкладок - в ней указываем окно текстового ввода - привязываем к данному окну переменную с сохранением значения.
Все вроде отлично. Далее закрываем окно панели вкладок - норм. НО! - при повторном открытии окна панель вкладок - переменная магическим образом обновляется! Как это возможно?!
Точнее: в панели вкладок размещено окно - видимость и активность которого меняется от состояния переменной. Итак вопрос: при изменении статуса активности окна - обнуляются ли данные в нем? СПС.

nub
24.12.2020, 08:31
Как проследить состояние переменной при исполнении - откуда приходит нулевое значение.

VladGC
24.12.2020, 09:24
Добрый вечер. Буду благодарен если скажете как решить ошибку: при использовании панели вкладок - в ней указываем окно текстового ввода - привязываем к данному окну переменную с сохранением значения.
Все вроде отлично. Далее закрываем окно панели вкладок - норм. НО! - при повторном открытии окна панель вкладок - переменная магическим образом обновляется! Как это возможно?!
Точнее: в панели вкладок размещено окно - видимость и активность которого меняется от состояния переменной. Итак вопрос: при изменении статуса активности окна - обнуляются ли данные в нем? СПС.

А можете скриншот сделать, не до конца понятно о чем конкретно речь?

nub
24.12.2020, 11:14
вопрос снят - проблема в многовложенности окон с режимом изменения видимости и активности, что приводило к обнулению переменных. странно конечно, активность вроде не должна обнулять...
сейчас поставил панель вкладок и напрямую туда все вбил. НО! Вкладок около 10 - и они не помещаются на дисплее в рабочем режиме, их перекидываем на две строчки - а вторую строчку не вид52721но, как с ней работать теперь?

nub
24.12.2020, 13:56
при вставке в панель вкладок созданного в объекте внешнего окна - данные переменных не сохраняются после закрытия окна.
такое впечатление, что при повторном включении окна в переменную вносятся 0. само вставляемое окно находится как бы поверх окна вкладок, т.е. при смене вкладки его видно.

nub
25.12.2020, 09:07
Кто-нибудь пробовал прописывать интерфейс смены пароля учетной записи пользователя? Составил окно, но пока до конца не разобрался как программно выполнить.52752

Minarion
28.12.2020, 14:48
А HHD что пишет, какая скорость записи ?

С дисками тоже норм. 5 рейд на SAS. Затыков нет, ничего не тормозит. Обновил исполнительную, все равно такая фигня...

VladGC
28.12.2020, 16:28
С дисками тоже норм. 5 рейд на SAS. Затыков нет, ничего не тормозит. Обновил исполнительную, все равно такая фигня...

1. А где смотрите что нет перезаписи с условного примера? В режиме отладки в дереве, или же в базе данных или в трендах?

2. По поводу дисков, в целом, в моих синтетических тестах, когда я писал 1к переменных 10 раз в секунду, на любом пк работало хорошо.

3. Попробуйте использовать не один протокол OPC DA, а несколько, т.е. когда подключаетесь к opc серверу выбрать первую сотню , затем добавить еще один протокол и добавить еще пару сотен . Вы говорите про тысячи тэгов, а я модули ввода разбивал на несколько протоколов: 1 модуль - 1 протокол. Будет интересен результат, т.к. с таким большим числом тегов не работал.

Minarion
29.12.2020, 07:29
1. А где смотрите что нет перезаписи с условного примера? В режиме отладки в дереве, или же в базе данных или в трендах?

2. По поводу дисков, в целом, в моих синтетических тестах, когда я писал 1к переменных 10 раз в секунду, на любом пк работало хорошо.

3. Попробуйте использовать не один протокол OPC DA, а несколько, т.е. когда подключаетесь к opc серверу выбрать первую сотню , затем добавить еще один протокол и добавить еще пару сотен . Вы говорите про тысячи тэгов, а я модули ввода разбивал на несколько протоколов: 1 модуль - 1 протокол. Будет интересен результат, т.к. с таким большим числом тегов не работал.

1. Напрямую в БД. В режиме отладки проверял на косяк, ошибок нет.
2. Мне думается что если бы был косяк с диском, он бы начинал "тупить" намного раньше, и перезапуск РТ бы без перезагрузки бы не помогал.
3. Не хотелось бы, это переменные перетягивать в объект по новой...

Написал в ТП, скинул логи, пока не нашли косяк.

UPD Ан нет, сейчас посмотрел, опять косячит. Лечится только перезапуском ПК.

Minarion
29.12.2020, 14:10
И ещё вопрос: как UNIX время привести к виду ДД.ММ.ГГГГ?

VladGC
29.12.2020, 15:48
И ещё вопрос: как UNIX время привести к виду ДД.ММ.ГГГГ?

А где там unix ? Время в БД filetime
Вот пример запроса для mssql

SELECT TOP (10000) [layer],
[archive_itemid],
[source_time] AS [Время в FILE TIME],
CASE WHEN [source_time] <= 1 THEN NULL
ELSE
DATEADD(ms, (([source_time]) / CAST(10000 AS bigint)) % 86400000,
DATEADD(day, ([source_time]) / CAST(864000000000 AS bigint) - 109207, 0))
END
AS [Время в TIME UTC 0] ,[status_code] ,
FORMAT ([value], 'f2') AS Value
FROM [MyBD].[dbo].[data_raw] WHERE [status_code] = 0
Для postgresql где то на форуме есть пример

Minarion
30.12.2020, 07:08
А где там unix ? Время в БД filetime


Время в unix получаю от внешнего источника.

VladGC
30.12.2020, 07:54
Время в unix получаю от внешнего источника.

В st не знаю, но можно создать программу с#:
Единственный момент где INT в с#, в MS4 это DINT, 2 строчка


public override void Execute()
{
DT= DateTime.Now;
UnixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

dtConvert= ConvertFromUnixTimestamp(UnixTime);

static DateTime ConvertFromUnixTimestamp(double timestamp)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return origin.AddSeconds(timestamp);
}


}



52849

Evgeniy_D
31.12.2020, 00:26
После конвертации проекта созданного в версии 1.1 2018 года и запуска не работает настройка фона всех окон, как это недоразумение исправить?
Графика проекта большая и некоторые элементы по цвету сливаются с голубым фоном, на графиках с белым, цвет элементов предопределён техническим заданием.
При запуске родной среды проекта, регулировка цвета фона окна работает.

b_aleks
31.12.2020, 11:15
После конвертации проекта созданного в версии 1.1 2018 года и запуска не работает настройка фона всех окон, как это недоразумение исправить?
Графика проекта большая и некоторые элементы по цвету сливаются с голубым фоном, на графиках с белым, цвет элементов предопределён техническим заданием.
При запуске родной среды проекта, регулировка цвета фона окна работает.

Что значит "не работает настройка фона"? В редакторе цвета невозможно задать? Или в рантайме цвета некорректно отображаются? И в каком формате цвета заданы, в HEX или RGBa? Попробуйте цвета переписать в RGBa.

Evgeniy_D
02.01.2021, 18:30
В проекте фон окон выбирается с помощью кнопок выбора цвета далее через переменные SolidColorType в заливку фона. Пришлось удалить связи и по новой создать, всё работает. Кстати в режиме исполнения значения переменных SolidColorType отображаются без закрывающей скобки типа = rgba(40,41,42,1

nub
13.01.2021, 15:38
Добрый день! Подскажите пожалуйста как реализовать сохранение массива данных в файл и чтение данных из файла.
Есть потребность читать уставки (порядка 400 штук формата real) из внешнего файла (по нажатию кнопки, непостоянно) и иногда вносить изменения в файл.
На данный момент нашел только запись строки в файл и чтение строки из файла - но как распознать значения из строки (получается длинный набор чисел без привязки к переменным), надо писать какую-то отдельную программу
- может этот вопрос уже решен? Заранее спасибо за ответ.
Кто работал с XMLString, что это такое, в хелпах нет информации (странный подход у разработчиков - писать блоки и не давать на него инструкций в хелпе).

melky
13.01.2021, 17:12
nub через массив строк не пробовали? з.ы. не работал с MasterScada, но так как она поддерживает C# если не ошибаюсь, то можно писать в файл переменные в виде массива строк при помощи
System.IO.File.WriteAllLines
и читать при помощи
System.IO.File.ReadAllLines

в другой системе я пишу файл вида
[63, 700]
[64, 700]
[451, 53]
[452, 53,5]
[453, 46]

где первая цифра это номер канала, а вторая это значение

nub
14.01.2021, 08:13
пока не нашел в Masterscada4D поддержки C# или С++, кто-нибудь видел? через поиск в хелпах не находит. в инете информация есть только по третьей скаде.

b_aleks
14.01.2021, 08:25
пока не нашел в Masterscada4D поддержки C# или С++, кто-нибудь видел? через поиск в хелпах не находит. в инете информация есть только по третьей скаде.

Шарп в 1.2.11 появился, в объект добавляется "Программа C#". По плюсам был вебинар https://www.youtube.com/watch?v=gXwOYFsKJ2c

nub
14.01.2021, 08:33
Большое спасибо! этот вебинар нечто - из "+" информативность - однако нет описания что и от куда берут, к примеру что за masterplcap? сам проект к видео не приложен.

melky
14.01.2021, 09:14
nub тогда наверное вам проще обновиться до версии, где есть C#, я правда не знаю всех механизмов, как в нем писать скрипты (программы) на C# по этому не подскажу правильность кода, но там будет несколько строк всего и привязать это к кнопкам или другим элементам интерфейса.

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

VladGC
14.01.2021, 11:38
Добрый день! Подскажите пожалуйста как реализовать сохранение массива данных в файл и чтение данных из файла.
Есть потребность читать уставки (порядка 400 штук формата real) из внешнего файла (по нажатию кнопки, непостоянно) и иногда вносить изменения в файл.
На данный момент нашел только запись строки в файл и чтение строки из файла - но как распознать значения из строки (получается длинный набор чисел без привязки к переменным), надо писать какую-то отдельную программу
- может этот вопрос уже решен? Заранее спасибо за ответ.
Кто работал с XMLString, что это такое, в хелпах нет информации (странный подход у разработчиков - писать блоки и не давать на него инструкций в хелпе).

XMLString в справке есть, по крайней мере в последней сборке, попробуйте обновиться, там и c# будет.

Что бы распознать, необходимо что бы в файле был разделитель, если он есть то можно что то распарсить

melky
14.01.2021, 12:32
VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.

nub
14.01.2021, 13:33
как обновиться в Masterscada4D? в меню не нашел - текущая версия 1.2.9 - поддержка внешнего кода у ФБ st есть как в вебинаре, только очень сложный алгоритм с подгрузкой библиотек - проект пока не удалось сделать.
будет ли эл. ключ работать после обновления?

VladGC
14.01.2021, 15:03
как обновиться в Masterscada4D? в меню не нашел - текущая версия 1.2.9 - поддержка внешнего кода у ФБ st есть как в вебинаре, только очень сложный алгоритм с подгрузкой библиотек - проект пока не удалось сделать.
будет ли эл. ключ работать после обновления?

Бесплатно можно обновляться год с момента покупки, можно написать в тп , что бы дали ссылку на скачивание новой версии.
Затем надо переустановить как RT так и DT
Только надо все забекапить, что бы случайно не сломать как проект так и архивы и прочее

nub
14.01.2021, 18:30
ясно. большое спасибо!!!
попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.

Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)

VladGC
15.01.2021, 09:24
VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.
FileToString читает в одну строку, а ReadAllLines читает в массив строк, которые надо будет все равно разбить на столбцы,
Получается что уходит одна итерация


ясно. большое спасибо!!!
попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.
Думаю стоит обновиться или подождать версии 1.2.12 , должна скоро выйти по идее..
По крайне мере, как предложил melky, может действительно лучше на с#, примеров в сети много, да и возможности побогаче




Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)
Все норм будет(одна большая строка):
53019

VladGC
15.01.2021, 09:28
VladGC самый простой способ через Словарь массив строк командами, что написал выше. Парсить ничего не надо тогда специально.
FileToString читает в одну строку, а ReadAllLines читает в массив строк, которые надо будет все равно разбить на столбцы,
Получается что уходит одна итерация


Попробовал ReadAllLines с примером из https://www.cyberforum.ru/csharp-beginners/thread1736667.html

class Program
{
static void Main(string[] args)
{
string[] lines = File.ReadAllLines(@"D:\input.txt");
int[,] num = new int[lines.Length, lines[0].Split(' ').Length];
for (int i = 0; i < lines.Length; i++)
{
string[] temp = lines[i].Split(' ');
for (int j = 0; j < temp.Length; j++)
num[i, j] = Convert.ToInt32(temp[j]);
}
Параметр_1=num;
}
}

Ошибка: CS0029: Не удается неявно преобразовать тип "int[*,*]" в "int[]".
Не удается неявно преобразовать тип "int[*,*]" в "int[]"
Хотя сама переменная в MasterScada с типом ARRAY [*,*] OF DINT
В принципе добить можно до рабочего состояния, по крайней мере все читает как надо



ясно. большое спасибо!!!
попробую сначала через file to string прочитать txt файл, затем string - на части (с помощью функций работы со строками) и присвоить переменным; если не пойдет, обновлюсь.
Думаю стоит обновиться или подождать версии 1.2.12 , должна скоро выйти по идее..
По крайне мере, как предложил melky, может действительно лучше на с#, примеров в сети много, да и возможности побогаче




Кстати, а что будет в Masterscada4d при передачи данных командой file to string размер данных файла будет больше объема переменной типа string (к примеру в txt файле 1000 символов - и как теперь их прочитать все)
Все норм будет(одна большая строка):
53020

melky
15.01.2021, 22:57
VladGC , эээ, пожалуй я приведу весь свой код, делал очень давно и возможно тут фокусы с Linq. я это делал в RapidScada, по этому не знаю, как эти же механизмы использовать в MasterScada, но может поможет понять и сделать как вам нужно.
У меня это три "формулы" - скрипта.
Чтение переменных - SetVal здесь встроенная функция Scada системы записать в канал № значение SetVal(1000, 23.6) пример


bool initRet = false;
double LoadRet()
{
if (!initRet)
{

if (System.IO.File.Exists(pathRet))
{
string[] RetLoad = System.IO.File.ReadAllLines(pathRet, Encoding.UTF8);
for (int i = 0; i < RetLoad.Length; i++)
{
SetVal(Convert.ToInt32(RetLoad[i].Substring(RetLoad[i].IndexOf("[")+1, RetLoad[i].IndexOf(", ")-(RetLoad[i].IndexOf("[")+1)),10),Convert.ToDouble(RetLoad[i].Substring(RetLoad[i].IndexOf(", ")+2,RetLoad[i].IndexOf("]")-(RetLoad[i].IndexOf(", ")+2))));
}
initRet = true;
}

}
return Convert.ToDouble(initRet);
}


Объявление переменной как Retain

string pathRet = @"/home/pi/scada/ScadaServer/Config/retain.txt";
Dictionary<int, double> DictRet = new Dictionary<int, double>();
public double Retain (double ret)
{
DictRet[CnlNum] = ret;
return ret;
}

Запись в файл


double SaveRet()
{
string[] RetSave = new string[DictRet.Count];
bool eq = false;
for (int i = 0; i < DictRet.Count; i++)
{
RetSave[i] = Convert.ToString(System.Linq.Enumerable.ElementAt( DictRet, i));
}

if (!System.IO.File.Exists(pathRet))
{
System.IO.File.WriteAllLines(pathRet, RetSave, Encoding.UTF8);
return 0;
}
else
{
string[] RetOld = System.IO.File.ReadAllLines(pathRet, Encoding.UTF8);
eq = System.Linq.Enumerable.SequenceEqual(RetOld, RetSave);
if (!eq)
{
System.IO.File.WriteAllLines(pathRet, RetSave, Encoding.UTF8);
}
}
return Convert.ToDouble(eq);
}


Все таки есть преобразования в строку при записи в файл и обратное преобразование в числа int и double
Скобочки [ и ] это я оказывается для красоты замутил что ли :) хотч не, это скорее особенность какого-то механизма при записи.
При записи я не парился с конвертированием Key и Value словаря, а сделал это через Linq. Обратно уже по одному. Вполне возможно можно обрезать лишние скобки и разделить строку и как то быстрее сделать при чтении но как-то особо не парился...

Алекс.
19.02.2021, 09:12
Здравствуйте!
Скачал бесплатную одночасовую версию Мастерскада4Д1.2.Формирую отчёт с помощью функции ReportFB. Старался сделать всё, как написано в хелпе ПО. Блок при запуске Execute выдаёт ошибку Can't parse response.
Подскажите пожалуйста, что это и как исправить. Или где посмотреть: гугл и хелп не находят.

VladGC
19.02.2021, 10:27
Здравствуйте!
Скачал бесплатную одночасовую версию Мастерскада4Д1.2.Формирую отчёт с помощью функции ReportFB. Старался сделать всё, как написано в хелпе ПО. Блок при запуске Execute выдаёт ошибку Can't parse response.
Подскажите пожалуйста, что это и как исправить. Или где посмотреть: гугл и хелп не находят.


Дайте скриншот программы и отчета, что бы глянуть как оно выглядит

Есть документация от производителя самого отчета, но это не ваш случай
https://www.stimulsoft.com/ru/documentation/online/user-manual/

lutig
27.02.2021, 12:08
Коллеги, приветствую! Есть MasterSCADA 4D + ОВЕН110 MS4
Есть внешний канал modbus связанный с переменной InOut BOOL (свойство сохранять - выключено).
По приходу 1 выполняется некая подпрограмма, после ее выполнения регистр нужно обнулить. Никак не получается этого сделать, упрощенный пример:
R_TRIG_5(CLK:= MB_ALL_OFF );
IF R_TRIG_5.Q THEN
MB_ALL_OFF:= FALSE; (*Для сквозных переменных отключить свойство сохранять*)
END_IF
Переменная сбрасывается и сразу возвращается в TRUE.
Пробовал добавлять локальную промежуточную переменную и по ней в следующем цикле обнулять, эффект тот же.
Вероятно я упускаю что-то простое, тыкните носом пожалуйста.

VladGC
01.03.2021, 10:51
Коллеги, приветствую! Есть MasterSCADA 4D + ОВЕН110 MS4
Есть внешний канал modbus связанный с переменной InOut BOOL (свойство сохранять - выключено).
По приходу 1 выполняется некая подпрограмма, после ее выполнения регистр нужно обнулить. Никак не получается этого сделать, упрощенный пример:
R_TRIG_5(CLK:= MB_ALL_OFF );
IF R_TRIG_5.Q THEN
MB_ALL_OFF:= FALSE; (*Для сквозных переменных отключить свойство сохранять*)
END_IF
Переменная сбрасывается и сразу возвращается в TRUE.
Пробовал добавлять локальную промежуточную переменную и по ней в следующем цикле обнулять, эффект тот же.
Вероятно я упускаю что-то простое, тыкните носом пожалуйста.

Это во внешних каналах или в протоколе?
Не до конца понятно где хотите обнулить, в протоколе или программе?

lutig
01.03.2021, 11:10
Это во внешних каналах или в протоколе?
Не до конца понятно где хотите обнулить, в протоколе или программе?

Через внешний канал модбас приходит 1, к каналу привязана переменная с типом InOut "MB_ALL_OFF".
По тригеру на этой переменной в программе исполняется код, в конце него обнуляю переменную. Что бы внешнее устройство увидело 0 в регистре.
Соответственно переменная обнуляется, но на следующем цикле она снова 1. Ощущение, что она не записывается в регистр.

VladGC
01.03.2021, 12:33
Через внешний канал модбас приходит 1, к каналу привязана переменная с типом InOut "MB_ALL_OFF".
По тригеру на этой переменной в программе исполняется код, в конце него обнуляю переменную. Что бы внешнее устройство увидело 0 в регистре.
Соответственно переменная обнуляется, но на следующем цикле она снова 1. Ощущение, что она не записывается в регистр.

Тогда получается что это самое внешнее устройство опять посылает 1

Опять же не понятно,
Где и как идет опрос.
В masterscada4D стоит протокол modbus, по нему читаете регистры, которые в плк 110 находятся во внешних каналах?
53682

lutig
01.03.2021, 13:07
Тогда получается что это самое внешнее устройство опять посылает 1

Опять же не понятно,
Где и как идет опрос.
В masterscada4D стоит протокол modbus, по нему читаете регистры, которые в плк 110 находятся во внешних каналах?
53682
Проверял через qmodmaster, из него посылал единицу на нужный внешний канал плк 110 через ModbusTCP.
Протокол Modbus в данном конкретном примере исключил, да и вообще выкинул все. Оставил встроенный DI и DO и один внешний канал.
53684

VladGC
02.03.2021, 08:09
Проверял через qmodmaster, из него посылал единицу на нужный внешний канал плк 110 через ModbusTCP.
Протокол Modbus в данном конкретном примере исключил, да и вообще выкинул все. Оставил встроенный DI и DO и один внешний канал.
53684

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

lutig
02.03.2021, 10:23
Попробуйте создать переменную вне программы, либо в узле либо в объеке, далее перетащите ее во внешние каналы, а затем связать на чтение и запись в программе53698
И правда, так работает. Спасибо огромное за помощь!
Интересно, с чем это связано.

Alexey8723
28.03.2021, 22:51
Здравствуйте коллеги. Подскажите пожалуйста. Не загружаются узлы в MasterScada 4D из MasterOPC Universal Modbus Server через протокол MQTT. В OPC MQTT клиент там где нужно указать IP-адрес, указываю адрес брокера, причем в MS4D при нажатии кнопки загрузить якобы происходит загрузка, написано что загрузка завершена, но теги не отображаются. Кто сталкивался помогите пожалуйста.

asutp2003
13.04.2021, 14:48
Если ещё актуально, то в МС4Д есть протокол MQTT и ни какой ОРС уже не нужен.

Minarion
29.04.2021, 12:18
Здравствуйте!
Вроде уже задавал этот вопрос тут, но может кто-то уже поразбирался с HTTP клиентом.
Вопрос такой: на выходе получается строка с кучей строк. Как её разбить на составляющие?

Например:

{
"ServerState": "Active",
"ArchiveSizeMb": 26720,
"ArchiveWriteSpeedMBps": 0,
"ArchiveDepthDays": 48.95885554461342,
"IsArchiveOverload": false,
"ArchiveErrors": {
"ErrorDb": false,
"ErrorFrameSaving": false,
"ErrorAllDrives": null,
"ErrorFramesShrinked": false,
"BadSmartStatus": false
}
}

Можно через функцию работы со строками, но как мне показалось это весьма неудобно и не гибко.
Есть ещё какие-либо варианты?

melky
29.04.2021, 12:29
Minarion через массив строк и в список например

b_aleks
29.04.2021, 13:22
Здравствуйте!
Вроде уже задавал этот вопрос тут, но может кто-то уже поразбирался с HTTP клиентом.
Вопрос такой: на выходе получается строка с кучей строк. Как её разбить на составляющие?

Например:

{
"ServerState": "Active",
"ArchiveSizeMb": 26720,
"ArchiveWriteSpeedMBps": 0,
"ArchiveDepthDays": 48.95885554461342,
"IsArchiveOverload": false,
"ArchiveErrors": {
"ErrorDb": false,
"ErrorFrameSaving": false,
"ErrorAllDrives": null,
"ErrorFramesShrinked": false,
"BadSmartStatus": false
}
}

Можно через функцию работы со строками, но как мне показалось это весьма неудобно и не гибко.
Есть ещё какие-либо варианты?

У вас приходит ответ в формате JSON. В справке есть статья "Соответствие элементов JSON и MasterSCADA 4D" (Проект в MasterSCADA 4D - Справочная информация). Если коротко, то вам в библиотеке необходимо создать собственный тип данных (в вашем случае это будет структура), а затем преобразовать его в строку при помощи стандартной функции. Как результат, ваша структура наполнится значениями, с которыми дальше работаете как с отдельными переменными.
54877
54878

Minarion
29.04.2021, 14:31
У вас приходит ответ в формате JSON. В справке есть статья "Соответствие элементов JSON и MasterSCADA 4D" (Проект в MasterSCADA 4D - Справочная информация). Если коротко, то вам в библиотеке необходимо создать собственный тип данных (в вашем случае это будет структура), а затем преобразовать его в строку при помощи стандартной функции. Как результат, ваша структура наполнится значениями, с которыми дальше работаете как с отдельными переменными.
54877
54878

Спасибо Вам большое!

shmnpay
03.05.2021, 19:36
Доброго времени суток .
Добился работы Playsound от кнопки с экрана , но никак не могу добиться от BOOL значения true/false с аварий . Может есть какой то ньанс ?54949

Скороспелов Андрей
12.05.2021, 12:23
Что значит "добиться от BOOL значения true/false с аварий"?

shmnpay
12.05.2021, 20:02
Заместо кнопки , пытался вставить булевую переменную ( авария в программе ) , но звука нет . На скриншоте видно там висит в "play" СО первый порог для теста .

Скороспелов Андрей
14.05.2021, 11:56
А какая версия? Какой браузер? Я знаю, что в хроме нужно разрешать воспроизведение звука: chrome://settings/content/sound

shmnpay
14.05.2021, 19:23
Попробовал спустя неделю еще раз сделать ... и все заработало , мистика .

Minarion
17.05.2021, 08:24
Здравствуйте!
Вопрос по протоколу Postgres.
Возможно ли в запросе, а конкретно там где прописывается команда, завести строковый параметр из ST программы? Пробовал, но до команды ничего не доходит.

VladGC
17.05.2021, 13:17
Здравствуйте!
Вопрос по протоколу Postgres.
Возможно ли в запросе, а конкретно там где прописывается команда, завести строковый параметр из ST программы? Пробовал, но до команды ничего не доходит.

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

Minarion
18.05.2021, 09:15
3. Попробуйте использовать не один протокол OPC DA, а несколько, т.е. когда подключаетесь к opc серверу выбрать первую сотню , затем добавить еще один протокол и добавить еще пару сотен . Вы говорите про тысячи тэгов, а я модули ввода разбивал на несколько протоколов: 1 модуль - 1 протокол. Будет интересен результат, т.к. с таким большим числом тегов не работал.

Фактически прошло полгода.
Разделил на 4 протокола, увеличил интервал опроса до 10 секунд. Не помогло.
ТП пишет что заявка в работе, но никакой конкретики не даёт. Последнее время по этой проблеме отвечают на одно письмо из трех.
Такое себе.
Похоже что связка MasterOPC + MS4D ещё весьма сыровата...

Ильнур
21.06.2021, 17:46
Добрый день!
Есть ли аналог элемента "Выбор изображения" в этой скаде?

ivydy
22.06.2021, 14:45
Здравствуйте. Впервые начал работать со Скадой. До этого вообще никакого опыта в работе со скадами не было. Имеем - МастерСкада 4Д, плк B&R X20CP3585. Нужно передать между ними огромные массивы данных, в общей сложности около 8000 тэгов по Modbus TCP. Самый большой массив данных составляет около 600 DINT. Вопрос - как это сделать с наименьшими затратами? Можно ли настроить каналы передачи данных таким образом, чтобы не прописывать каждый канал по отдельности, а сразу задать канал передачи данных, размером, скажем, в 600 DINT?
Второй вопрос - знаю, что эту проблему можно решить с помощью некого OPC-сервера. Что это такое и как это сделать? Прощу прощения за глупые вопросы, никогда с этим не сталкивался, сроки поджимают.

melky
22.06.2021, 15:12
Modbus ограничен 256 байтами или около того, если не ошибаюсь. Соответственно у вас будет несколько запросов.

не прописывать не получится.
Можно сделать БЕЗ некого ОРС, любая Scada со встроенным Modbus драйвером. Таких есть несколько, от бесплатных до платных.

Это к вопросу выбора MasterScada, да еще 4Д

Юрий Горелый2
22.06.2021, 17:24
в мастерскаде есть импорт карты модбас регистров.

melky
22.06.2021, 17:26
MrLonely импорт с бумажной документации от производителя? ну просто круто :)

Koozmidg
23.06.2021, 10:53
Здравствуйте.
У меня сейчас архив данных (БД SQLite) пишется в один файл (data.db). Подскажите, как сделать, чтобы архивная база данных заново создавалась с нужной мне периодичностью. Например, каждые сутки, или каждую неделю. Не удаляя при этом старую

SCADAMaster4D
23.06.2021, 14:52
Добрый день.

На данный момент такой возможности нет. Можете написать этот вопрос на почту support.ms4d@masterscada.ru, чтобы обсудить варианты решения задачи?

Minarion
21.07.2021, 08:09
Здравствуйте!
У кого-то есть опыта использования СУБД Firebird как источника данных в MS4D? Только через скрипты lua в ModbusOPC Server?

Stab
09.08.2021, 10:47
Здравствуйте! Необходимо отображение структуры здания в виде дерева, и переход на окно элемента при выборе его в дереве. В палитре есть папка Контролы, где имеется элемент Дерево одиночного выбора. Прошу знающих людей уточнить - это то что нужно? К сожалению справка на него отсутствует, как пользоваться не понятно, поиск по интернет так же результатов не дает. Есть ли еще варианты разворачиваемых/сворачиваемых списков?

VladGC
09.08.2021, 10:59
Здравствуйте! Необходимо отображение структуры здания в виде дерева, и переход на окно элемента при выборе его в дереве. В палитре есть папка Контролы, где имеется элемент Дерево одиночного выбора. Прошу знающих людей уточнить - это то что нужно? К сожалению справка на него отсутствует, как пользоваться не понятно, поиск по интернет так же результатов не дает. Есть ли еще варианты разворачиваемых/сворачиваемых списков?5646956470

На вход контрола дерева одиночного/множественного подаете строку в формате JSON. Дерево его отображает.
Получить результат который вы выбрали можно из параметра "Значения"
Тип источника custom


56468

Stab
09.08.2021, 11:26
VladGC, спасибо за ответ, еще небольшое уточнение - на вложенных Вами скринах изображены страницы справки MS4D. Когда я пытаюсь получить справку по Дереву одиночного или множественного выбора, то у меня справочная система выдает ошибку -
5647156472
Версия MS4D 1.2.13.2387. Возникает вопрос - какова ваша версия?

SCADAMaster4D
09.08.2021, 14:29
Добрый день.
В 1.2.14 в справку добавили описание данных контролов.

VladGC
09.08.2021, 17:32
VladGC, спасибо за ответ, еще небольшое уточнение - на вложенных Вами скринах изображены страницы справки MS4D. Когда я пытаюсь получить справку по Дереву одиночного или множественного выбора, то у меня справочная система выдает ошибку -
5647156472
Версия MS4D 1.2.13.2387. Возникает вопрос - какова ваша версия?

У меня версия 1.2.13.23064,
Эту справку можно открыть если есть по JSON или источник данных для дерева

Stab
10.08.2021, 12:08
Добрый день.
В 1.2.14 в справку добавили описание данных контролов.

Добавьте тогда это описание в Руководство пользователя MasterSCADA 4D.pdf, что на сайте https://masterscada.ru/

slord
10.08.2021, 16:01
Добрый день.
В 1.2.14 в справку добавили описание данных контролов.

Планирует ли МПС СОФТ создать базовый, продвинутый курс с задачами на платформе stepik? Примерно такой https://stepik.org/course/97143/info .

SCADAMaster4D
11.08.2021, 14:06
Добрый день.
На данный момент курс находится в разработке.

slord
11.08.2021, 16:30
Добрый день.
На данный момент курс находится в разработке.

Круто! Курс по MasterSCADA4D?

SCADAMaster4D
12.08.2021, 16:06
Да, по ней.

kapelli
18.08.2021, 10:36
У меня несколько типов стандартных схем испытаний, хочу сделать их Примитивы - Картинка - (выпадающий список стандартных схем)
В хэлпе очень "сухо" об этом написано, прошу помощи. Спасибо!
"Если требуется, чтобы в клиенте визуализации отображались разные изображения, то следует связать свойство с параметром проекта, и настроить конвертер значений, т.е. выбрать необходимый тип конвертации, и выбрать для каждой опорной точки свой медиа-ресурс:..."

SCADAMaster4D
18.08.2021, 12:12
У меня несколько типов стандартных схем испытаний, хочу сделать их Примитивы - Картинка - (выпадающий список стандартных схем)
В хэлпе очень "сухо" об этом написано, прошу помощи. Спасибо!
"Если требуется, чтобы в клиенте визуализации отображались разные изображения, то следует связать свойство с параметром проекта, и настроить конвертер значений, т.е. выбрать необходимый тип конвертации, и выбрать для каждой опорной точки свой медиа-ресурс:..."

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

Юрий Горелый2
18.08.2021, 12:44
У меня несколько типов стандартных схем испытаний, хочу сделать их Примитивы - Картинка - (выпадающий список стандартных схем)
В хэлпе очень "сухо" об этом написано, прошу помощи. Спасибо!
"Если требуется, чтобы в клиенте визуализации отображались разные изображения, то следует связать свойство с параметром проекта, и настроить конвертер значений, т.е. выбрать необходимый тип конвертации, и выбрать для каждой опорной точки свой медиа-ресурс:..."

ну если не сухо а с водой, тогда вот https://www.youtube.com/watch?v=ENQcuW7BEq8 . А так всё описано коротко и по делу)

kapelli
20.08.2021, 12:42
Юрий Горелый, спасибо за быстрый и наглядный пример!)

kapelli
07.09.2021, 14:53
Есть два ПК на одном среда разработки, другой впоследствии станет АРМ-ом (на нем OPC_MODBUS_SERVER и MasterSCADA 4D RT32). Выгрузка конфигурации и загрузка ее в среду исполнения - успешно. Но в дальнейшем или -1 или 100 ошибки. IP узла - ПК-АРМ... В чем моя ошибка???

petr2off
08.09.2021, 06:28
Добрый день.
Есть ли возможность задания в проекте MS4D глобальных символьных констант. Скажем из контроллера я получаю по Modbus регистр состояния задвижки, и например бит 1 означает, что задвижка открыта, а бит 2 то что закрыта. Соответственно хочется мне 2 символьные константы завести S_Open = 0x0001 и S_CLOSE = 0х0002, с разгону я такого механизма не увидел (а в Isagraf, например он есть).

Вадим Тюшкевич
09.09.2021, 09:35
Добрый день.
Есть ли возможность задания в проекте MS4D глобальных символьных констант. Скажем из контроллера я получаю по Modbus регистр состояния задвижки, и например бит 1 означает, что задвижка открыта, а бит 2 то что закрыта. Соответственно хочется мне 2 символьные константы завести S_Open = 0x0001 и S_CLOSE = 0х0002, с разгону я такого механизма не увидел (а в Isagraf, например он есть).

Если правильно понимаю вопрос, в объекте "АРМ" есть папка "Параметры", это для глобальных параметров

kapelli
09.09.2021, 13:13
Прошу совета. В Среде разработки создан проект, запускаю его, с АЦП по СОМу данные поступают, графики строит, все устраивает. Выгружаю данную конфигурацию для загрузки ее в MASTER SCADA 4D RT1_2 (все на одном ПК, АРМ 127.0.0.1). Запускаю все процессы – ярлык OPC сервера подгружается, АЦП начинает мигать, запускаю клиент и вижу белое окно.

SCADAMaster4D
10.09.2021, 12:42
Добрый день.
Уточните, используется OPC-сервер и протокол OPC DA?

kapelli
10.09.2021, 13:05
в OPC-сервере MasterOPC Universal Modbus Server описал конфигурацию своего АЦП (данные вижу - GOOD) и через протокол OPC-DA подтягиваю их в среду разработки MasterScada 4D.

SCADAMaster4D
10.09.2021, 13:13
Возможно неправильно настроен DCOM. Надо проверить dcomcnfg - https://www.screencast.com/t/Snqg5KMRFi
Вызовите меню "Выполнить" (win + R). Выполните команду dcomcnfg. Дальше Службы компонентов - Компьютеры - Мой компьютер - Настройка DCOM. Там найдите нужный OPC сервер и в свойствах на вкладке Удостоверение установите Текущий пользователь.

kapelli
10.09.2021, 13:35
Текущий пользователь на всех серверах InSat, брендмауэр отключен, антивируса нет. В логах из Рабочей папки RT вижу свои значения от АЦП (C:\ProgramData\MPSSoft\MasterSCADA4DRT1_2\Server\ log\0)
7963663 [09:48:32.740Z] |5924| In file pin.cpp at line 17 2021.09.10 09:48:32.925'925 : 78662, write(8.562024116516114, 2021.09.10 09:48:32.000'000, 0x0)... экран клиента RT по прежнему белый (и браузера) :(

kapelli
14.09.2021, 11:46
Проблема решена, все оказалось банально из-за разных версий Среды разработки и RT. Сначала все заработало дома (пришлось упереть с работы весь стенд) подозрение пало на версию Windows, но затем Юрий Горелый подсказал обратить внимание на версии инсталяторов MasterScada4D. Спасибо Юрию, опять:)
PS где можно подсматривать актуальность обновлений???

СмирноваЛС
15.09.2021, 13:11
Добрый день, поиском ничего не нашлось, а вопрос вроде простой.
Как в МС квитировать все существующие сообщения об авариях изменением одной переменной?
По факту на пульте управления кнопка "Квитировать всё".

SCADAMaster4D
15.09.2021, 14:06
В самом журнале есть кнопка квитировать все.
Если она не удобна, то можно создать свой элемент и на него повесить "вызвать метод".
57007

СмирноваЛС
15.09.2021, 14:30
Про журнал я в курсе, это не подходит.
Мне необходимо привязать "квитировать все" именно к изменению переменной, без действия оператора с элементами видеокадра. Я не точно выразилась - кнопка на пульте - физическая, я получаю данные о нажатии по модбас от контроллера.

SCADAMaster4D
15.09.2021, 14:52
Можете создать триггер окна по проверке параметра вызывать квитирование, статья в справке "HMI. Действия по условию". Или же можете использовать ФБ EventsCounter и с его помощью квитировать сообщения по заданному фильтру, статья в справке "EventsCounter".

СмирноваЛС
15.09.2021, 16:02
57010

Еще вопрос) Как в варианте "HMI. Действия по условию" в "элемент" вызова метода через триггер подцепить мой журнал? Я раньше связывала события в окне элементы, а тут они на разных вкладках.

SCADAMaster4D
16.09.2021, 11:02
Раскрыть полное дерево и в нём найти элемент. Раскрывается по кнопке слева от поля фильтра над деревом системы.

СмирноваЛС
16.09.2021, 12:41
Спасибо за ответы, всё нашла и оба варианта попробовала)

kapelli
09.10.2021, 11:13
https://recordit.co/EGjiyUEEbJ замечательный пример для "Таблица данных" но.... самое интересное не показали. С помощью генератора Синуса и Пилы пытаюсь повторить пример и подать на вход массиву данные, но в таблице две колонки с нулями. Когда к Параметру притягиваю вручную на вход синус и пилу получаю ошибки "Параметр имеет больше одного отношение передачи данных".... "Не найдена функция конвертации из типа LREAL в тип Локальная.Массив_1". Можно коротенький видео-пример до с имитацией входа с Генератора. Спасибо:)

VladGC
12.10.2021, 09:19
https://recordit.co/EGjiyUEEbJ замечательный пример для "Таблица данных" но.... самое интересное не показали. С помощью генератора Синуса и Пилы пытаюсь повторить пример и подать на вход массиву данные, но в таблице две колонки с нулями. Когда к Параметру притягиваю вручную на вход синус и пилу получаю ошибки "Параметр имеет больше одного отношение передачи данных".... "Не найдена функция конвертации из типа LREAL в тип Локальная.Массив_1". Можно коротенький видео-пример до с имитацией входа с Генератора. Спасибо:)

Покажите скриншот как на вход массиву подаете данные ?

kapelli
12.10.2021, 10:34
Вместо Синуса и Пилы подаю на вход реальные данные с двух каналов АЦП. Структуру, Массив и Параметр сделал аналогично видеомануалу см. ссылку выше. Далее на Канал_1 вручную притягиваю данные ch1 (Value) и получаю ошибку ...
Недопустимый тип данных для связи с Система.АРМ 1.Протоколы.OPC DA.COM port.AIK 12_2.ch1.Вход.Value
57399

kapelli
12.10.2021, 10:44
Если притягиваю Параметр Канал 1 - получаю ошибку конвертации
57400

VladGC
12.10.2021, 11:03
Вместо Синуса и Пилы подаю на вход реальные данные с двух каналов АЦП. Структуру, Массив и Параметр сделал аналогично видеомануалу см. ссылку выше. Далее на Канал_1 вручную притягиваю данные ch1 (Value) и получаю ошибку ...
Недопустимый тип данных для связи с Система.АРМ 1.Протоколы.OPC DA.COM port.AIK 12_2.ch1.Вход.Value
57399

Так делать нельзя, если хотите через связи передавать значение, то надо поставить галочку " отображать элементы в дереве ":
57402
А если используете глобальные переменные, то проще сделать так:
В объекте создаете программу, далее на выходе программы создаете нужный массив структур.
В программе присваиваете нужному номеру массива нужную переменную.
57403

VladGC
12.10.2021, 11:09
Так делать нельзя, если хотите через связи передавать значение, то надо поставить галочку " отображать элементы в дереве ":
57402
А если используете глобальные переменные, то проще сделать так:
В объекте создаете программу, далее на выходе программы создаете нужный массив структур.
В программе присваиваете нужному номеру массива нужную переменную.
57403

Еще можно сделать так:
В протоколе создаете программу, собираете нужные переменные, и связываете сразу с массивом структур, далее его целиком передаете куда надо
57404

kapelli
12.10.2021, 12:36
Спасибо за ответ.
С описанием Структуры возникают сложности. Имею 12-канальное АЦП и каждый из каналов мне присылает значение внутри которого (Value, SourceTime и StatusCode) размер массива динамический. В итоге хочу добиться таблицы (Время 1, Значение 1, Время 2, Значение 2 и т.д).

PS
В мануале MS4D по запросу "массивы структур в окнах" есть пример, но настолько замудрённый что на стадии Структуры у меня и Мануала уже расхождения.

VladGC
12.10.2021, 14:21
Спасибо за ответ.
С описанием Структуры возникают сложности. Имею 12-канальное АЦП и каждый из каналов мне присылает значение внутри которого (Value, SourceTime и StatusCode) размер массива динамический. В итоге хочу добиться таблицы (Время 1, Значение 1, Время 2, Значение 2 и т.д).

PS
В мануале MS4D по запросу "массивы структур в окнах" есть пример, но настолько замудрённый что на стадии Структуры у меня и Мануала уже расхождения.
Скачайте пример, может прояснит что
Не совсем понятно, зачем делать динамический массив, если получаете 12 каналов
https://dropmefiles.com/nsVfD

kapelli
12.10.2021, 14:45
Все совсем не так как я строил:))))) Спасибо за пример!:)

Динамический массив может и не нужен, АЦП за эксперимент (время 30 мин до 1.5 часа) просто заполняет показаниями таблицу. В зависимости от Шкалы или StatusCode возможно буду подкрашивать критические участки поканально. Наконец просвет, а то буксую уже долго!

VladGC
12.10.2021, 15:24
Все совсем не так как я строил:))))) Спасибо за пример!:)

Динамический массив может и не нужен, АЦП за эксперимент (время 30 мин до 1.5 часа) просто заполняет показаниями таблицу. В зависимости от Шкалы или StatusCode возможно буду подкрашивать критические участки поканально. Наконец просвет, а то буксую уже долго!
Еще рекомендую на графиках смотреть каналы отдельно

57418

kapelli
19.10.2021, 11:55
Из трек каналов АЦП загоняю в массив[1...3] (тип SystemLrealParam), далее этот массив пытаюсь загнать в заранее созданный МассивСтруктур циклом.
Получаю ошибки.... подскажите где косяк
57573

slord
19.10.2021, 12:14
Из трек каналов АЦП загоняю в массив[1...3] (тип SystemLrealParam), далее этот массив пытаюсь загнать в заранее созданный МассивСтруктур циклом.
Получаю ошибки.... подскажите где косяк
57573

Нужно создать локальную переменную i в Программа_ST_1

VladGC
19.10.2021, 12:41
Из трек каналов АЦП загоняю в массив[1...3] (тип SystemLrealParam), далее этот массив пытаюсь загнать в заранее созданный МассивСтруктур циклом.
Получаю ошибки.... подскажите где косяк
57573

Как уже сказали надо создать переменную i
А еще на скриншоте у вас массив размером 1, имеет три канала.

Тут цикл не подходит, должно быть примерно так:
Массив структур[1].Канал_1 := Параметр_1[1];
Массив структур[1].Канал_2 := Параметр_1[2];

kapelli
19.10.2021, 13:20
Спасибо за подсказку! В первом приближении почти все на месте... только колонка SourceTime уплыл формат (вместо DT, миллиарды) и циклом хотел сделать бегущие бесконечные колонки цифр., а не строчку :(

kapelli
19.10.2021, 13:26
время исправил указав формат - HH:mm:ss.fff

ArturRazd
19.10.2021, 15:14
Добрый день!

Версия: 1.2.13.23187(MPLCD_1_2_20210629.1)
Как можно вывести в отчете итог по итоговой строке?

57579

VladGC
19.10.2021, 15:43
Добрый день!

Версия: 1.2.13.23187(MPLCD_1_2_20210629.1)
Как можно вывести в отчете итог по итоговой строке?

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



57581
57582
57583

ArturRazd
19.10.2021, 16:08
Надо сложить все итоги в этом текстовом поле,
по сути в нем будет еще раз вычисляться итог колонки и суммироваться с другими итогами.



57581
57582
57583

Спасибо, заработало.

kapelli
27.10.2021, 13:33
Есть 4 варианта работы моей системы (4 схемы) в основном Окне ставлю три "Окна Контейнера" Схема 1..4(выбор по Флагу), Тренд (в зависимости от Схемы) и Легенда (в зависимости от того что в Тренде). По 4 Флагам управляю всем этим... но когда устанавливаю связи Легенды и Тренда получаю предупреждение "wrong trend ID" и соответственно пустое окно Легенды. Когда все в одном Окне понятно как связь установить, а когда в разных?

ПС видимость/невидимость проще, но в одном окне при большом кол-ве связей - громоздко

SCADAMaster4D
27.10.2021, 14:18
Добрый день.
Включите полное дерево и на схеме окна найдите нужный элемент.

57695

kapelli
27.10.2021, 14:45
Спасибо за ответ, но все равно получаю сообщение об ошибке...
57696

kapelli
28.10.2021, 10:39
Сделал все в одном Окне, только связь указал по Вашему способу - работает. Делаю аналогично в разных Окнах - нет. Вырезаю работающую Легенду и вставляю со связями в новое Окно, тоже не работает - wrong trend ID

моя версия v. 1.2.13.23187(MPLCD_1_2_20210629.1)

VladGC
28.10.2021, 12:43
Сделал все в одном Окне, только связь указал по Вашему способу - работает. Делаю аналогично в разных Окнах - нет. Вырезаю работающую Легенду и вставляю со связями в новое Окно, тоже не работает - wrong trend ID

моя версия v. 1.2.13.23187(MPLCD_1_2_20210629.1)

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

kapelli
28.10.2021, 13:06
Спасибо за ответ. Тоже было время подумать, хотелось структурировать все по окнам, кто за что отвечает, вставить управляющие элементы под соответствующими Контейнерами... но наверно не судьба:) и немного не корректно так делать. Красота страдает... остается играть теми "кубиками" что есть

VladGC
28.10.2021, 13:46
Спасибо за ответ. Тоже было время подумать, хотелось структурировать все по окнам, кто за что отвечает, вставить управляющие элементы под соответствующими Контейнерами... но наверно не судьба:) и немного не корректно так делать. Красота страдает... остается играть теми "кубиками" что есть

А чем не устраивает поставить легенду под график?
Можно сделать окно высокое, сверху тренд, снизу легенду,
Потом загнать окно в контейнер с одинаковой шириной , и сделать прокрутку вниз
57709

kapelli
28.10.2021, 14:44
Читаете мысли:) так и поступил

RamesIV
08.11.2021, 09:38
Здравствуйте,Коллеги!

Подскажите, пожалуйста,как сделать чтение и запись регистра Modbus float в одном поле текстового ввода (или другом элементе).

В контроллере существует регистр Modbus TCP (чтение и запись по одному адресу) необходимо осуществлять отображение значение регистра и его изменение в в одном поле текстового ввода (или другом элементе).
Создаю в Системе протокол с базовым каналом с доступом InOut, в объектах параметр,привязываю его к полю ввода текста и к каналу. Привязывал к каналу в различных вариантах. Отображение в поле текстового ввода происходит нормально, запись регистра работает не стабильно, выглядит как конкуренция записи старого и нового значения.
57850.

VladGC
08.11.2021, 09:49
Здравствуйте,Коллеги!

Подскажите, пожалуйста,как сделать чтение и запись регистра Modbus float в одном поле текстового ввода (или другом элементе).

В контроллере существует регистр Modbus TCP (чтение и запись по одному адресу) необходимо осуществлять отображение значение регистра и его изменение в в одном поле текстового ввода (или другом элементе).
Создаю в Системе протокол с базовым каналом с доступом InOut, в объектах параметр,привязываю его к полю ввода текста и к каналу. Привязывал к каналу в различных вариантах. Отображение в поле текстового ввода происходит нормально, запись регистра работает не стабильно, выглядит как конкуренция записи старого и нового значения.
57850.

В окне надо создать элемент инкремент

На вход инкремента сделать связь с выходом регистра,
выход инкремента со входом регистра

upd, в регистре сделать запись по изменению

b_aleks
08.11.2021, 09:51
Здравствуйте,Коллеги!

Подскажите, пожалуйста,как сделать чтение и запись регистра Modbus float в одном поле текстового ввода (или другом элементе).

В контроллере существует регистр Modbus TCP (чтение и запись по одному адресу) необходимо осуществлять отображение значение регистра и его изменение в в одном поле текстового ввода (или другом элементе).
Создаю в Системе протокол с базовым каналом с доступом InOut, в объектах параметр,привязываю его к полю ввода текста и к каналу. Привязывал к каналу в различных вариантах. Отображение в поле текстового ввода происходит нормально, запись регистра работает не стабильно, выглядит как конкуренция записи старого и нового значения.
57850.

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

RamesIV
08.11.2021, 10:55
Спасибо, VladGC, b_aleks!

С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
57851
57852

VladGC
08.11.2021, 11:03
Спасибо, VladGC, b_aleks!

С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
57851
57852

Шаг инкримента указали правильный?

Еще можно сделать промежуточную переменную, и округлять переменную.
Сделать что то вроде такого:
Создать программу, вход регистра связать с выходом программы
Выход программы с входом регистра,
Точно так же связать с инкриментом
Округлять можно так



FUNCTION funRound : LREAL
VAR_INPUT
IN: LREAL := 0;
N: INT := 0;
END_VAR

VAR_OUTPUT
EnO: BOOL := True;
END_VAR

VAR
DECADES: ARRAY [0..8] OF LREAL := [1, 10, 100, 1000, 10000, 10000, 100000, 1000000, 10000000];
X: LREAL := 0;
END_VAR



X := DECADES[LIMIT(0,N,8)];
funRound:= DINT_TO_REAL(REAL_TO_DINT(in * X)) / X;

END_FUNCTION

b_aleks
08.11.2021, 11:04
Спасибо, VladGC, b_aleks!

С разделением входного и выходного параметра работает корректно, на данном этапе этого достаточно. Но остался вопрос. При применении текстового ввода при отображении значения можно задать формат (f3), при этом "дробный хвост" 4-х байтного float не отображается, в инкременте формата отображения нет. Есть какие-то пути решения с использованием инкремента (второй контрол для отображения использовать нельзя- нужно и ввод и отображение реализовать в 1-м элементе)?
57851
57852

У вас InPar и OutPar какого типа? Если REAL, то в инкременте так и будет дробная часть отображаться. Измените тип на LREAL, тогда в инкременте будет отображаться 1.1