Посмотрите видеопримеры по скриптам в разделе загрузки ОРС сервера:
http://insat.ru/prices/info.php?pid=6944
Описание функций есть в справке
Вид для печати
Посмотрите видеопримеры по скриптам в разделе загрузки ОРС сервера:
http://insat.ru/prices/info.php?pid=6944
Описание функций есть в справке
Спасибо большое!
Вопрос по скриптам в OPC
Возможно ли использовать тег как, глобальную переменную - при изменении тега одного устройства чтоб автоматически изменялся тег, но уже у других устройств?
Или придется создавать тег с функцией отключения на каждое устройство?
Попробовал так но что-то не получилось:
Нужно по одному событию в скаде отключались сразу 3 - устройстваКод:-- Initialization
function OnInit()
end
-- Uninitialization
function OnClose()
end
-- Processing
function OnWrite()
val,q=server.ReadCurrentTag("PN_SIMULATOR.PD_SIMULATOR.Tag1"); --получаем значение тега
if val==true then --если значение "true"
server.SetDeviceToOnOff (true) --запускаем опрос устройства
server.WriteTagToDevice( "PN_SIMULATOR.PD_SIMULATOR1.Tag2",val,q); -- пробую записать в тег другого устройства
else
server.SetDeviceToOnOff (false) --иначе останавливаем
server.WriteTagToDevice( "PN_SIMULATOR.PD_SIMULATOR1.Tag2",val,q);
end;
end
Можно - выполняя команду server.WriteTag. Но лучше сделать отдельные теги.
A server.RunFunctionFromDeviceByName не будет работать?
Если в каждом устройстве расположить по функции, которая будет блокировать это устройство, и вызывать из одного тега их все.
Да, можно и так сделать.
Всем спасибо сделал.
Добрый день
Отображение значений настроено через шкалы экспоненциальным форматом e2.
Отображается как, например, 2.33+e010. Хотелось бы сделать чтобы экспонента отображалась как e10. Т.е. только два символа а не три. В результате получить 2.33+e10. Возможно так сделать?
На данный момент так сделать нельзя.
Как корректно вести параллельную разработку на нескольких компьютерах?
Хотим ускорить разработку проекта и разделить задачи среди нескольких человек - как им синхронизировать изменения между собой?
Нужно разбить задачу на объекты - один делает одни объекты, другой другие, потом проекты переносятся на один ПК и копируются.
Последовательность примерно такая:
1) В проекте формируется дерево системы - создаются ОРС переменные.
2) Проект копируется (можно папку проекта) и передается разным разработчикам (проекты лучше переименовать - Проект - Сохранить... - переименовать).
3) Разработчики делают отдельные объекты проекта
4) Проекты переносятся на один компьютер, открываются в режим разработки оба, а затем объекты копируются из одного проекта в другой - сливаются.
Приветы. Подскажите пожалуйста элегантное решение. Суть такая: есть 16 переменных текущих событий.
По возникновению события - в переменную "а" записывается значение в формате #####. Далее если возникает еще событие - то оно записывается в таком же формате, но уже в переменную "б". И так до 16 раз.
Код события передается целым числом (их довольно много - более 100). При этом еще и события разделяются по значимости на 5 групп (значимость указана последней цифрой в передаваемом числе).
Как бы красиво сделать журналирование и соответствующие оповещения оператора в зависимости от события и его "веса"? У меня легко вырисовывается схема с 1 переменной кода аварии, но вот с 16ю что-то тупик...
А переменная это в данном случае что?
Подойдет выход скрипта? Тогда задачу можно решить - скрипт ST или Скрипт C#.
Под переменными я имел ввиду - адреса модбас, в которые приточка коды аварий записывает - вот их 16 штук. Пришло в голову не элегантное решение - сделать в скаде нужное кол-во событий, а потом раздублировать с заменой источника. Скаде плохо не станет от ~2000 событий?))
Выход скрипта подойдет, но к сожалению не владею их написанием ;(
Так вам нужно просто сообщения генерировать?
Так сделать несколько событий с одним источником, пропишите в нем коды и генерируйте. События в лицензионном подсчете не участвуют.
источников то 16.
вот так пойдет? ~100 событий с формулой: "a=##### или b=##### или с=##### .............или x=#####" ? или можно проще?
На лицензионный подсчет мне без разницы - безлимитка ;)
Да, можно так.
Здравствуйте.
Возникла такая проблема: имеется кнопка, которая по нажатию в качестве состояния посылает 1 или 0 для определения нужного выхода в объекте "Переключатель 1 к N".
Как логичнее и элегантнее реализовать опрос переменной при начале работы, чтобы изменять состояние кнопки на 1 или 0 (и, соответственно, выход переключателя). Предполагаю, что это можно сделать при помощи события, но не уверен.
Не совсем понятно что именно вам нужно. Какое поведение должно в начале работы?
Опишите вашу задачу подробнее.
Пока реальной задачи нет, только в качестве теста, который потом уже перерастёт в реальный проект.
Имеется некий вентиль и кнопка. По нажатию на кнопку вентиль должен открываться, а по отжатию, соответственно, закрываться. В качестве сигналов от контроллера приходит "Закрыто" и "Открыто". По нажатию и отжатию на кнопку я данные сигналы перевожу в состояние вентиля (то бишь закрыто/открыто) с помощью "Переключатель 1 к N". То есть в качестве номера выхода выступает 1 (открыто) или 0 (закрыто). Это всё работает.
Сейчас возникла проблема такая - нужно при старте работы мнемосхемы сразу же опрашивать сигналы контроллера "Закрыто", "Открыто" и в зависимости от этого подавать сигнал на соответствующий выход "Переключателя 1 к N" и, по возможности, нажимать/отжимать кнопку.
А зачем переключатель?
Может быть просто использовать ВФБ из раздела "Исполнительные механизмы"?
А что именно за ВФБ? В разделе "Исполнительные механизмы" ничего подобного не нашёл (ни с таким названием, ни с подобной аббревиатурой).
Да и вопрос, по сути, не в этом =) А в том как опрашивать сигналы при первом заходе на мнемосхему.
Да, это бы помогло, но на мнемосхеме нужно будет также реализовать кастомные отображения кнопок (именно в виде кнопок, нажатие/отжатие). А на подобных элементах не смог увидеть нормальной возможности изменения изображения.
С этим сам разобрался с помощью событий.
Добрый день.
У меня есть некоторый опыт, но не получается сделать красиво:
Есть расходомер, из него читаются 3 параметра:
Общий счетчик, текущий (суточный) счетчик, мгновенный расход.
Данные записываются в архив по изменению.
Текущие значения отобразить не проблема, проблема в отображении архивных данных и поиск по архиву.
Если данные шкал, например мгновенный расход, отобразить не проблема тем же графиком, то показания счетчика только растут.
Как это лучше сделать?
Что именно нужно сделать с архивом кроме поиска? Поиск нужно вести по времени или по значению?
Нужно смотреть значения счетчика в требуемое время/дату.
Используйте модуль "Расчет" - у него есть функции для работы с архивом, в частности функция поиска значения по времени - AbsArchMomentValue( )
Описание функции есть в справке.
Добрый день Хочу разобраться с технологией OPC UA. Скажите есть ли какие то примеры и какие посоветуйте серверы? Натолкнулся на проблему. В MasterScada 3.7 при переходе на закладку настройки OPC UA выскакивает окно с ошибкой "Could not create a certificate via a proxy".
Серверов пока не так много, например наш Multi-Protocol:
http://insat.ru/products/?category=1271
А также ОРС серверы крупных производителей - Matrikon, Kepware.
Настройка там простая - в Multi-Protocol включаете доступ по UA, в скаде прописываете IP адрес и порт (по умолчанию 55000) и жмете "Подключиться"
Приложите скриншот ошибки, а также сделайте отчет об ошибках.
Для того чтобы сформировать отчет об ошибках:
В Режиме Разработки (DT):
"Проект"-> "Отчет об Ошибках"
Поставьте галочку "Включая конфигурацию текущего проекта". Сформированную папку заархивируйте и вышлите нам. Если размер архива превышает 5 мб, то выложите его на файлообменник (например Yandex.Disk, Google Drive), а нам пришлите ссылку.
Добрый день!
Не совсем понятен принцип работы периодического отчета по разнице. По каким данным эта разница вычисляется? Берется ближайшее значение? или ближайшее сверху/снизу?
Первое и последнее значение на интервале.
Коллеги, подскажите пожалуйста такой момент. У нас сейчас установлена MasterSCADA на 32 тэга, т.е. бесплатная. У заказчика она есть на 500 тэгов. Он обещал нам дать аппаратный ключ от нее на время разработки. Будет ли поддерживать наша MasterSCADA с этим ключом тоже 500 тэгов? Или нужно будет вместе с ключом взять и диск с дистрибутивом и заменить бесплатную версию? Ну и обратный вопрос. Если будет нужно ставить MasterSCADA на 500 тэгов, то когда мы закончим разработку и вернем заказчику ключ, она просто перейдет в режим работы с 32 тэгами или ее нужно будет деинсталлировать и ставить нашу изначальную бесплатную?
Вот скриншот. Проект "пустой"Вложение 21175.
Отчет еще приложите.
Если можно, то еще хотелось бы задать вопрос по лицензированию. Подскажите, пожалуйста, а если у нас останется на ПК MasterSCADA на 500 точек, но ключ мы вернем заказчику, то будет ли она работать в режиме на 32 точки? Просто не очень хочется сносить одну, потом ставить на период разработки другую, а потом сносить ее и снова ставить на 32 точки. И нет ли каких-то проблем совместимости между версиями на 32 точки на 500 точек (вроде бы, в документации проскакивала информация о возможности таких проблем)?
У нас будет значительно больше 32 тэгов. Т.е. мы все равно сможем вести разработку в Demo версии? A Demo имеет ограничение не по количеству точек, а по времени работы, я правильно понял?