Управляйте роботом-манипулятором

У меня есть Cyber ​​Robot CYBER 310 и роботизированная рука Sciento CS-113 без документации. Оба используют параллельный порт.

Как я мог их запрограммировать?

Для Cyber ​​один я нашел это:

введите здесь описание изображения

На Sciento вообще ничего.

Любые указатели или примеры в Python/Java/C/что угодно.

[обновление] Эта страница содержит некоторую информацию, но я все равно потерялся: http://www.anf.nildram.co.uk/beebcontrol/arms/cyber/software.html


person Pepijn    schedule 26.03.2012    source источник


Ответы (2)


Я не совсем уверен, что понимаю, в чем вопрос.

Вы не знакомы с программированием параллельного порта?

Моя память об этом туманна, но iirc это довольно просто. Это «тупой» интерфейс, поэтому вам просто нужно писать в него.

Если вы работаете под Linux, то есть несколько отличных ресурсов:

Драйверы устройств Linux: Глава 9: Обзор параллельного порта — немного рассказывает о программировании параллельного порта и продолжает говорить о написании драйверов устройств для него. Я думаю, что немного излишне для вашего приложения, но вся книга увлекательна и поучительна.

Программирование портов ввода-вывода в Linux — по сути, вы можно писать в /dev/port или включить asm/io.h и использовать inb() и outb() (я давно этого не делал, но уверен, что если вы столкнетесь с конкретной проблемой, будет множество ответов там, как только вы сузили его до чего-то конкретного)

Если вы используете Windows или Mac, то id по-прежнему предлагает прочитать вышеизложенное, чтобы вы знали, что вы пытаетесь сделать, на мой взгляд, они просты, а затем найдите эквивалент Windows / Mac.

Теперь о том, что я предполагаю, суть вопроса в том, что вы пишете в порты?

Для Cyber ​​310 у вас есть раскладки выводов, хотя кажется, что существует несколько разных раскладок выводов, если вы просматриваете указанный вами сайт и если мы следуем anf.nildram.co.uk здесь мы можем найти сборку PIC, которая покажет нам, как вращать базу .

До сегодняшнего дня я никогда не занимался сборкой PIC, но с некоторой помощью из интернета и комментариев , я думаю, мы можем перевести то, что это пытается сделать (вырезана соответствующая часть, так как большая часть это синхронизация и зацикливание)

; 6: Symbol prf = PORTA.0
;       The address of 'prf' is 0x5,0
; 7: Symbol strobe = PORTA.1
;       The address of 'strobe' is 0x5,1
; 8: Symbol base = PORTB.0
;       The address of 'base' is 0x6,0
; 9: Symbol shoulder = PORTB.1
;       The address of 'shoulder' is 0x6,1
...
; 16: main: 
L0001:
; 17: base = 1
BSF 0x06,0          // set bit 0 at 0x06 to 1 essentially set base bit to 1
; 18: strobe = 1
BSF 0x05,1          // set strobe bit to 1
; 19: strobe = 0
BCF 0x05,1          // set strobe bit to 0
; 20: While a <> 730 // now we loop 729 more times

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

Дайте мне знать, если я полностью ошибаюсь, это увлекательный проект.

person Chris    schedule 04.04.2012

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

Я обнаружил, что это действительно хороший пример программирования параллельного порта с использованием C#. http://www.codeproject.com/Articles/4981/I-O-Ports-Uncensored-1-Controlling-LEDs-Light-Emit

Чтобы ваш проект соответствовал его примеру. C0 — стробоскоп. Тогда ваши цифровые выходы слева направо соответствуют его D0-D6.

Кажется, это действительно интересный проект. Веселиться.

person Brent Dooley    schedule 05.04.2012