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 если это OPC DA то его работа предполагается только в Wine. Даже так, что и Wine может не помочь...
из справки
Цитата:
Ограничения Linux версии по сравнению с Windows версией:
•Отсутствует OPC DA и OPC HDA - данные технологии базируются на DCOM, которая не является кроссплатформенной. Аналогично не поддерживаются плагины OPC DA и OPC HDA клиента.
1)Есть возможность в журнале действий пользователя как то назначить ввод комментария при изменении числового значения?
2)Возможно ли назначить обязательный ввод комментария при квитировании аварии (чтобы без комментария авария не квитировалась)?
Вложение 78570
Добрый день! Подскажите пожалуйста, пытаюсь создать отчет в MasterSCADA4D по обучающему ролику - в настройках архива данных при указании в меню "Формирование значений" - "Периодический", происходит бесконечное построение отчета, после чего (спустя минуты 2) SCADA просто отрубает АРМ и выдает ошибку. В случае если в меню указывать Формирование по "Изменению", то формируется просто пустой отчет. То есть архивные параметры вообще никак не хотят поступать в отчет :( Может кто сталкивался, подскажите пожалуйста решение?
Добрый день!
Также делюсь результатами по работе с ФБ SqlRequestWithResult.
Чтобы всё работало - надо внимательно читать инструкцию (почему-то для меня не очевидно с первого прочтения, о чем там написано): сперва добавить ФБ в библиотеку, и в наследнике нужно выделить выход Result, а в панели свойств указать тип значения на массив структур, которые соответствуют результатам запроса. Вот тип значения я не менял изначально, от этого и была ошибка "Type of Result is not ARRAY". После исправления ФБ работает, есть возможность сократить кучу отдельных запросов в протоколе.
Здравствуйте! Создали проект на MS4D c протоколом ModBus TCP, передача через последовательный порт COM1 на Windows. подскажите, при переносе проекта на Linux, где и как отследить, какой будет порт для передачи (аналогичный com 1 на Windows)?
Вложение 78676
Добрые люди, подскажите пожалуйста, как перевести отображение по нашему формату?
Все настройки перерыл, в системе время отображается нормально, региональные настройки выставлены
kyzzechka аналогичного порта на Linux не будет. Там будет что-то вроде /dev/ttyUSB0 или /dev/ttyS0 и так далее, в зависимости от устройства.
Если порты на Linux не USB а встроенные (например какой-то чип впаян), то они меняться не будут. Если же порты USB (вы подключаете например преобразователи USB-RS485) то номер ttyUSB(Х) будет меняться в зависимости какой первым воткнете, если преобразователей больше одного.
У вас какой случай? правилами udev можно зафиксировать преобразователь на нужном имени порта, а каким он там по USB(X) окажется фиолетово.
Если что, описывал у себя в блокноте как и что.
https://krdburan.blogspot.com/2020/02/udev-com.html
Добрый день. Столкнулся с тем, что всплывающие окна уходят на задний план в полноэкранном режиме. В предварительном просмотре мнемосхем эта неисправность также присутствует. При этом в оконном режиме все хорошо.
Версия: 1.2.12.21403(MPLCD_1_2_20210223.1)
Вложение 78787
Данный пункт должен быть во всех редакторах.
https://www.stimulsoft.ru/blog/artic...ion-in-reports
Добрый день. У меня похожая ситуация. Создаю проект на win, modbus RTU master - номер порта 1. Запускаю на винде, все хорошо запросы идут.
Теперь запускаю на этот проект на Linux RT, сразу появляются вопросы
1. Какой порт мне слушать? ttyS0? Пробовал его cat /dev/ttyS0...там тишина
2. Если я в проекте хочу задействовать 2 порта, какие тогда порты будут задействованы на lin машине?
Пробовал при создании проекта в номере порта указать ttyS0..ругается, говорит номер давай.
Роман_М какие у вас порты? USB-RS485? или встроенные?
dmesg | grep tty что показывает?
если порты USB-RS485 можно ввести dmesg | grep usb
мои устройства
Вложение 78872
Ну надо по справке посмотреть как правильно прописывать порт в Linux, чтобы его RT правильно идентифицировал.
Полагаю настройка связи номера и самого порта в Универсальный протокол COM порта находится. А на сам FB уже подается в виде DINTЦитата:
Важно! Для корректной работы функционального блока необходимо добавить протокол Универсальный протокол COM порта. На вход функционального блока нужно подать номер COM-порта, который настроен в протоколе. При работе функциональный блок будет использовать настройки (скорость, четность и др), указанные в протоколе. COM порт остается открытым на протяжении всего процесса работы протокола и функционирует в отдельной задаче, отправляя запросы в очередь для задачи протокола.
з.ы. может быть еще где-то надо связь сделать. Потому что в Linux порты по умолчанию не нумеруются как в Windows
https://support.mps-soft.ru/Help-web...rst_first.html
Вот, разбирайтесь что тут намудрили для Linux
ИМХО - кривой подход, так как у устройства могут быть встроенные порты, например /dev/ttyAM0 и еще и порты USB-RS485 дополнительно.
Если шаблон общий на все, то как его настраивать тогда?
Может нужно в шаблоне имени что-то вставить?
Вложение 78874
Вложение 78875
Именно об этом и говорит справка. Ссылку вроде выше написал. Блин. Ссылка на общую справку.
Работа с COM-портом Linux - в поиск справки вот это напишите
Решена проблема.
1. В MS4D-Сервис-> Настройки среды -> Разное -> Установить галочку "Служебные свойства"
2. В служебных настройках АРМ находим "Шаблон имени последовательного порта"
3. Записываем туда строку /dev/ttyUSB%d (у нас USB преобразователь н Линукс машине определился как /dev/ttyUSB0)
4. В настройках Modbus RTU устройства указываем номер порта 1
Как в отчете сформировать выгрузку данных не интервалу, а по конкретному времени?
В привычной форме выгрузка происходит за интервал от {начало} до {конец} с {шагом}
Получается много строк, с назначенным шагом
Мне нужно 2 строки
Время {начало} ... данные
Время {конец} ... данные
Вопрос к разработчикам. Что необходимо вписать, если есть порты RS485 с именами ttyS0, ttyS1 и еще будут подключены USB-RS485, получающие имена ttyUSB0 и ttyUSB1?
Доброго дня!
Хотел спросить можно где-нибудь найти информацию по подключению к
MasterSCADA 4D
МВ210-101 модуля аналогового ввода с универсальными входами
или что то похожее?
и как нужно подключать модуль к компьютеру?
с документации не пробовали начать? https://support.mps-soft.ru/Help-web/_modbus_tcp_.html
Добрый день. Появился вопрос по элементу Userssetcontrolright
Или впринципе нужен другой подход...
Суть задачи: требуется из под пользователя с полными правами динамически редактировать возможности прав операторов в среде исполнения.
Пока что подход банальный для изучения механики. Кнопка нажата-окно с текстом можно редактировать, не нажата-нельзя.
Как корректно это реализовать?
Текущее состояние: в ФБ Userssetcontrolright прописал все параметры, но управление параметром "разрешить" для окна с текстом не изменяется.
Добрый день, не могли бы вы написать нам на почту support@owen.ru по данному вопросу для дальнейшего детального рассмотрения?
Добрый день.
такая же проблема. не могу обновить.
В SQL создано столбец RobotStop свойства INT. (рис.1)
Если в MS4D пишем Update [1C_to_QS].[dbo].[Monitor] SET [RobotStop]=123 то результат записывается. (рис.1)
Как прописать, чтобы записывался массив данных? (рис.2)
Так и не смог разобраться, как записать массив данных. разложил на переменные и записываю каждую переменную. Это хорошо, когда переменных мало, а если их много?
Доброго времени суток.
подключил ПР103-24.1610.03 к MS4D. по каждому входу идет циклы с разным временем приблизительно 0,1-0,5 мс.
Значения каждого входа не нашел в "Карта регистров Modbus ПР103-24.1610.03.х.0" в документации , есть только состояние Дискретных входов (скрин.1 и скрин.2)
1. как получить из них значения на каждом входе? тогда мы мог фиксировать время начало каждого цикла и вычитанием определять время цикла.
2. или как посчитать время цикла из этих данных?
3. может еще кто, что посоветует для определения время цикла на каждом входе?
Спасибо.
Такое ощущение, что вы текст сообщения через переводчик пропускаете, сначала на китайский, а потом обратно - на русский.
Если вы про состояние дискретных входов - то, что выделено у вас красным - оно и есть (и смотрите лучше инструкцию на сайте овна), каждому биту этого значения в двоичном виде соответствует состояние одного дискретного входа.
Если нужна частота импульсов на входе, то её надо определять в ПР, а не в скаде
Доброго времени всем!
Вопрос по работе с протоколом OPC UA в Masterscada 4d:
Есть устройство, на котором развернут opc ua server. По мимо параметров, в нем используются методы. Есть метод Exec_command, у которого есть InputArgument и OutputArgument.
Когда цепляюсь к этому устройству сторонним клиентом, то в нем вижу этот метод и есть возможность его вызвать (call) и задать входной аргумент (InputArgument), при этом идет обработка и выполнение функции.
Предусмотрена ли возможность вызова метода в Mascerscada 4d? Как это можно реализовать?
Всем привет. Загружаю проект в плк 110-60 MS4D, вношу изменения в окнах визуализации (в главном окне в частности), загружаю, а клиент открывает старый проект без изменений. Подскажите пожалуйста кто что знает.
Спасибо за ответ. Какраз не хотелось плодить сущностей на C#, а использовать штатные средства. Но раз еще не реализовано - будем трудиться.