PDA

Просмотр полной версии : Вопросы начинающего



Страницы : 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Vitorgan
10.10.2014, 16:57
Спасибо, понял. Еще вопрос, никак не могу поладить с вашим скриптом "Сохранение и загрузка набора команд" в данный момент пытаюсь, чтобы при рестарте выбранная строка "восстанавливалась", никак не могу этого добиться, получается только, что при рестарте открываю список строк, а в списке нужная просто выделена уже.

SCADAMaster
10.10.2014, 18:34
У ФБ "Список строк" нужно включить "Восстановление при рестарте" - чтобы загрузилась последняя выбранная строка.
Однако кроме этого еще нужно выполнить загрузку. Самый простой вариант, создайте команду типа "Дискретный", установите у нее значение до опроса "Вкл", на закладке действия создайте действие "Выдать импульс" и выдайте импульс на команду загрузку набора.
Но эту команду нужно обязательно расположить ниже ФБ "Список строк" - чтобы успела загрузится строка.

Vitorgan
10.10.2014, 20:27
У ФБ "Список строк" нужно включить "Восстановление при рестарте" - чтобы загрузилась последняя выбранная строка.
Однако кроме этого еще нужно выполнить загрузку. Самый простой вариант, создайте команду типа "Дискретный", установите у нее значение до опроса "Вкл", на закладке действия создайте действие "Выдать импульс" и выдайте импульс на команду загрузку набора.
Но эту команду нужно обязательно расположить ниже ФБ "Список строк" - чтобы успела загрузится строка.

Пробую, поставил "Восстановление при рестарте" на список строк, включаю, Выбранная строка и номер выбранной строки( в дереве объектов) блекло-серого цвета.

SCADAMaster
10.10.2014, 20:29
Вы поставили его у всего ФБ или конкретного выхода?
Нужно у всего ФБ.

Vitorgan
10.10.2014, 20:44
У всего ФБ. Я даже проверить решил, мало ли чего у меня не правильно. Создал новый проект, и запихнул в него ваш скрипт.

У ФБ поставил - восстановление 14705

Создал команду, все делает правильно, импульс выдает, загружает, но строка не отображается...14706

SCADAMaster
10.10.2014, 21:04
Попробуйте соединить выход "Номер выбранной строки" и "Номер строки (вход)".

Vitorgan
10.10.2014, 23:57
все получилось) спасибо!

Igor.m
11.10.2014, 13:34
Подскажите как можно узнать сетевой адрес модуля ввода, для подключения к ПК через конфигуратор?

SCADAMaster
11.10.2014, 15:25
Этот вопрос вам нужно задать в разделе "Эксплуатация".

Vitorgan
12.10.2014, 15:29
Попробуйте соединить выход "Номер выбранной строки" и "Номер строки (вход)".

Заметил одну непонятную для меня вещь, когда создал новое окно, и вставил в него список строк из другого объекта, отображение строки работает, но только я удаляю в свойствах списка строк название заголовка, то сразу же отображение строки пропадает. (во втором окне мне нужно чтоб заголовка не было)

azausatu
12.10.2014, 18:26
В скрипте, в цикле, выполняю шаблонирование объектов. Нужно соединить входы/выходы переменных. Buffer - это группа Значений в дереве объектов, с которых происходит считывание и запись.
Для разделения области чтения и записи переменных в OPC сервере использовался символ "$", но с вариантом, когда все считывается и записывается в группе переменных это не срабатывает.
При вызове метода показывает: Ошибка: "Не могу найти child с Name=Значение 1$". Если вход и выход значения обозначить одинаково - ""Значение " + num.ToString()" то появляется "Ошибка: Значение не попадает в ожидаемый диапазон".

ITreeItemHlp Буфер = (ITreeItemHlp)проект.Item(FBPath + ".Переменные.Buffer");

//Получение переменных дерева объектов
ValueCurrent = (ITreePinHlp)новая_строка.GetChild("ValueCurrent");
ValueNew = (ITreePinHlp)новая_строка.GetChild("Автомат.Выходы.ValueNew");
BuferValueIn = (ITreePinHlp)Буфер.GetChild("Значение " + num.ToString());
BuferValueOut = (ITreePinHlp)Буфер.GetChild("Значение " + num.ToString() + "$");

//Соединяем полученные переменные
ValueCurrent.Connect(BuferValueIn);
ValueNew.Connect(BuferValueOut);

Как соединить вход Значения в дереве объектов с одной переменной, выход Значения с другой?

SCADAMaster
12.10.2014, 19:36
Заметил одну непонятную для меня вещь, когда создал новое окно, и вставил в него список строк из другого объекта, отображение строки работает, но только я удаляю в свойствах списка строк название заголовка, то сразу же отображение строки пропадает. (во втором окне мне нужно чтоб заголовка не было)
Не совсем понятно в чем именно проблема.
Опишите проблему подробнее - со скриншотами.

MrNobody
12.10.2014, 20:06
Здравствуйте!
С помощью ФБ "Управление документа" пытаюсь сохранить Основной журнал. В результаты создаётся только заголовок журнала, а сами сообщения не отображаются:
14721

P.S. например после сохранения с помощью данного ФБ "Отчёта", в файле присутствуют все параметры

SCADAMaster
12.10.2014, 20:30
Указываете ли вы время на входах "Дата с" и "Дата по"? За это время есть сообщения?

MrNobody
12.10.2014, 21:12
Указываете ли вы время на входах "Дата с" и "Дата по"? За это время есть сообщения?

Спасибо!!! :)

DrBrain
13.10.2014, 08:08
Для этого можно использовать команду типа "Дискретный" у них есть закладка "Действия". Добавьте действие типа "Системное" - "выход". вытащите команду на мнемосхему - она станет кнопкой. Нажатие на эту кнопку вызовет действие выхода из режима исполнения.
Используя действия также можно завершать сеанс пользователя, сохранять документы, присваивать значения переменным

Здравствуйте.
Делаю так, как описано, но кнопка в режиме исполнения принимает вид показанный во вложении и неактивна. Подскажите, пожалуйста, в чем может быть причина?
14722

SCADAMaster
13.10.2014, 09:00
Вообще если кнопка обведена крестом, то это означает что с ней нет связи. Попробуйте удалить ее вытащить команду снова.
Также убедитесь что объект у вас назначен на исполнение компьютеру.

azausatu
13.10.2014, 09:10
Добрый день.
Еще раз спрошу. Имеется в дереве объектов Значение. Нужно связать через скрипт один вход и один выход другого скрипта со Значением. Т.е. в другом скрипте будет считываться значение и писаться в Значение. Как получить вход и выход у Значения в скрипте? Чтобы можно было использовать подобные методы:

ЗначениеЧтение.Connect(ВходСкрипта);
ВыходСкрипта.Connect(ЗначениеЗапись);

Все. Спасибо. Разобрался. Оказалось, что нужно просто писать методы вот так:

Значение.Connect(ВходСкрипта);
ВыходСкрипта.Connect(Значение);

DrBrain
13.10.2014, 09:22
Благодарю:). Про назначение компьютеру забыл совсем:(

SCADAMaster
13.10.2014, 15:36
В скрипте, в цикле, выполняю шаблонирование объектов. Нужно соединить входы/выходы переменных. Buffer - это группа Значений в дереве объектов, с которых происходит считывание и запись.
Для разделения области чтения и записи переменных в OPC сервере использовался символ "$", но с вариантом, когда все считывается и записывается в группе переменных это не срабатывает.
При вызове метода показывает: Ошибка: "Не могу найти child с Name=Значение 1$". Если вход и выход значения обозначить одинаково - ""Значение " + num.ToString()" то появляется "Ошибка: Значение не попадает в ожидаемый диапазон".

ITreeItemHlp Буфер = (ITreeItemHlp)проект.Item(FBPath + ".Переменные.Buffer");

//Получение переменных дерева объектов
ValueCurrent = (ITreePinHlp)новая_строка.GetChild("ValueCurrent");
ValueNew = (ITreePinHlp)новая_строка.GetChild("Автомат.Выходы.ValueNew");
BuferValueIn = (ITreePinHlp)Буфер.GetChild("Значение " + num.ToString());
BuferValueOut = (ITreePinHlp)Буфер.GetChild("Значение " + num.ToString() + "$");

//Соединяем полученные переменные
ValueCurrent.Connect(BuferValueIn);
ValueNew.Connect(BuferValueOut);

Как соединить вход Значения в дереве объектов с одной переменной, выход Значения с другой?
Вы соединяете значения с ОРС переменными? Или другими значениями?
Приложите ваш проект.

azausatu
13.10.2014, 15:50
Вы соединяете значения с ОРС переменными? Или другими значениями?
Приложите ваш проект.

Соединял с переменной в дереве объектов, не в OPC, поэтому и не работало.

Вроде разобрался с этим вопросом.
При соединении с OPC переменными вход и выход одной переменной можно объявить так:
BuferValueIn = (ITreePinHlp)Буфер.GetChild("Значение 1");
BuferValueOut = (ITreePinHlp)Буфер.GetChild("Значение 1" + "$");
ВходСкрипта.Connect(BuferValueIn);
ВыходСкрипта.Connect(BuferValueOut);

При соединении с переменной в дереве объектов достаточно вызывать метод у каждой из соединяемых переменных, аналогично перетаскиванию:
Значение.Connect(ВходСкрипта);
ВыходСкрипта.Connect(Значение);

Vitorgan
13.10.2014, 19:43
Вечер добрый, подскажите можно ли каким-нибудь образом ограничить ввод значения, чтобы оператор не мог вести больше положенного.

SCADAMaster
13.10.2014, 20:00
Назначить команде шкалу, и затем в свойствах контрола включить "Ограничить вводимые значения диапазоном".

azausatu
16.10.2014, 11:17
Добрый день.
Как проверить наличие корректных значений на всех входах в скрипте в скаде? что то аналогичное IsValueExistOnAllPins, используемое при разработке контрола в ФБ. Сейчас я проверяю Вход.HasValue для для каждого входа, хотелось бы что-то универсальное.

SCADAMaster
16.10.2014, 15:27
Если нужно просто наличие значение, то можно например проверить через свойство HasValue:
http://msdn.microsoft.com/ru-ru/library/sksw8094(v=vs.110).aspx
Например Вход1.HasValue

Если нужно узнать признак качества, то тогда используйте (int)GetValue("ИмяВхода").OpcQuality;

КучаВопросов
17.10.2014, 15:39
Можно ли в скаде посмотреть сколько времени занимает один такт (фактическое время)?

SCADAMaster
17.10.2014, 16:15
На вкладке опрос у объектов и переменных можно увидеть среднее время опроса.

Vitorgan
19.10.2014, 13:52
добрый день, подскажите пожалуйста каким образом открыть текстовый документ по нажатию кнопки на мнемосхеме? или где об это почитать?

Vitorgan
19.10.2014, 15:43
Еще вопрос, можно ли сделать так, чтобы импульс на команду подавался, пока нажата левая кнопка мыши?

SCADAMaster
19.10.2014, 17:02
добрый день, подскажите пожалуйста каким образом открыть текстовый документ по нажатию кнопки на мнемосхеме? или где об это почитать?
Вам нужно запустить приложение, которое хотите использовать, с параметром - путь к вашему файлу.
Для этого нужно использовать ФБ "запуск процесса".

SCADAMaster
19.10.2014, 17:02
Еще вопрос, можно ли сделать так, чтобы импульс на команду подавался, пока нажата левая кнопка мыши?
Используйте ФБ "Кнопка" из закладки "Управление".

Vitorgan
19.10.2014, 17:49
А можно изменить время ее нажатие? если я нажимаю 1 секунду, то она нажата все равно по умолчанию секунды 3

Vitorgan
19.10.2014, 18:30
Опять загвоздка с обыкновенным выпадающем списком. при выборе строки открывается окно, при его закрытии выбранная строка остается, следовательно для повторного открытия того же окна, следует поменять строку, откроется другой список, а уже потом вернуться на нужную строку.

SCADAMaster
19.10.2014, 21:24
Тогда используйте кнопку без фиксации из палитры мнемосхемы - свяжите ее через выходы динамизации.
Но нужно иметь ввиду что короткие нажатия такой кнопокой могут не передаваться.

SCADAMaster
19.10.2014, 21:36
Опять загвоздка с обыкновенным выпадающем списком. при выборе строки открывается окно, при его закрытии выбранная строка остается, следовательно для повторного открытия того же окна, следует поменять строку, откроется другой список, а уже потом вернуться на нужную строку.
Как вариант - можно при помощи события присваивать команде, связанной с раскрывающимся списком значение -1. Тогда список будет сбрасываться.

Vitorgan
20.10.2014, 11:22
спасибо большое) все кое как, но получилось. Есть еще одна сложная задача. Ее я вообще не представляю как решить. При переходе в ручной режим работы, на мнемосхеме появляются кнопки управления элементами, но перед тем, как оператор начнет их нажимать, он в обязательном порядке должен нажать кнопку "звонка громкого боя", после чего блокировка с кнопок управления снимется. все вроде бы просто. Но:
1. Хочется чтобы после звонка, оператор мог пользоваться элементами определенное время, после истечения которого они снова блокировались.
2. И если он перешел в автоматический режим, и сразу в ручной, тогда таймер должен скинуться, и кнопки опять должны заблокироваться. Вот такая вот белиберда.

