Просмотр полной версии : Подключение манипулятора к СП270
Приветствую всех. Прошу помочь в следующем: при разработке системы как вариант рассматривается отказ от использования сенсорной панели на СП270 и перекладывание функции управления на манипулятор типа трекбола или мышки. Возможно ли каким-то образом реализовать двигающийся курсор на экране панели оператора и принцип его управления? Может быть со стороны ПЛК? Используется ПЛК160.
Подобных тем не обнаружил и сам сомневаюсь в том, что это возможно. Но тем не менее надеюсь на подсказки. Заранее благодарен.
Приветствую всех. Прошу помочь в следующем: при разработке системы как вариант рассматривается отказ от использования сенсорной панели на СП270 и перекладывание функции управления на манипулятор типа трекбола или мышки. Возможно ли каким-то образом реализовать двигающийся курсор на экране панели оператора и принцип его управления? Может быть со стороны ПЛК? Используется ПЛК160.
Подобных тем не обнаружил и сам сомневаюсь в том, что это возможно. Но тем не менее надеюсь на подсказки. Заранее благодарен.
Передавайте на панель координаты X и Y в двух регистрах, а координаты курсора привязать к этим регистрам. Что тут сложного?
ЗЫ.
http://www.owen.ru/forum/showthread.php?t=17207&p=138167&viewfull=1#post138 167
http://www.owen.ru/forum/attachment.php?attachmentid=12970&d=1400584190
И не такое можно сделать http://www.owen.ru/forum/showthread.php?t=14132&p=101561&viewfull=1#post101561
http://www.owen.ru/forum/attachment.php?attachmentid=11789&d=1391878422
А как отрисовать курсор на панели? Что-то я не нашел динамических элементов в конфигураторе СП200. Я еще только разбираюсь в этих делах. До этого опыта работы с подобным оборудованием не было.
И тогда второй вопрос - а для подключения к ПЛК необходимо подобрать манипулятор, который мог бы передавать свои координаты по стандартному интерфейсу? Чтобы не использовались драйверы, так?
PS. Ответ возник быстрее появления вопросов. Спасибо Вам за помощь! Пойду пробовать!
А как отрисовать курсор на панели? Что-то я не нашел динамических элементов в конфигураторе СП200. Я еще только разбираюсь в этих делах. До этого опыта работы с подобным оборудованием не было.
Для курсора использовать подходящую картинку bmp.
Я, например немного подправил в библиотеке материалов картинку "011.bmp"
16355
Любой элемент на экране панели уже является динамическим, я уже это показывал http://www.owen.ru/forum/showthread.php?t=17207&p=138167&viewfull=1#post138167
16356
Большое спасибо за Ваши ответы! Доступно и понятно.
В продолжение. Пример
В ПЛК только визуализация и Modbus Slave
16357
В панели только курсор
16358
Программа загружена в ПЛК и запущена на выполнение, в качестве панели к ПЛК подключен конфигуратор в режиме онлайн эмуляции
http://youtu.be/EMdLjE8ooOA
В панели работает аналогично, а в кодесис визуализация тормозит.
Видео во вложении с хорошим качеством + проекты панели и ПЛК.
Очень здорово! А можно спросить, что за устройство подключали к ПЛК? Вопрос скорее оффтопиковый для данной темы, но читая соседние темы про ПЛК и разбираясь с требованиями к подключаемому оборудованию (мышка, трекбол, внешняя сенсорная панель и т.д.), пока не нашел ответа, как правильнее это сделать. Интерфейсы из тех, которые подвернулись под руку PS/2 или USB.
PS. Супер! Спасибо огромное. Опробовал на своем оборудовании - отлично работает!
Очень здорово! А можно спросить, что за устройство подключали к ПЛК? Вопрос скорее оффтопиковый для данной темы, но читая соседние темы про ПЛК и разбираясь с требованиями к подключаемому оборудованию (мышка, трекбол, внешняя сенсорная панель и т.д.), пока не нашел ответа, как правильнее это сделать. Интерфейсы из тех, которые подвернулись под руку PS/2 или USB.
PS. Супер! Спасибо огромное. Опробовал на своем оборудовании - отлично работает!
Про какое такое устройство Вы спрашиваете?
Если про манипулятор, то ни какого. Все движения курсором выполняю только в визуализации в самом кодесисе.
А если про окно с имитацией панели, то это тот же конфигуратор СП200, в котором Вы и я создаем проекты для панели. Он может заменять реальную панель, т.е. вместо панели к ПЛК подключен компьютер через COM порт кабелем КС-1 или КС-2. Конфигуратор работает в эмуляции онлайн (Файл--->Пуск онлайн)
16362
В качестве бонуса добавил возможность менять внешний вид курсора
Программа в ПЛК немного изменилась. Добавил динамические изображения курсора для визуализации и один регистр для номера курсора
16363
А в панели использовал динамическое изображение с набором из шести курсоров. Положение курсоров определяется через координаты динамического изображения.
16364 16365 16366
Теперь немножко интересней будет:rolleyes:
http://youtu.be/i4SUlMTUtVY
Картинки курсоров д.б. в одной папке с программой ПЛК, если Вы хотите увидеть динамическое изменение изображения в визуализации кодесиса. Для панели они не нужны.
Про какое такое устройство Вы спрашиваете?
Я просто не сразу понял, что настолько развернутые ответы Вы подготовили только из-за моего вопроса :) . Я подумал, что у Вас уже была наработка с использованием подобного оборудования.
Как пользоваться Вашими примерами я разобрался. Все прекрасно работает на оборудовании. Действительно впечатляет. И на самом деле не сложно, если знать :)
А можно еще один вопрос? Как-то сразу не соображу, а как заставить курсор выполнять функцию, типа нажатия на кнопку. В его свойствах кроме регистров, отвечающих за перемещение вроде как ничего больше нет. Прошу простить, если данная тема уже ранее обсуждалась.
Я просто не сразу понял, что настолько развернутые ответы Вы подготовили только из-за моего вопроса :) . Я подумал, что у Вас уже была наработка с использованием подобного оборудования.
Как пользоваться Вашими примерами я разобрался. Все прекрасно работает на оборудовании. Действительно впечатляет. И на самом деле не сложно, если знать :)
А можно еще один вопрос? Как-то сразу не соображу, а как заставить курсор выполнять функцию, типа нажатия на кнопку. В его свойствах кроме регистров, отвечающих за перемещение вроде как ничего больше нет. Прошу простить, если данная тема уже ранее обсуждалась.
Нет, такая тема еще не обсуждалась.
а как заставить курсор выполнять функцию, типа нажатия на кнопку
Для этого придется добавить регистр для кнопок мыши, и делать "свои" кнопки для экрана, теоретически можно сделать.
Для этого придется добавить регистр для кнопок мыши, и делать "свои" кнопки для экрана, теоретически можно сделать.
О... Я, кажется, придумал... Можно ведь сделать условие, что если курсор находится в диапазоне конкретных координат, соответствующих размеру кнопки, и нажата кнопка подтверждения на манипуляторе, то происходит нажатие кнопки, на которую наведен курсор... Хотя условие наверно получится не совсем простым. Все кнопки с разными адресами и разными координатами расположения. И перемещать кнопки по экрану при корректировке нужно будет очень аккуратно, помня, что нужно учесть изменение в программе ПЛК. Ужос в общем :)
О... Я, кажется, придумал... Можно ведь сделать условие, что если курсор находится в диапазоне конкретных координат, соответствующих размеру кнопки, и нажата кнопка подтверждения на манипуляторе, то происходит нажатие кнопки, на которую наведен курсор... Хотя условие наверно получится не совсем простым. Все кнопки с разными адресами и разными координатами расположения. И перемещать кнопки по экрану при корректировке нужно будет очень аккуратно, помня, что нужно учесть изменение в программе ПЛК. Ужос в общем :)
Начало правильное, а вот концовка подкачала:rolleyes:.
Мы сделаем так, что кнопки сами будут проверять находится на них курсор или нет, без влияния ПЛК. И после создания такой кнопки ее можно будет перемещать по экрану и менять ее размеры и ни о чем не задумываться:p
Мы сделаем так, что кнопки сами будут проверять находится на них курсор или нет, без влияния ПЛК.
Вот так я не смогу. Надеюсь, что Вам интересна поднятая тема и будет возможность подсказать, в какую сторону копать. Спасибо Вам!
Вот так я не смогу. Надеюсь, что Вам интересна поднятая тема и будет возможность подсказать, в какую сторону копать. Спасибо Вам!
Но это уже дома, рабочий день окончился.:cool:
Промежуточный вариант. Области экрана с автоматическим определением попадания курсора в эти области.
16380 16381
Области имеют настройки
Регистры ПЛК, в которых находятся координаты курсора. Эти регистры одинаковые для всех элементов проекта.
Цвет, которым окрашивается область, M_over -курсор в пределах области, M_out -курсор вне области.
Области можно произвольно копировать и вставлять в разные места экрана, можно менять их положение и размеры.
http://youtu.be/hAUU42iI5VU
Теперь можно и кнопки делать:rolleyes:.
Я думаю, что и выпадающее меню можно сделать от правой кнопки!
Во вложении проекты ПЛК+панель.
Мдя, всё навороченнее и навороченнее. Как-то я все больше прихожу к мысли, что всё-таки сама идея использования манипулятора неправильная. Не по сути, а по идеологии. Использование "недокументированных" возможностей ПО, обработка протокола манипулятора силами ПЛК - это негативно влияет на время разработки, ее надежность, затраты на отладку.
Хотя несомненно, здорово, что реализовать собственными силами можно практически всё, что можно придумать. Но в моем случае правильнее было бы наверно использовать просто модульный ПК с операционкой и не париться. Надо подумать в общем.
Мдя, всё навороченнее и навороченнее. Как-то я все больше прихожу к мысли, что всё-таки сама идея использования манипулятора неправильная. Не по сути, а по идеологии. Использование "недокументированных" возможностей ПО, обработка протокола манипулятора силами ПЛК - это негативно влияет на время разработки, ее надежность, затраты на отладку.
Хотя несомненно, здорово, что реализовать собственными силами можно практически всё, что можно придумать. Но в моем случае правильнее было бы наверно использовать просто модульный ПК с операционкой и не париться. Надо подумать в общем.
Немного отвлекся от процесса, по этому ничего дальше не делал.
А отвлекся на "мышей" и курсоры.
О манипуляторе я думаю следующее, в зависимости от наличия свободных входов ПЛК:
-можно использовать манипулятор типа джойстика с двумя резисторами по осям X и Y, сигнал с резисторов на аналоговые входы ПЛК. Плюс кнопку(и) на дискретный вход(ы).
-можно использовать манипулятор только с кнопками, как в игровых приставках/консолях. Четыре кнопки вверх, вниз, вправо, влево и кнопка "огонь". Кнопки подключить к дискретным входам ПЛК.
- можно было бы использовать мышь для COM порта. 1200 бит/c, 7 битов данных, 1 стоп-бит
Протокол обмена не сложный. Мышь посылает пакет из трех байт
№
байта
D7
D6
D5
D4
D3
D2
D1
D0
1
х
1
ЛКн
Пкн
X7
X6
Y7
Y6
2
х
0
X5
X4
X3
X2
X1
X0
3
х
0
Y5
Y4
Y3
Y2
Y1
Y0
X7,X6,X5,X4,X3,X2,X1,X0 -Приращение по X
Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 -Приращение по Y.
Бит D6=1 является маркером начала посылки.
Мышь передает приращение по координатам, а не абсолютное положение.
Единственная загвоздка - питание для мыши берется от линий RS232, а порт ПЛК этих линий не имеет
3 TD Последовательные данные к мыши (только для питания)
2 RD Последовательные данные от мыши
7 RTS Положительное напряжение питания мыши
8 CTS ----------------
6 DSR --------------
5 Сигнальная земля
4 DTR Положительное напряжение питания мыши и ее сброс
Линии DTR-DSR и RTS-CTS НЕ должны быть замкнуты. Сброс мыши можно сделать установив напряжение на RTS отрицательным и затем положительным, длительность импульса не менее 100 мс.
Теперь еще хочу стандартные курсоры "выдернуть" из Windows, что бы сделать автоматически изменяющийся указатель
Например курсор попал на кнопку, указатель -рука с пальцем или нажали кнопку на элементе для которого нет действия с мышкой -указатель "нет действия".
Вот я не понял, о каких-таких недокументированных возможностях ПО идет речь?
А на счет идеологии я как раз сейчас думаю, что бы можно было унифицировать элементы экрана управляемые манипулятором. Например какие регистры управления должны быть, кроме тех, что для X, Y и кнопок, нужен ли регистр "обратной связи", в котором ПЛК получит, номер элемента экрана, на котором находится указатель. Ну и другие вопросы, например, как быть с окнами, они ведь всегда поверх других элементов, в том числе и курсор получается под окном, а не сверху.
Решить эту идеологию нужно уже на самом первом этапе, что бы затем не переделывать такие, управляемые дистанционно элементы экрана.
А сама реализация таких элементов - дело техники, вполне решаемая задача.
ЗЫ. Если с питанием мыши вопрос решить, то в дальнейшем можно было бы и в самой панели драйвер для мышки сделать и подключать ее прямо к панели, например через не используемый, как правило, порт Download.:rolleyes:
Вот с манипуляторами действительно засада. Предложенные Вами - самый подходящий вариант. Но в нашей задаче требуются защищенного исполнения, а это сразу серьезно ограничивает с выбором. К тому же необходим надежный поставщик. Беда-печаль. Они все PS/2 и USB.
Про "недокументированные" возможности имел ввиду то, что если разработчиками не заложена относительно простая и явная возможность реализации той или иной функции, то это оно и есть... Шаманство. Так сказать не для всех. Пытливый ум сможет найти любое решение, но какой ценой?
Вот с манипуляторами действительно засада. Предложенные Вами - самый подходящий вариант. Но в нашей задаче требуются защищенного исполнения, а это сразу серьезно ограничивает с выбором. К тому же необходим надежный поставщик. Беда-печаль. Они все PS/2 и USB.
Про "недокументированные" возможности имел ввиду то, что если разработчиками не заложена относительно простая и явная возможность реализации той или иной функции, то это оно и есть... Шаманство. Так сказать не для всех. Пытливый ум сможет найти любое решение, но какой ценой?
Про PS/2 не думал, но для информации о протоколе можно посмотреть здесь http://www.programmersclub.ru/%D0%98%D1%81%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D 0%B0%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D 0%B0-ps2-%D0%B4%D0%BB%D1%8F-%D0%BC%D1%8B%D1%88%D0%BA%D0%B8/
Хотя из-за того, что общий период времени, необходимый для передачи одного бита, составляет от 60 до 100 мкс, что соответствует частоте синхроимпульсов, передаваемых по линии Clock, в 10—16,7 кГц, реализовать в ПЛК программно не получится.
Про "недокументированные" возможности имел ввиду то, что если разработчиками не заложена относительно простая и явная возможность реализации той или иной функции, то это оно и есть... Шаманство.
Если Вы про панель, то разработчиками как раз и заложена относительно простая и явная возможность реализации той или иной функции в расширенном режиме редактирования. Кроме того можете реализовывать те или иные функции в панели на Си, если язык графических примитивов не нравиться.
Это же надо, меня раззадорили и в кусты.http://www.owen.ru/forum/attachment.php?attachmentid=11962&d=1392751544
А я еще немного потренируюсь, чисто ради спортивного интереса, может полученные наработки как-то пригодятся в будущем.
что соответствует частоте синхроимпульсов, передаваемых по линии Clock, в 10—16,7 кГц, реализовать в ПЛК программно не получится.
У меня на ПЛК160 есть быстрые дискретные входы :rolleyes: Только часть из них уже заняты в другой задаче, как быстрые счетчики...
Это же надо, меня раззадорили и в кусты.
Не-не... Я не в кусты... Ко мне просто приходит понимание идеологически-неверного решения. Сразу этого было не осмыслить. Не ожидал я от кого-либо такого участия в решении моей задачи. За что Вам большое спасибо! Но доделать возможно есть смысл, тема интересная и людям должна пригодиться! И мне, в том числе, я еще на распутье...
А я пока завис на картинках для курсоров:(. Искал готовые, но в интернете все какие-то Аэро, и 32 битные, жесть в общем.
А в папке ".\WINDOWS\Cursors" нет, например, руки с пальцем. А если "выдрать" такой курсор из exe-шника или DLL, то он получается в два цвета (1 bit), что не позволяет сделать его контур прозрачным на экране панели.
Я вот подумал, что даже если манипулятор подключить к ПЛК или панели не получится, то механизм дистанционного управления курсором и его "взаимодействием" с элементами на экране панели можно применить для презентации работы, например какого-либо шкафа управления, на выставке.
Нажали кнопочку "Демо режим" и виртуальный палец бегает по экранам, нажимает кнопочки.:rolleyes:
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot