PDA

Просмотр полной версии : Подключение манипулятора к СП270



DENth
26.01.2015, 10:40
Приветствую всех. Прошу помочь в следующем: при разработке системы как вариант рассматривается отказ от использования сенсорной панели на СП270 и перекладывание функции управления на манипулятор типа трекбола или мышки. Возможно ли каким-то образом реализовать двигающийся курсор на экране панели оператора и принцип его управления? Может быть со стороны ПЛК? Используется ПЛК160.

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

petera
26.01.2015, 10:57
Приветствую всех. Прошу помочь в следующем: при разработке системы как вариант рассматривается отказ от использования сенсорной панели на СП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

DENth
26.01.2015, 11:10
А как отрисовать курсор на панели? Что-то я не нашел динамических элементов в конфигураторе СП200. Я еще только разбираюсь в этих делах. До этого опыта работы с подобным оборудованием не было.
И тогда второй вопрос - а для подключения к ПЛК необходимо подобрать манипулятор, который мог бы передавать свои координаты по стандартному интерфейсу? Чтобы не использовались драйверы, так?

PS. Ответ возник быстрее появления вопросов. Спасибо Вам за помощь! Пойду пробовать!

petera
26.01.2015, 12:06
А как отрисовать курсор на панели? Что-то я не нашел динамических элементов в конфигураторе СП200. Я еще только разбираюсь в этих делах. До этого опыта работы с подобным оборудованием не было.
Для курсора использовать подходящую картинку bmp.
Я, например немного подправил в библиотеке материалов картинку "011.bmp"
16355
Любой элемент на экране панели уже является динамическим, я уже это показывал http://www.owen.ru/forum/showthread.php?t=17207&p=138167&viewfull=1#post138167
16356

DENth
26.01.2015, 12:46
Большое спасибо за Ваши ответы! Доступно и понятно.

petera
26.01.2015, 13:05
В продолжение. Пример
В ПЛК только визуализация и Modbus Slave
16357
В панели только курсор
16358
Программа загружена в ПЛК и запущена на выполнение, в качестве панели к ПЛК подключен конфигуратор в режиме онлайн эмуляции

http://youtu.be/EMdLjE8ooOA
В панели работает аналогично, а в кодесис визуализация тормозит.
Видео во вложении с хорошим качеством + проекты панели и ПЛК.

DENth
26.01.2015, 13:18
Очень здорово! А можно спросить, что за устройство подключали к ПЛК? Вопрос скорее оффтопиковый для данной темы, но читая соседние темы про ПЛК и разбираясь с требованиями к подключаемому оборудованию (мышка, трекбол, внешняя сенсорная панель и т.д.), пока не нашел ответа, как правильнее это сделать. Интерфейсы из тех, которые подвернулись под руку PS/2 или USB.

PS. Супер! Спасибо огромное. Опробовал на своем оборудовании - отлично работает!

petera
26.01.2015, 15:19
Очень здорово! А можно спросить, что за устройство подключали к ПЛК? Вопрос скорее оффтопиковый для данной темы, но читая соседние темы про ПЛК и разбираясь с требованиями к подключаемому оборудованию (мышка, трекбол, внешняя сенсорная панель и т.д.), пока не нашел ответа, как правильнее это сделать. Интерфейсы из тех, которые подвернулись под руку PS/2 или USB.

PS. Супер! Спасибо огромное. Опробовал на своем оборудовании - отлично работает!
Про какое такое устройство Вы спрашиваете?
Если про манипулятор, то ни какого. Все движения курсором выполняю только в визуализации в самом кодесисе.
А если про окно с имитацией панели, то это тот же конфигуратор СП200, в котором Вы и я создаем проекты для панели. Он может заменять реальную панель, т.е. вместо панели к ПЛК подключен компьютер через COM порт кабелем КС-1 или КС-2. Конфигуратор работает в эмуляции онлайн (Файл--->Пуск онлайн)
16362
В качестве бонуса добавил возможность менять внешний вид курсора
Программа в ПЛК немного изменилась. Добавил динамические изображения курсора для визуализации и один регистр для номера курсора
16363

