Мне хотябы один и запустить. Задача именно в том, чтобы пользователь мог бы запустить проект, не входя в среду разработки, а получается, что в любом другом случае, кроме как среды разработки проект не работает.
Вид для печати
Мне хотябы один и запустить. Задача именно в том, чтобы пользователь мог бы запустить проект, не входя в среду разработки, а получается, что в любом другом случае, кроме как среды разработки проект не работает.
Должна быть какая-то автозагрузка при рестарте сервера... ищите в документации.
иначе как бы нафик такая scada тогда была бы нужна ?
Дело не в автозапуске, а в том, что среда исполнения не работает ни отдельно, ни вместе со средой разработки. Проект работает только из среды разработки без запуска среды исполнения, при запуске среды исполнения проект отказывается принимать данные из OPC сервера.
Коллеги, кто подскажет как правильно открывать локальные PDF в контейнере окна?
Судя по справке, это вроде бы реализуется посредством действия "Открыть адрес". Только вот как ни пробуем - выдает ошибку при открытии.
При этом, если в появившемся в контейнере pdf-плагине открыть файл вручную по встроенной кнопке - открывается нормально.
Адрес задаем в том виде, каком эти файлы открывает например Edge (в справке расписан формат только для Linux).
Коллеги, добрый день!
Я начал изучать MasterSCADA 4D. Выполнил все 3 видеоурока, потом несколько их модифицировал, заменив "Контроллер" на ""АРМ" - все работало как задумано. Потом я решил организовать связь с прибором через OPC DA. Сконфигурировал овеновский ОРС-сервер, проверил его связь с прибором - все четко работает. Затем посмотрел документацию по проектированию СКАДы и сделал, на мой взгляд, то что требуется для установления связи. Однако, прибор (МУ210-401) не управляется. В самой СКАДе вырабатываются нужные значения, но в ОРС-сервер они не передаются. Что я делаю не так? Проект и конфигурация ОРС-сервера - в прикреплении.
Понял, спасибо, доберусь до компа с МС4 - попробую. А ОРС сейчас использовал чисто в учебных целях. Кстати, сразу возникло 2 вопроса.
1. Какую версию Owen OPC-сервер Вы использовали при проверке?
2. Если все срастется, то нам нужно будет получать данные в МС4 из OwenCloud. Я, в общем-то, и стал пробовать работу с ОРС-сервером ради этого. Или в МС4 можно как-то по другому решить этот вопрос?
Переставил ОРС-сервер на версию 1.10.73.0. Толку от этого нет - связи МС4 с ОРС-сервером нет (хотя и удалил протокол OPC DA и по новой его подключил). Взял накидал простейший проект на МС3, который управляет теми же выходами МУ210-401 - все работает без проблем. Как-то так.
А связь OwenOPC с OwenCloud я использовал уже, нормально все работает. И Multi-protocol MasterOPC я с OwenCloud соединял нормально (но это только для самообучения)
Попробовал вместо Owen OPC подключить MasterOPC Modbus - разницы нет никакой. Но вот что я заметил - данные ИЗ ОРС-сервера в МС4 передаются. Если я в ОРС-сервере вручную присваиваю тэгу какое-то значение, то в параметре Вход.Value в МС4 это значение появляется. Но вот из параметра Выход.Value в ОРС-сервер данные не записываются. В чем может быть проблема?
Ребята кто писал скрипты С# подскажите!
я хочу добавлять OPC UA каналы и присваивать им NodeId, но как это сделать не знаю. Остановился на том что могу создать канал - а дальше, что?
Из куцего примера в справке очевидно, что нужно запросить некий сервис для Channel но какой, как он называется и в какой сборке сидит - квест.
var chanel = SystemRoot.FindChildByFullDisplayName("АРМ 1.Протоколы.OPC UA").ManagementService.InsertChildDef(SchemeTypes. Channel);
var chanelServ = chanel.GetService<?????????>();
chanelServ.NodeID = "ns.tag... etc";
Вложение 60794
У меня вот такая проблема с запуском исполнительной системы RT32 на Windows10.
Можно ли в качестве подложки (фона) в окнах использовать файлы .pdf? После загрузки в ресурсы окна там просто белый фон.
Добрый день!
Подскажите: при использовании в окне диалогового элемента ДатаВремя в параметр передается значение вида "2022-06-06-17:15:01". Вопрос: как убрать тире между датой и временем? Можно сделать два диалоговых элемента, но интересно как реализовать в одном.
Minarion не совсем знаю MS4D но если это строковое представление даты, то ее можно преобразовать скриптом C# в любой вид, который вам нужен, хоть в 2022_06_06 !!! 17:15:01 например.
Minarion ну а если вам помогут с функцией кто умеет C# ? я просто гляну где это искать и подскажу...
Добрый день! не думал, что после стольких лет в автоматизации буду спрашивать что-то на форуме, но, видимо, время пришло. Реализую проект на мастерскада 4д (в первый раз, и в последний!). Добавил opc server, переменные опрашиваются, привязал кнопку к opc, нажимаю - значение меняется в scada, а в opc - нет. Что я делаю не так?
Minarion покурите эту тему, вывод можно настроить как вам нравится, заменив - например на "О как!" :)
https://docs.microsoft.com/ru-ru/dot...format-strings
Коллеги, доброго дня.
Может кто знает каково максимальное ограничение длины параметра типа STRING?
В справке указано только что строка "переменной длины"...
Здравствуйте!
Подскажите как присвоить NULL переменной, если другая переменная тоже NULL.
Как я написал: IF var1 = NULL then var2:= NULL END_IF;
Однако значение var2 не становится NULL.
Подскажите как в мастер скаде 4D реализовать кнопку с таймером, т.е. при нажатии на кнопку на мнемосхеме она вдавливается и параметр присваивается ВКЛ, а через 2 секунды параметр стал ВЫКЛ и кнопка на мнемосхеме отжалась?
Здравствуйте, смотрю урок 3 Быстрый старт, у меня при перетаскивании из вкладки объекты во вкладку Бибдтотеки локальные содержимое окон не сохраняется - и соответственно потом все содержимое удаляется в источнике. В чем может быть проблема? И еще вопрос - В среде проектирования все работает сигналы на контроллер проходят, но как только запускаю проект через RT, клиент перестает общается с OCP, запускаю среду проеэтирование там тоже перестает и пишит при компеляции версия исполнительного устройства устарела.
Вопрос про конвертацию.
С прибора идут данные INT, в скаде я их принимаю, но мне нужно на окно вытащить уже REAL с 2 знаками после запятой (например, 1267 должно стать 12,67).
Попробовал создать параметр LREAL и задать формат {f2}, но получил ту же самую целую часть с двумя нулями после запятой.
Можно ли сделать быструю конвертацию, не прибегая к программным блокам (FBD, ST и тп)?
Здравствуйте коллеги!
Подскажите пожалуйста, правильно ли я понимаю: 1 сообщение тревога обрабатывает 1 параметр? Если мне надо контролировать 100 параметров, мне надо создать 100 сообщений тревога и связать их со входом активность сообщения?
Можно ли создать одно сообщение конкретного типа и привязать к нему кучу параметров?
Приветствую,
если 100 параметров привязать к одному входу ( через или) то при возникновении двух и более событий будет непонятно какое событие произошло
если надо использовать какие либо превышения, я бы использовал штатные функции - контроль границ
А если надо только записывать сообщения в архив журнала то можно использовать fb - FireBaseEvent
Код:FOR i := 1 to 5 DO
IF g_msg_eventChange_D4[i].changed THEN
Система(Time:= , Message:=g_msg_eventChange_D4[i].msg , AckTime:= , Acked:= , Severity:=200 , ClientUserId:= , ClientAddress:= , EventTypeId:= , Archive:= );
END_IF;
END_FOR;
Может кто-нибудь помочь с получением значений из сообщений в формате JSON? Буду крайне признателен.
У меня прилетают сообщения по MQTT в JSON. К примеру одно из наиболее маленьких:
[{"ts":1657711987000,"ms":{"ru1":{"force":-99999,"temp":-2000,"ts":0},"ru2":{"force":-99999,"temp":-2000,"ts":0},"ru3":{"force":-99999,"temp":-2000,"ts":0},"meteo":{"airt":0.000000,"ah":0,"wd": 0,"ws":0.000000}},"hs":"ba5e11c1eacd3873e308427667 5a8d0a"}]
На входе массив структур(судя по квадратным скобкам), который состоит из: переменной ts, структуры ms и переменной hs.
Структура ms в свою очередь состоит из структур ru1-3 и структуры meteo.
Структуры ru1-3 состоят из полей: force, temp, ts.
Структура meteo состоит из полей: airt, ah, wd, ws.
Т.е. по сути получается «матрёшка» из полей, вложенных в структуры, которые в свою очередь вложены в ещё одну структуру, которая с двумя переменными составляет массив.
Я создавал все эти структуры с соответствующими полями и потом вкладывал одно в другое, как указанно в разделе справки «Соответствие элементов JSON и MasterScada 4D.
Далее чтобы было более понятно
[{"ts":1657711987000,
"ms":{
"ru1":{"force":-99999,"temp":-2000,"ts":0},
"ru2":{"force":-99999,"temp":-2000,"ts":0},
"ru3":{"force":-99999,"temp":-2000,"ts":0},
"meteo":{"airt":0.000000,"ah":0,"wd":0,"ws":0.0000 00}
},
"hs":"ba5e11c1eacd3873e3084276675a8d0a"}]
Согласно справки имена ключей и типы данных должны совпадать. Разработчики устройства, с которого летят сообщения дали мне типы данных: "[{"ts":%lld,"ms":{%s"meteo":{"airt":%f,"ah":%d,"wd" :%d,"ws":%f}},"hs":"%s"}]"
Как я понял это написано на С. Я сопоставил эти типы данных с данными в 61131-3. Сделал, как указанно в справке создал свой сложный тип данных. Структуру meteo с полями airt,ah,wd,ws, структуры ru1-3 с полями force, temp,ts. Вложил в структуру ms и конечную струтуру с полями ts, hs. И всё это в массив.
Назначал полученный тип данных параметру канала и в ответ нули. Датчиков на девайсе нет но, ts-вермя и hs- контрольный хэш должны прилетать.
Возвращаю исходный тип данных, вижу, строку в которой есть данные.
Ещё если назначить конечным типом данных массив структур( о чём говорят квадратные скобки) то, на выходе и массив, и теперь из 3-х строк.
А если назначить конечным типом данных структуру(что согласно справке будет не верно) то, всё раскладывается на отдельные параметры но, в них нули, как написано выше.
Через функцию STRING_TO_OBJECT тоже пытался. Тоже не работает.
Справка - фуфло. Написана не прозрачно и не однозначно. У ТП как всегда всё работает, всё здорово, "Не понимаем в чём у вас проблема". Способ конвертации крайне неудобен, нужно всё сообщение до последнего ключа раскладывать, а бывают сообщения ооооооооооочень длинные.
[{"ts":1658146763000,"status":"RN","hw_version":"00 01","base": {"status":"","GSM":"Op: MegaFon RUS, RSSI: -51dBm, BER: 6.400000%","versions": {"hw_version":"0001","fw_version":"NO","fw_bckup_s table_version":"NO","fw_status":"FC"},"data":{"brd _temp":37.000000,"voltage":14.157000,"uptime":5342 31,"rf_status":""}},"cab": {"status":"DO,"},"ru1":{"status":"","b1":{"voltage ":3.410000,"value_charge":20.000000},"brd_temp":29 ,"channel_occup_attempt": 0,"sessions_nak":0,"ru_ltota":1658146756000,"ru_rs si":-66,"rf_ru_rssi":0},"anem": {"temp":0.000000,"status":"WDL"},"t_hum": {"status":"THDL"},"hs":"b7ed13745b79f42642a7eeada4 9f3c5a"}]
А мне нужен лишь один ключ. И что делать???
Прилагаю скрины то, как делал и результаты.
PS.
Ещё момент, если в сообщении прилетают ключи с именами, совподающими с зарезервированными словами 61131-3 - беда! Т.к. по справке имена полей должны совпадать с ключами. Ничего не сделать.
В TeslaScada2 это реализовано по другому, у них не используется 61131-3 и реализовано на мой взгляд удачнее. Необязательно всё сообщение до последнего ключа преобразовывать но, ручками поработать придётся тоже.
Вложение 61792Вложение 61793Вложение 61794Вложение 61795Вложение 61796Вложение 61797Вложение 61797Вложение 61798Вложение 61799Вложение 61800
Доброго дня.
Подскажите, .changed - это какое-то пользовательское поле, или системное?
Поиском по справке такого не нашел (
Просто интересно каким образом реализовать в MS4D аналог скрипта "по изменению значения", общеупотребительного для других систем.
Неужели всё самому нужно лепить через дополнительные переменные и функции сравнения?