Для этого нужно использовать входы динамизации, в частности вам нужен вход динамизации "Отключен".
Подробнее про динамизацию вы можете посмотреть в этом документе:
http://www.insat.ru/services/support...0animation.pdf
Вид для печати
Для этого нужно использовать входы динамизации, в частности вам нужен вход динамизации "Отключен".
Подробнее про динамизацию вы можете посмотреть в этом документе:
http://www.insat.ru/services/support...0animation.pdf
К сожалению, в данной СКАДе можно только отключать изображения по логическому сигналу, а гораздо удобнее было бы иметь возможность их также и включать. Но, говорят, нельзя сделать так. Однако выход есть. По моему небольшому опыту, удобнее всего пользоваться событиями, потому что их можно назвать так, чтобы было понятно, что это событие делает.
Например, если есть насос, и у него возможны три состояния: выключен, включен и авария. Соответственно, есть изображения этого насоса, соответствующие трём состояниям: серый, зелёный, красный. Рисунки должны быть одинакового размера и вообще отличаться только цветом. На мнемосхеме эти рисунки должны лежать "стопкой".
Создаём события под названиями "Серый скрыть", Зелёный скрыть", "Красный скрыть". В формуле каждого события указываем условия, при которых соответствующий рисунок будет скрыт (отключен). Например, если мы имеем два сигнала о состояниях насоса: Включен/выключен (лог. 0/лог. 1) и Авария (лог. 1), то формула для события "Скрыть серый" будет: "Включен ИЛИ Авария", для события "Скрыть зелёный": "НЕ Включен ИЛИ Авария", для события "Скрыть красный": "НЕ Авария". С выходов этих событий подаём сигналы на входы динамизации "Отключить" каждого из изображений.
Можно обойтись и двумя динамизированными картинками, оставив одну как есть, но тогда необходимо правильно их расположить по слоям мнемосхемы (нединамизированная должна лежать ниже всех). Например, снизу вверх: зелёный, серый, красный. Если насос включен, ни серое, ни красное изображения не будут видны, а зелёное останется. Можно ещё дополнить аварийное изображение миганием, тогда при аварии будет периодически меняться цвет с серого на красный, это очень хорошо привлекает внимание.
Обычно для такой задачи используют контрол "выбор изображения".
Здравствуйте, подскажите пожалуйста, есть переменная А, команда Б и событие, как сделать чтобы при переходе А в состояние ВЫКЛ, Б выдала импульс на событие, на секунду его ОТКЛЮЧИВ(состояние - ЛОЖЬ).
В правильном ли направлении я двигаюсь вообще?
Есть емкость №1, в которую насыпается компонент из другой емкости №2, если вес емкости№1 не изменяется(не происходит насыпания компонента), требуется включить пневмомолоток, который "тресанет" емкость №2. Для отслеживания изменения веса, использовал ФБ "Дифференциал", создал событие1, в формуле которого прописал, что если "скорость изменения" дифференциала =0, событие переходит в состояние - Истина. Но мне пришлось ограничить вкл. пневмомолотка "задержкой по времени1", т.к. должно пройти определенное время(компонент должен пройти через шнек и т.д. перед тем, как достигнет емкости№1). Все заработало.
Дальше требовалось чтобы "задержкка по времени1" включалась снова, повторно включая мневмомолоток, если вес до сих пор не начал изменяться. Но как мне сбросить "задержкка по времени1"? Я додумался только сбрасыванием события1 (который в свою очередь сбросит "задержку по времени1", но сбросить мне надо событие1, только когда пневмомолоток отработал.
Очень сильно намудрил, Заранее благодарю за помощь.
Спасибо) а можно с помощью скады сделать такое: Есть переменная с разными значениями, каждое значение это вид ошибки - Можно ли сделать так, чтобы в шаблон текста выводился текст относящийся к одной из многих ошибок. Я придумал только так, создать окно в котором написан кусок текста(общий, шаблонный) а ниже текст привязанный к данной ошибке. На каждую ошибку создать свое событие, и прописать в нем значение переменной равно =1, то появляется текст ошибки 1, =2, =3 и т.д. И в свойствах динамизации отключать текст, когда событие =0. Но в итоге создается большое количество однотипных событий. Может есть средства мастерскады способные решить данную проблему без "танцев с бубном"
Можно использовать перечислимую переменную. Система - Шкалы - Перечислимые. Создаете шкалу, назначаете какое число какому тексту соответсвует. Затем назначаете переменной.
Эту переменную можно использовать и на мнемосхемах и в тексте событий.
MasterOPC 3.1.2
В настройках максимальный разрыв адресов чтения 100, максимальное количество регистров для чтения - 125
OPC сервер шлёт такой запрос:Это запрос на чтение 132 регистров, если правильно понимаюЦитата:
Tx: [0008] 01 03 48 00 00 84 52 09
Если бы это было где-нибудь описано...
Даже интересно стало, пытался применить, но, без описания и примера не выходит ничего. Проблема в том, что для указанного контрола нужно сформировать номер выводимого изображения. На входе две логических переменных, то есть всего 4 возможных значения, из них используются 3. Чем сформировать?
Но есть ещё вопросы. Первый: как сделать, чтобы диапазон значений, вводимых оператором в Команду, был ограничен минимумом и максимумом? Галочку я поставил в окошке "Значение", а сам диапазон где задать?
Второй: почему я не могу изменить цветовую раскраску шрифта при различных соотношениях текущего значения с порогами?
Третий: для чего используются галочки в окне "Цвет"?
Описания для этого окна в программе тоже нет или оно сильно устарело.
Диапазон задается у шкалы. Создаете шкалу, назначаете ее переменной, тогда и будет ограничение диапазона.
Она опять таки определяется раскраской шкалы.
Можно отключить раскрашивание значение в цвет определенного нарушения.
Ничего необычного вроде нет, вот она
Ещё проблемы бывают при работе с ненадёжными линиями, ответ на один запрос (уже отвалившийся по таймауту) иногда принимается за ответ на другой. Насколько понимаю, эту проблему никак не устранить кроме как увеличением времени ответа
Как это может возникнуть в одном цикле? Есть не было получено ответа на запрос, то выполняется новый запрос того же адреса и так заданное количество попыток, после чего выставляется признак качества, порт закрывается и т.д.
Возможно, я неправильно себе представляю, но кажется, наблюдал что-то похожее:
Сервер шлёт запрос, таймаут.
Сервер шлёт ещё запрос, получает ответ на первый запрос
Сервер шлёт другой запрос, получает ответ на повторный первый
В таком случае только увеличивать время ожидания ответа.
Имею прибор, измеряющий ток 4...20 мА, а затем преобразующий измеренные значения в проценты от 0 до 100. Результат преобразования заносится в регистр текущего значения, откуда и считывается OPC сервером в виде целого числа (чтобы получить настоящее значение, это число нужно разделить на 10). То есть практически это float, но без децимальной точки. Я создал шкалу для этой OPC переменной от 0 до 100%. Но в приборе есть ещё уставка, которую нужно считывать и изменять с компьютера. Естественно, что форматы текущего значения и уставки идентичны, идентичны и их шкалы. Но уставку оператор должен иметь возможность регулировать только в пределах 10...15%, не более и не менее. Я представляю это так, что если оператор введёт, например, 30%, то программа выставит 15. Другой приемлемый вариант - программа выведет сообщение о недопустимом вводе и оставит прежнее значение уставки. Чтобы так сделать, на какую переменную нужно назначить шкалу 10...15%? Что будет, если значение уставки, записанное в прибор с его собственной передней панели, выйдет за пределы указанной шкалы?
Наверное, я что-то понимаю совсем неправильно?
Можно сделать так - при помощи расчета.
На вход расчета поступает введенное значение, в расчете проверяется корректность, и результат выдается на выход.
Да, делаете отдельную шкалу для уставки.
Да ничего не будет. Отобразится на экране это значение и все.
Если будет включен контроль аварийных границ - то выведется сообщение.
Спасибо, по такому варианту самое то! Пришлось, правда, все аварийные и предупредительные границы удалить, иначе сообщениями замучает. Теперь понятно, что шкалы работают только на контроль получаемых значений, и не пересчитывается по ним ничего. Я, признаться, сначала думал иначе.
Просмотрел вчера ещё раз ролики по OPC серверу. О масштабировании. Отдельно рассматривается масштабирование входного сигнала (при чтении онли), и отдельно при чтении/записи, но через разные регистры контроллера. Хотелось бы понять, действует ли обратный пересчёт (при отправке команды), если сервер общается с одним и тем же регистром контроллера. Просто сейчас нет возможности подключить железо.
Конечно - пересчет работает в обе стороны, независимо от того привязан к тег к одному или к двум регистрам.
Спасибо. Следующий вопрос: как сделать, чтобы оператор не мог открыть дерево системы и дерево объектов? У меня получилось сделать только, чтобы он не мог их закрыть, а при входе в режим исполнения они появляются. Подозреваю, что, если сделать так, чтобы эти деревья не появлялись в режиме исполнения, то вопрос был бы решён.
UPD Кажется, я сам нашёл: Система>Режим исполнения>Настройки>Внешний вид при активном документе>снять галку с ненужного.
Нет, это делается через права доступа.
Система - Операторы - Права доступа - нужная должность - Навигация в дереве системы, навигация в дереве объектов.
Права доступа к навигации по деревьям я у операторов отнял. Но если при входе в режим исполнения деревья уже выводятся? Даже если навигация по ним запрещена, место-то на экране они занимают, а убрать их невозможно, так как навигация по ним запрещена. С другой стороны, если деревья для операторов не выводятся, а навигация по ним тоже запрещена, то операторы вообще не увидят деревьев, что и требовалось.
Здравствуйте, хотелось бы вернуться к вопросу использования SCADA системы с сенсорной панелью. Можно-ли реализовать так чтобы при нажатии на на задание или приложение клапана, в ФБ регулятор, выскакивало окошко с цифрами для ввода значения. А то пользоваться стандартной клавиатурой Windows не совсем удобно.
Подскажите пожалуйста, с помощью какого ФБ можно запомнить максимальное значение одной переменной? и чтобы сбрасывать можно было
Добрый день
Нигде не могу найти отключения канала сообщений для ФБ "Распаковка аналогового 32бит значений". Появляется сообщение при пропадании связи, когда качество переменной не 192. Текст сообщения просто "Ошибка", источник - выходы данного ФБ.
Вам нужно максимум за любое время, а сброс только вручную?
Тогда можно просто через Расчет сделать:
ЕСЛИ( Значение > Расчет, Значение ,Расчет )
Сброс выполняйте через действие (команды типа "Дискретный" или события).
Проблема в том, что это значение должно сохраниться когда набрался Вес, а когда дозирующее устройство открылось( заслонка), происходит уменьшение веса, а в Расчете я хотел как раз и сравнить: ("Значение веса в настоящ. время" с макс.значением *0,0n) где n- процент допустимого остатка в дозирующей емкости. Интервал этот может быть разным, с разбросом в 5 минут
Ну мы вам предложили вариант - сделать через расчет.
Если момент когда набрался вес известен (по закрытию заслонки, или прекращению вращения шнека), то можно просто присвоить текущее значение веса переменной при помощи действия.
Мне не нужны записи в журнал по качеству связи. До попадания на ФБ я смотрю признак качества входной переменной, по этому признаку качества у меня блокируется обработка данной переменной в скриптах, выводы значений на мнемосхеме как "---", мне не требуется проверка качества именно в данном ФБ, а ФБ все пишет ошибку в журнал. Думаю распаковывать тогда в скрипте