Ужас, а как же пользователи, права, экземпляры для них?
Представляю, ходишь в сбер онлайн, а там другой пользователь тебе меню тыкает. :)
Вид для печати
Ужас, а как же пользователи, права, экземпляры для них?
Представляю, ходишь в сбер онлайн, а там другой пользователь тебе меню тыкает. :)
egor3150 ну по идее это регулировать web сервер должен, и даже если с двух разных ПК зайдут два одинаковых пользователя, выбор какого-то меню одним пользователем не должны приводить к показу этого меню у другого пользователя. То есть кроме имя/пароль еще должно фигурировать id пользователя (правильнее сессии), которое у каждой сессии должно быть своим и web сервер должен разруливать это самостоятельно, а не по прихоти настроек в scada (по сути если что-то в ms4d и можно сделать, то получается костылями)
меня такой факт еще больше отвращает от MS4D, получается там кривой WEB сервер.
1) Кас. окна меню
Можете показать реализацию?
Потому что как я понял задумку, должно отрабатывать нормально - у каждого юзера свое окно или всплывающее окно
2)
Не исключено что имеет место баг,
Не рассматривали какие то штатные варианты логгирования действий или они не подходят?
3) В текущей 1.3.5. есть косяк с подключением внешних источников, в частности у меня Postgres так же часть кнопок не доступна, нужно долбить ТП
Можете показать реализацию?
1. Вложение 78449 открыли главный экран.
2. Вложение 78448 навели курсор - открылось меню.
Вот на этом месте и вопрос: почему, когда наводим курсор, то меню открывается на всех клиентах, у которых открыт главный экран? Клиенты под разными уч. записями. В программе указано: захват мыши - установить параметр истина, покидание мыши - установить параметр ложь. Параметр, который переключается - подключен к свойству Видимость окна с пунктами меню.
Это как делали вингард. Не зная о проблеме, я скопировал подход, но визуальную составляющую делал с нуля. Когда начал "тестировать" с одного клиента, все работало отлично, решил открыть с другого компа, и тогда обнаружил проблему.
Как вариант - предполагаю, что нужно всё таки сделать главный экран, который будет содержать кликабельные объекты (кнопки - линии, отчеты и т.д.) которые уже будут просто открывать без заморочек заданные окна. Хотелось сделать красиво.
Ну самое огорчающее в этой ситуации - что не могу сделать так, чтобы программа выполнялась на клиентах по отдельности. Но и понимания, как это вообще работает (например, как сайты в интернете) нет. То есть как один сайт с одним экземпляром кода работает уникально у тысяч пользователей. Думаю, что в браузер там подгружается сам код программы, который отрисовывает элементы, взаимодействие и т.д. А в мастерскаде такое реализовано? Раз уж расширение лицензии на дополнительного клиента выходит в копеечку, думаю - что должно быть.
Не рассматривали какие то штатные варианты логгирования действий или они не подходят?
Если правильно понял, Вы говорите о галочках действий (подтверждение, запись в журнал).
В проекте я сделал библиотеку, в которой находится таблица. Над таблицей есть поля и кнопки для заполнения.
Логика следующая: Останавливается линия - происходит запрос в БД о последнем ID записи (запросы через протоколы - Postgres - в созданную для этих целей таблицу). ID получен - назначается следующий по порядку, фиксируется время. Назначенный ID + время начала остановки записываются в БД. Далее, если линия запускается - по этому же ID происходит запись времени окончания остановки. Так по кругу запусков-остановок.
Оператор выбирает из таблицы нужный ID записи и вносит в поля данные (причина, узел, комментарий) и жмет "Подтвердить". Происходит обновление строки с этим ID.
Это сделано по той причине, что встроенный Журнал из палитры не предоставляет нужного функционала (есть только комментарий, который вносится от руки) (писал по этому вопросу в ТП, закрыли заявку, возможно модернизируют). А нужно, чтобы причины простоев были систематизированы, для корректных отчетов (у меня причины и узлы выбираются из выпадающего списка).
Вот там и нужен вызов ФБ для получения имени пользователя, который подтвердил простой.
Пока что выход из ситуации вижу такой: поставить время авторизации группе, например, "Операторы", около 3мин. Чтобы авторизованных отключало автоматически, а каждый, кто будет заходить - будет "последним" и, предполагаю, что ФБ будет отрабатывать корректно (но это не точно). Другая проблема - как правило - операторам не нужно лишних движений, и каждый раз авторизовываться чтобы проверить, всё ли подтверждено и учтено - им будет лень и сложно.
В текущей 1.3.5. есть косяк с подключением внешних источников, в частности у меня Postgres так же часть кнопок не доступна, нужно долбить ТП
Я отработал модуль отчетов в 1.3.4. Пока не занимался этим в 1.3.5, не знаю, что меня там ждет, кроме отсутствия конструктора запросов.
Но из того, что сейчас актуально для меня - это использование ФБ SqlRequestWithResult. Ранее тут обсуждалась проблема с тем, что ФБ возвращает "Result is not array" но о её решении так и не было написано. Предполагали, что проблема в том, что бесплатная версия RT не позволяет вызвать этот ФБ. Я попробовал на лицензии (PRO на 1000 точек). И результат тот же самый. Запрос через pgAdmin возвращает нужный результат, этот же запрос в протоколах также работает корректно, записывает в массив структур, и отображается в таблице. А ФБ почему-то не хочет работать. Если по этому вопросу есть какие-либо варианты действий, подскажите, пожалуйста.
Планы на скаду были наполеоновские, несмотря на отсутствие опыта работы с ней, относительно быстро разобрался в основах. Но чем больше пытаюсь сделать, тем больше появляется проблем. БОльшая часть решается со временем, но раз я дошел до того, что сам пишу на форум - это, возможно уже отчаяние))
Как нас учили, первый экран должна быть авторизация, ввод имени пользователя и пароля и уже далее в зависимости от статуса,
открываются главный экран, тех процесс или что там нужно.
2. не уверен, но кажется похожая тема всплывала (не именно с меню но что-то похожее). Суть, в захват мыши как-то надо добавлять кто ее захватил, какой-то параметр.
kondor3000 - учили костылям? :). Ну пример, открыл на работе клиента и не вышел. Потом из дома или еще откуда опять зашел под собой, что, на работе на мониторе будут выполняться те же действия? Это че за такой Web сервер, который так делает?
kondor3000 правильный Web сервер, а не черте что в данном случае. :)
пока я не прочитал выше написанное, преспокойно пользуясь RapidScada как-то и не задумывался, что может быть иначе. я могу входить хоть с нескольких ПК под одним пользователем. Тем более при входе разными пользователями (с доступом к управление и без оного) действия одного пользователя не отражаются на мониторе другого, даже если они открыли одну и ту же мнемосхему.
А тут явно, что-то нечистое творится :)
Вообще все действия должны выполняться на клиенте, который подключился к Web серверу, а не на Сервере с ретрансляцией картинки клиенту.
На сервере должен выполняться только бекэнд, а отрисовка у клиента.
Часть про бэкенд это капец как в точку. Я не понимаю, неужели никто кроме меня не сталкивался с такой проблемой? Неужели разработчики мастерскады действительно сделали обычную HMI панель для ПК за дорого? Как же тогда люди вообще используют такую систему "диспетчеризации"?
У меня ощущение, что я просто где-то не поставил галочку типа "много клиентов", от чего и транслируется везде "один клиент" (бэк). Как теперь воплощать то, что мастерскада, по моему мнению, на данный момент, просто не умеет?
Хорошо, я нарисую мыло, оно будет выводить данные по работе оборудования, собирать статистику, но это будет совершенно не юзер френдли получается, и смысл тогда, что я долго и упорно выпрашивал покупку расширения лицензии на клиентские места, если это получается *типа неактуально*?:D
Решение точно должно быть. Покупать другую скаду не будут, хотя уже хочется)))
Cо сложными вопросами лучше сразу идти на https://support.masterscada.ru , здесь техподдержки 4D нет. Там небыстро, но ответят по делу
Нужно делать через параметры окна. Предположу, что у вас три окна: главный экран, меню иконок и пункты меню.
В каждом окне нужно добавить параметр окна с типом "bool", например:
- главный экран - "showHideMenu"
- меню иконок - "showMenu"
- пункты меню - "hideMenu"
Добавить для:
- меню иконок - "Захват мыши" -> Установить параметр (Источник: True; Приемник: showMenu)
- пункты меню - "Покидание мыши" -> Установить параметр (Источник: False; Приемник: hideMenu)
На главном экране связать параметры "showMenu" и "hideMenu" с "showHideMenu" исходящей связью. Для этого выделите окно: Свойства -> Параметры.
Параметр "showHideMenu" связать с видимостью окна "пункты меню" (Видимость по умолчанию: False).
Пока-что не проверял, но ощущение, что это никак не решает проблему с отображением на разных клиентах. Вы описали тот же процесс, что уже реализован, только немного изменив логику. В Вашем случае - если пункты меню расположены горизонтально, то после наведения курсора и появления подпунктов, если мы проведем мышью вбок - на соседний пункт меню, а не на открывшееся уже подменю, то оно не закроется до тех пор, пока не вернем курсор и не уберем его снова, только на этот раз, в область, где нет пунктов меню, чтобы опять что-то соседнее не открылось.
Плюс в визуализации нединамично работают эти события, пример: (открыто 2 клиента в главном меню) Если мы навели курсор на меню и открылись подпункты, то, нажав на нужный подпункт, который откроет нам другое окно - на другом клиенте подменю останется, и не закроется до тех пор, пока там не наведём-уберём курсор))))))))))))))))))))))))))))))))
Вообще иногда складывается ощущение, что большинство проблем можно решить установкой времени цикла программы 1мс (изменения будут обрабатываться с большей частотой), но посмотрев различные видео и почитав всякие инструкции - в основном время цикла используют от 100мс. Что если поставить минимально возможное время цикла, в которое будет укладываться выполнение основной задачи? Смысл вообще есть или нет? Процессор i5-13400 и проект относительно небольшой.
Но опять же, проблему с обработкой клиентов по отдельности это точно не решит.
В поддержку скады писал по этому вопросу, попросили видео с проблемой, проект и т.д., пока не отправлял, но в скором времени...
Попробуйте открывать окно меню не через установку параметра (он один для всех клиентов), а через открытие всплывающего окна при захвате и закрытии при покидании.
1) При экспорте графика через тренды, в файле csv разделителями дробных чисел служит точка, из-за этого число воспринимается как дата. Кто нибудь сталкивался с этим?
2) Как в отчете (через ReportFB) вставить имя текущего пользователя, который выгружает отчет?
Asgardian а разделителем между числами запятая?
Предположу, что открывая csv самим exel срабатывает культурное наследие дробного разделителя для России , (запятая). А при сохранении double и float записывает программа как они представлены в ней с . точка
Посмотрите, видео
Так надо(касательно окон)?
https://dropmefiles.com/btw6D
Если нужны запросы конкретно для отчетов, то нужную структуру ( массив структур ) можно добавить в сам отчет.
Текст запроса подготовить в отдельной программе
если SqlRequestWithResult не работает( странно, я думал его пофиксили)
можно работать с запросом непосредственно с протоколом, добавив нужный тип в выход ( то есть в протокол добавить отдельные запросы для select, update и т.д.
Не совсем понял вопроса. У меня число 25.6 отображается как 25 июня
Нашел в настройках Excel пункт использовать системный разделитель, через него проблема решается вроде
25.6 потому что в Русской локали это число должно выглядеть как 25,6
И тут либо ковырять настройки exel, либо локаль, либо при записи менять для Русской локали.
VladGC то есть чтобы так работало недостаточно мнемосхеме дать доступ нескольким пользователям, но еще и поколдовать с настройками ?
Предположу что именно так и надо.
1. CSV в excel нужно импортировать в utf (см скрин) что для трендов, что для журнала событий
2. Тот кто выгружает отчет или строит его ?
Отчет в задаче экрана не строится, он работает для всех одновременно и строится на сервере.
Возможно конкретно эта функция - геморройная для реализации
Нет, что то отдельно не настраивается
Добавил кнопку на главный экран, на кнопку повесил событие - захват мыши > открыть всплывающее окно
Во всплывающем окне добавил кнопку, событие клик - открыть окно > связал нужное окно , связал фрейм где открывать
Тут пользователи в принципе не добавлены, просто у каждого клиента есть свой sessionId
Если пользователи/группы все таки есть, то можно заблокировать те или иные кнопки ( но не скрывать, хотя мне было бы интересно скрывать админские или сервисные кнопки если юзер не в группе админов , это недостаток конечно)
Накидал пример Вложение 78475 с тремя уровнями меню. Вся логика в программе на ST, которая назначена в задачу экрана. Код не оптимизирован, цель просто показать один из способов реализации. Для меню с малым количеством пунктов и подменю такой способ подойдет, для более сложного можно написать свой компонент.
и все эти действия в Scada, у которой куча компонентов типа насосиков, вентиляторов и прочего барахла?Цитата:
Добавил кнопку на главный экран, на кнопку повесил событие - захват мыши > открыть всплывающее окно
Во всплывающем окне добавил кнопку, событие клик - открыть окно > связал нужное окно , связал фрейм где открывать
суть не в меню как таковом, а в том, что надо назначать "захват мыши", "события клик" и так далее....
Доброго Всем !
Мастер скада 4д демо 32 тега по протоколу ОРС UA (на одной машине- 127.0.0.1:139) подключилась без загрузки к Мастер ОРС универсал модбас 32 демо, увидела все дерево (раннее скачанное) елементов из сервера. Данные на сервер поступают из симулятора ModRSSim2. В скаде при подключении в протоколе ОРС UA "отказ- false", но данные с сервера не передаются StatusCode- BadWaitingForInitialData.
Вопрос- подскажите алгоритм поиска причины отсутствия связи.
Просматриваю свой пост через 15 мин.- и вижу время поста "вчера, 23:52", хотя на часах компа "22:17 05.09.2024" ...
Может время системное рухнуло... где-то. На сервере с реальным временем совпадает.
Время настраивается сменой часового пояса в настройках профиля.
По OPC - ошибка говорит о том, что не пришло/не приходит значение, можно попробовать создать еще один опс с нужным адресом, там подключиться с загрузкой, выбрать теги, которые точно передаются из сервера, загрузить конфигурацию, посмотреть результат.
Доступ к переменным (чтение/запись) выставлен на сервере? Чтение обычно работает сразу.
Если вопрос касается управления показателями (запись), то нужно привязать выходные переменные либо к дереву объектов, либо, для пробы, к элементу на мнемосхеме.
Как же много сделали для обхода того, что нечаянно с обновами могут сломать))) Можно же и джейсонами через пайтон вообще работать с бд))))
Ну суть мне ясна. Просто в моём случае видов отчетов несколько, а менеджер тревог (о котором я рассказывал выше) - уже занимает много "пространства" в протоколах, хотел сократить с помощью ФБ, а тут оказывается с ним какая то фича(баг)... Понятно понятно.
Ну я всё равно не сдамся, буду идти к цели, ждать фиксов.
Добрый день!
Как открыть одно из всплывающих окон без строки заголовка? У шаблона экрана есть свойство "Высота заголовка всплывающих окон", в описании "Эта настройка может быть переопределена на уровне конкретного элемента в его собственных настройках", каким образом переопределять это свойство для разных окон?
Приложу еще пример на всякий случай
https://dropmefiles.com/i5Zc4
Судя по всему, для отдельных окон, простых путей не будет или нет. Лучше написать предложение в ТП, мб добавят когда нибудь
Как выше писали - механизм универсальный, кому то захват мыши на элементе, кому то клик по кнопке
Так то есть стандартный механизм:
взять окно и правкой кнопкой мыши перенести на мнемосхему и выбрать нужное действие открыть окно или перейти.
В принципе не страшно, если типизировать, что насосы что вентиляторы, то будет быстрее
если в одном проекте 10 насосов на экране, в другом 12 и т.д.
То можно скриптом их размещать на экране, но это отдельная история
Добрый день! подскажите, пожалуйста, как поставить Run-Time и MasterOPC ModBus на linux?
Добрый день!
https://dropmefiles.com/OrcEn
Файл с инструкцией по подключению к FTP серверу, где лежат дистрибутивы к разным ОС, а также инструкции по установке.