Приложите ваш проект (заархивируйте папку проекта в MasterSCADA Projects/Projects).
Вид для печати
Приложите ваш проект (заархивируйте папку проекта в MasterSCADA Projects/Projects).
Добрый день. С сервером прояснилось - проблема обнаружилась при работе с модемом. Но проявилась следующая проблема. На мнемосхеме при добавлении таблицы значений эти самые значения не отображаются, а, допустим, если использовать тренд, то все нормально - значения в таблице тренда видны. Это касается версии 3.7, в 3.6 все нормально.
Что значит не отображаются? Что вместо них? Приложите скриншот проблемы.
Добрый день. Возник небольшой вопрос.
Как можно в дереве системы отключить (заблокировать) не нужные в летний период времени ОРС переменные в приборах трм1хх,2хх, МВ110 и т.п, в режиме работы, либо в режиме проектирования. Только сразу все выбранные, а ни каждый по отдельности. Я имею ввиду, создать кнопку, в которой указать все не нужные ОРС переменные. И одним нажатием блокировать выбранные переменные.(Либо какой другой вариант).
Спасибо.
Что вы понимаете под "заблокировать" - чтобы они ОРС сервером не опрашивались или достаточно чтобы от них просто значения не поступали?
Вообще ничего. Вложение 24890 А вот значения из тренда - одни и те же данные. Вложение 24891
Если вы вынесете переменные которые нужно выключать в отдельные группы, то тогда выключить их можно.
У групп ОРС переменных, на вкладке "Опрос" есть поле "Старт по условию". Перетащите в это поле дискретную переменную (событие, выход ФБ). При "Истина" значения из ОРС сервера будут опрашивтаься, когда ложь - нет.
Прикладываю проект. Проблема не в трендах - с ними все в порядке. Проблема в том, что на мнемосхему добавлены таблицы значений и эти таблицы этих значение не показывают. В режиме исполнения - Архивные данные -Архивные данные откроется окно (рецепт) с таблицами на которых не выводятся указанные в них значения. В режиме разработки Объект-Ведение архива-Окна-рецепт. Вот ссылка на проект - https://yadi.sk/d/hRh3sYq0sQFjf .
Это ошибка. Мы ей займемся.
Пока что проблему можно обойти - переключите тренд на уровень базовый, активизируйте панель значений, данные должны отобразится. После этого, не выключая панель значений вернитесь на уровень "только значения".
Добрый день, не могу добиться динамизации ФБ "выключатель" из отраслевой библиотеки "электроэнергетика". Созданы кнопки (дискретные) "включить, отключить", в режиме отладки команда на ФБ проходит, но на мнемосхеме символ выключателя не меняется.
Спасибо.
Нужно подать сигнал на вход "Включен" - это состояние выключателя.
Добрый день, возможно ли на демо версии MSRT отправлять e-mail и sms?
Да, в Demo версии доступны все модули и опции, в том числе отправка E-mail и СМС
Возможно ли включить в отчет сообщения журнала? Как это сделать?
Здравствуйте
Имеется несколько вопросов:
1. Где можно взять изображения насосов, задвижек и прочего, в стандартной версии (NET500) всего пара изображений ?
2. Объект цилиндр - необходимо в зависимости от уровня менять заливку, но в свойствах указывается только в процентах. В голову приходит использование расчета или можно другим способом ?
3. По поводу архивации, раньше работал с ifix - там график сохранялся каждый день (или несколько раз в день), задача например раз в год выдернуть архив и сохранит на носителе. Как можно такое реализовать ?
В интернете можно найти различные рисунки. В частности можно найти библиотеку с ресурсами из Symbol factory.
Через шкалы. Посмотрите видеопримеры - в них на этом акцентируется внимание:
http://www.masterscada.ru?additional_section_id=233
Сохранить в каком формате?
Можно отчет построить, можно через тренд в csv сохранить, можно в access экспортировать, в базы данных.
Кстати об экспорте.
Пытаемся экспортировать сообщения в mdb. В журнале объекта они есть. Экспорт через меню экспорта и фб экспорта (за период где точно есть сообщения) создают пустые базы.
В чем может быть проблема?
Указываете ли вы что экспортируете именно сообщения?
Тут также играет роль на каком уровне находятся сообщения и на каком производится экспорт. Если сообщения принадлежат одному объекту, а ФБ находится в другом, то конечно сообщений в сформированном файле не будет
Указываем экспорт сообщения. Журнал объекта - есть сообщения. ФБ в этом объекте и ручной экспорт из этого объекта - нет сообщений.
Кстати, какой период экспортируется при ручном экспорте?
Всем здравствуйте! Начинаю осваивать ПЛК Овен. Сейчас в работе ПЛК110-32РМ.
Подключил ПЛК(master) с панелью оператора СП307(slave) по RS-485, протокол MODBUS rtu. Оператор выбирает какой механизм включить на дисплее, ПЛК переодически считывает из панели биты состояния, вкл/откл выходы. Все хорошо, все работает.
Нужно из панели периодически считывать текущее время(PSW[300]-[306] ), вдруг оператор его изменил, и устанавливать это время в ПЛК, для корректного формирования своих лог файлов (какой механизм сколько работал и когда).
Сталкнулся со следующей проблемой:
В конфигураторе ПЛК добавляю Universal ModBus Device, добавляю в него 7 регистров, устанавливаю команду читать и период опроса 10сек (10000 мс).
Полусаю: считывает 1 регистр, проходит 10 сек, считывает другой регистр (не обязательно по порядку), прроходит 10 сек, и т.д....
КАК СДЕЛАТЬ ЧТО БЫ ПЛК СЧИТЫВАЛ ВСЕ 7 РЕГИСТРОВ ЗА 1 ЦИКЛ???
Т.Е. прочитал 7 регистров, прошло 10 сек, проситал опять все 7 регистров и т.д.
период опроса менял, таймаут тоже, без результатно....
Вложение 25143
Пробовал настроить Universal ModBus Device by command - все тоже самое. 1 команда - 1 регистр, 1 команда - другой регистр (не обязательно по порядку).
Подскажите в чем дело? Или так и должно быть?
Вам нужно задать данный вопрос в разделе ПЛК
Добрый день. При вычислениях необходимо сохранять промежуточный результат, подскажите при помощи чего это можно реализовать. Заранее спасибо.
Где именно вы производите вычисления? В расчете или скриптах?
Вычисления производятся в расчете. В общем смысл следующий - система дозирования на базе плк304 и модулей для тензодатчиков овен, в плк предустановлен мастер плс, при расчетах необходимо запоминать вес тары. Среди стандартных функциональных блоков в мастерскаде ни регистров ни чего нибудь подобного не нашел.
поэтому обратился. Спасибо.
А тара у вас предварительно взвешивается отдельно? То есть сохранить ее значение нужно по некоему сигналу?
На верхнем уровне это делается с помощью действий, но в контроллерах они не работают. Можно сделать обходное решение - пример в приложении.
Попробовал - получается. Конечно своеобразный метод, да главное чтобы работал. Единственное не совсем понял что значит в "контроллерах они не работают", т.е. мне эту операцию придется производить только на вернем уровне?
Вариант который мы выслали работает и на верхнем уровне и на контроллерах.
На верхнем уровне есть вариант проще - у команды, на вкладке "Действия" добавляете действие типа "Присвоить", которое присвоит значение одной переменной другой.
Спасибо за помощь!
Здравствуйте.
Стоит задача регистрировать действия операторов по изменению параметров настройки. Изменять настройки можно, как дистанционно из MasterSCADA, так и локально с панели оператора. В связи с этим вопросы:
1) В MasterSCADA имеется журнал действий. Однако в нём сохраняются только события входа и выхода пользователей из системы. Можно ли добавить к нему регистрацию других действий оператора?
2) Один из вариантов решения задачи - создать объект по примеру "Запись текста с мнемосхемы в журнал по изменению" из примеров скриптов Библиотеки. По этому способу есть вопросы:
а) Количество параметров настройки - около 500. В случае изменения структуры текста сообщения, каждый раз придётся изменять шаблон сообщения в 500 местах. Есть ли какой-то способ уменьшить объём этой работы?
б) В текст сообщения включается текущее и предыдущее значение параметра. При первом срабатывании события предыдущее значение отсутствует и поэтому в тексте сообщения на его месте пусто. Каким образом можно получить сигнал об отсутствии значения команды, чтобы его использовать в, например, блоке "Переключатель N к 1"?
в) Почему то для вызова события не получается использовать формулу "Текущее значение <> Предыдущее значение". Приходится использовать функциональный блок "A <> B" и его результат использовать в формуле вызова события.
3) Ещё один вариант - формировать текст сообщения в C# скрипте. В таком случае появляется больше возможностей, но остаются вопросы:
а) Проблема с большим объёмом работы при изменениях не исчезает. Можно ли каким-то образом обновить скрипт у всех использующих его объектов (например, поместив его в библиотеку)?
б) Для записи сообщений в журнал приходится использовать выходы скрипта, подключаемые к событию. Это приводит к троекратному увеличению количества лицензируемых связей. Имеется ли возможность добавить сообщение в журнал напрямую из C# скрипта?
Можно. Нужно в правах доступа, у нужного оператора у нужного действия поставить галочку "Журнал".
Можно использовать шаблон-экземпляр.
В конкретно этом примере это связано с тем, что переменные строковые - событие и расчет со строками работать не могут.
В версии 3.7 появилась возможность создавать библиотечные скрипты - у них один код на все скрипты.
Можно генерировать сообщение из скрипта, но от имени события. Так сделано в этом примере:
http://insat.ru/products/?category=1298
Вкратце - здесь:
http://blog.insat.ru/2015/11/masterscada-37.html
Подробнее в справке
В рамках проекта.
Между проектами можно переносить через экспорт скрипта.
Большое спасибо за оперативный ответ.
Всё понятно, единственное, что
для вещественных переменных происходит то же самое.
Выковырял из приведенного Вами примера генерацию сообщения из скрипта. Может кому-нибудь ещё пригодится:
//----------------------------------------------------------------------------------------------------------
using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using FB.FBAttributes;
using System.Linq;
using MasterSCADALib;
using MasterSCADA.Common.Events;
[FBRetain]
public partial class ФБ : ScriptBase
{
const uint OPC_QUALITY_GOOD = 192;
public override void Execute()
{
var alarmId = ((IFBEvents)HostFB.TreeItemHlp.Parent.GetChild("Со бытие").FBObject).AlarmID;
HostFB.TreeItemHlp.Project.AlarmManager.OnFBEventT imed(alarmId, "Текст сообщения", -1, (short)EventStatus.EventOn, OPC_QUALITY_GOOD, new DateTime());
}
}
Вам что в конечном счете нужно получить? Сообщение в момент изменения переменной?