This is topic Вопросы новичка in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000967.html

Posted by Sheon (Участник № / Member № 5164) on :
 
Здравствуйте. Я недавно начал осваивать TM6, и на данный момент у меня возникло несколько вопросов:

1. По поводу Генераторов (синус например). Я так понимаю вычисление очередного значения генератора осуществляется в основном потоке(где RTM выполняется)? Если так, то нельзя ли как нибудь вынести генератор на другую нить? Да и в принципе, можно ли как нибудь задавать параметры генератора(например амплитуду)?
2. Честно сказать, не очень понятно как работать с каналом CALL. Конкретно интересует как осуществлять выгрузку определенного параметра из СПАД архива в заданном интервале времени(как локально так и удаленно) в архивный трэнд или таблицу? Как выполнить с помощью него шаблон программы (а точнее где там указывается какой именно шаблон выполнять надо)?
3. По поводу перемещения объектов. Кстати я как раз то и пытался с помощью генератора осуществить это перемещение (для этого то мне и надо генератор в отдельный поток как то поместить для увеличения его скорости пересчета). Может вы что то другое посоветуете по этому поводу?
4. У меня не получается переход между экранами по нажатию на кнопки, хотя вроде бы как я все сделал для этого:
-создал 2 экрана
-на одном из них поместил кнопку
-на событие кнопки MousePresed добавил действие "Перейти на экран", и там отметил на какой экран надо переходить.
Я в принципе даже попробовал с помощью drug-and-drop перетащить один экран в рабочую область другого, кнопка создалась, но ничего не работает.

Хотя может какие то проблемы связаны с тем что у меня пока что базовая версия программы? Она никак не порезана?

Заранее благодарю
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Период канала-генераора можно менять по Вашему усмотрению. Установкой "Множителя" в настройках канала можно изменять амплитуду генератора.
2. Это отражено в уроках "Быстрого старта".
3. Если имеется в виду функция "Перемещение" ГЭ на экране, то вся графика работает с более низким приоритетом, чем основной поток пересчета, включая и генераторы. Поэтому сделать "Перемещение" быстрее основного потока нельзя.
4. Базовая версия программа имеет некоторые ограничения, которые описаны в разделе "Принципиальные отличия .../Модификации ИС TRACE MODE 6".
 
Posted by SATER (Участник № / Member № 1414) on :
 
4. А если в экране не создано ниодного аргумента - тогда на него невозможно перейти.

Есть такое видео, может будет полезным:
http://ifolder.ru/24328567
Показана работа с синусоидами, трендами, переходами между экранами.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
по поводу 1, 3, 4 : спасибо, за помощь, все понял и разобрался.
по поводу 2 : буду разбираться по мануалу, спасибо.

Но возник еще вопрос:
Можно ли как то управлять обработкой событий у графических элементов? Например, есть ГЭ Текст, в который по событию MousePreset записывается какое то введенное значение, надо управлять этим событием, т.е. разрешать его обработку только тогда, когда например включен режим управления (режим управления например определяется значением аргумента экрана).
И тут же второй вопрос: есть ли какие то стандартные средства для реализации авторизации пользователей или самому делать надо?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Через ГЭ "Текст", видимо, значение должно куда-то передаваться (Например, в атрибут канала). Блокировать эту передачу (со сбросом значения соответствующего аргумента экрана) можно только программным путем. Передавать значение надо в программу, которая контролирует наступление соответствующего события. Если событие произошло, значение передается в канал, если не произошло - не передается.
2. Если Вы задаете ПОЛЬЗОВАТЕЛЕЙ в проекте, их авторизация осуществляется штатными средствами Trace Mode 6. Это документировано.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Спасибо за помощь!

Но возник еще вопрос...
У меня есть шаблон экрана, который допустим отображает какой то технологический процесс, или состояние устройства (не важно). Этот процесс является типовым ну или устройство не одно. В результате мне нужно отображать состояние всех этих типовых процессов. Делать на каждый типовой процесс отдельный экран совершенно не разумно, т.к. они различаются лишь отображаемыми данными (привязаны к различным источникам). Так вот можно ли как то для этих целей использовать один шаблон экрана. Конкретнее меня интересует, можно ли организовать некоторое подобие динамической привязки аргументов экрана к истчникам?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Использование одного шаблона экрана с разными привязками его аргументов - это решение типовое.
Разные привязки именно у аргументов каналов CALL, вызывающих один и тот же шаблон экрана позволяют использовать 1 шаблон для отображения на подоюных экранов параметров подобюных технологических процессов.
Можно использовать и 1 канал CALL вызовf шаблона экрана с динамической перепривязкой его аргументов (см. ".../Автопостроение и автопривязка каналов из редактора аргументов
/Замена виртуальной привязки аргументов в канале CALL, ../Замена привязок аргументов канала CALL на привязки аргументов другого канала CALL
, ../Перепривязка аргументов на уровне объектов").
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Здравствуйте еще раз! По всем необходимым мне вопроса я вроде бы разобрался, спасибо. Но вот до сих пор висит один открытый вопрос. По поводу СПАД архивов.

Как выгружать в архив понятно, да и как канал CALL настраивать тоже в принципе понятно, я не могу только понять куда канал CALL выгружает данные прочитанные из архива?

Цитата из мануала:
"При отработке канала CALL.LocalList в его последующие аргументы записываются извлеченные данные (каждый из таких аргументов возвращает две величины – извлеченное значение и его время)."

Это что получается, я должен заранее знать сколько он мне оттуда значений вытащит и под них завести аргументы в канале CALL? И даже если это так, то как все это в итоге привязать к архивному тренду?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Канал CALL.LocalList не предназначен для вывода на тренд данных, экспортированных из СПАД.

У тренда существует архивный режим, в котором тренд сам извлекает и отображает архивные записи по каналам, которые привязаны к тренду.

Существуют также ГЭ "Архивные таблицы", отображающие извлекаемые архивные данные.

Это все документировано.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Теперь понятно, спасибо.
Но тогда тренд это не совсем то что мне надо...
Мне необходимо извлекать из архива данные за определенный промежуток времени (который задается пользователем) и отображать их графически в виде временного ряда.
Скажите, возможно ли в принципе с помощью тренда отображать значения выборки, если да, то буду капать дальше, а если нет, то посоветуйте, с помощью чего это можно сделать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Именно тренд в режиме архивного чтения и выполняет функцию "извлекать из архива данные за определенный промежуток времени (который задается пользователем) и отображать их графически в виде временного ряда."

Если Вам необходимо табличное отображение, можно использовать ГЭ "Архивная таблица 2".

Или не очень понятно, что Вы имеете в виду.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Да да все верно, спасибо, разобрался
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Возник еще вопрос. А возможно ли с помощью тренда в режиме архивного чтения отображать данные архива с удаленной машины?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В описании тренда указано:
"Если в узле МРВ1 есть архивируемый канал CH1, который копируется по сети в узел МРВ2, и в канале CH1_copy установлен флаг архивирования в архив, которого в узле МРВ2 нет, то при выводе CH1_copy на архивный тренд запрашиваются данные из локального архива узла МРВ1. "
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Что то у меня не получается вывести на тренд данные из удаленного архива.

Я сделал следующее:
-В узле RTM_1 имеется канала (CH1), значения которого сохраняются в архив.
-В узле RTM_2 так же имеется канал такого же типа (CH2), к которому привязано реальное значение канала СН1 (привязку я делал в меню редактирования канала=> во вкладке дополнительно=> привязка). Так же канал CH2 установлен на архивирование, но в узле RTM_2 нет архивов.
-Значения из канала CH2 выводятся на архивный тренд

Но при попытке отобразить какие нибудь значения из архива на тренд он в его рабочей области выдает сообщение об ошибке запроса(Request error - 1003)

Что я делаю не так?

вот еще какой момент нашел в мануалах:
"У всех каналов, связанных с каналами удаленных узлов, в атрибут 90, I0 записывается ID привязанного канала, а в атрибут 92, I2 – порядковый номер узла (ordinal). Значения обоих атрибутов можно менять в реальном времени, что обеспечивает перепривязку каналов."

Может эти параметры надо ручками задавать или они сами устанавливаются при привязке удаленного канала, или это вобще не имеет отношение к моей проблеме?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Мы перепроверили указанную функцию в релизе 6.07.7. При правильно организованной связи между узлами вывод удаленного архива на тренд выполняется правильно.
Прежде всего Вам надо убедиться в том, что между узлами существует сетевая связь - значения канала CH1 передаются в канал CH2 и отображаются на тренде в узле RTM_2 в режиме реального времени.
Временной диапазон выводимых на тренд RTM_2 архивных данных должен соответствовать временному диапазону записей в архиве узла RTM_1.

Вторая часть поста к обсуждаемой проблеме отношения не имеет.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Возник вопрос, связанный с динамической трансформацией объектов экрана.

В мануале сказано, что на ряду с пространственным переносом существуют так же преобразования вращения и масштабирования, но собственно в самом TM 607.7 в свойствах объектов во вкладке динамическая трансформация имеется только опция перемещения.

может остальные опции появляются при каких то особых условиях?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Для каждого вида объекта активированы только те функции динамической трнасформации, которые для него реализованы.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
То-есть практически любой графический объект можно динамически перемещать, но ни один элемент не имеет реализации динамического масштабирования и вращения?
Я проверил все ГЭ, так скажем, перемещение имеет большинство, вращение и масштабирование не имеет ни один. Хотя может это одно из ограничений базовой TM 607.7?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Ограничений в базовой версии такого рода нет.

Например, ГЭ групп "Линии", "Прямоугольники", "Ломаные линии", "Плоские фигуры", "Объемные фигуры" допускают динамическое перемещене, масштабирование и вращение.

Уточните, пожалуйста, как Вы проверяете допустимость динамических трансформаций?

Если Вы дважды кликнете по ГЭ (или после выделения ГЭ и нажатия ПК мыши выберете команду "Свойства объекта"), откроется диалог, в котором может быть специальная вкладка "Динамическая трансформация".
Именно в этой вкладке имеются активные разделы функций трансформации.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Именно так я и делаю: пробовал и ПКМ по объекту, а там Свойства объекта, и по ГЭ дважды ЛКМ щелкнуть, далее вкладка динамическая трансформация, и например у примитива линий есть только перемещение.

Да, и вот еще что, по поводу вывода удаленного СПАД архива на тренд.
У меня так и не получилось это сделать. Связь между двумя узлами RTM точно есть, так как на тренд в режиме отображения реальных значений выводятся данные из канала с удаленного узла.
Вы не могли бы выслать тот пример на котором вы проверяли работоспособность выводы удаленных архивных данных на тренд.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Пришлите, пожалуйста, скриншот окна свойств ГЭ "Линия" на вкладке "Динамическая трансформация" на адрес hotline@adastra.ru.

2. Запустите оба узла под управлением профайлеров с ключами DEBUG=C00 в файлах конфигурирования запуска *.cnf (см. "Задание параметров работы мониторов").
В протоколах профайлеров должны быть записи о возможных проблемах обмена по сети и о запросах архивных данных.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
На присланном Вами скриншоте имеются все три раздела "Динамической трансформации".
Необходимо поставить галочку у необходимого Вам свойства и дважды кликнуть мышкой на этом свойстве.
Раскроется меню, которое надо настраивать в соответствии с документацией.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Не обратил внимание вниз окна, так как список преобразования перемещения был раскрыт, извините.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Здравствуйте.

Мне необходимо навесить авторизацию на режим управления, ну то есть при нажатии на определенную кнопку вызывается окно авторизации, по положительному результату авторизации у пользователя появляется возможность, скажем писать в OPC.

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

Я думал как это сделать:
- Создать двух пользователей.
- Один из них не имеет прав на доступ к событиям кнопок (кроме одной, для перехода в режим редактирования), и он же получает управление при старте МРВ или профайлера но не запрашивает авторизации (тут возникает вопрос, как создать пользователя без запроса на авторизацию?).
- Второй канал пользователь вызывается по нажатию
на кнопке перехода в режим управления, выдает окно авторизации, и в случае успеха, получает доступ на редактирование (Но тут возникает вопрос, как осуществить логаут этого пользователя не останавливая МРВ, и при этом управление должен перехватить первый канал пользователь, чтобы запретить обработку событий соответствующих контроллов?). А так же, достаточно ли будет передать в параметр EXEC (39) 1, для того чтобы инициировать авторизацию канала пользователя?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Менять пользователей таким образом нельзя.
Возможны 2 варианта:
- менять в реальном времени права текущего пользователя (атрибуты доступа к экранам и к функциям управления) - сложно и неоднозначно,
- по событиям или по кнопке открывать диалог с требованием ввода некоего цифрового пароля, который будет контролироваться, запоминаться и в нужный момент сбрасываться программой (по событию или по кнопке). Пока правильный пароль действует, становятся видимыми соответствующие органы управления.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Если так, то да лучше авторизацией режима управления действительно управлять как вы описали, а не каналом пользователь.

А вот еще такой момент:
1. А можно ли как-нибудь при положительной авторизации управлять не видимостью соответствующих органов управления, а разрешать или запрещать обработку событий от них?

Ну например, с OPC сервера читаются значения уставок на какой-нибудь параметр. Естественно эти уставки система должна отображать и давать возможность изменить. В идеале я хотел бы сделать следующее:
- К параметру текст ГЭ текст я бы привязал входной канал, который получает значения с соответствующего входного тега OPC.
- Создал события для этого ГЭ текст передать значение(ввести и передать) в выходной канал, который передает введенное значение в соответствующий выходной тег OPC.
Естественно оба этих тега настроены на одну и туже переменную OPC.

так вот, хотелось бы при правильно введенном пароле разрешать обработку события этого ГЭ текст а при не правильном запрещать. Возможно ли такое?

2. Требуется вести лог. При наступлении каких-то ключевых событий в системе (не аварийных) надо писать их на диск (желательно бы не использовать БД). Примером события является например переключение режима управления(ручное / автоматическое), как вы понимаете определяется это событие булевским значением(по срезу одно по фронту другое). Как зафиксировать событие я понимаю (написал программу которая фиксирует изменение состояния соответствующего канала), а вот куда и как писать, что-то придумать не могу. Надо при фиксации события, например "переход к ручному режиму управления" в некоторый лог-файл записать следующее:
<время>: переход к ручному режиму управления. (ну или что-то подобное).
А так же необходимо этот лог файл вычитывать и отображать на пульте (на МРВ).
Есть ли какие-то штатные решения для этого, посоветуйте мне что-нибудь.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. В правах ПОЛЬЗОВАТЕЛЯ и у ГЭ экрана есть соответствующие свойства, которые определяют доступ текущего пользователя к экранам и функциям управления. задаваемым в ГЭ.

2. Есть штатный текстовый файл регистрации событий, который называется "Отчет тревог". Вы можете запрограммировать произвольные сообщения.

Все эти вопросы отражены в документации.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
2. Спасибо, разобрался.

1. Что-то я вас не понимаю... Вы же мне в предыдущем своем посте сказали, что менять права пользователей динамически "сложно и неоднозначно", и привели второй вариант, в котором, как я понял, фактически, реализуется своя система авторизации. Она мне в принципе подходит, за исключением того момента, что если "правильный пароль действует, становятся видимыми соответствующие органы управления", вместо этого мне бы хотелось управлять событиями от этих ГЭ. А так то я знаю что в правах пользователей можно определить их права на доступ к экранам и событиям, но авторизация пользователей происходит при старте МРВ или профайлера, а мне это не подходит.

Но в принципе, если нельзя управлять событиями от ГЭ не используя канал ПОЛЬЗОВАТЕЛИ, то для ввода значений поставлю у каждого ГЭ текст кнопку, видимостью которой и буду управлять. Хотя конечно хотелось бы сделать как было запланировано, но это вопрос эстетического характера и не является критичным.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Имелась в виду штатная авторизация ПОЛЬЗОВАТЕЛЯ.

Если речь идет об авторизации с Вашим собственным паролем, вводимым с экрана, то программа, проверяющая авторизацию, может пропускать через себя управляющие команды с экрана и выдавать их на исполнение только при правильной авторизации.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Все понял, спасибо!
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Здравствуйте, возникла проблема с выводом отчета тревог на ГЭ "ОТ узла".

Ситуация следующая:
-настроил узел на ведение ОТ.
-создал канал HEX16 его реальное значение привязал к аргументу экрана, и настроил его на сохранение в отчет тревог.
-создал словарь сообщений на HEX16 и добавил сообщение на нулевой бит(на фронт ("сообщение1") и на срез "сообщение2")
-добавил ГЭ "ОТ узла".

Запускаю профайлер и все нормально, отчет тревог ведется, если я нажимаю на кнопку и передаю 1, то в ГЭ "ОТ узла" появляется "сообщение1", но... вот когда передаю 0, "сообщение2" не появляется, а в файле отчета тревог оно записывается сразу же. Но если полностью закрыть профайлер, и заново его запустить, то не прошедшее "сообщение2" появляется на ГЭ "ОТ узла". Это нормально, так и должно быть?

попутно вопрос:
- можно ли отчеты тревог считывать и выводить с удаленного узла, как в случае с SIAD, ну и писать естественно в файл ОТ удаленного узла?
Мне просто надо сделать для системы в целом общий лог событий, т.е. в данном случае нужно вести общий ОТ для всех узлов.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. По умолчанию все сообщения , поступающие в файл ОТ, должны выдаваться на экран.
Но если Вы в настройках сообщения в словаре изменили атрибут "Направление", то возможно отсутствие сообветствующего сообщения на экране.

2. Просматривать ОТ, который ведется в МРВ, можно на узлах CONSOLE (Net Link Light). Вести ОТ можно только на сервере (VHD или МикроМРВ для Windows CE). Генерировать сообщения в ОТ можно только на сервере. Но значения каналов, по которым генерируются сообщения в ОТ на сервере, можно изменять с узла CONSOLE или другого узла.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Спасибо, разобрался.

Еще момент. А можно ли как-нибудь изменить тип созданного канала? А то по перетягивал тэги OPC с помощью драг-энд-дроп, ну он мне и на создавал float каналов, а я как-то сразу не обратил внимание и уже их привязал к различным аргументам. А тут они мне понадобились как HEX тип.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Правой клавишей мыши открыть свойства канала и изменить флаг HEX.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Возник еще вопрос, тоже касающийся удобства...

Пока я разрабатываю система я, естественно, использую OPC сервер который находится у меня на локальной машине. В результате он в любом случае будет на удаленном сервере. А не придется ли мне потом делать перепривязку OPC тегов к другом серверу? Или можно как-то изменить только адрес OPC сервера? Достаточно ли будет перепривязать только группу OPC сервера, или каждый тек придется перебирать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В папке узла для каждого OPC-сервера создается файл вида
<имя проекта>_<ordinal>_opc<num>.cnf

Надо в этом файле перед строкой
PROGID:xxxxxxx
ввести строку
HOSTNAME:<name_PC>
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Здравствуйте. Все-таки у меня ни как не получилось считывать ОТ с удаленного узла.

Ситуация следующая: есть два узла RTM. На одном из них ведется ОТ в виде журнала для регистрации изменения состояния системы и отображается на ГЭ "Отчет тревог". Необходимо как-то удаленно считывать содержимое ОТ с первого узла вторым, и так же выдавать в ГЭ "Отчет тревог", но при этом не должно производиться регистрации событий системы на этом узле. Другими словами один из узлов выполняет роль сервера по сбору данных, а второй только отображает эти данные. Выше вы писали, что для этих целей можно использовать узел CONSOLE, а нельзя ли это сделать в RTM узле? Просто наскока я понял в узле типа Console не производится пересчета каналов, а значит, как я понимаю нет возможности в реальном времени отображать текущее состояние системы, а мне это необходимо на обоих узлах.

Если я ошибаюсь, то поясните хотя бы в кратце, как это сделать.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В узле RTM отображать отчет тревог другого узла нельзя. Для этого используйте узел Console (Net Link Light).

Узлы Console не выполняют пересчет каналов, предназначенных для работы с данными (такие каналы в узле Console создать не получится).

Что Вы подразумеваете под «состоянием системы»? Что конкретно требуется контролировать?
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Есть система вентиляции, которой мы собственно и управляем. Под состоянием системы, я имею ввиду что происходит с системой в целом и отдельными ее частями(например включена или выключена ли как ГВУ в целом, так и каждый вентилятор отдельно; в каком положении находятся спрямляющий и реверсивный аппарат каждого вентилятора отдельно; в каком режиме работает ГВУ: в реверсе или прямо; ну и т.д.). На верхнем уровне это все управляется с пульта диспетчера и оператора, которые по своей сути ничем не отличаются, кроме как, как раз то тем, что оператор выполняет роль сервера по сбору и хранению данных(СПАД архивы и ОТ), а у диспетчера эти данные должны только отображаться.
Так вот, надо писать в журнал любое изменение состояния ГВУ.

Для реализации пультов диспетчера и оператора было принято решение использовать TM6 (до этого я все делал при помощи .NET, но из-за проблем с отладкой коммуникационной части пришлось отказаться от этого, да и в принципе для таких целей есть готовые решения).

Со СПАД архивами (в смысле: как выводить на тренд с удаленного узла) все понятно, и как оказалось довольно просто, но вот с ОТ не понятно(в смысле с удаленным отображением, с локальными то ОТ все понятно). Я думал сделать ОТ для каждого узла отдельно, но заказчик требует, чтобы при отключении пульта диспетчера, ОТ все-ровно велся, а это значит, что нужен нектоторый "сервер отчетов", и решили что пульт оператора для этих целей вполне сгодится, т.к. он все-ровно круглосуточно роботает.

Да и на всякий случай: оба пульта данные от ГВУ получают посредством OPC сервера, а состояния системы хранятся в регистрах дискретных сигналов.

В принципе это последняя проблема, которую необходимо решить. Если для этих целей не получится использовать ОТ, то посоветуйте, что можно использовать для этого.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
То есть под контролем «состояния системы» Вы подразумеваете, отображение в реальном времени значений каналов, передаваемых из узла RTM в узел Console.
Если так, то никаких проблем нет – значения в узле Console будут соответствовать значениям в узле RTM.

О том, что для отображения отчета тревог узла RTM нужно использовать узел уже Console писали выше.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Ясно. А как насчет управления с узла Console, ну т.е. будет ли возможность писать в каналы узла RTM из узла Console?
Я создал узел Console и перетащил туда шаблон экрана. Да, данные на размещенных ГЭ отображаются, а вот при попытке изменить значения, ничего не происходит. ОТ, кстати, на ГЭ "ОТ узла" не отобразился, хотя в узле RTM он есть и отображается. Может помимо перетаскивания шаблона экрана надо еще что то сделать?

Да, и вот еще что (чисто для собственного понимания)... Узел Console, как я понимаю является неким подобием тонкого клиента. Т.е. ему с узла RTM передаются не сами значения из каналов, а заполненная форма (фактически изображение). Так?

И для ясности: под контролем «состояния системы» я имел ввиду не отображение реальных значений канала (хотя из узла Console это тоже надо). Я все-таки не так выразился наверно. Имелось ввиду отслеживание изменения ее состояния, т.е. банальное ведение журнала изменений состояния системы(что, когда произошло и кем, с какого пульта было изменено).
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Значения из узла Console в узел RTM передавать можно. Если связь между узлами есть, то скорей всего неправильно выполнены привязки.

Чтобы точно ответить, в чем причина нужно смотреть проект. Вышлите файл проекта на hotline3@adastra.ru с указанием, что не работает.

Если к аргументу экрана в узле Console привязать какой-либо канал, то при запуске проекта в узле Console будет создан виртуальный канал, большинство атрибутов которого будут совпадать с атрибутами привязанного канала (исключением будет, например, атрибут достоверность).
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Проект отправил на указанный вами адрес
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В проекте были неверно сделаны привязки и неправильно заданы настройки у узлов.

Отредактированный проект отправлен на почту.
 
Posted by Nico (Участник № / Member № 5342) on :
 
"В проекте были неверно сделаны привязки и неправильно заданы настройки у узлов"
А какие ? Сообщите информацию и другим

[ 08.09.2011, 08:30: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Кому интересно, вот цитата из письма:
"1. Если Вы хотите передавать значение из аргумента экрана в канал, то аргумент экрана должен быть типа out, а привязка должна быть аргумента ко входному значению канала.
2. Те сообщения, которые должны передаваться в сеть должны иметь направление “NET”.
3. Если требуется в консоли подчитывать на старте ОТ, то у тех узлов, которые отправляют на подчитку сообщения в редакторе узла необходимо параметр @Net_DDE задать равным 16.
4. Чтобы консоль на старте подчитывала ОТ и принимала сообщения ОТ удаленного узла в реальном времени, то параметр @Net_DDE в редакторе узла должен быть равен 16."
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Я немного поторопился вам проект отсылать, забыл попробовать вывести архивные данные на тренд в узле NetLink. Что надо сделать, помимо следующего:
-Настроить в параметрах узла RTM разрешение записи SIAD архивов.
-Настроить необходимый канал на запись в этот архив.
-В узле NetLink на экран вытащить архивный тренд, и привязать к нему необходимый аргумент экрана с архивируемым каналом из узла RTM.

Архив в узле RTM ведется, но вот выводить в узел NetLink не получается. Запрос на получение выборки от узла Console посылается, но его результатом является сообщение "Request error - 1003". Связь между узлами есть точно, т.к. данные на остальных ГЭ с узла RTM отображаются.
 
Posted by Nico (Участник № / Member № 5342) on :
 
1003 - нет данных или сетевой таймаут;
поставьте отладку архива(debug=800);
в файле отладки NetLink скорей всего будет сообщение timeout for REM_ID;
проверьте за какое время запрашиваются данные;
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Что касается времени запрашиваемых данных, то тут все нормально, данные из запрашиваемого интервала в архиве существуют, я это проверял подгружая их локально, в узле RTM.

Что касается отладки, то честно сказать тут я тоже не очень компетентен. В корне папки обоих узлов я создал файл TMcom_xx.cnf (для RTM - 00, для NetLink 01). В нем прописал ключ DEBUG со значением 800:

DEBUG=800
END_OF_CNF
<пустая строка>

но кроме сообщений start и stop в лог файле(tm6_log.txt) я больше ничего не получаю, хотя результат запроса узла NetLinc на получение удаленных архивных данных с узла RTM является так же ошибка запроса с кодом 1003.

Уважаемая тех поддержка, не могли бы вы в том тестовом проекте что я вам недавно отсылал (если он у вас, конечно, еще сохранился) добавить, для примера, чтение архивных данных в узле NetLink с удаленного узла RTM? Был бы очень признателен.
 
Posted by Nico (Участник № / Member № 5342) on :
 
Сообщения должны быть в файле профайлера
<имя проекта>_<номер узла>.txt

[ 08.09.2011, 08:35: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Да, вы были правы, вот что он мне в итоге на выдавал по поводу SIAD архива:

(8:49:41) INF_SIAD:Disable,not started
(8:49:41) INF_SIAD:Disable,not started
(8:51:2) INF_SIAD:Screen_#2: trend REM_ID=4096 ch=4 from 1315446600 to 1315446660 (0.1)
(8:51:33) INF_SIAD:timeout for REM_ID = 4096
(8:51:33) INF_SIAD:Screen_#2: snap REM_ID=4097[q=1] ch 4{1315446600} to node 0 6693.32
(8:52:4) INF_SIAD:timeout for REM_ID = 4097

Я так понимаю он мне говорит что мол: время ожидания ответа на запрос превышено. И с чем это может быть связано? Повторюсь, интервал выборки запроса в архиве существует, проверял, подгружая локально. связь между узлами тоже есть, или может данные реального времени, отображаемые в остальных ГЭ, и архивы используют различные протоколы передачи данных сетей Ethernet, или различные порты? Тогда тут я ни за что ручаться не могу.
 
Posted by Nico (Участник № / Member № 5342) on :
 
Такую же отладку поставьте на узле у которого запрашиваются данные
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Отладка узла RTM выдала:

(8:52:49) INF_SIAD:Disable,not started
(8:52:49) INF_SIAD:1: archive1.rep Size=128(7,11400) CommitPeriod=60 CashSize=48 Use=672 49896
(8:52:49) INF_SIAD:First start at 08.09.2011 8:50:03 (1315446603)
(8:52:49) INF_SIAD:Last data at 09.09.2011 8:52:04 (1315533124)

Но я все равно не пойму в чем дело.
 
Posted by Nico (Участник № / Member № 5342) on :
 
1.дождитесь полного старта RTM
2.не запрашивайте данные из архива за последнюю
минуту
3.повторите эксперемент
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Не помогло.

Я написал в архив данных на полчаса, и пытался подгрузить из середины. Опять же: RTM нормально подгружает, а NetLink получает ошибку запроса. Логи не изменились. НО! Я попробовал запустить узел RTM и через буквально 5 мин остановил его (предварительно удалив старый лог). Он мне выдал следующее:

(14:31:10) INF_SIAD:Disable,not started
(14:31:10) INF_SIAD:Disable,not started
(14:31:10) INF_SIAD:1: archive1.rep Size=128(254,11400) CommitPeriod=60 CashSize=48 Use=692 49888
(14:31:10) INF_SIAD:First start at 08.09.2011 8:50:03 (1315446603)
(14:31:10) INF_SIAD:Last data at 13.09.2011 14:39:35 (1315899575)

После этого я опять удалил лог и на этот раз попробовал подгрузить архив на узел NetLink, он мне выдал следующее:

(14:40:19) INF_LOAD:Starting... tmp_prj6_0
(14:40:19) INF_RTM:Detected NT6.RTM 6.1
(14:40:19) INF_RTM:Base TRACE MODE 6 Profiler T-Factory RTM+ ver. 6.07.7
(14:40:19) ._.:RTM
(14:40:19) INF_LOAD:max channel = 65535
(14:40:19) INF_LOAD:Load Channels = 4
(14:40:19) INF_LOAD:Templates=1 (math=0 sql=0 scr=1 doc=0 pnl=0)
(14:40:19) INF_LOAD:Objects = 3
(14:40:19) INF_RTM:Timer=0.055s CalcLoop=550ms
(14:40:19) INF_SIAD:Disable,not started
(14:40:19) INF_SIAD:Disable,not started
(14:40:19) INF_SIAD:1: archive1.rep Size=128(254,11400) CommitPeriod=60 CashSize=48 Use=692 49888
(14:40:19) INF_SIAD:First start at 08.09.2011 8:50:03 (1315446603)
(14:40:19) INF_SIAD:Last data at 13.09.2011 14:39:35 (1315899575)

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

И что обозначает сообщение: "INF_SIAD:Disable,not started"?
 
Posted by Nico (Участник № / Member № 5342) on :
 
Два узла запускать на одном компьютере можно
только имея два IP адреса(указав в проекте что узлы работают по разным адресам)
1) INF_SIAD:Disable,not started
это сообщение о том что производится доступ к архиву а архив не стартовал
2)
Выдаются только где имеется архив
(14:40:19) INF_SIAD:1: archive1.rep Size=128(254,11400) CommitPeriod=60 CashSize=48 Use=692 49888
(14:40:19) INF_SIAD:First start at 08.09.2011 8:50:03 (1315446603)
(14:40:19) INF_SIAD:Last data at 13.09.2011 14:39:35 (1315899575
3)
выдаются у узла который запрашивает архив у другого узла
(8:51:2) INF_SIAD:Screen_#2: trend REM_ID=4096 ch=4 from 1315446600 to 1315446660 (0.1)
(8:51:33) INF_SIAD:timeout for REM_ID = 4096
(8:51:33) INF_SIAD:Screen_#2: snap REM_ID=4097[q=1] ch 4{1315446600} to node 0 6693.32
4) при получении запроса на архивные данные
узел выдаст сообщения содержащие R_TREND и(или)R_SNAP
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Что подразумевается под словами "архив не стартовал", имеется ввиду не стартовал некоторый обработчик запросов к SIAD (некое подобие СУБД)?

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

Оба узла у меня запускаются на разных ПК.

п.с. на это никак не может влиять тот факт, что пока что я работаю в базовой версии?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) нужны полные файлы
2) узел должен получить адреса удаленного узла
затем получить информацию об архивах на другом узле
 
Posted by Sheon (Участник № / Member № 5164) on :
 
1. Непонятно, что значит "нужны полные файлы"? Сам файл с архивом должен быть под завязку забит?

2. вы имеете ввиду, что в параметрах каждого узла надо в явном виде указать IP машины, на которой этот узел будет запущен? Если да, то пробовал, не помогло.

Может в тех поддержке, все-таки могут сделать небольшой примерчик по подгрузке SIAD архивов на тренд в узел NetLinc?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) полные файлы логов с 2 узлов
2) узлы должны найти друг друга в сети и обменятся некоторой информацией на это уходит некоторое время
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Я попробовал, этот узел NetLinc запустить на другом ПК в той же сети(различие лишь в том, что на том ПК стоит TM 6.06 и ОС WinXP), и все заработало! А изначально я пытался Netlinc запускать на ноутбуке с TM 6.07 Win7 и соединением через WiFi. Может в этом дело было?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) полные файлы логов с 2 узлов
2) узлы должны найти друг друга в сети и обменятся некоторой информацией на это уходит некоторое время
3) узнать "снюхались" узлы можно по диалогу Статусы узлов
4) отладочная информация о взаимодействии в сети
debug=400
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Для получения полной диагностической информации создайте в папках узла проекта cnf-файлы с ключом "DEBUG=80000480".
После этого воспроизведите ситуацию и отправьте на hotline3@adastra.ru log-файлы и файлы протокола профайлера узлов проекта. Также вышлите файл проекта.
 
