Пример в приложении.
Вид для печати
Пример в приложении.
Спасибо большое
День добрый, существует ли возможность сохранять отчёты в облачных дисках (яндекс, гугл, майл).
Пробовался с ФБ . сохранить документ по пути http://yadisk...., выдаёт ошибку о не правильном пути.
Может быть просто установить утилиту для синхронизации - сохраняете отчет в локальную папку, а он загружается в облако?
В MasterSCADA в скрипте у меня используется полностью идентичный код в разных местах проекта и в разных проектах. Также более-менее универсальная его часть используется в другом скрипте.
Подскажите пожалуйста, есть ли возможность, стандартная или не документированная, сделать так, чтобы этот код хранился в одном месте? По максимуму хотелось бы хранить только одну копию кода на все проекты и скрипты, но заинтересует и решение в рамках каждого проекта
Добрый день!
Подскажите как можно отследить статус переменной OPC из Мастерскады?
Я думал использовать динамические свойства OPC переменных, но не получается никак привязаться к значению Признак качества, и такой способ отбирает один канал OPC. Может есть простое решение?
Значения изменяются редко, при плохих значениях стандартно выскакивает сообщение (его убрал, т.к. 100 сообщений по всех параметрам не нужны)
Хочется чтобы просто загоралась лампочка\надпись нет связи.
Можно вызывать метод из одного скрипта. Код такой:
var Скрипт = (ScriptFB)HostFB.TreeItemHlp.Project.Item("Объект. Объект 1.Скрипт").FBObject; //получаем ссылку на первый скрипт
dynamic obj = Скрипт.ScriptObject;
obj.MyMethod(); //Этот метод должен быть определен в первом скрипте
Можно также написать в Visual Studio dll библиотеку, скомпилировать и подключать ее в нужные скрипты.
О, вот это интересная тема
Я правильно понимаю, передавать-возвращать переменные можно как обычно?
Самое важное: в каком пространстве имён будет выполняться метод? В смысле, будет ли он иметь доступ к переменным из вызывающего скрипта? К переменным собственного скрипта?
И, возможно, вы сможете сказать. Можно ли с помощью метода вернуть объект, класс которого описан в вызываемом скрипте?
Доступа к переменным вызывающего скрипта метод иметь не будет - только к собственным.
Вы можете вынести в этот метод основные вычисления, а привязку ко входам, выходам и т.п. осуществлять в вызывающем скрипте.
Нет, обращаться можно только через dynamic (то есть методы/поля будут определятся в режиме исполнения). Для статической типизации надо делать dll
Добрый вечер. Обновили ключевую скаду до сетевой версии. В дистрибутиве имеется Демо Интернет-клиент. Установил и его. При запросе запуска Интернет клиента с другого компьютера (вводе IP адреса), открывается только первое окно Интернет-клиента, в которое вводится пароль оператора. При вводе пароля ничего не открывается и не выдаётся ни какой ошибки. Скажите, это потому, что ДЕМО версия или я что-то не настроил в самой скаде? Можно ли через Демо версию проверить работоспособность Скады с клиентом? Спасибо.
К ключевой версии нельзя ставить Demo интернет-клиент.
Поставьте Demo версию скады с этого диска и оттуда же интернет-клиент.
Подскажите, пожалуйста. Столкнулся со странной проблемой:
Скада в режиме исполнения, идёт интенсивный обмен данными с контроллером (ОВЕН ПЛК-110 new) через MASTER-OPC Server. Контроллер TCP-мастер (объявлен в конфигурации) - OPC-сервер соответственно TCP-slave. Имитирую разрыв связи методом отключения кабеля ethernet от контроллера, затем через некоторое время подключаю обратно (интенсивный обмен за это время заканчивается). Соединение восстанавливается, данные текущие приходят корректно, однако через несколько секунд по некоторым тегам (которые активно менялись) несколько раз приходят ложные данные, затем всё становится нормально ( у меня картинка с динамизацией положения "левый" начинает прыгать, в визуализации CDS эта же картинка, привязанная к этой же переменной в этот момент не прыгает). В логе обмена OPC-сервера действительно присутствуют эти ложные значения как принятые, однако я параллельно открываю CDS смотрю переменные конфигурации в режиме online и не вижу изменений на борту контроллера. Такое ощущение, что приходят значения, которые принимал тэг во время разрыва... Подскажите, пожалуйста с чем это может быть связано?
Добрый день. У операторов на компьютере блокированы все программы, установленные в системе Windows. Работает только СКАДА. Скажите, можно ли из под скады запустить нужную мне программу в Windows? (сделать в скаде кнопку через которую указать путь к файлу запуска нужной мне программы в Windows?). Спасибо.
Вряд ли проблема на стороне ОРС, если бы в буфер поступили данные то они бы сразу выдались. Скорее на стороне ПЛК данные застревают в буфере.
Почему вы используете ОРС режиме Slave? Если использовать его в режиме мастера, то подобных ситуаций можно избежать - можно включить отслеживание Tranasction ID, включить реинициализию узла, а в крайнем случае закрывать порт в каждом цикле.
Для организации событийного обмена. Тэги (входные для контроллера), которые скада передаёт в контроллер (управление) - в сервере в режиме мастер (передаются по изменению + пойлинг раз в 2 сек. для контроля связи), а контроллер сообщает в скаду соответственно своим мастером (он работает в режиме "both" по изменению + пойлинг раз в секунду для контроля связи).
Тогда выясняйте в техподдержке ОВЕН - возможно у них есть возможно закрывать порт, как у нас в ОРС.
Доброй ночи, подскажите пожалуйста, создаю собственное окно выбора оператора, данное окно управления делаю стартовым, в него хочу поместить информацию о текущей дате, времени, список строк с ФИО операторов, возможно фото операторов. Вопрос в следующем, каким образом можно сделать так, чтобы после подтверждения выбора оператора, когда уже открывается мнемосхема, данные о выборе сохранились в файл, например в любой текстовый документ. который я в любой момент могу открыть и просмотреть информацию о том в какой день какой оператор работал, сколько по времени и т.д.
Можно использовать ФБ "Сохранение в файле" закладка "Работа с архивом".
Но лучше сделать при помощи ФБ "Скрипт C#" - с его помощью также можно записать данные в файл, используя функции .Net.
Спасибо, а есть пример записи в файл при помощи данного ФБ, кроме сохранения и загрузки набора команд?
Нет, других примеров у нас нет.
Поищите в интернете.
Для вывода на мнемосхему видео потока (RTSP) с сетевой камеры видеонаблюдения использую ActiveX плагин VLC ActiveX Plugin and IE Web Plugin v1. Есть 2 проблемы:
1. В присутствии этого плагина при остановке режима исполнения иногда возникаетОшибка:
2. На другом компьютере пропали свойства плагина. Не могу подсунуть URL, остались только стандартные свойсва: положение, отображение и т.д. При нажатии кнопки свойства из контекстного меню ничего не происходит. Подскажите, пожалуйста, почему?
Никак ни могу понять, есть знаки разделители, например ";", они описаны в коде, а вот символы типа доллара ($) или амперсанд (&) появляются при открытии любого текстового редактора... Каким образом от них можно избавиться?
в c# не разбираюсь, пытаюсь изменить код вашего скрипта - "сохранение и загрузка набора команд", удалил все что связано с загрузкой из кода(т.к. мне требуется только сохранять в файл). При сохранении в код подставил текущую дату и время (var CurrentTime = DateTime.Now;) он отображает дату и время в столбце после значения, так как мне и надо.
Вот про эти символы я говорю:
Вложение 16490
И никак не могу разобраться, как сделать чтобы новый заход любого из операторов добавлял строку в тот же файл, а не перезаписывал его
В исходном скрипте есть такие команды:
var commandPath = HostFB.TreeItemHlp.Project.GetRelativeName(HostFB. TreeItemHlp.Parent, item, false); //относительное имя команды
var commandName=HostFB.TreeItemHlp.Project.GetRelative Name(HostFB.TreeItemHlp.Parent, command, true).Replace(";", "_");
Именно эти команды и имеют в строковом представлении указанные вами символы. Зачем вы вообще их пишете?
Может вам просто у скрипта сделать набор входов, на них подать сигналы и сохранять в файл значения с этих входов?
Нужно в этой строчке, вместо false поставить true:
using(var file = new StreamWriter(FilePathName, false, Encoding.GetEncoding("windows-1251")))
Подробнее здесь:
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
Как сделать в скрипте набор входов? надо ли объявлять их тип в самом коде? если на панели справа мы уже это сделали, объявляются они так как в обычном c# коде?, но в вашем примере я не увидел чтобы вообще объявлялись переменные. Короче засел я с этим ФБ)
Входы добавляются в правой части скрипта - через контекстное меню. Там же указывается и их тип.
После добавления их можно использовать в коде.
каким образом можно реализовать такую ситуацию: есть бак и два насоса. один накачивает в него другой выкачивает. при достижении аварийного нижнего значения в баке необходимо отключить откачивающий насос а при достижении аварийного верхнего - накачивающий. заранее спасибо
Это нужно сделать на MasterSCADA или каким то прибором?
Если прибором - то вам нужно задать вопрос в разделе "Подбор оборудования".
в самой скаде
А промежутках между нижним аварийным и верхним аварийным как идет управление насосами?
Вы можете воспользоваться модулем "Событие", у него есть закладка "Действия" - с ее помощью можно присваивать значения. Например отключать команды управляющие насосами
В данном случае из скады это делать нежелательно. Комп, на котором работает скада - под управлением винды, а это не ОСРВ. Поэтому ответ управляющей системы в жёстко заданный промежуток времени - не гарантирован. Ибо комп под виндой всегда может "призадуматься", "подвиснуть" на пару секунд, а то и больше. Тут для управления лучше использовать ПЛК. А скада - только для самого "верхнего" уровня - то есть отсылка команд, не критичных ко времени выполнения (например, включение какого-то режима работы, если не важно, чтобы он был включён немедленно), а также мониторинг, графики, сохранение архивов и т. д.
По поводу ActiveX плагина VLC:
скачивается здесь
Добавляем в систему:
Вложение 16527
Добавляем на мнемосхему и видим группу опций "прочее":
Вложение 16528
Подскажите, пожалуйста, почему эта группа опций "прочее" может пропасть на другом компьютере?