SCADAMaster
20.10.2014, 11:38
И в чем трудности?
Для формирования задержки используйте "Задержка по времени" или "Выдержка по времени" (что удобнее).

azausatu
24.10.2014, 15:07
Добрый день.
Выполняю шаблонирование и вставку изображений объектов через скрипт. У каждого из таких объектов при вставке на мнемосхему создается элемент "Кнопка вызова". В режиме исполнения при наведении мыши на "кнопки вызова" появляются комментарии с именем объекта, что совсем не нужно. В ручную убирать комментарий очень долго. Как это сделать в скрипте при вставке изображения объекта на мнемосхему?

SCADAMaster
24.10.2014, 15:24
Через скрипт это сделать нельзя. У нас записана задача на отключение подсказок у изображения объекта.

azausatu
27.10.2014, 17:12
Добрый день.
Создал проект, использовал в нем разработанные ВФБ. Теперь нужно переместить проект на другой компьютер. Для подключения dll на другом компьютере скопировал все dll в папку MasterScada, создал bat файл со строчками вида "netreg.exe vfb.dll" перечислив все свои dll и запустил. Исполнение bat-файла прошло успешно, поочередно выполнялись нужные команды. При попытке открыть мнемосхему, на которой расположены ВФБ появляются ошибки вида:

Ошибка при создании элемента Журнал (CLSID={5d8d3d4b-d86c-461f-a17a-dab24aa33244}) : Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

В данном случае это была кнопка, при нажатии на которую открывается журнал.
Как правильно подключать вфб на другом компьютере?

SCADAMaster
28.10.2014, 11:39
Данный ФБ появился в палитре после регистрации? После регистрации и обновлении палитры ФБ?
Если да, то что будет если создать новый проект и добавить туда только этот ФБ?
Если нет, то сформируйте отчет об ошибках и посмотрите в MasterSCADA_net.log и MasterSCADA.log есть ли какие либо ошибки при добавлении?

Если ошибок нет, значит регистрация не удалась. Проверяйте что может её блокировать (недостаточно прав доступа, запуск не из под администратора, антивирус с повышенными настройками безопасности или нечто подобное).

zavalroman
29.10.2014, 14:03
Здравствуйте.
Суть такова: имеется плк 160 и подключенные к нему трм'ы 201. Значения передаются на MasterSCADA, но, разумеется, без точки. Есть ли возможность невозбранно стандартными средствами поставить точку туда, где она должна стоять?

SCADAMaster
29.10.2014, 14:49
Какие адреса используются для получения значения?
http://www.owen.ru/uploads/ki_prm_trm201_032.pdf
С точкой это 0X1009\0X100A и тип вещественный(float)

zavalroman
29.10.2014, 15:03
Ох, спасибо. Прошу прощения за глупый вопрос.

azausatu
31.10.2014, 12:51
Добрый день.
После регистрации своих ВФБ на другом компьютере, если в последующем были внесены в них изменения, достаточно ли заменить старые dll файлы на новые и запустить обновление списка ФБ? Подразумевается что CLSID и название решения меняться не будет.

SCADAMaster
31.10.2014, 13:14
Теоретически да

MrNobody
03.11.2014, 16:10
Добрый день.
Две проблемы
1 С помощью ФБ "Управление документом" выполняю сохранение с расширением .html формы "Основной журнал" на компьютер.

Проблема в том, что на компьютере разработчика файл создаётся, а на другом компьютере с объектом - создаётся только папка с датой, а сам html файл нет.
Система Windows 7, x64. Windows был переустановлен примерно 2 недели назад.

2 Lectus отправляет отрицательно значение (например -30) в OPC переменную приходит значение 65506. Это значит, что самому необходимо учитывать приходящие отрицательные значения?

SCADAMaster
03.11.2014, 16:24
На обоих компьютерах использовалась одна и та же версия MasterSCADA (один и тот же дистрибутив)? В таком случае что-то блокирует создание файла (антивирус, фаервол, UAC). Посмотрите также нет ли ошибок на выходе ФБ.

MrNobody
03.11.2014, 16:27
На обоих компьютерах использовалась одна и та же версия MasterSCADA (один и тот же дистрибутив)? В таком случае что-то блокирует создание файла (антивирус, фаервол, UAC). Посмотрите также нет ли ошибок на выходе ФБ.

Спасибо проверим, а что с


2 Lectus отправляет отрицательно значение (например -30) в OPC переменную приходит значение 65506. Это значит, что самому необходимо учитывать приходящие отрицательные значения?

SCADAMaster
03.11.2014, 17:17
Скорее всего у вас неправильно указан тип данных - нужно знаковое целое.
Рекомендуем вам использовать наш Modbus Universal MasterOPC Server - в нем можно гибко задавать типы данных и выполнять преобразование.
http://www.masteropc.ru/products/?category=399
Бесплатную версию на 32 точки, а также видеопримеры по созданию конфигурации можно скачать здесь:
http://www.masteropc.ru/prices/info.php?pid=6944

MrNobody
03.11.2014, 18:47
Скорее всего у вас неправильно указан тип данных - нужно знаковое целое.
Рекомендуем вам использовать наш Modbus Universal MasterOPC Server - в нем можно гибко задавать типы данных и выполнять преобразование.
http://www.masteropc.ru/products/?category=399
Бесплатную версию на 32 точки, а также видеопримеры по созданию конфигурации можно скачать здесь:
http://www.masteropc.ru/prices/info.php?pid=6944

Смотрите
данные на выходе с Lectus 15051
данные на входе Scada 15052
свойства переменной 15053

Не получается изменить свойство переменной

Vitorgan
03.11.2014, 19:18
добрый вечер, подскажите пожалуйста можно ли изменять вид окна сообщений?

SCADAMaster
03.11.2014, 19:25
Тип данных ОРС переменной берется от самого ОРС сервера, и в скаде изменять нельзя. Трудно сказать почему Lectus передает ОРС клиенту некорректные данные. Какой тип данных вы указали у переменной? Попробуйте другой тип такого же количества байт.

SCADAMaster
03.11.2014, 20:04
добрый вечер, подскажите пожалуйста можно ли изменять вид окна сообщений?
На вкладке Система - Сообщения - Каналы - можно настроить данный канал. Можно изменить его размер, расположение на экране, количество сообщений в буфере, выводимые параметры сообщения и шрифты.

Vitorgan
03.11.2014, 22:06
спасибо за помощь. Такой вопрос. Требуется чтобы при запуске проекта перед появлением мнемосхемы, появлялось окно с выбором смены, оператора, датой и т.д. только после этого, появлялось окно мнемосхемы. Можно ли как нибудь организовать данное окно?

azausatu
04.11.2014, 14:28
Добрый день.
Разработал свой ВФБ ввода значений. Как сделать ввод и запись переменных в экспоненциальном режиме? Т.е. если взять стандартный элемент "Значение" и перетащить на вход переменную, которой назначена экспоненциальная шкала, то и ввод значений становится вида 0.00e+000, и в дереве объектов это значение отобразится в этом виде.

azausatu
04.11.2014, 15:57
Еще вопрос. Пусть имеется переменная в OPC и переменная в дереве объектов. Если соединить входы-выходы обоих переменных то при включении скады появится сообщение:
"Ошибка записи значения "" в переменную "" (Событие не смогло вызвать ни одного из абонентов)"
Как устранить такое поведение?

SCADAMaster
04.11.2014, 15:58
спасибо за помощь. Такой вопрос. Требуется чтобы при запуске проекта перед появлением мнемосхемы, появлялось окно с выбором смены, оператора, датой и т.д. только после этого, появлялось окно мнемосхемы. Можно ли как нибудь организовать данное окно?
У нас появляется штатное окно выбора оператора, а каждый оператор может быть назначен в определенную смену. Сделать по другому штатными средствами не получится.
Если только отключать окно ввода оператора, делать собственное окно, а вход в систему осуществлять через скрипт.

SCADAMaster
04.11.2014, 16:11
Добрый день.
Разработал свой ВФБ ввода значений. Как сделать ввод и запись переменных в экспоненциальном режиме? Т.е. если взять стандартный элемент "Значение" и перетащить на вход переменную, которой назначена экспоненциальная шкала, то и ввод значений становится вида 0.00e+000, и в дереве объектов это значение отобразится в этом виде.
Непосредственный - это задача самого контрола. Отображение же выхода в дереве объектов и на мнемосхеме зависит, как вы правильно написали, он назначенной шкалы.
Если вам нужно чтобы значение всегда было в экспоненциальном виде, то тогда можно сделать выход в виде строки - тогда можно будет задать собственный способ отображения.


Еще вопрос. Пусть имеется переменная в OPC и переменная в дереве объектов. Если соединить входы-выходы обоих переменных то при включении скады появится сообщение:
"Ошибка записи значения "" в переменную "" (Событие не смогло вызвать ни одного из абонентов)"
Как устранить такое поведение?
Какой ОРС сервер у вас используется? Мы проверили на нашем Modbus Universal masterOPC сервере - ошибка не возникла.
Подобная ошибка может возникать на OPC сервере Lectus.

SokolovS
04.11.2014, 16:50
Если только отключать окно ввода оператора,
Подскажете как это сделать?

azausatu
04.11.2014, 19:11
Непосредственный - это задача самого контрола. Отображение же выхода в дереве объектов и на мнемосхеме зависит, как вы правильно написали, он назначенной шкалы.
Если вам нужно чтобы значение всегда было в экспоненциальном виде, то тогда можно сделать выход в виде строки - тогда можно будет задать собственный способ отображения.

Пусть всегда будет в экспоненциальном виде. Мне нужно обрабатывать малые значения, вида 0,0000001 - 0,0000100. Тип данных - вещественный двойной точности. Пусть я буду обрабатывать их внутри контрола, отображать их преобразовав в строку в окне ввода значения и на мнемосхеме, и после ввода значения делать обратные преобразования в double и отправлять в OPC. Но в дереве объектов значения малых переменных выглядят как "0.000", хотя в OPC уходят малые значения как есть. Нельзя ли узнать как реализован стандартный фб "Значение", а именно почему отображается на выходе малая величина в виде 000e+000 а уходит в OPC корректно?


Какой ОРС сервер у вас используется? Мы проверили на нашем Modbus Universal masterOPC сервере - ошибка не возникла.
Подобная ошибка может возникать на OPC сервере Lectus.

OPC сервер - MasterOPC Universal Modbus Server 3.0.0.9.
В каких случаях возникает такая ошибка? Когда в дереве объектов связанная переменная имеет значение а OPC еще не загрузился?
И еще, у переменных в дереве объектов во вкладке "Опрос" стоит галочка "Включен при отсутствии потребителей", для чего она предназначена?

SCADAMaster
04.11.2014, 20:37
Подскажете как это сделать?
Можно сделать автоматический вход. Для этого вам нужно запустить файл проекта с параметрами /user: /password: Для этого вам нужно либо сделать файл bat либо задать свойства ярлыка (что предпочтительнее). Подробнее вы можете прочитать в справке. Раздел "Работа в режиме исполнения - Запуск проекта из командной строки и по ярлыку".
Для последующей смены оператора без использования окна используйте специальный скрипт - пример есть на форуме:
http://www.owen.ru/forum/showthread.php?t=14556&highlight=relogon

SCADAMaster
04.11.2014, 20:47
Пусть всегда будет в экспоненциальном виде. Мне нужно обрабатывать малые значения, вида 0,0000001 - 0,0000100. Тип данных - вещественный двойной точности. Пусть я буду обрабатывать их внутри контрола, отображать их преобразовав в строку в окне ввода значения и на мнемосхеме, и после ввода значения делать обратные преобразования в double и отправлять в OPC. Но в дереве объектов значения малых переменных выглядят как "0.000", хотя в OPC уходят малые значения как есть.

А зачем вообще вам нужно?
Почему нельзя просто назначить экспоненциальную шкалу выходу?



Нельзя ли узнать как реализован стандартный фб "Значение", а именно почему отображается на выходе малая величина в виде 000e+000 а уходит в OPC корректно?

Здесь дело не в ФБ. Дерево просто ограничивает количество выводимых на экран знаков после запятой, но это никак не отражается на точности. То есть данные всегда используются в полном объеме, независимо от типа переменной.



OPC сервер - MasterOPC Universal Modbus Server 3.0.0.9.
В каких случаях возникает такая ошибка? Когда в дереве объектов связанная переменная имеет значение а OPC еще не загрузился?

Пришлите ваш проект.
Зачем вы вообще так сделали? Такая привязка не имеет смысла.



И еще, у переменных в дереве объектов во вкладке "Опрос" стоит галочка "Включен при отсутствии потребителей", для чего она предназначена?
Если ее снять то переменная не будет выполняться, если у нее нет потребителей (она не имеет выходных связей). Лучше не снимать ее.

azausatu
04.11.2014, 22:57
А зачем вообще вам нужно?
Почему нельзя просто назначить экспоненциальную шкалу выходу?

Выбрать в дереве объектов выход ВФБ и выбрать шкалу? Хорошо. Но в визуальной части все равно нужно сделать приведение, чтобы отображалось как надо.



