А чем не подходит минилегенда?
Вид для печати
А чем не подходит минилегенда?
Для АРМа использовать минилегенду ещё можно, но у нас ещё проект для панели с невысоким разрешением экрана.
Печать графиков стандартными средствами MasterSCADA во вложении. Вы бы предоставили такие графики заказчику?
Образец нормального графика (другая скада) также во вложении.
Примеч. Для объектов с типизацией использование пользовательских названий перьев и подписей графиков не возможно,
пришлось без применения типизации дублировать объекты, содержащие архивные переменные.
В общем, модуль трендов по нашему мнению нуждается в доработке.
Здравствуйте, подскажите можно ли запускать скрипт по условию?
Например если событие верно, то скрипт работает, а если событие ложь, то скрипт не исполняется?
И второй вопрос, подскажите, мне нужно записать в значение переменной в дереве объекта (вещественная дв. точности) значение из кода скрипта. Понимаю, что можно связать переменную с входами/выходами скрипта, но мне так не надо. Запись будет происходить по условию. Я так понимаю через setvalue? покажите, пожалуйста пример строки записи, как будет выглядеть.
что-то типа записать в energy число 10:
SetValue("Объект.Объект 2.energy.Value", 10, МеткаВремени);
Спасибо, с условием все понятно, а с записью немного не понял:
когда пишу такой код:
т.е. хочу записать 100 в переменную energy если произошло событие откат, то ругается - счетчик.Скрипт" : (CS1023) Embedded statement cannot be a declaration or labeled statement в строке 14Код:var elem = (ITreePinHlp)HostFB.TreeItemHlp.Project.Item("Объект.счетчик.energy");
elem.AddAssignValueTask(100,null);
https://b.radikal.ru/b01/1712/df/7fd79a87c084.jpg
помогите разобраться, пожалуйста, а что не так.
Все, разобрался, скобки {} не поставил после if ))))
Огромное спасибо!!! Все заработало.
MasterScada, подскажите, а если с помощью скрипта надо записать значение одной переменной в значение другой переменной?
Например - значение Объект.счетчик.Скрипт.Входы.energy_max в Объект.счетчик.energy.
Что-то типа:
Код компилируется, только не работает, ошибку выдает при исполнении. Я тут что-то напутал.Код:var elem = (ITreePinHlp)HostFB.TreeItemHlp.Project.Item("Объект.счетчик.energy");
elem.AddAssignValueTask("Объект.счетчик.Скрипт.Входы.energy_max",null);
https://c.radikal.ru/c09/1712/b2/47af1f9de051.jpg
Добрый день. Выполняю проект в МастерСКАДА 4Д, оборудование опрашивается по Лектус ОПС. Помогите решить два вопроса:
1. Все переменные выведены на ОПС, работа ОПС корректна (все опробовано в ручном режиме). Добавил в проект как ОПС ДА. Как привязать параметры объекта к выходам ОПС? Т.е. на вход перменные ОПС привязались к параметрам просто перетаскиванием, а вот выходные никак не привязываются.
2. Как подсчитывать количество необходимых тегов, например, 2 DWORD будут считаться как два тега или или как 4? Какой объем информации подразумевает 1 тэг?
1. Ответить на ваш вопрос сложно, не видя проекта, его деревьев, какие параметры вы пытаетесь привязать друг с другом, в любом случае придерживайтесь правила Источник данных перетаскиваете на Приемник данных, т.е если у вас канал на чтение и на запись и параметр тоже на чтение и на запись, то чтобы сделать двунаправленую связь нужно перетащить канал ОРС на параметр, а потом параметр на канал ОРС. Если не получится, то ждем обращение от вас на адрес технической поддержки с описанием того, что вы хотите сделать, какую версию вы используете среды разработки, а также не забудьте приложить отчет об ошибках (круглая кнопка слева -пункт меню отчет об ошибках).
2. 1 канал=1 тег, тип данных канала может быть различный. Сколько у вас используется всего каналов группе Протоколы, в группе "Встроенные каналы"и в группе "Внешние каналы" - на такое количество тегов и нужна будет среда исполнения.
SCADAMaster, спасибо, вы настоящий мастер. Подскажите сколько одновременно выполняющихся скриптов сможет переварить Мастерскада? Нет таких данных? Понимаю что многое ещё зависит от компа, у меня просто 600 счётчиков где-то, а это примерно более 1000 скриптов в проекте. Вот думаю, а мастерскада вообще сможет их осилить?
Таких данных у нас нет.
Возможно стоит уменьшить количество скриптов усложнив код - в одном скрипте производить обращение к разным переменным.
Получить значения тега по имени - также
elem.GetRTPin().ObjectValue;
Потому приводите то что получите к нужному типу:
double MyDouble=Convert.ToDouble(elem.GetRTPin().ObjectVa lue);
Предварительно проверил что ObjectValue не равно Null
Добрый день, подскажите пожалуйста возможно ли через меню MasterScada4D выбирать/открывать/скачивать файлы из папки reports ? Каким инструментом это возможно сделать? Проводник аля MasterScada?
Напишите, пожалуйста, мне на почту support.ms4d@insat.ru
Есть решение выбирать из сохраненных отчетов, но оно не самое тривиальное, хотелось бы более простое решение. Я постараюсь выяснить у наших специалистов оптимальное решение и подготовлю вам пример.
Только начал пользоваться MasterScadой.
Расскажите, существует ли общепринятый способ двунаправленных элементов управления?
То есть чтобы например, некий параметр (в общем случае который может самостоятельно изменяться) принимался в скада-систему и отображался, и чтобы в этом же самом месте где он отображается пользователь мог его скорректировать и записать новое значение?
Еще вопрос про "тренды". Можно ли сделать так, чтобы все графики имеющие одну размерность отображались относительно друг друга в одном масштабе, то есть чтобы ось OY имела общую шкалу для всех?
Можно ли сделать справа дополнительную шкалу и вывести некоторые другие графики по этой второй шкале?
1. Команда. На вкладке Опрос выхода есть поле "Обратная связь". Перетащите туда ОРС переменную или выход ФБ "Повторитель" (что лучше). Затем команду вытаскивайте на мнемосхему. Тогда команда будет работать и на ввода и на отображение.
2. Можно. В свойствах оси можно жестко привязать ее к одной из осей. Осей можно добавить несколько. Посмотрите видеопримеры по трендам:
http://www.masterscada.ru/about-masterscada/video/
Доброго времени суток, кто-нибудь делал гистерезис на CFC, который не из UTIL.LIB.
Второй день сижу, туплю, фб HYSTERESIS оперирует INT, а нужен REAL... (для фб HYSTERESIS шаг в уставке получается 0.5 бара из-за округления, не подходит)
Пс. управление поршневым компрессором - от 0 до 10бар накачиваем, останавливаемся. После падения давления ниже 6 - опять накачиваем.
Псс. прошу сильно не пинать - перехожу с ардуины на нормальные средства автоматизации...
Вложение 34869
Данный вопрос следует задать в разделе ПЛК или Codesys
ScadaMaster, подскажите, при нерабочем аккумуляторе ПЛК-100 не успевают сохраняться переменные по трем счетчикам retain при отключении питания. Показания как бы откатываются назад, обычно на ноль или на меньшее чем было. Подскажите, как лучше сделать восстановление из архива в Мастерскада? Всю голову сломал. Работаю на тестовом ПЛК с отключённом аккумулятором. Время плк научился восстанавливать с компьютера в автомате, а вот с показаниями - запутался в скриптах мастерскады, то работает то не работает. Может есть у кого опыт как как восстановить после отката показания? Работаю в связке мастерскада - универсальный ОПС сервер - плк-100.
Вообще батарея у нас при сохранении переменных никак не используется.
Есть такая настройка в контроллере "Горячий рестарт". Там задается время с которых сохранять данные. Раз в секунду для ПЛК100 - очень опасно, так как его Flash любит рассыпаться.
Поэтому можно задать этот параметр например 3600, и использовать вход "Сохранение данных" (поменяли что-то, подали сигнал).
Подскажите, где найти эту настройку? Все облазил, не пойму. Если дело именно в этом, то это решит мои проблемы.
Дело в том, что у меня на объекте из примерно 300 контроллеров ПЛК-100 в примерно 90 контроллерах при кратковременном отключении питания обнуляются переменные, хранящие показания счетчиков. Во всех этих контроллерах надо менять аккумуляторы. Они вздувшиеся, не рабочие. После замены аккумулятора проблема уходит года на 2-3 до следующей замены. В одних ПЛК поменяешь - подходят другие, замучились. Руки до всех контроллеров естесственно не доходят чтобы поменять везде. Постоянно висит на замену акк как минимум 50+ контроллеров. Поэтому хочу решить на программном уровне. Если обнулились, то записать из скады последние корректные значения. И такая же ситуация на тестовом ПЛК, в котором я имитирую неисправный аккумулятор (я его отпаял, т.е. его нет на плате) - при отключении питания на таком ПЛК обнуляются переменные счетчиков, а при нормальном аккумуляторе при отключении питания - нет. Да, забыл сказать - контроллер с codesys'ом, не с мастерплк. Мастерскада получает данные из универсалного ОПС сервера. На кодесисовском плк + универсальный ОПС сервер возможен горячий рестарт и как?
В палитре ФБ, в разделе Библиотеки, есть такой скрипт "Сохранение и загрузка наборов команд". Этот скрипт сохраняет значения команд в файлы и при необходимости может их подгрузить.
Используйте его. Периодически сохраняйте настройки, а при перезагрузке ПЛК выполняйте считывание - в команды запишутся значения и они запишутся в контроллер.
При работе в MasterOPC в режиме Slave не получается с помощью server.WriteTag записать значение тега: сразу после записи тег показывает правильное значение, но тут же меняет его на последнее, которое было записано по сети или вручную
В логе сообщений лишних строк о записи значений в теги нет
Подскажите причины такого поведения и как победить
У меня такое было, пока не поправил код в программе, не забывайте, что в программе плк переменной тоже может присваиваться какое-то значение, программа же на плк выполняется по своему циклу.
Спасибо! Я сделал немного по другому, не знаю правильно или нет, но работает - регистрирую сбой часов плк, затем восстанавливаю время в плк в автомате программой плк, передаю скаде код сбоя часов, по этому коду скада понимает что произошел откат и запускает скрипт поиск максимального значения по архиву и делает запись найденного значения как нового для переменной.
Добрый день,как округлить переменную?
Для этого можно использовать Расчет - функции floor( ) и ceil( )
День, добрый!
Подскажите пожалуйста, как реализовать следующее действие. Допустим есть станция отгрузки, к ней постоянно подъезжают автоцистерны и необходимо вносить, а в последующем и иметь возможность выбора ФИО водителя и № машины, для того чтобы в дальнейшем привязать расход на ту или иную цистерну. Как осуществить возможность внесения и отображения на экране мнемосхемы в процессе выполнения программы. Возможно где-то есть примеры или про это можно почитать, к сожалению, пока ничего не смог сделать в данном направлении.
Заранее спасибо.
Подобные задачи обычно решают с помощью SQL.
Делаете окно мнемосхемы, в нем размещаете компоненты для ввода (номера машины, фио и т.д.). Когда загрузка завершается, фиксируется отгруженный вес. Выполняется хранимая процедура, которая записывает все значения (номер, фио, вес и прочее) в базу данных.
Если нужно это будет посмотреть - то используют редактор отчетов.
Как работать с базами данных через процедуры:
http://insat.ru/metodicheskie-materi...0%BC%D0%B8.pdf
Собственно у меня на данном этапе вопрос то и стоит в том, какие использовать компоненты скады для ввода (номера машины и ФИО), даже не суть чего именно вводить. Пока не могу понять как это реализовать в принципе, внос и запись информации с возможностью дальнейшего ее выбора в программе.
Обычные команды - тип строка и вводите.
Если есть определенные требования, то тогда можно написать свой ВФБ на C# с полями нужной вам формы.
С выводом все делается через редактор отчетов. В нем можно обратится напрямую к СУБД, сделать SQL запрос - сформируется таблица.
О том как выполнять запросы из редактора, описывается также в документации на которую дали ссылку.
У меня перестали отображаться вкладки СВОЙСТВА СЛОВАРЬ и ДЕРЕВО. Как восстановить их стандартное месторасположение в редакторе?
Самый простой вариант - удалите папку:
c:\Users\Имя пользоватея\AppData\Local\Stimulsoft\
При закрытой скаде
Добрый день.
Можно ли сделать, что бы вход под паролем разработчика как то отображался на стартовой мнемосхеме.
(мигание текста или мигание какого либо графического элемента). А при входе под любым другим
паролем этот текст или графический элемент был скрыт (не отображался).
Спасибо.
В разделе Служебные, есть ФБ "Служебная информация". С его помощью можно определить должность вошедшего в систему. Затем через входы динамизации можно скрыть элементы, если должность не та