This is topic Совмещенный OPC канал Input/Output 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/000171.html

Posted by bthorn (Участник № / Member № 1876) on :
 
Есть OPC-сервер, и тэги с доступом на чтение/запись совмещенные (Input/Output).
Тэги связаны как с платой DO (digital output) контроллера (воздействие на механизм),
как и внутренней переменной ISA Graf с доступом на чтение/запись.

В случае с платой DO нужно как воздействовать, так и проверять в каком положении он находится. Переменная ISA Graf это некая уставка, которая может меняться принудительно как оператором, так и самой программой в контроллере, и при этом нужно постоянно оператору знать значение этой уставки.

Так вот, хотелось бы через одну переменную в “Источники/Приемники” производить с ней операции на чтение и запись. Но направление переменной может быть только input или output, но никак не совмещенной, что повергло меня в ступор.

Ладно, в документации нашел упоминание про “смена типа вх/выход”, информации мало, и как я понял это только для первого запуска, а нужно постоянно отслеживать этот канал, т.к. контроллер сам может поменять его значение. Здесь ничего не вышло. Или я сделал что-то не так(мало информации) или это не мой случай. Как правильно здесь сделать?

Закончилось тем, что пришлось вместо одной переменной в “Источники/Приемники”, сделать две, которые ссылаются на один и тот же opc-тег (идентификатор) и имеют разные направления, один соответственно на управление (output), а другой на чтение значения (input). В этом случае все работает как надо, т.е. значении меняются как и оператором, так и контроллером, при этом оператор видит в реальном времени изменения.
Соответственно возник вопрос, а можно ли так делать(двойная ссылка на opc-тег) или есть другой способ(желательно поподробнее)?
И получилось вместо одного источника – два, что не есть хорошо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вы все сделали правильно - источник/приемник может быть либо Входной точкой ввода данных, либо Выходной точкой вывода данных. Иначе нельзя.
Для реального оборудования это так и есть - не бывает плат УСО, где один и тот же канал есть и вход и выход. То же и с ОРС (для его внутренних переменных). То, что стандарт ОРС подразумевает полный дуплекс именно для тэгов - не значит, что этот стандарт распространяется также на внутреннюю архитектуру нашей системы по работе с точками ввода/вывода. К тому же в любом случае тэг ОРС - это реальный канал аппаратуры УСО, а в ней объединения канала ввода-вывода пока еще не предусмотрено.
 
Posted by Иннокентий М. (Участник № / Member № 1876) on :
 
Будем разделять opc-тэг на две точки.

Тогда подскажите как правильно работать с ними.
В контроллере есть внутренняя переменная типа BOOL с направление IN/OUT.
Соответственно через OPC-сервер она видна как BOOL на чтение/запись.

Создал источник с направлением IN/Дискрет для просмотра состояния.
Создал приемник с направлением OUT/Дискрет для управления, авто-построением создал для нее канал (OUT/Hex16).
На экране создал текст и значение связал на прямую с источником(состоянием).
Создал две кнопки, одна посылает 0 – другая 1 на “входное значение” канала, при этом промежуточная переменная на экране имеет тип OUT/BOOL.

Просмотр состояния работает нормально.
А вот с управлением как-то не заладилось.

Если в контроллере значение переменной равно 1, и после запуска МРВ по нажатию кнопки посылаю 0, то ничего не происходит, приходится сначала послать 1, а потом только 0. Дальше все работает нормально.
Если в контроллере значение переменной равно 0, и после запуска МРВ посылаю 1 – все ок.
Я так понял, что это связано с начальным значение канала OUT/Hex16 – по умолчанию 0, и при попытки послать туда ноль – ничего не происходит, т.к. по логике значение на канале не поменялось и не зачем его тогда обновлять контроллере (хотя в контроллере оно равно 1).

Ладно, стал обновлять принудительно, т.е. на кнопку отправки 0 дополнительно повесил “передать значение” 1 на атрибут “отработать”. Все заработало как надо.

Посему возник вопрос, а правильно ли так делать или есть другой путь ????????
Что-то больно запутанно получилось.

Возможно есть второй способ, заполнить начальное значение канала реальным числом.
Пробовал ставить галочку “смена типа Вх/Вых”, пробовал принудительно посылать туда 1, ничего не происходит, т.е. направление меняется, а вот значение нет, менял канал на IN а потом делал смену типа – тоже не помогло. Как в этом случае корректно работать (в help-e можно сказать информации ноль по этому вопросу) ??????
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Данную задачу надо решать программно - алгоритмом, который будет отрабатывать при старте один раз и будет передавать значение Входного канала на его Выходной дубль. Синхронизировать значение через атрибут "смена Вх/Вых" нельзя из-за особенностей обмена по ОРС - в начале все тэги попадают в группы - Входы, Выходы и перемещать их в реальном времени между этими группами уже нельзя, фиксировано.
 
Posted by Bcube (Участник № / Member № 3663) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
К тому же в любом случае тэг ОРС - это реальный канал аппаратуры УСО, а в ней объединения канала ввода-вывода пока еще не предусмотрено.

Для технической поддержки: тэг OPC это НЕ ТОЛЬКО!!!! реальный канал аппаратуры УСО!!!. в контроллере кроме физических каналов есть еще всякие переменные, которые также могут быть переданы на комп и они могут быть и для чтения и для записи... кроме всего тот же дискретный выход (реальный физический канал УСО) кроме как на запись должен еще и считываться с УСО, дабы знать его состояние. ТАК ЧТО ВЫ В КОРНЕ НЕ ПРАВЫ ОПРЕДЕЛЯЯ что МОЖНО ЛИБО ЧИТАТЬ, ЛИБО ПИСАТЬ....

Должно быть так: Канал либо только для чтения, либо для чтения/записи!!!!!

ЗЫ:Очень бы хотелось пообщаться с разработчиками (особенно с теми которые формируют идеологию продукта) в живую, но увы до Москвы далеко [Улыбка / Smile] [Улыбка / Smile] [Улыбка / Smile]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В Trace Mode не запрещено читать переменную для записи. Канала для чтения\записи нет и пока не планируется, но данная возможность реализуется при помощи двух каналов.
 
Posted by Bcube (Участник № / Member № 3663) on :
 
Как же не запрещено..когда для того чтобы прочитать реальное значение, перед тем как его изменить нужно городить такой огород (смотрите свой же ответ "Данную задачу надо решать программно - алгоритмом, который будет отрабатывать при старте один раз и будет передавать значение Входного канала на его Выходной дубль.").
Не проще сразу написать этот алгоритм и заложить его внутрь системы дабы конечный пользователь не ломал голову что да как....ГОСПОДА РАЗРАБОТЧИКИ для вас это дело минут на 10...ну если постараться то на день [Улыбка / Smile] [Улыбка / Smile] , а для отдела МАРКЕТИНГА еще один повод похвастаться какая хорошая система ТРЕЙСМОД....
ЗЫ просто такая капелька дегтя портит все плюсы системы и лишает вас очередных заработанных пары млн.рублей
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Еще раз повторим, канал для чтения\записи на данный момент не планируется.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2