Пришлите ваш проект.
Зачем вы вообще так сделали? Такая привязка не имеет смысла.

В проекте имеется окно настроек, в котором имеется поле, куда нужно вводить пароль и кнопка "Применить". Чтобы все изменения, проделанные в окне настроек, отправились в OPC, нужно ввести пароль и нажать кнопку "Применить". При открытии окна все эти переменные считываются с OPC в группу переменных Bufer в дереве системы, все изменения происходят в ней. Затем, если нажали кнопку "Применить", переменные с буфера посылаются в группу inOPC, связанную напрямую с OPC. И если в ходе изменения сменили пароль до нажатия кнопки применить, то переменные с OPC считываются снова в Bufer, как бы так отменяются проделанные изменения.
Я сделал группу "inOPC" переменных в дереве объектов , такую же как в OPC, и связал каждую переменную OPC между копией в дереве. И в случае нажатия кнопки применить я меняю значения переменных в группе в дереве через приведенный скрипт и они посылаются в OPC. Аналогично я прогружаю значения при открытии окна, в другом скрипте.

var project = this.HostFB.TreeItemHlp.Project;
var input = HostFB.TreeItemHlp.ParentObject.FullName.ToString( )+".Bufer.";
var output = HostFB.TreeItemHlp.ParentObject.FullName.ToString( )+".inOPC.";

for (int i=0;i<=N-1;i++)
{
var inputI = string.Format("{0}{1}{2}",input,"Block",(i+1).ToString());
var valueInputI = (ITreePinHlp)project.Item(inputI);
uint? valueInput = (uint?)(valueInputI.GetRTPin().ObjectValue);
ValueMassive[i] = (uint?)(valueInput);
}

for (int k=0;k<=N-1;k++)
{
var outputI = string.Format("{0}{1}{2}",output,"Block",(k+1).ToString());
var valueOutputI = (ITreePinHlp)project.Item(outputI);
valueOutputI.AddAssignValueTask((uint?)ValueMassiv e[k],null);
}
Такая привязка мне нужна была для того, чтобы значения при запуске не переписали текущие

SCADAMaster
05.11.2014, 08:47
В проекте имеется окно настроек, в котором имеется поле, куда нужно вводить пароль и кнопка "Применить".
Пришлите ваш проект.

azausatu
05.11.2014, 13:10
Пришлите ваш проект.

Проект пока прислать не могу. Попробую еще раз разобраться сам, если проблему не смогу устранить - сообщу Вам.

Возникла другая проблема - проблема при разработке ВФБ. Созданный элемент не появляется в палитре.
Вот выписка из отчета о ошибках:
*LogSession Started='05.11.2014 12:53:27' Computer='LENOVO-ПК' Version='3.6.0.44483' VersionName='3.6(DemoReleaseMax)_14_02_17_11_48' Config='Demo' Schema='1'*
*Error Thread='0xaa0' ThreadName='Обновление палитры ФБ' Time='05.11.2014 12:53:44.670' Error='Неопознанная ошибка ' Code='0x80004005'>
Не удается загрузить иконку для Код доступа 0511 (DReaderThread.cpp, 402)</Text>
Попытка загрузить из ресурсов иконку для фб Code0511.Control с ID=c9e859dc-f682-4fc2-8e19-5d636d611432 не удалась

Иконку создал с таким же именем как у класса, 16 пикселей на 16, 4bpp Indexed цвета. Лежит в той же папке что и класс.
Вот исходник: 15076

SCADAMaster
05.11.2014, 14:31
Вы изменили namespace ФБ. Не изменяйте namespace и имя класса которые wizard создал по умолчанию (это оговорено в документации).
Исправленная версия ФБ в приложении.

azausatu
05.11.2014, 15:17
Вы изменили namespace ФБ. Не изменяйте namespace и имя класса которые wizard создал по умолчанию (это оговорено в документации).
Исправленная версия ФБ в приложении.

Распаковал архив, построил решение. Не заработало. Удалил предыдущий dll файл из папки MasterScada и удалил ветку в реестре с данным CLSID, заработало. Спасибо большое! Тогда встречный вопрос, чтобы создать новый ФБ, не тратя время на создание нового проекта в студии, достаточно ли переименовать решение, поменять CLSID в контроле и в визуальной части, и ввести другие названия в DisplayName?

SCADAMaster
05.11.2014, 16:27
Лучше сделайте заново - это займет значительно меньше времени, чем выискивать ошибки из-за неправильного переименования

nikpdg
06.11.2014, 08:41
Добрый день. Имеется ли возможность в мастерскаде при работе в режиме исполнения блокировать оператору возможность входа в проводник (например нажав на кнопку плывущего окна на клавиатуре). В скаде "круг" или "wincc" к примеру эта возможность имеется. Операторы вечером поверх МС открывают игры, фильмы. Через месяц работы компьютер начинает виснуть.

SCADAMaster
06.11.2014, 11:03
На вкладке "служебные" палитры ФБ есть функциональный блок "Контроль приложений" - с его помощью вы можете отследить все действия которые выполняются на компьютере.

Для блокировки отдельных функций операционной системы можно воспользоваться сторонними программи. Например блокирование определенных действий можно сделать при помощи программы WinLock:
http://www.crystaloffice.com/winlock/
http://www.softkey.ru/catalog/program.php?chsph=46912967&ID=5091#o12858

Valera76
06.11.2014, 21:43
Доброго времени суток. У меня вопрос по редактору отчётов. Посмотрев видеопример, я создал отчёт в котором есть график изменения температуры. На графике каждая узловая точка отмечается кружочком. Но т.к. у меня график строится за интервал времени, примерно равный 2-м часам, то эти "кружочки" сливаются и не видно самой линии графика. Как сделать так, чтобы узловые точки на гафике никак не выделялись? Т.е чтобы график представлял собой просто тонкую линию. Заранее спасибо за ответ.

MrNobody
06.11.2014, 22:42
Добрый вечер!
1 Есть ОРС сервер - Lectus, который передаётся значения регистров из ПЛК в MasterScada на удалённый компьютер.
2 Эти переменные должны отображаться на мониторе оператора (окно 1 из рис.) , а также задаваться с экрана (окно 2 рис.).
Также значения этих переменных меняются локально с панели оператора СПК непосредственно на котельной.
15092

3 Значения переменных, хранящихся в регистрах ПЛК , а также значения, задаваемые с помощью ФБ "Команда" в режиме "редактирование сообщения", заводятся на входы ST текста.
4. Если пользователь задаёт значения и нажимает кнопку "Задать настройки", то они через выходы ST программы передаются ПЛК, который записывает их в свои регистры, и дальше эти значения выводятся в окне 1

Изначально настройки заданы в ОРС сервере, но , когда я запускаю Scada, то эти значения затираются и записываются 0. Как это можно сделать, чтобы Scada не затирала значения в регистрах, потому что в ST тексте сразу сохранить их в переменных не получается

SCADAMaster
07.11.2014, 08:21
Доброго времени суток. У меня вопрос по редактору отчётов. Посмотрев видеопример, я создал отчёт в котором есть график изменения температуры. На графике каждая узловая точка отмечается кружочком. Но т.к. у меня график строится за интервал времени, примерно равный 2-м часам, то эти "кружочки" сливаются и не видно самой линии графика. Как сделать так, чтобы узловые точки на гафике никак не выделялись? Т.е чтобы график представлял собой просто тонкую линию. Заранее спасибо за ответ.
Отключите видимость маркера в свойствах рядов диаграммы (см. приложение).

SCADAMaster
07.11.2014, 08:43
1 Есть ОРС сервер - Lectus, который передаётся значения регистров из ПЛК в MasterScada на удалённый компьютер.
2 Эти переменные должны отображаться на мониторе оператора (окно 1 из рис.) , а также задаваться с экрана (окно 2 рис.).
Также значения этих переменных меняются локально с панели оператора СПК непосредственно на котельной.

Лучше использовать для этой задачи команды с обратной связью и повторители по условию. Пример в приложении.
Рекомендуем вам заменить OPC сервер Lectus, на наш Modbus Universal MasterOPC сервер - у ОРС сервера Lectus возникают значительные задержки при передаче данных клиенту при большом количестве точек (от 300).

MrNobody
07.11.2014, 11:06
Лучше использовать для этой задачи команды с обратной связью и повторители по условию. Пример в приложении.
Рекомендуем вам заменить OPC сервер Lectus, на наш Modbus Universal MasterOPC сервер - у ОРС сервера Lectus возникают значительные задержки при передаче данных клиенту при большом количестве точек (от 300).

спасибо
в задании прописано использовать OPC Lectus

Vitorgan
07.11.2014, 16:58
Подскажите, а на что надо обращать внимание при сборке ПК для Мастерскады, на какие комплектующие? например оперативная память, частота процессора и т.д.

SCADAMaster
07.11.2014, 17:41
Это зависит от проекта.
Минимальные системные требования - 2 ядерный процессор, 2 Гб оперативной памяти и внешняя видеокарта. Чем больше проект - тем мощнее должен быть компьютер.

Vitorgan
08.11.2014, 09:21
Утро доброе, вопрос такой, есть две переменных одна беззнаковая целая (А), а вторая дискретная (Б). Переменная А отображает значение на весах, можно ли сделать так, что если в течении определенного времени (например 10 секунд) изменения значения не происходит, то включается на 2-3 секунды переменная Б.

SCADAMaster
08.11.2014, 12:53
На закладке палитры "Обработка сигналов" есть ФБ "Дифференициал" - с его помощью можно изменить на сколько изменился параметр за определенное время.
Затем вы можете с помощью модуля "Событие" отследить что значение не превышает какую-либо, близкую к нулю величину. Затем с помощью ФБ "Задержка по времени" вы можете сформировать логический сигнал, если величина не изменяется нужное вам время.

Vitorgan
09.11.2014, 11:52
Никак не получается. и на форуме про данный ФБ никто не спрашивал. А можете на "пальцах" объяснить как сделать вот это:


ФБ "Дифференициал" - с его помощью можно изменить на сколько изменился параметр за определенное время.
Затем вы можете с помощью модуля "Событие" отследить что значение не превышает какую-либо, близкую к нулю величину.

Приращение это время за которое должно пройти изменение, так? на вход я кидаю переменную А, которая должна изменяться (происходит "загрузка" компонента), если все работает, то "скорость изменения" периодически выдает разные значения. Вот с этой переменной мне и надо работать? Но как отслеживать это в событии я не понимаю.

Vitorgan
09.11.2014, 12:07
А я наверное понял, если "скорость изменения", в какой то момент упадет до нуля? то как раз это и означает что за определенное время переменная А не изменилась? Если это так, тогда другой вопрос, ведь переменная "А" не всегда будет изменяться, только когда происходит дозирование. Как сделать чтобы данный ФБ работал только в определенное время?

Vitorgan
09.11.2014, 12:30
И этого я добился, но опять столкнулся с проблемой, есть шнек из которого сыпется компонент, я сделал так, в событии прописал, что если шнек включен, и в ФБ "Дифференициал" скорость изменения равна 0, то на переменную "Б" подается сигнал. Но пока компонент пройдет сквозь шнек, проедет еще несколько секунд, следовательно, ноль на переменной "скорость изменения" будет висеть некоторое время, как тогда быть?

SCADAMaster
09.11.2014, 13:45
А в чем проблема? Используйте ФБ "Задержка по времени".
Можно в начальный момент - при старте шнека подать на вход этого ФБ чуть больше времени (например 20 секунд, вместо 10), а когда дифференциал изменится - дать снова 10.

Vitorgan
09.11.2014, 16:41
Значит я что то не понял. Как отследить по событию изменение. Ведь в событии у меня прописано все просто, если шнек работает, и "скорость изменения" ФБлока ровна нулю, то подать истину на переменную Б. Но ведь как только включается шнек, на "скорости изменения" все равно 0 стоит, Ведь компонент еще не начал сыпаться. а событие работает если 0.

SCADAMaster
09.11.2014, 19:28
Ведь в событии у меня прописано все просто, если шнек работает, и "скорость изменения" ФБлока ровна нулю, то подать истину на переменную Б.
Нужно подать результат события на вход ФБ "Задержка по времени", а уже его выход подавать на переменную Б.

КучаВопросов
10.11.2014, 10:08
Хотел бы уточнить, как можно через форму отчета изменить ориентацию страницы?

SCADAMaster
10.11.2014, 10:49
Ориентацию страницы можно задать на этапе разработки отчета. Это делается в свойствах страницы - пункт "Ориентация".

КучаВопросов
10.11.2014, 11:08
Ориентацию страницы можно задать на этапе разработки отчета. Это делается в свойствах страницы - пункт "Ориентация".

Я сделал форму с выбором выводимых параметров. Их несколько. Если выбрать один параметр, в принципе он поместится на странице с ориентацией портрет, но если выбрать все параметры, то они уже не помещаются на страницу с ориентацией Портрет. Вот я и хотел, можно ли выбрать ориентацию автоматически, в зависимости сколько выбрано параметров?

SCADAMaster
10.11.2014, 11:43
Вы используете события? Нужно в событии отчета "Начало построения прописать":
Page1.Orientation = StiPageOrientation.Portrait;
или
Page1.Orientation = StiPageOrientation.Landscape;

КучаВопросов
10.11.2014, 14:06
Возможно сдедать так:
Создать две страницы: Портрет и альбом. И в зависимости от количества выбранных параметров выбирать нужную страницу?

SCADAMaster
10.11.2014, 14:24
Нет, страница одна. Просто перед началом построения вы задаете ей ориентацию.

КучаВопросов
10.11.2014, 15:07
{Format("{0:MM.dd.yyyy}", Today)}.Выводит текущую дату. Как можно месяц вывести словами?

SCADAMaster
10.11.2014, 15:14
Вместо MM написать MMMM

azausatu
11.11.2014, 14:48
Добрый день.
Как очистить журнал? В идеале было бы при нажатии кнопки. Экспортирование проекта не подходит.

evg3798
12.11.2014, 03:19
С какими версиями MS SQL тестировалась Master Scada

SCADAMaster
12.11.2014, 09:09
MasterSCADA успешно функционирует с MS SQL 2005, MS SQL 2008, MS SQL 2012

ATA_jr
12.11.2014, 11:29
Добрый день. Как в MasterSCADA сделать так, чтобы измеряемые данные при экспорте в Excel показывались там с периодом в 10 секунд?

SCADAMaster
12.11.2014, 11:34
Активизируйте панель значений, и включите режим интерполяции с нужным вам интервалом.

SCADAMaster
12.11.2014, 11:37
Как очистить журнал? В идеале было бы при нажатии кнопки. Экспортирование проекта не подходит.
Можно через скрипт. Пример скрипта, с удалением по переднему фронту входа "Удалить".
После удаления журнал нужно обновить (отключить автопрокрутку и прокрутить скроллер на другое время).

using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using System.Linq;
using System.Windows.Forms;
using MasterSCADALib;
using System.IO;
using MasterSCADA.Documents;
using System.Collections.Generic;
using System.Text;
using InSAT.Library;

public partial class ФБ : ScriptBase
{
bool? M=false;
public override void Execute()
{
if (Удалить==true && M==false)
{
//удаляем архив текущего объекта
((MasterSCADALib.IArchiveCommon)HostFB.TreeItemHlp .Parent.Archive).ClearArchiveContent(0);
//удаляем вложенные подобъекты
HostFB.TreeItemHlp.Parent.NavigateChilds(delegate( ITreeObjectHlp item)
{
((MasterSCADALib.IArchiveCommon)((ITreeItemHlp)ite m).Archive).ClearArchiveContent(0);
return true;
}, TreeItemMask.Object, NavigateItemsFlags.IncludeCurrentItem);

}
M=Удалить;
}
}

ast1
12.11.2014, 14:35
Добрый день, есть сеть RS485, 31 модуль ПР114, ПР110, МВ110-8А, МВ110-2А, МК110-8Д4Р. Опрос МастерСКАДА через OPC ОВЕН Modbus, скорость 38400,
Часто появляются ошибки записи от разных блоков (МК110-8Д4Р и ПР110, ПР114, их 18 шт, расположены равномерно по длине)см рисунок.
Уменьшение скорости до 38400 не помогло (работало на 115200).Посоветуйте, как побороть.15155

SCADAMaster
12.11.2014, 15:08
В MasterSCADA запись в ОРС сервер у вас стоит по изменению?
Это ошибка выдается ОРС сервером, поэтому скорее всего проблема в нем.
Самый лучший вариант в вашем случае - заменить ОРС сервер ОВЕН на наш Modbus Universal MasterOPC Server - с ним подобных проблем не наблюдалось:
http://www.masteropc.ru/products/?category=399
Бесплатную версию на 32 точки, а также видеопримеры по созданию конфигурации можно скачать здесь:
http://www.masteropc.ru/prices/info.php?pid=6944

Aleksandr
13.11.2014, 19:15
Добрый день. Подскажите конфигурацию , необходима MasterSCADA на 500 точек ввода\вывода, плюс возможность просмотра экранов на 10 компьютерах в локальной сети через браузер.

SCADAMaster
13.11.2014, 20:09
Вам нужна MSRT500 и MSRT-Inet:
http://insat.ru/products/?category=216
http://insat.ru/prices/info.php?pid=388
Подробнее вы можете узнать обратившись в отдел продаж. Контакты есть на сайте:
http://insat.ru/about/contacts/

Aleksandr
13.11.2014, 20:29
Вам нужна MSRT500 и MSRT-Inet:
http://insat.ru/products/?category=216
http://insat.ru/prices/info.php?pid=388
Подробнее вы можете узнать обратившись в отдел продаж. Контакты есть на сайте:
http://insat.ru/about/contacts/

А может ли базовая версия экспортировать архивы (ФБ «Экспорт архивов») на внешний носитель.?


Нужна опция MSRT-BackUp?

SCADAMaster
13.11.2014, 21:08
Если нужно экспорт архивов в access, то нужна.
В базовой версии можно сохранять значения из архивов в csv с помощью тренда, а также в различные форматы средствами редактора отчетов.

nikpdg
14.11.2014, 15:07
Добрый день. Подскажите как преобразовать word получаемый с орс. Например число word 65520 - это должно быть *-16*. С уважением.

azausatu
15.11.2014, 15:07
Добрый день.
При записи в OPC значения 0,000001 оно долетают до контроллера, но OPC Server их обнуляет и возвращается в скаду 0. Типы данных double. Значения 0,00001 и больше обрабатываются корректно, а меньшие значения уже обнуляются.

ATA_jr
16.11.2014, 11:49
Здравствуйте, мне нужно вывести данные в текстовый файл, как это можно сделать? Сейчас есть что-то в этом роде (скриншот)15217

SCADAMaster
16.11.2014, 13:10
ФБ "Сохранение в файле" есть, и присутствует на закладке палитры "Работа с архивом".
Какие именно данные, и по какому алгоритму вам нужно выводить в файл.

ATA_jr
16.11.2014, 13:32
Данные со входа устройства. На счет алгоритма: допустим каждую секунду записывать число с устройства в файл. Сразу извиняюсь за свою безграмотность, ни разу не работал в MasterScada и пытаюсь разобраться в чужой программе.15218

SCADAMaster
16.11.2014, 13:48
А что дальше нужно делать с этими данными?
Может быть вам просто сохранять данные с помощью тренда (им можно экспортировать в csv).

ATA_jr
16.11.2014, 13:53
Как раз экспорт меня и интересует. Хочу использовать их в другой среде (LabView) и не знаю о возможно более грамотном способе это сделать.

SCADAMaster
16.11.2014, 14:24
Данные нужно будет передавать эпизодически (например оператор выбрал нужный интервал времени на тренде и сохранил) или нужно чтобы данные сохранялись постоянно?

ATA_jr
16.11.2014, 14:25
Нужно чтобы запись и сохранение производились постоянно

SCADAMaster
16.11.2014, 14:43
Воспользуйтесь трендом - им можно выполнять экспорт в csv.
С помощью ФБ "Управление документом" сохраняйте например каждые сутки значения в файл.
В данной документации:
http://www.masterscada.ru/services/support/art_step_by_step/Arc_MasterSCADA.pdf
в разделе "Экспорт архива средствами тренда" описано как это делается. Также похожие задачи решались в наших видеопримерах:
http://www.masterscada.ru/?additional_section_id=233

SCADAMaster
16.11.2014, 17:39
Добрый день.
При записи в OPC значения 0,000001 оно долетают до контроллера, но OPC Server их обнуляет и возвращается в скаду 0. Типы данных double. Значения 0,00001 и больше обрабатываются корректно, а меньшие значения уже обнуляются.
Проблема проявилась. Мы изучим данную ошибку.

azausatu
16.11.2014, 18:43
Проблема проявилась. Мы изучим данную ошибку.

Что можете посоветовать для решения проблемы? В проекте используются малые величины, 1*10-8 например. Может перерасчет делать, допустим умножать и делить на 1000, или кодировать значение.

SCADAMaster
16.11.2014, 19:16
Можете попробовать включить масштабирование.
Или подождите исправление проблемы (вероятно на следующей неделе).

Valera76
16.11.2014, 22:47
Доброго времени суток.
Подскажите пожалуйста, можно ли с помощью тренда присвоить значение переменной? Например, щёлкаешь на тренде мышкой, а переменной типа дата-время присваивается значение даты-времени той точки тренда около которой был этот щелчёк мыши.

Valera76
16.11.2014, 22:49
P.S. Т.е. я ищу способ быстро и легко задать временной интервал (одна переменная - начала интервала, а вторая - конец).

SCADAMaster
17.11.2014, 08:42
Да, можно - с помощью действий.
Посмотрите видеопримеры по тренду:
http://www.masterscada.ru/?additional_section_id=233
В разделе "Продвинутые возможности" это рассматривается.

ATA_jr
19.11.2014, 13:14
Добрый день.
С прибора ОВЕН ТРМ 200 получаю данные о температуре в MasterSCADA. Стоит задача АВТОМАТИЧЕСКИ записывать данные за определенный отрезок времени в файл (допустим, формата CSV). Подскажите, пожалуйста, как это сделать?

SCADAMaster
19.11.2014, 13:25
С какой целью? Эти данные нужны для передачи в другую программу, или нужно предоставлять отчеты, или нужно средствами скады просматривать эти данные?

ATA_jr
19.11.2014, 14:01
Цель - импорт этих данных затем в 1с. В принципе, в своем проекте в окне тренда я могу сохранять данные за выбранный промежуток в формате CSV, но мне необходимо, чтобы это происходило автоматически.
З.Ы. заранее благодарю за помощь)

SCADAMaster
19.11.2014, 14:20
Это делается с помощью тренда и ФБ "Управление документом".
Посмотрите данный документ:
http://www.masterscada.ru/services/support/art_step_by_step/Arc_MasterSCADA.pdf
в нем описывается как осуществлять автоматический экспорт средствами тренда.

mkv
20.11.2014, 10:16
Добрый день. Подскажите пожалуйста.
Ситуация такая:
Имеется график, отображающий несколько переменных с разными значениями. Одно значение находится в диапозоне 0-10,(ось "У" 0-10) другое- 400-500 (ось "У" 0-500).Не могу правильно сделать настройки. Мне надо, чтобы при выделении нужной переменной появлялся нужный диапозон в оси "У". Но при этом значение другой переменной правильно отображалось на графике. Сейчас у меня при выборе большей переменной (400-500), график меньшей переменной находися не внизу шкалы "У". Меньшая переменная определяет вехний предел "У" 500, как 10. А когда наоборот выбираю меньшую переменную с диапозоном "У" 0-10, у меня на графике видна и большая переменная. Хотя верхний придел "У"=10.
Спасибо.
P.S Внешний вид графика "Только графики". Отключена "вертикальная прокрутка".

mkv
20.11.2014, 12:54
Наверно я не совсем понятно объяснил.
В графике отображаются две переменные (пера) с разной шкалой. Для одной переменной (пера) шкала 0-500, для другой 0-10. Выделяю переменную (перо) с меньшей шкалой графика. Эта переменная (перо) корректно отображается в этом графике. Но при этом на этом же графике я вижу и другую переменную (перо), хотя её значение гораздо больше шкалы "У". Фактически она должна уйти за верхний предел графика. Я её не должен видеть т.к.значение переменной (пера) равно 400. Как сделать так, чтобы при выделении нужной переменной (пера), другая переменная (перо) отображалась корректно в соответствии со шкалой графика выделенной переменной (пера).

Victor721
20.11.2014, 13:37
Добрый день.
У меня техническое задание, опрос несколько модулей сбора данных через MasterOPC, проект я накидал, все вроде работает,но не не знаю как реализовать вывод сообщения при потере связи с одним или нескольких МСД, нужно вывести сообщение и вместо показаний с датчиков вывести текс "НД" (Нед данных).
Не судите строго , я только учусь.

SCADAMaster
20.11.2014, 14:08
Вообще ничего для этого не нужно - если связь пропадет изменится признак качества, появится сообщение, на мнемосхеме вместо значений будут знаки вопроса (или значение будет подчеркнуто), на тренде значения будут отображаться пунктирной линией.

Victor721
20.11.2014, 14:19
Мне нужно чтоб всплывало сообщение о потере связи конкретно с каки МСД. На подчеркивание оператор может и не обратить внимание.
Спасибо.

SCADAMaster
20.11.2014, 15:12
Тогда сделайте пользовательское сообщение - через событие.
Берете любую переменную из вашего прибора тащите ее в таблицу входов под полем формулы, формула будет такая:
OPCQuality( Выход ) = ОШИБКА
На закладке "Сообщение" пишете текст вашего сообщения.

mkv
20.11.2014, 15:14
Вот уже и добрый вечер.
Хотелось бы всё-же дойти до истины.
Я, как понял, мой вопрос написан не совсем понятно. ПОСТ 1880-1881
Объясните, что неправильно я объясняю.
В графике несколько перьев с разными настройками шкалы "У". Отслеживается теплоноситель в прямой т/ч и расход холодной воды т/ч (теплосчётчик СПТ961.2). Эти две переменные в одном графике. У одной переменной значение колеблится в пределах 400-500т/ч. У другой переменной значение колеблится от 0 до 40 т/ч. Всё это на одном графике. Я сделал шкалу "У" графика 0-500. Но при этом перо расхода холодной воды практически не видно. Я в настройках пера расхода холодной воды ось "У" установил 50. Теперь при выделении пера расхода холодной воды шкала "У" общего графика становится 0-50. НО ПРИ ЭТОМ Я НА ЭТОМ ГРАФИКЕ ПРОДОЛЖАЮ ВИДЕТЬ ПЕРО С ТЕПЛОНОСИТЕЛЕМ В ПРЯМОЙ 400т/ч. Но ведь это не корректно. Как я могу видеть показания 400т/ч при максимум шкалы 50 т/ч????
Фактически при этом другое перо не должно отображаться т.к его параметр ушёл за верхний придел (т.е больше 50 т/ч).
P.S. Специально для операторов, чтобы не наделали делов тренд отображается как "ТОЛЬКО ГРАФИКИ".

SCADAMaster
20.11.2014, 18:03
Так, как вы хотите сделать нельзя.
Можем предложили или сделать два отдельных тренда с разными настройками, или сделать в тренде две оси значений.

Vitorgan
21.11.2014, 15:40
Здравствуйте, подскажите пожалуйста, пытаюсь создать отчет: Данные для отчета следующие:
1. Рецепт для 4 компонентов
2. Фактические значения 4 компонентов
3. Номер замеса
4. Время замеса

Как сделать чтобы при каждом новом замесе создавалась новая таблица. (посмотрел пдф-файл по созданию отчетов, но там с замесами связан импульс, не смог разобраться)
И еще, начался замес, происходит набор компонента 1, а следовательно изменение веса, как сделать так чтобы в отчет(в таблицу) записалось максимальное значение, и именно в свой замес.

ATA_jr
21.11.2014, 16:59
Здравствуйте. Всё пытаюсь настроить автоматическое сохранение данных средствами тренда с помощью этого документа http://www.masterscada.ru/services/support/art_step_by_step/Arc_MasterSCADA.pdf.
Не получается в ФБ "Управление документом" на закладке «Настройки», в поле «Документ» задать тренд, с которым планируется работать.
На закладке "Настройки" в поле "Документ" в контекстном меню не отображается название тренда. Также его невозможно прописать вручную.
Подскажите, в чём может быть проблема?
И ещё вопрос:
В ФБ "Управление документом" или "Сохранить в файл" на вход "Имя файла" что нужно подключать? Т.е. где нужно прописать путь к файлу, в который будут сохраняться данные?

SCADAMaster
21.11.2014, 17:35
Как сделать чтобы при каждом новом замесе создавалась новая таблица. (посмотрел пдф-файл по созданию отчетов, но там с замесами связан импульс, не смог разобраться)

С чем именно вы не разобрались?
Нужно в конце каждого замеса каким то образом сформировать импульс - сигнал о том, что замес завершен. Есть у вас возможность сделать такой импульс?

SCADAMaster
21.11.2014, 17:39
На закладке "Настройки" в поле "Документ" в контекстном меню не отображается название тренда. Также его невозможно прописать вручную.

Там нет контекстного меню - там раскрывающийся список, в этом списке и должен быть тренд или любой другой документ (при условии что в объекте куда добавлен этот ФБ документы есть).



В ФБ "Управление документом" или "Сохранить в файл" на вход "Имя файла" что нужно подключать? Т.е. где нужно прописать путь к файлу, в который будут сохраняться данные?
На этот вход нужно подать путь, в который будет сохраняться файл. Можно прописать его константой, либо формировать динамически.
Посмотрите наши видеопримеры:
http://www.masterscada.ru/?additional_section_id=233
В частности, во втором видеопримере, часть 9 как раз разбирается сохранение тренда.

Vitorgan
21.11.2014, 23:40
С чем именно вы не разобрались?
Нужно в конце каждого замеса каким то образом сформировать импульс - сигнал о том, что замес завершен. Есть у вас возможность сделать такой импульс?

Есть такая возможность, все, замес меняется, но таблица не отделяется, идет одной сплошной, а не отдельными маленькими.

SCADAMaster
22.11.2014, 09:38
Просто добавьте в таблицу еще одну строку внизу, и уберите у нее границы - она станет отступом.
В документации именно так и описывается.

Vitorgan
22.11.2014, 12:14
С этим разобрался, спасибо. Но теперь другая проблема, делаю так же как в обучающих примерах, подсчет итогов используемого сырья, и когда ставлю после значения - кг, то формат сбрасывается.

если без кг, то получается например: 1 234,5, только подставлю кг, автоматически при предварительном просмотре получается: 1 234,567 кг.

SCADAMaster
22.11.2014, 14:03
Попробуйте в настройках формата, задать формат "По выбору", и пропишите в нем: 0.0 кг

КучаВопросов
02.12.2014, 09:13
Хотел бы уточнить. Если команду перетащщить на мнемосхему как редактируемое значение, то при нажатии выходит ввод значения. Можно ли сделать изменение значения колесиком мыши например или кнопки для изменения шага на 1 единицу?

SCADAMaster
02.12.2014, 09:48
Нет, так сделать нельзя.

Valera76
03.12.2014, 00:23
Доброго времени суток.
У меня на тренде есть 9 графиков температуры. Все девять переменных, графики которых строятся на тренде имеют одинаковую шкалу, заданную на вкладке "Шкалы".

Вопрос:
1. Как сделать так, чтобы когда оператор изменил масштаб (или интервал значений, показываемый на графике) одного из графиков, масштаб (или интервал) остальных графиков стал точно таким же?
2. Как не изменяя масштаба вертикальной оси, "перемещаться" по графику в вертикальном направлении? Подозреваю, что здесь может помочь вертикальный слайдер, но я так и не понял логику его работы.

SCADAMaster
03.12.2014, 09:27
1. Как сделать так, чтобы когда оператор изменил масштаб (или интервал значений, показываемый на графике) одного из графиков, масштаб (или интервал) остальных графиков стал точно таким же?

Переводите тренд в продвинутый уровень, выделяете перо и в разделе "Связанные свойства" через настройки "Окно Y" и "Разметка сетки Y" привязываете перо к основному.
То есть например перо 1 - это будет основное (у него в связанных свойствах ничего не меняете), а у остальных в связанных свойствах задаете перо 1.



2. Как не изменяя масштаба вертикальной оси, "перемещаться" по графику в вертикальном направлении? Подозреваю, что здесь может помочь вертикальный слайдер, но я так и не понял логику его работы.
Не совсем понятно что вы имеете ввиду. Опишите подробнее что вы хотите получить.

Valera76
03.12.2014, 23:09
Не совсем понятно что вы имеете ввиду. Опишите подробнее что вы хотите получить.
Например, оператор задал для пера на тренде показывать значения с 10 до 20 градусов Цельсия. Т.е. по оси Y отображается интервал 20-10=10 градусов Цельсия. Потом, например, возникла необходимость отобразить значения в интервале от 25 до 35 градусов Цельсия. Т.е. масштаб по оси Y остаётся прежний - 10 градусов, изменяются только верхняя и нижняя границы. Сейчас я вручную изменяю верхнюю и нижнюю границу в окне легенды. Есть ли более простой способ?

SCADAMaster
04.12.2014, 08:14
Можно просто перо потащить вниз. Это делается при активной панели настроек при помощи мыши или кнопками на панели вертикального масштаба.

azausatu
04.12.2014, 13:52
Добрый день.
Возникла необходимость подсвечивать на мнемосхеме какую-либо область при наведении мыши. На мнемосхеме.
Пока возникла мысль при помощи ФБ "Координаты мыши" определять координаты и если они находятся внутри области включать отображение картинки, рамки вокруг элемента.
Или написать ВФБ. Но как я понимаю, у безоконного контрола нет такого метода, который подсвечивал бы его при нахождении курсора внутри области. А с обычным визуальным контролом не совсем удобно работать, т.к. он не имеет общий Z-порядок. Как лучше реализовать? В идеале область может быть не только прямоугольной.

ATA_jr
05.12.2014, 15:07
Добрый день. Вот какой вопрос: есть ли в MasterSCADA возможность показывать мультфильм на мнемосхеме, затем временно останавливать его и скрывать, а затем снова показывать?
Заранее спасибо.

SCADAMaster
05.12.2014, 15:28
Мультфильм = набор картинок?
На мнемосхеме->Палитра->Мультимедиа->Мультфильм.
Добавляете набор картинок, динамизируете вход "работа" и "отключен".
"Отключен" отвечает за отображение (виден\нет), "работа" за включение\останов анимации

ATA_jr
05.12.2014, 15:55
>Мультфильм = набор картинок?
Да, именно.

Огромное спасибо за помощь!

PustovoyKE
07.12.2014, 19:05
Здравствуйте, интересует такой вопрос: реализую систему управления на тачскрине, и по этому необходимо либо совсем убрать ввод первоначального выбора оператора и ввод пароля, либо чтобы при запуске программы автоматически открывалась экранная клавиатура (но т.к. проект до этого момента не загружен, внутри никакие C# скрипты не работают)

SCADAMaster
07.12.2014, 19:31
Автоматический вход сделатьможно. Для этого вам нужно запустить файл проекта с параметрами /user: /password: Для этого вам нужно либо сделать файл bat либо задать свойства ярлыка (что предпочтительнее).
Подробнее вы можете прочитать в справке. Раздел "Работа в режиме исполнения - Запуск проекта из командной строки и по ярлыку".

ATA_jr
08.12.2014, 15:00
Пытаюсь создать кнопку выхода из программы в режиме исполнения (создаю в дереве объектов команду - настраиваю тип "дискретный" - действие "системное" - объект "выход"; потом выношу эту кнопку на мнемосхему). Но в режиме исполнения кнопка перечеркнута красными линиями и, соответственно, не работает. До этого использовал такие кнопки в другом проекте и всё работало идеально. Не подскажете, в чем может быть проблема?

Заранее спасибо.

SCADAMaster
08.12.2014, 17:36
Объект назначен компьютеру (закладка "общие")?

ATA_jr
08.12.2014, 18:27
Нет. Спасибо за ответ. Помогло.

Vitorgan
13.12.2014, 00:07
Здравствуйте, подскажите пожалуйста, возможно ли организовать действие:

При нажатии на кнопку пуск, высвечивается окно, которое оповещает оператора о том, что переменная А и В выключены ( если включены, окно не появляется). Я знаю как создать область выбора, как сделать чтобы окно появлялось только при условии, но самое главное, надо чтобы окно появилось один раз перед нажатием кнопки пуск, и если окно просто закрыли(проигнорировали)-зона выбора перестала работать.

SCADAMaster
13.12.2014, 09:53
При нажатии на кнопку пуск, высвечивается окно, которое оповещает оператора о том, что переменная А и В выключены ( если включены, окно не появляется).
В событии проверяете состояние переменных А, В и вашей кнопки, условие соответствует - окно появляется.


но самое главное, надо чтобы окно появилось один раз перед нажатием кнопки пуск, и если окно просто закрыли(проигнорировали)-зона выбора перестала работать.
Не совсем понятно что вам требуется.

mkv
18.12.2014, 11:40
Добрый день.
Наверняка этот вопрос уже Вам задавали. Хотелось бы уточнить. Имеется MSRT500. Как правильно подсчитать количество внешних точек.
(На сайте InSAT не совсем понятно).
Похоже нам пора переходить на следующую версию.
На данный момент имеем: Система-342; ФБ-57; Объект-497. Я, как понял, нам осталось добавить только 3 объекта?
Т.Е. надо уже преобретать версию MSRT1K?
Спасибо.

SCADAMaster
18.12.2014, 13:14
Нет, приобретать MSRT1K вам судя по всему не нужно.
Выделите компьютер, закладка "Общие" нажмите подсчитать количество связей - посмотрите максимальное из них. Если не превысили 500, значит все нормально.
Также можно выполнить Система - Сформировать опции для заказа, вам будет подобрана нужная конфигурация.

Вот здесь все подробно расписано:
http://insat.ru/products/faq_scada_opc/teg_counter_description/

apicik
18.12.2014, 13:50
Доброго времени суток!
Подключил ТРМ212 к MasterScada, пытаюсь сделать шкалу от -15 до + 15, в которой будут накапливаться(каждое значение будет складываться с предыдущим) динамически-изменяющиеся значения (от "-1" до "+1").
Значение = Аt + А(t-1).

SCADAMaster
18.12.2014, 14:06
Не совсем понятно что именно вам требуется. Опишите подробнее вашу задачу.
По какому алгоритму должно происходить накопление?

apicik
18.12.2014, 14:20
Не совсем понятно что именно вам требуется. Опишите подробнее вашу задачу.
По какому алгоритму должно происходить накопление?

"Значение 1" - "А" принимает значения от "-1" до "+1". Задача 1 - суммировать каждое новое значение с предыдущей суммой значений.
Задача 2 - изобразить на шкале значение(Задача 1), границы которой будут ограничены -15 и +15. Если значение будет равно -30 и начнет подниматься то и шкала должна начать подниматься( от -15).
Пытаюсь изобразить работу задвижки, зная её ход 30 секунд.

SCADAMaster
18.12.2014, 14:44
Для суммирования с предыдущим значением воспользуйтесь модулем расчет. На вкладке "Формула" добавьте в таблицу переменных значение А, и сам расчет. На закладке "Опрос выхода" у расчета поставьте значение до опроса - 0.
Формула будет примерно такая:
ЕСЛИ (А=1,Расчет+1, ЕСЛИ(А=-1, Расчет-1, Расчет)

Vitorgan
21.12.2014, 10:23
Доброе утро, сразу несколько вопросов, можно ли увеличить скорость изменения дискретных значений, уж слишком медленно все. В Modbus opc сервере меняются все значения практически мгновенно, даже аналоговые. А вот в дереве объектов проходит секунды 2, только потом меняет свое состояние. А если раскладываю битовую маску, то еще дольше. Можно ли с этим как то бороться?

Второй вопрос, требуется счетчик, объясню, переменная "А" должна включиться 5 раз. Но чтоб скада ограничила включение 6 раза. Данный счетчик должен сбрасываться, при переходе "В" в - 0.

SCADAMaster
21.12.2014, 11:09
Доброе утро, сразу несколько вопросов, можно ли увеличить скорость изменения дискретных значений, уж слишком медленно все. В Modbus opc сервере меняются все значения практически мгновенно, даже аналоговые. А вот в дереве объектов проходит секунды 2, только потом меняет свое состояние. А если раскладываю битовую маску, то еще дольше. Можно ли с этим как то бороться?

В дереве объектов данные обновляются с некоторым периодом - примерно 1-2 секунды. Но это относится только к отображению данных в дереве. Передача же данных по связям проходит без задержки - с установленным периодом опроса.



Второй вопрос, требуется счетчик, объясню, переменная "А" должна включиться 5 раз. Но чтоб скада ограничила включение 6 раза. Данный счетчик должен сбрасываться, при переходе "В" в - 0.
Воспользуйтесь ФБ "Счетчик дискретных импульсов" - им вы можете производить счет. Задайте на входе "Максимальное значение" число которым хотите ограничить величину счетчика.
Для сброса счетчика используйте ФБ "Сброс".

Vitorgan
21.12.2014, 11:23
В дереве объектов данные обновляются с некоторым периодом - примерно 1-2 секунды. Но это относится только к отображению данных в дереве. Передача же данных по связям проходит без задержки - с установленным периодом опроса.

Но динамизация на мнемосхеме мне кажется тоже медленно работает

SCADAMaster
21.12.2014, 11:45
По умолчанию стоит период 1000 мс, как правило этого достаточно. Оператор все равно не успеет быстрее обработать данные.

ivandragon
22.12.2014, 07:55
Доброго времени суток. Как сделать так, чтобы объект или текст отображался на мнемосхеме по условию. Например есть дискретный сигнал об аварии оборудования, но мне нужно чтобы он отображался, только тогда когда есть сигнал логической единицы.

SCADAMaster
22.12.2014, 09:03
Для этого нужно использовать входы динамизации, в частности вам нужен вход динамизации "Отключен".
Подробнее про динамизацию вы можете посмотреть в этом документе:
http://www.insat.ru/services/support/art_step_by_step/master%20scada%20animation.pdf

Roman62rus
22.12.2014, 17:12
чтобы он отображался, только тогда когда есть сигнал логической единицы.
К сожалению, в данной СКАДе можно только отключать изображения по логическому сигналу, а гораздо удобнее было бы иметь возможность их также и включать. Но, говорят, нельзя сделать так. Однако выход есть. По моему небольшому опыту, удобнее всего пользоваться событиями, потому что их можно назвать так, чтобы было понятно, что это событие делает.
Например, если есть насос, и у него возможны три состояния: выключен, включен и авария. Соответственно, есть изображения этого насоса, соответствующие трём состояниям: серый, зелёный, красный. Рисунки должны быть одинакового размера и вообще отличаться только цветом. На мнемосхеме эти рисунки должны лежать "стопкой".
Создаём события под названиями "Серый скрыть", Зелёный скрыть", "Красный скрыть". В формуле каждого события указываем условия, при которых соответствующий рисунок будет скрыт (отключен). Например, если мы имеем два сигнала о состояниях насоса: Включен/выключен (лог. 0/лог. 1) и Авария (лог. 1), то формула для события "Скрыть серый" будет: "Включен ИЛИ Авария", для события "Скрыть зелёный": "НЕ Включен ИЛИ Авария", для события "Скрыть красный": "НЕ Авария". С выходов этих событий подаём сигналы на входы динамизации "Отключить" каждого из изображений.
Можно обойтись и двумя динамизированными картинками, оставив одну как есть, но тогда необходимо правильно их расположить по слоям мнемосхемы (нединамизированная должна лежать ниже всех). Например, снизу вверх: зелёный, серый, красный. Если насос включен, ни серое, ни красное изображения не будут видны, а зелёное останется. Можно ещё дополнить аварийное изображение миганием, тогда при аварии будет периодически меняться цвет с серого на красный, это очень хорошо привлекает внимание.

SCADAMaster
22.12.2014, 17:30
Обычно для такой задачи используют контрол "выбор изображения".

Vitorgan
22.12.2014, 17:56
Здравствуйте, подскажите пожалуйста, есть переменная А, команда Б и событие, как сделать чтобы при переходе А в состояние ВЫКЛ, Б выдала импульс на событие, на секунду его ОТКЛЮЧИВ(состояние - ЛОЖЬ).

Vitorgan
22.12.2014, 18:17
В правильном ли направлении я двигаюсь вообще?

Есть емкость №1, в которую насыпается компонент из другой емкости №2, если вес емкости№1 не изменяется(не происходит насыпания компонента), требуется включить пневмомолоток, который "тресанет" емкость №2. Для отслеживания изменения веса, использовал ФБ "Дифференциал", создал событие1, в формуле которого прописал, что если "скорость изменения" дифференциала =0, событие переходит в состояние - Истина. Но мне пришлось ограничить вкл. пневмомолотка "задержкой по времени1", т.к. должно пройти определенное время(компонент должен пройти через шнек и т.д. перед тем, как достигнет емкости№1). Все заработало.

Дальше требовалось чтобы "задержкка по времени1" включалась снова, повторно включая мневмомолоток, если вес до сих пор не начал изменяться. Но как мне сбросить "задержкка по времени1"? Я додумался только сбрасыванием события1 (который в свою очередь сбросит "задержку по времени1", но сбросить мне надо событие1, только когда пневмомолоток отработал.

Очень сильно намудрил, Заранее благодарю за помощь.

SCADAMaster
22.12.2014, 19:34
Здравствуйте, подскажите пожалуйста, есть переменная А, команда Б и событие, как сделать чтобы при переходе А в состояние ВЫКЛ, Б выдала импульс на событие, на секунду его ОТКЛЮЧИВ(состояние - ЛОЖЬ).
Командой так сделать нельзя. Воспользуйтесь событие.
Можно также при помощи ФБ "Задний фронт" отследить выключение переменной А, а затем в самом событии прописать в формуле чтобы при импульсе на выходе "Задний фронт" событие выключилось.

SCADAMaster
22.12.2014, 19:39
Дальше требовалось чтобы "задержкка по времени1" включалась снова, повторно включая мневмомолоток, если вес до сих пор не начал изменяться. Но как мне сбросить "задержкка по времени1"? Я додумался только сбрасыванием события1 (который в свою очередь сбросит "задержку по времени1", но сбросить мне надо событие1, только когда пневмомолоток отработал.

Да, нужно сбросить событие которые подает сигнал на событие. Если это событие сбрасывать нельзя, то добавьте еще одно промежуточное, в формулу которого добавьте условие кратковременного сброса (например по нажатию кнопки).

Vitorgan
22.12.2014, 23:58
Спасибо) а можно с помощью скады сделать такое: Есть переменная с разными значениями, каждое значение это вид ошибки - Можно ли сделать так, чтобы в шаблон текста выводился текст относящийся к одной из многих ошибок. Я придумал только так, создать окно в котором написан кусок текста(общий, шаблонный) а ниже текст привязанный к данной ошибке. На каждую ошибку создать свое событие, и прописать в нем значение переменной равно =1, то появляется текст ошибки 1, =2, =3 и т.д. И в свойствах динамизации отключать текст, когда событие =0. Но в итоге создается большое количество однотипных событий. Может есть средства мастерскады способные решить данную проблему без "танцев с бубном"

SCADAMaster
23.12.2014, 10:45
Можно использовать перечислимую переменную. Система - Шкалы - Перечислимые. Создаете шкалу, назначаете какое число какому тексту соответсвует. Затем назначаете переменной.
Эту переменную можно использовать и на мнемосхемах и в тексте событий.

SokolovS
23.12.2014, 11:15
MasterOPC 3.1.2
В настройках максимальный разрыв адресов чтения 100, максимальное количество регистров для чтения - 125
OPC сервер шлёт такой запрос:
Tx: [0008] 01 03 48 00 00 84 52 09
Это запрос на чтение 132 регистров, если правильно понимаю

Roman62rus
23.12.2014, 12:22
Обычно для такой задачи используют контрол "выбор изображения".
Если бы это было где-нибудь описано...

Даже интересно стало, пытался применить, но, без описания и примера не выходит ничего. Проблема в том, что для указанного контрола нужно сформировать номер выводимого изображения. На входе две логических переменных, то есть всего 4 возможных значения, из них используются 3. Чем сформировать?

Но есть ещё вопросы. Первый: как сделать, чтобы диапазон значений, вводимых оператором в Команду, был ограничен минимумом и максимумом? Галочку я поставил в окошке "Значение", а сам диапазон где задать?
Второй: почему я не могу изменить цветовую раскраску шрифта при различных соотношениях текущего значения с порогами?
Третий: для чего используются галочки в окне "Цвет"?

Описания для этого окна в программе тоже нет или оно сильно устарело.

SCADAMaster
23.12.2014, 12:49
MasterOPC 3.1.2
В настройках максимальный разрыв адресов чтения 100, максимальное количество регистров для чтения - 125
OPC сервер шлёт такой запрос:
Это запрос на чтение 132 регистров, если правильно понимаю
Пришлите вашу конфигурацию.

SCADAMaster
23.12.2014, 12:52
Первый: как сделать, чтобы диапазон значений, вводимых оператором в Команду, был ограничен минимумом и максимумом? Галочку я поставил в окошке "Значение", а сам диапазон где задать?

Диапазон задается у шкалы. Создаете шкалу, назначаете ее переменной, тогда и будет ограничение диапазона.



Второй: почему я не могу изменить цветовую раскраску шрифта при различных соотношениях текущего значения с порогами?

Она опять таки определяется раскраской шкалы.



Третий: для чего используются галочки в окне "Цвет"?

Можно отключить раскрашивание значение в цвет определенного нарушения.

SokolovS
23.12.2014, 13:02
Пришлите вашу конфигурацию.Ничего необычного вроде нет, вот она
Ещё проблемы бывают при работе с ненадёжными линиями, ответ на один запрос (уже отвалившийся по таймауту) иногда принимается за ответ на другой. Насколько понимаю, эту проблему никак не устранить кроме как увеличением времени ответа

SCADAMaster
23.12.2014, 14:06
Ничего необычного вроде нет, вот она

Ошибка проявилась. Мы разберемся с ней.
Пока что уменьшите количество максимального разрыва - до 50 или меньше



Ещё проблемы бывают при работе с ненадёжными линиями, ответ на один запрос (уже отвалившийся по таймауту) иногда принимается за ответ на другой. Насколько понимаю, эту проблему никак не устранить кроме как увеличением времени ответа
Да, только так. Можно еще закрывать порт в каждом цикле опроса.

SokolovS
23.12.2014, 14:30
Ошибка проявилась. Мы разберемся с ней.
Пока что уменьшите количество максимального разрыва - до 50 или меньшеСпасибо, буду ждать



Да, только так. Можно еще закрывать порт в каждом цикле опроса.Это разве поможет? Чаще такая проблема возникает при нескольких запросах в рамках одного цикла.

SCADAMaster
23.12.2014, 14:50
Как это может возникнуть в одном цикле? Есть не было получено ответа на запрос, то выполняется новый запрос того же адреса и так заданное количество попыток, после чего выставляется признак качества, порт закрывается и т.д.

SokolovS
23.12.2014, 15:11
Возможно, я неправильно себе представляю, но кажется, наблюдал что-то похожее:
Сервер шлёт запрос, таймаут.
Сервер шлёт ещё запрос, получает ответ на первый запрос
Сервер шлёт другой запрос, получает ответ на повторный первый

SCADAMaster
23.12.2014, 15:23
В таком случае только увеличивать время ожидания ответа.

Roman62rus
23.12.2014, 23:26
Диапазон задается у шкалы. Создаете шкалу, назначаете ее переменной, тогда и будет ограничение диапазона
Имею прибор, измеряющий ток 4...20 мА, а затем преобразующий измеренные значения в проценты от 0 до 100. Результат преобразования заносится в регистр текущего значения, откуда и считывается OPC сервером в виде целого числа (чтобы получить настоящее значение, это число нужно разделить на 10). То есть практически это float, но без децимальной точки. Я создал шкалу для этой OPC переменной от 0 до 100%. Но в приборе есть ещё уставка, которую нужно считывать и изменять с компьютера. Естественно, что форматы текущего значения и уставки идентичны, идентичны и их шкалы. Но уставку оператор должен иметь возможность регулировать только в пределах 10...15%, не более и не менее. Я представляю это так, что если оператор введёт, например, 30%, то программа выставит 15. Другой приемлемый вариант - программа выведет сообщение о недопустимом вводе и оставит прежнее значение уставки. Чтобы так сделать, на какую переменную нужно назначить шкалу 10...15%? Что будет, если значение уставки, записанное в прибор с его собственной передней панели, выйдет за пределы указанной шкалы?

Наверное, я что-то понимаю совсем неправильно?

SCADAMaster
24.12.2014, 09:18
Я представляю это так, что если оператор введёт, например, 30%, то программа выставит 15.
Можно сделать так - при помощи расчета.
На вход расчета поступает введенное значение, в расчете проверяется корректность, и результат выдается на выход.


Другой приемлемый вариант - программа выведет сообщение о недопустимом вводе и оставит прежнее значение уставки. Чтобы так сделать, на какую переменную нужно назначить шкалу 10...15%?

Да, делаете отдельную шкалу для уставки.


Что будет, если значение уставки, записанное в прибор с его собственной передней панели, выйдет за пределы указанной шкалы?

Да ничего не будет. Отобразится на экране это значение и все.
Если будет включен контроль аварийных границ - то выведется сообщение.

Roman62rus
24.12.2014, 12:21
Да, делаете отдельную шкалу для уставки.

Да ничего не будет. Отобразится на экране это значение и все.
Если будет включен контроль аварийных границ - то выведется сообщение.

Спасибо, по такому варианту самое то! Пришлось, правда, все аварийные и предупредительные границы удалить, иначе сообщениями замучает. Теперь понятно, что шкалы работают только на контроль получаемых значений, и не пересчитывается по ним ничего. Я, признаться, сначала думал иначе.

Просмотрел вчера ещё раз ролики по OPC серверу. О масштабировании. Отдельно рассматривается масштабирование входного сигнала (при чтении онли), и отдельно при чтении/записи, но через разные регистры контроллера. Хотелось бы понять, действует ли обратный пересчёт (при отправке команды), если сервер общается с одним и тем же регистром контроллера. Просто сейчас нет возможности подключить железо.

SCADAMaster
24.12.2014, 13:10
Конечно - пересчет работает в обе стороны, независимо от того привязан к тег к одному или к двум регистрам.

Roman62rus
24.12.2014, 15:34
Спасибо. Следующий вопрос: как сделать, чтобы оператор не мог открыть дерево системы и дерево объектов? У меня получилось сделать только, чтобы он не мог их закрыть, а при входе в режим исполнения они появляются. Подозреваю, что, если сделать так, чтобы эти деревья не появлялись в режиме исполнения, то вопрос был бы решён.

UPD Кажется, я сам нашёл: Система>Режим исполнения>Настройки>Внешний вид при активном документе>снять галку с ненужного.

SCADAMaster
24.12.2014, 15:51
Нет, это делается через права доступа.
Система - Операторы - Права доступа - нужная должность - Навигация в дереве системы, навигация в дереве объектов.

Roman62rus
24.12.2014, 17:33
Права доступа к навигации по деревьям я у операторов отнял. Но если при входе в режим исполнения деревья уже выводятся? Даже если навигация по ним запрещена, место-то на экране они занимают, а убрать их невозможно, так как навигация по ним запрещена. С другой стороны, если деревья для операторов не выводятся, а навигация по ним тоже запрещена, то операторы вообще не увидят деревьев, что и требовалось.

Andrei1401
25.12.2014, 11:21
Здравствуйте, хотелось бы вернуться к вопросу использования SCADA системы с сенсорной панелью. Можно-ли реализовать так чтобы при нажатии на на задание или приложение клапана, в ФБ регулятор, выскакивало окошко с цифрами для ввода значения. А то пользоваться стандартной клавиатурой Windows не совсем удобно.

Vitorgan
25.12.2014, 13:45
Подскажите пожалуйста, с помощью какого ФБ можно запомнить максимальное значение одной переменной? и чтобы сбрасывать можно было

azausatu
25.12.2014, 16:26
Добрый день
Нигде не могу найти отключения канала сообщений для ФБ "Распаковка аналогового 32бит значений". Появляется сообщение при пропадании связи, когда качество переменной не 192. Текст сообщения просто "Ошибка", источник - выходы данного ФБ.

SCADAMaster
25.12.2014, 18:01
Подскажите пожалуйста, с помощью какого ФБ можно запомнить максимальное значение одной переменной? и чтобы сбрасывать можно было
Посмотрите ФБ "Скользящий максимум", закладка "Обработка сигналов".

SCADAMaster
25.12.2014, 18:03
Нигде не могу найти отключения канала сообщений для ФБ "Распаковка аналогового 32бит значений". Появляется сообщение при пропадании связи, когда качество переменной не 192. Текст сообщения просто "Ошибка", источник - выходы данного ФБ.
А чем вас не устраивает это поведение? Выходы наследуют признак качества входа (определяется настройкой "Компьютер" - "Опрос" - "Формировать признаки качества выходов ФБ по признакам входа".

SCADAMaster
25.12.2014, 18:06
Здравствуйте, хотелось бы вернуться к вопросу использования SCADA системы с сенсорной панелью. Можно-ли реализовать так чтобы при нажатии на на задание или приложение клапана, в ФБ регулятор, выскакивало окошко с цифрами для ввода значения. А то пользоваться стандартной клавиатурой Windows не совсем удобно.
Нет, так сделать нельзя.
Попробуйте поискать альтернативные виртуальные клавиатуры.

Vitorgan
25.12.2014, 18:29
Посмотрите ФБ "Скользящий максимум", закладка "Обработка сигналов".

Вещь полезная, но как быть с интервалом, время всегда разное, может и 30 секунд быть, и 2 минуты.

SCADAMaster
25.12.2014, 19:38
Вам нужно максимум за любое время, а сброс только вручную?
Тогда можно просто через Расчет сделать:
ЕСЛИ( Значение > Расчет, Значение ,Расчет )
Сброс выполняйте через действие (команды типа "Дискретный" или события).

Vitorgan
25.12.2014, 20:02
Проблема в том, что это значение должно сохраниться когда набрался Вес, а когда дозирующее устройство открылось( заслонка), происходит уменьшение веса, а в Расчете я хотел как раз и сравнить: ("Значение веса в настоящ. время" с макс.значением *0,0n) где n- процент допустимого остатка в дозирующей емкости. Интервал этот может быть разным, с разбросом в 5 минут

SCADAMaster
25.12.2014, 22:45
Ну мы вам предложили вариант - сделать через расчет.
Если момент когда набрался вес известен (по закрытию заслонки, или прекращению вращения шнека), то можно просто присвоить текущее значение веса переменной при помощи действия.

Andrei1401
25.12.2014, 23:14
Нет, так сделать нельзя.
Попробуйте поискать альтернативные виртуальные клавиатуры.

Может кому будет интересно, нашел классную экранную клавиатуру, называется Hot Virtual Keyboard. Настроек просто куча, можно подстроить чисто под себя.

azausatu
26.12.2014, 08:39
А чем вас не устраивает это поведение? Выходы наследуют признак качества входа (определяется настройкой "Компьютер" - "Опрос" - "Формировать признаки качества выходов ФБ по признакам входа".

Мне не нужны записи в журнал по качеству связи. До попадания на ФБ я смотрю признак качества входной переменной, по этому признаку качества у меня блокируется обработка данной переменной в скриптах, выводы значений на мнемосхеме как "---", мне не требуется проверка качества именно в данном ФБ, а ФБ все пишет ошибку в журнал. Думаю распаковывать тогда в скрипте

SCADAMaster
26.12.2014, 09:12
В скрипте можно, на каждый выход скрипта - это лицензионная точка.
Мы вам написали как можно отключить такое поведение у ФБ "Распаковка":

Выходы наследуют признак качества входа (определяется настройкой "Компьютер" - "Опрос" - "Формировать признаки качества выходов ФБ по признакам входа".

azausatu
26.12.2014, 09:33
В скрипте можно, на каждый выход скрипта - это лицензионная точка.
Мы вам написали как можно отключить такое поведение у ФБ "Распаковка":

Хорошо. Спасибо.
Выходы скрипта вроде не тарифицируются. Или я не прав?
Дело в том, что лицензия всего на 100 точек. Я внутри скады могу завести 200 выходов ФБ, 200 переменных объектов?

SCADAMaster
26.12.2014, 09:56
Выходы скрипта вроде не тарифицируются. Или я не прав?
Скрипта тарифицируются:
http://insat.ru/products/faq_scada_opc/teg_counter_description/
http://insat.ru/products/faq_scada_opc/Configuration/



Дело в том, что лицензия всего на 100 точек. Я внутри скады могу завести 200 выходов ФБ, 200 переменных объектов?
По 100 задействованных выходов ФБ (не всех, только некоторых), и 100 ОРС переменных. Лицензия определяется по максимальному из значений
Посмотрите ссылку которую мы дали - там описано все.

Александр_АСК
27.12.2014, 00:41
Вечер добрый, не могу понять какие настройки необходимо выставить у МВА8, чтобы подключиться к MasterOPC Universal Modbus Server(пользуюсь стандартной библиотекой приложенной к данному ПО, настройки МВА8 тоже выставил на стандартные)...все что не пробовал приводило максимум к "порт 1 открыт" и далее ошибки...

Александр_АСК
27.12.2014, 06:35
Все решилось само собой: в РЭ на МВА8 написано, что перемычка Х2 ставится при юстировке... в общем как только ее установил, сразу все заработало...и работает только с ней...

energvk
28.12.2014, 23:14
Можно ли как нибудь настроить, чтобы на мнемосхеме число (тип: Целый) при значениях от 0 до 9 отображалось с нулем в начале, т.е. 01, 02, 03 и т.д.?

azausatu
29.12.2014, 11:20
Добрый день
При создании руководств пользователей обычно создаем список возможных сообщений. Т.е. все текста аварий генерируемые скадой. Если сообщения выводятся "Событием" нет ли какого либо способа найти все события и вытащить оттуда текст? Вручную долго, заранее не продумали.

SCADAMaster
29.12.2014, 16:56
Можно ли как нибудь настроить, чтобы на мнемосхеме число (тип: Целый) при значениях от 0 до 9 отображалось с нулем в начале, т.е. 01, 02, 03 и т.д.?
Мы рассмотрим возможность сделать такую настройку у шкалы.
Если вам нужно всего 9 значений, то вы можете воспользоваться перечислимой шкалой. На вкладке Система - Шкалы - Перечислимые, создайте шкалу, и задайте в ней значения от 1 до 9, и пропишите им соответсвующее представление. Затем назначаете шкалу нужной переменной и добавляете ее на мнемосхему.

SCADAMaster
29.12.2014, 16:57
Добрый день
При создании руководств пользователей обычно создаем список возможных сообщений. Т.е. все текста аварий генерируемые скадой. Если сообщения выводятся "Событием" нет ли какого либо способа найти все события и вытащить оттуда текст? Вручную долго, заранее не продумали.
Можно при помощи скрипта. Пример скрипта в приложении.

energvk
29.12.2014, 17:46
Мы рассмотрим возможность сделать такую настройку у шкалы.
Если вам нужно всего 9 значений, то вы можете воспользоваться перечислимой шкалой. На вкладке Система - Шкалы - Перечислимые, создайте шкалу, и задайте в ней значения от 1 до 9, и пропишите им соответсвующее представление. Затем назначаете шкалу нужной переменной и добавляете ее на мнемосхему.

Нет,значений больше,часы и минуты (00-23 и 00-59 соответственно)

SCADAMaster
29.12.2014, 18:03
Так может вам тогда и использовать формат отображения - время?
Создайте расчет, при помощи функции Sec2Time( ) преобразуйте числа во время. Вытащите расчет на мнемосхему, и задайте в свойствах контрола нужный формат отображения.

energvk
29.12.2014, 18:32
Это то без проблем, хотелось бы иметь возможность его менять

SCADAMaster
29.12.2014, 19:19
Что менять? Опишите вашу задачу полностью.

azausatu
30.12.2014, 14:20
Можно при помощи скрипта. Пример скрипта в приложении.

Добрый день.
Про скрипт, вычитывающий тексты со всех "Событий" в проекте.
Скопировал в проект данный скрипт. Запустил DoAction. Завершился ошибкой "Недостаточно свободного места". Создал .csv файл размером 43Гб

SCADAMaster
30.12.2014, 16:51
В приложении исправленная версия скрипта - проверьте с ней.

energvk
31.12.2014, 11:54
Что менять? Опишите вашу задачу полностью.

Да всё просто. Есть часы и минуты приходящие с контроллера на панель и на скаду для отображения и изменения уставки. Изначально со скады не предусматривалось изменение этих параметров, а только по месту с панели. Появилось желание менять и со скады. Но если сейчас часы и минуты преобразуются в формат time и всё красиво, а если значения выводить на мнемосхему напрямую, то 7: 8, например, смотрится уже некрасиво.

Пока как вариант рассматриваю вставлять текстом "0" и скрывать его при значениях переменной больше 9...

SCADAMaster
31.12.2014, 12:48
Так чем не устраивает вариант преобразования в обычному формату "Время"?
Его можно и собрать из отдельных элементов, и разобрать.

energvk
31.12.2014, 13:20
Вроде понимаю, но не могу сообразить как переприсвоить новые значения.
Получается у меня Расчёт из часов и минут формирует время и отображается на мнемосхеме. Также он является входом для "Разбор времени.Время". И как менять значения времени мне уже не понятно.

SCADAMaster
31.12.2014, 14:06
Пример в приложении.

energvk
31.12.2014, 20:52
Спасибо :) Пока ездил по объектам, практически додумал, но ваше решение изящнее и точно рабочее (мой вариант- не факт). С новым годом!

Valera76
01.01.2015, 19:06
Доброго времени суток и с наступившим Новым годом Вас, ув.SCADAMaster. Позвольте выразить вам мою благодарность за ваши быстрые и точные ответы на мои вопросы и пожелать вам успехов в Новом Году :) Большое Вам СПАСИБО за вашу работу!

Позвольте задать вам ещё один вопрос.
Я работаю с восьмиканальным измерителем-регулятором ОВЕН ТРМ138 через их OPC-сервер (по протоколу ОВЕН). В ТРМ138 есть параметр ("Сдвиг характеристики"), доступный как для чтения так и для записи. Чтение происходит нормально, а с записью частенько возникают проблемы. Т.е. я в режиме исполнения вызываю окно для ввода нового значения (в окне Системы, я имею в виду), задаю там новое значение переменной, нажимаю Ок. Окно ввода значения исчезает, в окне Системы переменная принимает новое значение, но оно там "держится" не долго (около 15 сек), а затем переменная сбрасывается обратно в предшествующее значение. Приходится делать несколько попыток для того, чтобы задать переменной новое значение. Иногда помогает перезапуск режима исполнения проекта.

Вопрос:
Подскажите пожалуйста, в чём может быть проблема? Возможно вы уже сталкивались с чем-то подобным? Это проблемы с ОВЕНовским OPC-сервером, с ТРМ138 или с MasterSCADA?

SCADAMaster
02.01.2015, 09:35
В MasterSCADA в настройках ОРС сервера у вас стоит периодическая запись или по изменению? Поставьте по изменению.
Попробуйте также сделать в дереве объектов команду, и связать ее с вашей ОРС переменной, а запись уже производить в эту команду.

_Pavel_
04.01.2015, 01:36
Ситуация:
Имеем дерево объектов, у каждого имеется окно управления с методом вызова - "новое окно". Из родительского объекта вызываются окна подчинённых объектов (там задаются некоторые пользовательские настройки). Хочу создать две кнопки: одна закрывает все открытые окна родительских объектов, другая закрывает только текущее окно. Создаю кнопки, соединяю с соответствующими командами объектов. Добавляю ФБ "Управление документом" каждому объекту. Соединяю команды (через логический OR) с входом "Закрыть" ФБ "Управление документом".
1. После закрытия окна кнопка остаётся в состоянии ВКЛ. И не переходит в состояние ВЫКЛ даже после повторного открытия окна с этой кнопкой. Соответственно, чтобы привести её в нормальное состояние нужно ещё раз нажать. Это баг или фича?
2. Существует ли более простой способ это реализовать?

SCADAMaster
04.01.2015, 09:58
Так может у вас кнопка с фиксацией?
Можно также использовать не ФБ "Управление документом", а "Событие" - у него есть закладка "Действия", с помощью которого можно закрывать окна.
Аналогичная закладка есть у команд типа "Дискретный".

_Pavel_
04.01.2015, 13:39
:) Нет, кнопка точно без фиксации.

_Pavel_
04.01.2015, 15:24
Попробуйте, я думаю у Вас этот эффект легко проявится. Неважно что используется для закрытия окна: ФБ "Управление документом" или действие у команды. Видимо событие "кнопка отжата" у закрытого окна не формируется и в системе она остаётся "нажатой". Точнее не кнопка остаётся нажатой, а соответствующая ей команда в состоянии "ВКЛ".
Хм.. проявляется не в 100% случаев.

SCADAMaster
04.01.2015, 16:25
Пришлите ваш проект, и укажите путь к проблемному окну.

_Pavel_
04.01.2015, 16:43
Настройки Линия1 -> Бетоновоз1 -> Мотор
Кнопки "Закрыть" и "Закрыть все"

SCADAMaster
04.01.2015, 17:10
Вы неправильно сделали кнопки.
Создайте команду типа "Дискретный" и вытащите ее на мнемосхему - она станет кнопкой. Команду уже связывайте с входами ФБ "Управление документом". Либо при помощи закладки команды "Действия" производите закрытие окон.

_Pavel_
04.01.2015, 17:26
Спасибо, я всё понял.

Vitorgan
05.01.2015, 12:10
Здравствуйте. перелопатил весь форум, как сделать чтобы кроме мнемосхемы и рамки ничего не отображалось в режиме исполнения. нашел что документом мнемосхему надо сделать. ничего не понял. требуется просто открытие мнемосхемы по двойному клику ярлыка

SokolovS
05.01.2015, 13:03
Небольшой вопрос раз:
В MascterOPC при работе в редакторе скрипта если выделить кусок кода и попытаться прокрутить в другое место так, чтобы этого выделения не было видно, прокрутка сама возвращается к нему.

Неприятность два: в MasterOPC функция time.PackTime завершается без каких-либо объяснений если ей подать на вход данные некорректного типа (например, string)

Вопрос три:
График трендов не обновляет данные автоматически пока индикатор, показывающий текущее время, не находится в области видимости. В моём случае архивные данные хранятся на удалённом устройстве, их обновление занимает продолжительное время и вполне нормально, когда после долгих каникул и запуска скады добавляются данные недельной давности

И вопрос нормальный: напомните, пожалуйста, возможно ли через скрипт в MasterSCADA добавлять данные в архив значения.

SCADAMaster
05.01.2015, 16:45
Здравствуйте. перелопатил весь форум, как сделать чтобы кроме мнемосхемы и рамки ничего не отображалось в режиме исполнения. нашел что документом мнемосхему надо сделать. ничего не понял. требуется просто открытие мнемосхемы по двойному клику ярлыка
Не совсем понятно что вы имеете ввиду - как убрать тулбар или как сделать мнемосхему стартовой?
Тулбар убирается у компьютера - режим исполнения - настройки - снимите галочки "Основная панель" и "Панель вызова документов".
Чтобы сделать мнемосхему стартовой, выделите объект с нужной вам мнемосхемой, и на закладке "Окна" поставьте галочку "Стартовая мнемосхема компьютера".
Если нужно чтобы стартовой была не мнемосхема, а окно, то тогда выделяете компьютер - Стартовые окна - добавляете окно, в поле "Объект" тащите объект с нужной вам мнемосхему, а в поле "Документ" выбираете окно.

SCADAMaster
05.01.2015, 17:00
В MascterOPC при работе в редакторе скрипта если выделить кусок кода и попытаться прокрутить в другое место так, чтобы этого выделения не было видно, прокрутка сама возвращается к нему.
Проблема проявилась, мы с ней разберемся.




Неприятность два: в MasterOPC функция time.PackTime завершается без каких-либо объяснений если ей подать на вход данные некорректного типа (например, string)

Что значит "завершается"? В лог сообщений скриптов должно выйти сообщение.
Как именно вы передаете строку, вместо какого аргумента? Опишите проблему подробнее.



Вопрос три:
График трендов не обновляет данные автоматически пока индикатор, показывающий текущее время, не находится в области видимости. В моём случае архивные данные хранятся на удалённом устройстве, их обновление занимает продолжительное время и вполне нормально, когда после долгих каникул и запуска скады добавляются данные недельной давности

Не понятно в чем именно у вас проблема. Опишите проблему подробнее и приложите несколько скриншотов.



И вопрос нормальный: напомните, пожалуйста, возможно ли через скрипт в MasterSCADA добавлять данные в архив значения.
Более ранее чем последнее значение? Нельзя - архив должен быть монотонным.
Если просто добавить более новое значение - можно, но это можно и без скрипта сделать - например при помощи действий.

SokolovS
06.01.2015, 08:40
Что значит "завершается"? В лог сообщений скриптов должно выйти сообщение.
Как именно вы передаете строку, вместо какого аргумента? Опишите проблему подробнее.Странно, в моей конфигурации останавливает работу безмолвно, а отдельно останавливается с сообщением
Вот кусок кода из конфигурации:
local filedate = {}, err;
filedate[1],filedate[2],filedate[3] = string.match(flName, "^\\%d%d%d%d_%d%d\\(%d%d%d%d)_(%d%d)_(%d%d).csv$");
server.Message("Start test");
err,filedate = time.PackTime((filedate[1]), tonumber(filedate[2]), tonumber(filedate[3]), 0, 0, 0);
server.Message("End test");К примеру, flName = "\\2015_01\\2015_01_06.csv". Скрипт находится в подустройстве
Вот выводящиеся при его исполнении сообщения скриптов:
06-01-2015 08:26:34.458 Станция.МСД-200.UpdateArchive:Start test

Не понятно в чем именно у вас проблема. Опишите проблему подробнее и приложите несколько скриншотов.Вот, к примеру:
16008
Если оставить тренд на экране в таком виде, он не будет дорисован при поступлении новых данных пока не будет перерисовки графика, например, если немного сдвинуть тренд, свернуть и развернуть окно, изменить размеры и т. д.

Более ранее чем последнее значение? Нельзя - архив должен быть монотонным.
Если просто добавить более новое значение - можно, но это можно и без скрипта сделать - например при помощи действий.Можете описать оба способа?
У меня стоит задача по приходящим нескольким сигналам от дискретных уровней формировать уровень в виде имитации аналогового сигнала. Расчёт замечательно справляется с текущим состоянием, а вот нарисовать тренд исторический не получается.

SCADAMaster
06.01.2015, 10:46
server.Message("End test");[/CODE]К примеру, flName = "\\2015_01\\2015_01_06.csv". Скрипт находится в подустройстве
Вот выводящиеся при его исполнении сообщения скриптов:

На текущей версии (3.1.3) такой код выдает ошибку - первый аргумент должен быть числом.
Так как у первого аргумента у вас отсутствует tonumber.



Если оставить тренд на экране в таком виде, он не будет дорисован при поступлении новых данных пока не будет перерисовки графика, например, если немного сдвинуть тренд, свернуть и развернуть окно, изменить размеры и т. д.

Приложите ваш проект, и укажите путь к окну с трендом.



Можете описать оба способа?
У меня стоит задача по приходящим нескольким сигналам от дискретных уровней формировать уровень в виде имитации аналогового сигнала. Расчёт замечательно справляется с текущим состоянием, а вот нарисовать тренд исторический не получается.
Что значит нарисовать исторический тренд? Вы включили архивацию в расчета?

SokolovS
06.01.2015, 11:14
На текущей версии (3.1.3) такой код выдает ошибку - первый аргумент должен быть числом.
Так как у первого аргумента у вас отсутствует tonumber.Да, в отдельной конфигурации так и происходит. В моей почему-то никаких сообщений нет, а если код исправить на правильный, всё работает как надо.

Приложите ваш проект, и укажите путь к окну с трендом.Думаю, проблема не в проекте, а в том, что обновляются достаточно старые данные (см. предыдущий пост)

Что значит нарисовать исторический тренд? Вы включили архивацию в расчета?Нет, немного не так
Всё происходит как в прошлом случае: архив хранится на удалённом устройстве, с которого периодически считывается. Стоит задача считать его (занимается ОРС сервер и записывает его в HDA), а у скады - забрать и построить в глубину по времени.
То есть скада должна забрать добавленные данные за час (день, неделю) в количестве пару тысяч точек (с этим справляется), а потом для каждой точки высчитать определённое значение и с таким же штампом времени добавить в архив значения, которое потом и отрисовать в тренде.

SCADAMaster
06.01.2015, 13:11
Тогда только скриптом - читать архив, обрабатывать его и записывать на выход.
Пример скрипта в приложении.
В скрипте значение на входе, делится на 10, а затем записывается на выход. По аналогии сможете сделать собственный алгоритм обработки.

SokolovS
06.01.2015, 15:12
Спасибо большое!
Вроде по обмену информацией всё понятно
Буду пробовать реализовать свой алгоритм

SokolovS
08.01.2015, 16:40
Как заставить скрипт отрабатывать периодически либо по поступлению HDA данных? На данный момент он срабатывает только если новое значение отличается от предыдущего.

SCADAMaster
08.01.2015, 19:07
Можно включить у скрипта периодический опрос (можно не каждый цикл).
Только тогда с целью повышения производительности лучше выполнять обработку архива анализируя не изменилась ли метка времени на входе. Это делается через метод GetValue("Вход").Time

SokolovS
09.01.2015, 08:11
Я пробовал ставить периодический опрос у скрипта
На изменение сигнала не реагирует совсем, при ручном вызове (DoAction, в функции прописано просто this.Execute() ) всё считает
Причём если вручную записать значение на вход, пересчитывает