Posted by Sheon (Участник № / Member № 5164) on :
 
Я отправил, то что вы просили вам на почту hotline3@adastra.ru

В принципе NetLinc в рабочем проекте на объекте работает пока что нормально. Возникла пара новых вопросов:

1. Как мне узнать, есть ли связь у узлов между собой? Просто, если, допустим, по каким-то причинам узел RTM замолчал, то NetLinc будет отображать последние считанные данные каналов, а надо как минимум вывести сообщение "нет связи".

2. Как узнать есть ли связь узла с OPC сервером?
 
Posted by Nico (Участник № / Member № 5342) on :
 
1) (3 и 4) узнать "снюхались" узлы можно по диалогу Статусы узлов
+ там же время последнего обмена +
диагностические переменные + отладка сети(файл профайлера)
2) в 6.07 диагностические переменные
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Высланные Вами файлы не соответствуют запрашиваемым.
Подробности отправлены по электронной почте.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
По протоколу профайлера видно, что не удается установить соединение по протоколу TCP. Проблема кроется в настройках сети. К сожалению, более подробной информации об ошибке нет.

При получении дополнительной информации по сетевому обмену средствами операционной системы просьба обращаться непосредственно в службу технической поддержки.

Релиз Trace Mode используйте последний. С ним это никак не связанно.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2