А в панели использовал динамическое изображение с набором из шести курсоров. Положение курсоров определяется через координаты динамического изображения.
16364 16365 16366

Теперь немножко интересней будет:rolleyes:

http://youtu.be/i4SUlMTUtVY

Картинки курсоров д.б. в одной папке с программой ПЛК, если Вы хотите увидеть динамическое изменение изображения в визуализации кодесиса. Для панели они не нужны.

DENth
26.01.2015, 16:02
Про какое такое устройство Вы спрашиваете?

Я просто не сразу понял, что настолько развернутые ответы Вы подготовили только из-за моего вопроса :) . Я подумал, что у Вас уже была наработка с использованием подобного оборудования.
Как пользоваться Вашими примерами я разобрался. Все прекрасно работает на оборудовании. Действительно впечатляет. И на самом деле не сложно, если знать :)

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

petera
26.01.2015, 16:14
Я просто не сразу понял, что настолько развернутые ответы Вы подготовили только из-за моего вопроса :) . Я подумал, что у Вас уже была наработка с использованием подобного оборудования.
Как пользоваться Вашими примерами я разобрался. Все прекрасно работает на оборудовании. Действительно впечатляет. И на самом деле не сложно, если знать :)

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

а как заставить курсор выполнять функцию, типа нажатия на кнопку
Для этого придется добавить регистр для кнопок мыши, и делать "свои" кнопки для экрана, теоретически можно сделать.

DENth
26.01.2015, 16:37
Для этого придется добавить регистр для кнопок мыши, и делать "свои" кнопки для экрана, теоретически можно сделать.

О... Я, кажется, придумал... Можно ведь сделать условие, что если курсор находится в диапазоне конкретных координат, соответствующих размеру кнопки, и нажата кнопка подтверждения на манипуляторе, то происходит нажатие кнопки, на которую наведен курсор... Хотя условие наверно получится не совсем простым. Все кнопки с разными адресами и разными координатами расположения. И перемещать кнопки по экрану при корректировке нужно будет очень аккуратно, помня, что нужно учесть изменение в программе ПЛК. Ужос в общем :)

petera
26.01.2015, 16:48
О... Я, кажется, придумал... Можно ведь сделать условие, что если курсор находится в диапазоне конкретных координат, соответствующих размеру кнопки, и нажата кнопка подтверждения на манипуляторе, то происходит нажатие кнопки, на которую наведен курсор... Хотя условие наверно получится не совсем простым. Все кнопки с разными адресами и разными координатами расположения. И перемещать кнопки по экрану при корректировке нужно будет очень аккуратно, помня, что нужно учесть изменение в программе ПЛК. Ужос в общем :)
Начало правильное, а вот концовка подкачала:rolleyes:.
Мы сделаем так, что кнопки сами будут проверять находится на них курсор или нет, без влияния ПЛК. И после создания такой кнопки ее можно будет перемещать по экрану и менять ее размеры и ни о чем не задумываться:p

DENth
26.01.2015, 16:55
Мы сделаем так, что кнопки сами будут проверять находится на них курсор или нет, без влияния ПЛК.

Вот так я не смогу. Надеюсь, что Вам интересна поднятая тема и будет возможность подсказать, в какую сторону копать. Спасибо Вам!

petera
26.01.2015, 16:58
Вот так я не смогу. Надеюсь, что Вам интересна поднятая тема и будет возможность подсказать, в какую сторону копать. Спасибо Вам!
Но это уже дома, рабочий день окончился.:cool:

petera
26.01.2015, 21:03
Промежуточный вариант. Области экрана с автоматическим определением попадания курсора в эти области.
16380 16381
Области имеют настройки
Регистры ПЛК, в которых находятся координаты курсора. Эти регистры одинаковые для всех элементов проекта.
Цвет, которым окрашивается область, M_over -курсор в пределах области, M_out -курсор вне области.
Области можно произвольно копировать и вставлять в разные места экрана, можно менять их положение и размеры.

http://youtu.be/hAUU42iI5VU
Теперь можно и кнопки делать:rolleyes:.
Я думаю, что и выпадающее меню можно сделать от правой кнопки!
Во вложении проекты ПЛК+панель.

DENth
27.01.2015, 10:13
Мдя, всё навороченнее и навороченнее. Как-то я все больше прихожу к мысли, что всё-таки сама идея использования манипулятора неправильная. Не по сути, а по идеологии. Использование "недокументированных" возможностей ПО, обработка протокола манипулятора силами ПЛК - это негативно влияет на время разработки, ее надежность, затраты на отладку.

Хотя несомненно, здорово, что реализовать собственными силами можно практически всё, что можно придумать. Но в моем случае правильнее было бы наверно использовать просто модульный ПК с операционкой и не париться. Надо подумать в общем.

petera
27.01.2015, 11:44
Мдя, всё навороченнее и навороченнее. Как-то я все больше прихожу к мысли, что всё-таки сама идея использования манипулятора неправильная. Не по сути, а по идеологии. Использование "недокументированных" возможностей ПО, обработка протокола манипулятора силами ПЛК - это негативно влияет на время разработки, ее надежность, затраты на отладку.


Хотя несомненно, здорово, что реализовать собственными силами можно практически всё, что можно придумать. Но в моем случае правильнее было бы наверно использовать просто модульный ПК с операционкой и не париться. Надо подумать в общем.
Немного отвлекся от процесса, по этому ничего дальше не делал.
А отвлекся на "мышей" и курсоры.
О манипуляторе я думаю следующее, в зависимости от наличия свободных входов ПЛК:
-можно использовать манипулятор типа джойстика с двумя резисторами по осям 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:

DENth
27.01.2015, 15:11
Вот с манипуляторами действительно засада. Предложенные Вами - самый подходящий вариант. Но в нашей задаче требуются защищенного исполнения, а это сразу серьезно ограничивает с выбором. К тому же необходим надежный поставщик. Беда-печаль. Они все PS/2 и USB.

Про "недокументированные" возможности имел ввиду то, что если разработчиками не заложена относительно простая и явная возможность реализации той или иной функции, то это оно и есть... Шаманство. Так сказать не для всех. Пытливый ум сможет найти любое решение, но какой ценой?

petera
27.01.2015, 15:59
Вот с манипуляторами действительно засада. Предложенные Вами - самый подходящий вариант. Но в нашей задаче требуются защищенного исполнения, а это сразу серьезно ограничивает с выбором. К тому же необходим надежный поставщик. Беда-печаль. Они все 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
А я еще немного потренируюсь, чисто ради спортивного интереса, может полученные наработки как-то пригодятся в будущем.

DENth
27.01.2015, 16:16
что соответствует частоте синхроимпульсов, передаваемых по линии Clock, в 10—16,7 кГц, реализовать в ПЛК программно не получится.
У меня на ПЛК160 есть быстрые дискретные входы :rolleyes: Только часть из них уже заняты в другой задаче, как быстрые счетчики...


Это же надо, меня раззадорили и в кусты.
Не-не... Я не в кусты... Ко мне просто приходит понимание идеологически-неверного решения. Сразу этого было не осмыслить. Не ожидал я от кого-либо такого участия в решении моей задачи. За что Вам большое спасибо! Но доделать возможно есть смысл, тема интересная и людям должна пригодиться! И мне, в том числе, я еще на распутье...

petera
27.01.2015, 16:57
А я пока завис на картинках для курсоров:(. Искал готовые, но в интернете все какие-то Аэро, и 32 битные, жесть в общем.
А в папке ".\WINDOWS\Cursors" нет, например, руки с пальцем. А если "выдрать" такой курсор из exe-шника или DLL, то он получается в два цвета (1 bit), что не позволяет сделать его контур прозрачным на экране панели.

petera
02.02.2015, 11:58
Я вот подумал, что даже если манипулятор подключить к ПЛК или панели не получится, то механизм дистанционного управления курсором и его "взаимодействием" с элементами на экране панели можно применить для презентации работы, например какого-либо шкафа управления, на выставке.
Нажали кнопочку "Демо режим" и виртуальный палец бегает по экранам, нажимает кнопочки.:rolleyes: