This is topic Неудобное управление кнопками in forum Редактор проекта TRACE MODE 6 / at Форум TRACE MODE: техническая поддержка.


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

Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Очень неудобное управление, когда один и тот же бит может меняться как в контроллере так и с ТМ6.
1 вариант:
- Допустим имеется кнопка(2 состояния, привязка-бит1 канала1 Input, тип передачи НЕ-ИЛИ, значение 1, Результат-бит1 канала1 Output), например для смены режима работы;
- Нажали, изменился режим работы (режим1->режим2),бит перешел в 1,
- Во время работы в контроллере бит перешел в 0, включился режим1 (например из-за аварии или поменяли с панели), Кнопка отжалась,
- Нажимаем повторно для включения бита, кнопка нажалась, неверно отображая значение канала. Оператор будет видеть, что режим2 включился хотя это не так, так как привязанный к кнопке бит канала Output только еще перешел в 0,
- только после повторного нажатия на кнопку, включается бит и включается режим2.
Аналогичная ситуация, если сначала сменить режим в контроллере, чтобы вернуть его, требуется двойное нажатие на кнопку.

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

Неужели для такой элементарной операции как смена бита нужно какой-то программный код впихивать?

Хочу, чтоб ТМ6 оторажал верные значения и биты переключались с 1го нажатия.
Разжуйте пожалуйста мне как надо сделать, а лучше пришлите простенький проектик на steklogaz-auto@mail.ru.

Спасибо.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Кто знает, как это сделать, ответьте пожалуйста...
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Обычно в таких случаях выполняется две привязки по функции: одна (дополнительная) как текущее состояние атрибута канала, а вторая (основная) как принимающая результат. Функция НЕ-ИЛИ для расчета использует дополнительную привязку. А так как у вас конечный приемник не локальный, а в контроллере, то и дополнительная привязка посылки должна быть каналом Input, который запрашивает значение канала из контроллера. А то получается, что Вы текущее значение берете не из приемника данных, а из "середины" вашей цепочки передачи данных. Поэтому и путаница возникает, когда значение меняется в контроллере.
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
Валерию Брагину: что касается 2 варианта, то поставьте в основных свойствах кнопки1 привязку к аргументу, в который посылаете 1. На другой кнопке привязку в основных свойствах можно не ставить. У себя сделал, работает.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Romcheg прав.

Состояние кнопки Вам нужно читать из контроллера.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Основная проблема у меня не в состоянии кнопки.
Если в основных свойствах ничего не привязывать (Два состояния-false), только посылать значения, то проблема остается.

Дело в том, что если послать единицу например в бит1 канала Output, то повторно она не пошлется, пока в этот же бит не послать 0 из ТМ6. А этот канал Output не видит изменения канала Input, привязанного к одной и той же ячейке памяти.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
quote:
Отправитель / Originally posted by Baikal_E:
поставьте в основных свойствах кнопки1 привязку к аргументу, в который посылаете 1. У себя сделал, работает.

Сделал так же, не работает...
 
Posted by A40 (Участник № / Member № 3999) on :
 
На самом деле проблема есть. И ноги ее - отсутствие какнала типа "вход/выход".
Поясняю - допустим, устройство включено со скады, бит1 - в 1 как в канале "вход" так и в канале "выход". Теперь устройство выключается с панели или программы или еще как локально. Тогда бит1 - в 0 в канале "вход" а в канале "выход" - по прежнему 1! Теперь со скады пытаемся включить устройство - делаем инверсию 0 -> 1 и пишем в канал "выход". Вот только он не передает значение в устройство, ибо не было изменения значения канала!!! Надо "дергать" атрибут "EXEC"!!! А это не нормально, ибо операция - рутинная!!!
Сделайте возможность настойки автоматической посылки 1 атрибут "EXEC" в настройках кнопки.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
А40, а можно поподробней про Exec, я вообще думал, что это включение пересчета на старте.

Уважаемая поддержка, если не затруднит, пришлите мне пожалуйста простенький пример подобной операции.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
На эту же кнопку вешаете еще одну функцию прямой посылки 1 в атрибут EXEC этого же канала. Тогда в случае, когда в канале 1, вы шлете кнопкой 1, по посылке в EXEC ненулевого значения МРВ будет принудительно выполнять выдачу значения канала его приемнику. Сам EXEC будет сбрасываться автоматом сервером МРВ, поэтому в самой кнопке его сбрасывать не надо - достаточно будет прямой посылки 1 в него. Минус - на каждую посылку в экране придется еще по аргументу для атрибута EXEC этого же канала создать.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В релизе 6.07 не нужно будет даже создавать дополнительный аргумент.

Пример выложим в ближайшее время.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Romсheg, с посылкой в EXEC также глухо, после первого запуска МРВ бит в 1 не меняется, или меняется когда быстро жмешь на кнопку раз 20. По второй кнопке (где прямая посылка в 0 и тоже EXEC) бит в 0 не сбрасывается, а наоборот в 1, если он уже 0. Вообще глюки странные, буду с нетерпением ждать пример и релиз 6.07.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Атрибут EXEC меняется (грубо) на один цикл МРВ. Т.е. Установили -> МРВ передал в оборудование -> МРВ сбросил.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Возможно, все участники обсуждения не очень хорошо понимают поставленную задачу.
Пришлите, пожалуйста, Ваш проект на hotline3@adastra.ru с описанием задачи и выполняемых Вами процедурах.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Проект отправлен на hotline3.
И еще вопрос: как сделать, чтобы при изменении одного бита в контроллере через EXEC остальные в этом слове не сбрасывались?
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
Тут можно не использовать EXEC. Просто пишите в тот бит(атрибуты 10-25 для Hex), который хотите изменить.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
убирал EXEC, все равно все слово сбрасывается в 0, когда меняю один бит кнопкой.
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
Если кнопка привязана к какому-либо биту, то сбрасываться не должно.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
В проекте который я вам отправил, к кнопке привязан первый бит канала, при нажатии на кнопку сбрасывается все слово. Пробывал в области памяти HR и CIO.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Конечно будет сбрасываться все слово. Вам же в начале проекта нужно подчитать значение из контроллера с помощью программы во все каналы дискретные Output.

Из канала HEX16 уходит все значение, а не только 1-й бит.
 
Posted by A40 (Участник № / Member № 3999) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
В релизе 6.07 не нужно будет даже создавать дополнительный аргумент.

Пример выложим в ближайшее время.

Пожалуйста, выложите соответствующий пример в связи с выходом релиза.
Или имеется в виду, что теперь можно задавать атрибут внутри ГЭ? Но тогда есть риск, что обращение к оборудованию будет двойное - 1 при автоматической смене значения атрибута и 2 повторно при срабатывании атрибута EXEC
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Вам же в начале проекта нужно подчитать значение из контроллера с помощью программы во все каналы дискретные Output.

В начале проекта, это при запуске МРВ имеется в виду однократно? Вообще предполагается, что все биты будут менятся постоянно в течении работы.

Когда выложите пример работы кнопок, прошу вас реализовать в нем еще и эту особенность.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
http://www.adastra.ru/files/support/tm6/free/projects/test/tm6pb_primer_knopki.zip

Для прямой передачи для бита 1, реализована принудительная подача в контроллер с помощью атрибута Exec
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Уважаемая поддержка, погонял ваш проект, но реализовано только то, что все слово не сбрасывается при смене бита.

Привязал к каналу input источник Omron_IP input, к каналу Output источник Omron_IP output.

1. По поводу группы кнопок НЕ_ИЛИ:
а) Между установкой и сбросом бита должно пройти не менее 2 секунд, иначе кнопка не сработает - не очень удобно.
б) Если бит поменялся в контроллере, кнопка его поменяет только со 2-го раза.

2. По поводу группы кнопок ПРЯМАЯ:
а) Если бит1 включился в контроллере, правая кнопка его не отключет сколько не нажимай, пока не нажмешь любую другую и потом снова на правую кнопку.
б) Если бит1 отключился в контроллере, то все нормально, включается кнопкой с первого раза.
в) Если биты 2-4 поменялись в контроллере, то соответственно левые кнопки не включают их, правые не отключают пока не нажмешь любые другие кнопки и потом снова на них.

Изначально в проекте к каналу input был привязан канал Output.
Если так оставить, то все слово сбрасывается при смене бита и все недостатки остаются.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1)
а) А по другому нельзя, значение должно уйти в контроллер, а после это прийти подтверждение в канал Input. Это как минимум 2 цикла.

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

2. Вы опять же скорее всего не подчитали их из контроллера.

3. Это было сделано для имитации. Естественно привязку надо удалить и привязать к регистру.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:

2. Вы опять же скорее всего не подчитали их из контроллера.

Убедительная просьба дополнить тестовый проект данной возможностью, а то я чтото пытался сделать в этом плане, ничего не вышло.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
У нас для Modbus все функции работают как вы просили.

Про какую возможность Вы говорите, вообще не понятно.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
У нас Omron Ethernet, все недостатки работы примера с данным оборудованием, описанные в моем сообщении от 29-07-2010 13:15 в пунктах 1(б),2(а,в) так и остались.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Вопрос решен при личном обращении в отдел ТП.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Спасибо, кнопки заработали.
Добавил к демо-проекту картинку-кнопку, привязал к картинке канал1 input бит1, но привязка не работает, в версии ТМ 6.06.3 это работает.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Привязка к битам в релизе 6.07 работает.

В примере не было привязок к битам.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Привязка к битам в релизе 6.07 работает.

Я знаю, но у меня не работает привязка именно к картинке ГЭ "Картинка-кнопка" в основных свойствах.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Возвращаясь к принудительной посылке значения в канал через атрибут EXEC - как настроить канал типа Out, чтобы при изменении его значения (In) оно не передавалось в физический выход?
 
Posted by AdAstra Research Group (Участник № / Member № 3744) on :
 
Добавить в канал программу трансляцию, которая будет блокировать отсылку нового значения.
 
Posted by A40 (Участник № / Member № 3999) on :
 
Это как?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Просто привязать шаблон к каналу и не присваивать реальное значение аппаратному.
 
Posted by A40 (Участник № / Member № 3999) on :
 
А дальше?
Какое значение "вытолкнется" при установке атрибута EXEC? Если аппаратное никогда не меняется.
Или при при установке атрибута EXEC процедура трансляции тоже вызовется и можно обработать данный атрибут соответствующем образом?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1) Посмотрите раздел "Обработка в канале FLOAT" для канала Output.

Т.е. в этой программе есть на входе аппаратное значение, на выходе реальное. Какую связь между ними Вы установите, решать Вам. Если аппаратное не меняется, Вы все равно можете послать в реальное все что угодно. Т.е. дальше уйдет то значение, которое Вы перешлете в реальное значение канала.

2) При установке атрибута Exec канал отрабатывает полностью, в том числе и программа-трансляцция.

3) Не посылать значение в физический выход можно и отключив канал от источника с помощью атрибута Подключение.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Уважаемая поддержка, удалось ли решить проблему с привязкой бита к картинке объекта "картинка-кнопка"?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Мы Вам отправили пример с растровым изображением, реализующий нужную функцию.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Спасибо
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Уважаемая поддержка, при работе кнопок в вашем тестовом проекте возникает каждый раз неприятная ситуация, когда при нажатии наример на кнопку бит1 прямой передачи из канала Output на удаленный адрес передается текущее его значение, и только на следующем цикле - результат логического ИЛИ. Данная ситуация приводит к некорректной работе программы в PLC. Можно ли это как то избежать?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Там отдельно есть кнопки передачи НЕ_ИЛИ или прямая передача. У них разный функционал.

На следующем цикле результат логического ИЛИ по нажатию кнопки с прямой передачей передаваться не может. Так эта кнопка всегда передает только одно значение.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
1) Это понятно, функционал разный, а проблема у всех одинакова и видна в просмотре компонентов.

2) Если на следующем цикле не может передаваться результат, значит в одном цикле в канал передаются два значения друг за другом.

Объясню подробней:
включаем профайлер,
в канале Input реальное например 4511,
в канале Output - 0,
нажимаем на кнопку, например из группы Прямая Бит1 Включить,
В результате реальное в канале Input - 0, и через секунду нужные нам 4511.
в канале Output - 4511,
Далее канал Input меняется на 1234, и при следующем нажатии на любую кнопку, в канал Input заносится 4511, и только после этого результат OR, XOR или AND.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
У Вас контроллер тоже управляет этими битами?

Откуда идет значение 1234 и 0?
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Да, контроллер управляет этими битами тоже, некоторые он может отключить, так же их могут поменять через панель или другой МРВ дублированный. Например, через панель включили/выключили некоторые биты, в результате в канале Input 1234.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Синхронизировать управление в таком случае невозможно. Управляться все должно из одного места.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
И в случае с Double Force тоже самое?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Double Force - это тот же МРВ, только при выходе его из строя, его подменяет сразу же второй такой же. На функции управления это влияние не оказывает.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Мы Вам отправили пример с растровым изображением, реализующий нужную функцию.

В данном примере не всегда срабатывает кнопки, то есть кнопку нажимаю, в канал Output значение идет всегда, а до контроллера не всегда доходит, где-то в 30% случаев. Приходится повторно нажимать. От паузы между нажатиями не зависит, жду по 10 секунд, прежде чем нажать повторно.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Это всего лишь пример, функции которого можно использовать в реальном проекте.

Почему у Вас не отправляется с первого нажатия мы не знаем. С протоколом Modbus этот пример работает отлично.
 
Posted by Валерий Багин (Участник № / Member № 3467) on :
 
Здравствуйте,
такая ситуация:
Есть две картинки-кнопки, посылающие 1 в контроллер в разные биты одного слова при нажатии, а при отпускании посылающие 0 (передача OR,AND), так вот, если отпустить одну кнопку и сразу же нажать на другую, единица с первой кнопки не сбрасывается.
Есть ли решение проблемы?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Процесс передачи данных в контроллер - асинхронный. Уложить в него быстроменяющиеся компоненты одного удаленного канала иногда довольно сложно.
Гарантировать отправку всех изменений какого-либо атрибута вне зависимости от длительности сигнала и производительности потока связи нельзя.
В этом смысле прямое высокодинамичное оперативное управление "битами" удаленного канала нельзя признать эффективным.
Управление с передачей коротких импульсов надо реализовывать программно, и лучше - на нижнем уровне (команду подавать интерактивно, а импульс формировать в контроллере).

Топик стал очень большим и тематически размытым.
Топик закрывается.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2