Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Редактор проекта TRACE MODE 6 / » Кнопка и ОПС

   
Автор / Author Тема / Topic: Кнопка и ОПС
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Уважаемая техподдержка.
А ТМ бета-тестирование вообще проходила? [Улыбка / Smile]

Начальная задача.
По нажатию кнопки записать на ОПС-сервер в булеву переменную "1". Контроллер читает ее и после некоторой обработки сбрасывает в "0". Соответственно переход из "0" в "1" считается командой к пуску алгоритма в контроллере. Состояние "1" - занят обработкой и запись "1" все равно ничего не даст. Состояние "0" - готовность.
Алгоритм проще простого [Улыбка / Smile]
Однако, простейшими средствами ТМ такое реализовать не возможно, минимум нужно создать алгоритм ))
И так.
Способ 1. У кнопки создаем событие передать 1 в канал, привязанные к нашей ОПС-переменной. Ставим флаг "восстанавливать значение". При коротком (просто клике) нажатии на кнопку в канал вообще ничего не попадает. При удержании кнопки в полсекунды, "1" в канал попадает и это отмечается в отчете тревог. И только при длительном нажатии на кнопку "1" попадает в ОПС-переменную. Но это полбеды, можно написать инструкцию оператору, чтобы держал кнопку подольше, однако при отпускании кнопки в ОПС-переменную по-любому записывается "0", что недопустимо.
Способ 2. Тоже самое, только убираем флаг "восстанавливать значение". Единица передается в любом случае, независимо от нажатия, событие отмечается в отчете тревог. Но когда контроллер сбрасывает OPC-переменную в "0", то в канале проекта продолжает висеть единица и любая попытка нажать кнопку бесполезна, единица больше не передается. Попытка привязать ОПС-переменную напрямую к аргументу экрана также безуспешна.

Но самое прикольное, что если поставить флаг "подтверждение" и "восстанавливать значение" одновременно, то значение не восстанавливается. Т.е. флаги даже на уровне скрипта кнопки конфликтуют между собой [attention / внимание]

Похоже придется создавать дополнительно ОПС-вход, при возвращении переменной в "0" сбрасывать канал в "0" принудительно. Но учитывая, что к каналу можно привязать только один ОПС-компонент, то придется создавать дополнительно канал или программу.

Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
1) Если контроллер должен ее сбрасывать, то почему Вы ставите флаг "восстанавливать значение" и сами сбрасываете значение в 0. При этом почему то решив, что это не допустимо.

Таким алгоритмом Вы данную задачу не решите.

2) Чтобы повторно передать единицу в контроллер, пошлите дополнительно единичку в атрибут 39, Exec канала. Он у Вас принудительно отработает и передаст единичку в контроллер.

Сообщения / Posts 17316 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
2Serex: Для начала Вам надо усвоить "идеологию" ТМ6. В ТМ нет понятия полно-дуплексного канала! Это в ОРС он есть. И в этом основа Вашей ошибки...
Дело в том, что в ТМ есть понятие INPUT, есть понятие OUTPUT, но нет каналов типа INOUT, есть только аргументы (и они только внутри рантайма МРВ работают так, но не с внешними интерфейсами).

По-хорошему Вам надо делать так:
1) Создать канал1 OUTPUT ОРС на тэг контроллера
2) Создать канал2 INTPUT ОРС на тэг контроллера
3) В экране привязать канал1 через аргумент OUT
4) А канал2 через аргумент IN
5) Кнопку настроить так - "Результат" привязать к канал1, а "Источник" к канал2.
6) Установить флаг "Восстанавливать значение"

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

тогда нажимая на кнопку, МРВ отправит значение в тэг контроллера, а индикацией оператору того, что команда дошла до адресата будет заливка кнопки по канал2, и как только он отпустит кнопку, то канал1 сбросится в ноль. [Улыбка / Smile]
Тогда и наглядность интерфейса будет хорошая, и в инструкции оператору будет что написать в пункте "как посылать команду".

В общем - должно работать... [Пдмигивание / Wink]

IP / IP: IP адрес / IP address | Report this post to a Moderator
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Поддержка

quote:
2) Чтобы повторно передать единицу в контроллер, пошлите дополнительно единичку в атрибут 39, Exec канала. Он у Вас принудительно отработает и передаст единичку в контроллер.
Вот )) Это пожалуй мне и нужно. Так как контроллер отрабатывает команду достаточно быстро. порядка 100 мс

Romсheg
Вашим способом получится, что команду контроллер отработает еще пару раз, пока оператор отпустит кнопку. Не катастрофично, но не желательно )) А так я уже сделал прогу, которая читает ОПС-тег и сбрасывает канал OUT по отрицательному перепаду (из 1 в 0). Но поскольку у меня еще 128 кнопок, то воспользуюсь советом техподдержки [Улыбка / Smile]

Про полнодуплексную связь:
Ну с точки зрения программирования полногодуплекса не бывает. Есть функции Read и Write. Только если их раскидать по разным потокам, то в каком-то смысле получится полный дуплекс, но и то в одноядерном процессоре они будут обрабатываться поочереди )) Нормальный полный дуплекс только на аппаратном уровне. Просто если разработчик предлагает визуальный интерфейс, как ТМ, то наверное логично было бы обеспечить и виртуальный полный дуплекс. [Улыбка / Smile] Нам же нужно упрощение с целью увеличения скорости разработки приложений. По-мелочи я сам в Билдере С++ уже скаду создавал без всяких там заботливых скада-дистрибьютеров. [Улыбка / Smile]

Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
2) Чтобы повторно передать единицу в контроллер, пошлите дополнительно единичку в атрибут 39, Exec канала. Он у Вас принудительно отработает и передаст единичку в контроллер.
И еще по этой же проблеме.
Куда послать "1" , чтобы возникла запись в отчете тревог.

Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В отчет тревог таким способом послать значение не получится. Для этого нужно реализовывать полный алгоритм, как описал Romcheg.
Сообщения / Posts 17316 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Я уже сделал ))
Спасибо.


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

Сделать бы еще групповое редактирование для аргументов канала... было бы чудесно. [Улыбка / Smile]

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

Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Открою Вам большой секрет - в ТМ6 редактор аргументов один! Это значит, что открывая аргументы шаблона, канала или вызова шаблона - Вы работаете ВСЕГДА через один и тот же редактор. И соответственно он позволяет легко работать групповым образом с любым из полей выбранной группы аргументов вплоть до Комментария. [Пдмигивание / Wink]
IP / IP: IP адрес / IP address | Report this post to a Moderator
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Однако я в этом единственном редакторе не вижу опции "задать строку" "задать диапазон", которые есть в редакторе группы каналов
Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Romсheg
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
А вот не надо путать Редактор группы каналов и Редактор аргументов - это уже разные компоненты.
IP / IP: IP адрес / IP address | Report this post to a Moderator
Serex
Forum Member / Участник форума
Участник № / Member № 3942


Icon 1 отправлено / posted      Профиль для / Profile for Serex           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
[Улыбка / Smile] Хорошо, не буду путать.
Я говорил о том, чтобы в редакторе аргументов была опция "задать строку" и "задать диапазон"

Сообщения / Posts 59 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Записали в пожелания.
Сообщения / Posts 17316 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2