kyzzechka MasterOPC ModBus на linux вы не поставите, он Windows. Вам придется пользоваться драйвером Modbus в комплекте с MS4D
kyzzechka MasterOPC ModBus на linux вы не поставите, он Windows. Вам придется пользоваться драйвером Modbus в комплекте с MS4D
По теме раздельной работы пользователей хочу подвести итог, возможно кому-то будет полезно:
Свойство "Место исполнения" - это как раз та "галочка", о которой я говорил (включить выполнение на клиентах по отдельности).
ФБ GetCurrentUsername может вызываться не только в дереве объектов (иных примеров я не находил), но и в программах.
Программа, место исполнения которой указано "в основной задаче узла" и которая вызывается кнопкой с экрана или любыми другими действиями, будет как раз работать "одна на всех" - то есть изменения будут отображаться для всех клиентов.
Если мы ставим место исполнения "в задаче экрана", то программа будет вызываться только у клиента, который её вызвал (нажатием кнопки и тд), и оказывается, что вставлять её в объект, где этот экран находится - необязательно.
Такая программа может исполняться периодически, что как раз помогает реализовать мою тему с меню, а также с корректным получением имени пользователя при квитировании записей простоев.
Пример:
Есть экран с иконками меню. Создаем программу ST, место исполнения "в задаче экрана", входы: "наведениеИконка", "наведениеМеню", выход: "видимостьМеню". В настройках иконки мы указываем событие "Захват мыши", там добавляем действие "Установить параметр". Источник - TRUE, а приемником будет входная переменная программы "наведениеИконка". Далее добавляем событие "Покидание мыши" - "Установить параметр". Источник FALSE, приемник "наведениеИконка". Тоже самое проделываем с контейнером окна, в который вставлено окно меню, только переменная будет "наведениеМеню".
Видимости контейнера назначается выходная переменная "видимостьМеню", она равна "наведениеИконка" ИЛИ "наведениеМеню". Изначально думал, что будет пропадать при переводе с иконок на контейнер, но если на схеме их поставить вплотную - то все работает корректно.
Теперь меню работает как и должно - на разных клиентах то отображение, которое им нужно, а не общее на всех.
Проблема: при клике на один из пунктов меню, который открывает другой экран и возвращению обратно в главное меню, оказывается, что меню не закрывается, то есть "Покидание мыши" не работает. Чтобы пофиксить - нужно добавить к обоим элементам (иконки, контейнер меню) событие "Потеря фокуса" - источник FALSE, приемник - та переменная, которая отвечает за видимость. Всё отлично работает.
По пользователям - в этой же программе добавил вызов ФБ GetCurrentUsername, условие - ЕСЛИ переменная ТО вызов, добавил кнопку на экране, и назначил на клик мыши "Выдать импульс", приемник - переменная для вызова.
На экран добавил текст, туда передаю значение, полученное из ФБ GetCurrentUsername при вызове.
Открываем скаду на двух экранах, логиниться можно под одним пользователем, можно под разными.
Жмем кнопку на одном экране - на нём же поялвяется имя пользователя, а на втором экране пусто.
Жмем кнопку на втором - также появляется имя пользователя, равное тому, с которого была авторизация, а на первом экране значение не меняется.
В документации вызов GetCurrentUsername делается через события, а результат уже передается куда нужно, но у меня были какие то проблемы с ним. Возможно теперь, понимая подход, всё получится сделать и через события.
На самом деле, с недавних пор разработчики добавили поддержку linux-систем, что заявлено в т.ч. на сайте:
https://masteropc.ru/#!/tab/272549184-5
Сами не пробовали, и не факт что работает без косяков, но есть такая опция.
Последний раз редактировалось Larrrik; 09.09.2024 в 10:28.
Larrrik если это OPC DA то его работа предполагается только в Wine. Даже так, что и Wine может не помочь...
из справки
Ограничения Linux версии по сравнению с Windows версией:
•Отсутствует OPC DA и OPC HDA - данные технологии базируются на DCOM, которая не является кроссплатформенной. Аналогично не поддерживаются плагины OPC DA и OPC HDA клиента.
Последний раз редактировалось melky; 09.09.2024 в 10:37.
1)Есть возможность в журнале действий пользователя как то назначить ввод комментария при изменении числового значения?
2)Возможно ли назначить обязательный ввод комментария при квитировании аварии (чтобы без комментария авария не квитировалась)?
Проблема.png
Добрый день! Подскажите пожалуйста, пытаюсь создать отчет в MasterSCADA4D по обучающему ролику - в настройках архива данных при указании в меню "Формирование значений" - "Периодический", происходит бесконечное построение отчета, после чего (спустя минуты 2) SCADA просто отрубает АРМ и выдает ошибку. В случае если в меню указывать Формирование по "Изменению", то формируется просто пустой отчет. То есть архивные параметры вообще никак не хотят поступать в отчетМожет кто сталкивался, подскажите пожалуйста решение?
Добрый день!
Также делюсь результатами по работе с ФБ SqlRequestWithResult.
Чтобы всё работало - надо внимательно читать инструкцию (почему-то для меня не очевидно с первого прочтения, о чем там написано): сперва добавить ФБ в библиотеку, и в наследнике нужно выделить выход Result, а в панели свойств указать тип значения на массив структур, которые соответствуют результатам запроса. Вот тип значения я не менял изначально, от этого и была ошибка "Type of Result is not ARRAY". После исправления ФБ работает, есть возможность сократить кучу отдельных запросов в протоколе.
Здравствуйте! Создали проект на MS4D c протоколом ModBus TCP, передача через последовательный порт COM1 на Windows. подскажите, при переносе проекта на Linux, где и как отследить, какой будет порт для передачи (аналогичный com 1 на Windows)?