Python + LPT
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Python + LPT
Есть у меня один самодельный девайс, который я сделал еще в 2000 году.
Конфигурация такова: ДЕВАЙС (шаговики, реле, исполнительные механизмы) через самодельный КОНТРОЛЛЕР подключен к LPT старенького IBM 286. На 286-ом установлена DOS и гордость Билла - QBasic.
И вот прямо из интерпретатора QBasic, скрипт в 10-12 скроллов и управляет этим девайсом, опрашивая датчики и управляя исполнительными механизмами по замкнутому циклу.
Работает до сих пор. Проблем и нареканий нет.
И вот с недавних пор подумалось мне:
- самодельный контроллер заменить на контроллер Purelogic
- управляющую программулинку на Qbasic переписать на Python
Вот, что нашлось в сети из похожих проектов: http://www.zadevalov.com/lptboard
Может у кого еще есть похожие наработки LPT+Pithon ?
Конфигурация такова: ДЕВАЙС (шаговики, реле, исполнительные механизмы) через самодельный КОНТРОЛЛЕР подключен к LPT старенького IBM 286. На 286-ом установлена DOS и гордость Билла - QBasic.
И вот прямо из интерпретатора QBasic, скрипт в 10-12 скроллов и управляет этим девайсом, опрашивая датчики и управляя исполнительными механизмами по замкнутому циклу.
Работает до сих пор. Проблем и нареканий нет.
И вот с недавних пор подумалось мне:
- самодельный контроллер заменить на контроллер Purelogic
- управляющую программулинку на Qbasic переписать на Python
Вот, что нашлось в сети из похожих проектов: http://www.zadevalov.com/lptboard
Может у кого еще есть похожие наработки LPT+Pithon ?
Мнение автора может не совпадать с мнением редакции
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Что хотим получить в результате?
Используя Python скрипт, для начала например, управлять одним из реле на Purelogic контроллере PLС330
А что имеем?
1. Ubuntu 10.04 RT
2. Python, установленый по-умолчанию в Ubuntu
3. Среда разработки Geany, установленная из репозитория
4. Еще, как выясняется, понадобится модуль "pyparallel", который позволит нам иметь доступ к LPT. Его можно скачать с SourceForge http://pyserial.sourceforge.net/pyparallel.html или установить из-под консоли:
А вот, что нам настоятельно рекомендует "pyparallel" в примечаниях:
The lp(4) module must be unloaded, lp claims exclusive access to the port and other programs won’t be able to use it.
The ppdev(4) module needs to be loaded,. When udev is in use, (default with 2.6 kernels) this will create a /dev/parport0.
The user needs to have write permissions to /dev/parport0. Many distributions have an lp group that owns the device; the simplest is to add the user account to this group. Simply changing permissions on the device is not the best strategy as they will be reverted to their defaults next time the driver is loaded.
Авто перевод :
Lp(4) модуль должен быть выгружен, rmmod lp. LP претензий
эксклюзивный доступ к порту и другие программы не смогут его использовать.
Ppdev(4) модуль должен быть загружен, modprobe ppdev. Когда
udev, используется в (по умолчанию с ядер 2.6) это создаст
/ dev/parport0.
Пользователь должен иметь разрешения на запись для/dev/parport0. Многие
дистрибутивов имеют группу lp, которой принадлежит устройство; Самый простой заключается
Добавьте учетную запись пользователя в эту группу. Простое изменение разрешений
устройство не является наилучшей стратегией, поскольку они будут возвращены к их значения по умолчанию в следующий раз загружен драйвер.
Ну что ж, вроде, все понятно.
Попробуем разобраться на практике.
Используя Python скрипт, для начала например, управлять одним из реле на Purelogic контроллере PLС330
А что имеем?
1. Ubuntu 10.04 RT
2. Python, установленый по-умолчанию в Ubuntu
3. Среда разработки Geany, установленная из репозитория
4. Еще, как выясняется, понадобится модуль "pyparallel", который позволит нам иметь доступ к LPT. Его можно скачать с SourceForge http://pyserial.sourceforge.net/pyparallel.html или установить из-под консоли:
Код: Выделить всё
sudo apt-get install python-parallelThe lp(4) module must be unloaded,
Код: Выделить всё
rmmod lpThe ppdev(4) module needs to be loaded,
Код: Выделить всё
modprobe ppdevThe user needs to have write permissions to /dev/parport0. Many distributions have an lp group that owns the device; the simplest is to add the user account to this group. Simply changing permissions on the device is not the best strategy as they will be reverted to their defaults next time the driver is loaded.
Авто перевод :
Lp(4) модуль должен быть выгружен, rmmod lp. LP претензий
эксклюзивный доступ к порту и другие программы не смогут его использовать.
Ppdev(4) модуль должен быть загружен, modprobe ppdev. Когда
udev, используется в (по умолчанию с ядер 2.6) это создаст
/ dev/parport0.
Пользователь должен иметь разрешения на запись для/dev/parport0. Многие
дистрибутивов имеют группу lp, которой принадлежит устройство; Самый простой заключается
Добавьте учетную запись пользователя в эту группу. Простое изменение разрешений
устройство не является наилучшей стратегией, поскольку они будут возвращены к их значения по умолчанию в следующий раз загружен драйвер.
Ну что ж, вроде, все понятно.
Попробуем разобраться на практике.
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
О, какие люди
!
Ну все в принципе так.
RT тебе не обязателен, все равно на питоне RealTime не выйдет.
По питону обращайся, есть опыт написания программ на питоне, но с параллельным портом не работал.
PS а что за устройство? Может его сразу на usb перевести тогда?
Ну все в принципе так.
RT тебе не обязателен, все равно на питоне RealTime не выйдет.
По питону обращайся, есть опыт написания программ на питоне, но с параллельным портом не работал.
PS а что за устройство? Может его сразу на usb перевести тогда?
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Салют НИК! Давно не общались у тебя на форуме.
RT в Питоне не получится? Жаль. А мне нужно управлять двумя шаговиками и 4-мя пневмоклапанами.
Ну пневмоклапаны отработают то, а задвигать без дерганий и пропусков шагов шаговики Питоном, думаешь, не получится?
А чем светит работа от USB? Контроллер такой видел у москвичей, даже купить хотел. Но, как говорится, "работает - не трожь!", поэтому пока и не переделываю.
Пока читаю это: Мгновенный Питон http://www.eduhmao.ru/info/1/3646/34241/
Понятно что есть, ты ведь Gcode Tools на Питоне пишешь.Nick писал(а):По питону обращайся, есть опыт написания программ на питоне
RT в Питоне не получится? Жаль. А мне нужно управлять двумя шаговиками и 4-мя пневмоклапанами.
Ну пневмоклапаны отработают то, а задвигать без дерганий и пропусков шагов шаговики Питоном, думаешь, не получится?
А чем светит работа от USB? Контроллер такой видел у москвичей, даже купить хотел. Но, как говорится, "работает - не трожь!", поэтому пока и не переделываю.
Пока читаю это: Мгновенный Питон http://www.eduhmao.ru/info/1/3646/34241/
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Не все так простоDMexico писал(а):RT в Питоне не получится? Жаль. А мне нужно управлять двумя шаговиками и 4-мя пневмоклапанами.
USB - сложнее, и опять же нет риалтайма. Я просто подумал раз ты пишешь про питон, то тебе риалтайм не нужен.
Вот так всегда бывает, когда человек не пишет, что он делает
Можно делать примочки к EMC2 на питоне. Вот тогда будет и риалтайм при управлении и все, что угодно!
Питон - классная штука, в ней можно начать программировать практически сразу, но не смотря на это, я до сих пор отрываю для себя новые вещиDMexico писал(а):Пока читаю это: Мгновенный Питон http://www.eduhmao.ru/info/1/3646/34241/
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Так, так, можно поподробнее о примочках к EMC2 ? На оффсайте есть об этом?
Кстати пробовал получить доступ к LPT из 11.10 и 10.04 RT EMC2
В EMC2 не получилось. Выдает что-то вроде что доступ к LPT только из под EMC2 conf
Кстати пробовал получить доступ к LPT из 11.10 и 10.04 RT EMC2
В EMC2 не получилось. Выдает что-то вроде что доступ к LPT только из под EMC2 conf
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Ну в общем случае ты можешь написать любую программу, которая будет общаться с пинами hal.
Вопрос в том, как будет устроенно управление твоим агрегатом, он должен ездить по заданной программе, или программа генерируется на ходу по мере поступления информации с датчиков?
Вопрос в том, как будет устроенно управление твоим агрегатом, он должен ездить по заданной программе, или программа генерируется на ходу по мере поступления информации с датчиков?
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Nick писал(а):Ну в общем случае ты можешь написать любую программу, которая будет общаться с пинами hal.
Вопрос в том, как будет устроенно управление твоим агрегатом, он должен ездить по заданной программе, или программа генерируется на ходу по мере поступления информации с датчиков?
Код: Выделить всё
IF кончился расходник or крепеж or упаковка then pause 0Следовательно: от перемены настроения датчиков - сумма программного тела не меняется
Значит стоит почитать документацию к HAL. Не подскажешь в каком месте?
Вот чуяло мое сердце, что наилучшим вариантом будет взаимодействие с EMC2!
Последний раз редактировалось DMexico 21 дек 2011, 17:19, всего редактировалось 1 раз.
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Тупо берем присоединяем все датчики к кнопке останова.
net estop-ext parport.1.pin-10-in => iocontrol.0.emc-enable-in
Все
.
: EMC2 Integrators Manual Перевод на русский язык
net estop-ext parport.1.pin-10-in => iocontrol.0.emc-enable-in
Все
Вот отсюда можно начатьDMexico писал(а):Значит стоит почитать документацию к HAL. Не подскажешь в каком месте?
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Не получится писать напрямую в g-code. В нем нет ветвления, массивов, процедур с параметрами... Я тут почитал, то что ты давал выше. Оказывается много всяких приблуд пишется на Питоне для EMC2. Считаю, что наиболее "красивым" подходом к решению подобных задач, это именно взаимодействие с HAL, посредством скрипта на Питоне.
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Процедуры есть! Это О-коды o100 sub и o100 call. Что такое ветвление? Не if then else?
Опиши в общих чертах логику работы станка, например,
открыли такой-то клапан,
если датчик сработал , сделали то-то...
А я напишу тебе под это Gкод, или скажу как это можно реализовать другими способами.
Опиши в общих чертах логику работы станка, например,
открыли такой-то клапан,
если датчик сработал , сделали то-то...
А я напишу тебе под это Gкод, или скажу как это можно реализовать другими способами.
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Кажется эти О-коды подходящее решение. Сможешь написать код, который двигал бы движок с PLC-330 на шаг? На 10 шагов?Nick писал(а):Процедуры есть! Это О-коды o100 sub и o100 call. Что такое ветвление? Не if then else?
Опиши в общих чертах логику работы станка, например,
открыли такой-то клапан,
если датчик сработал , сделали то-то...
А я напишу тебе под это Gкод, или скажу как это можно реализовать другими способами.
Мнение автора может не совпадать с мнением редакции
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
А что хочу сделать? Хочу приделать на стол станка поворотный стол, на 6 деталей. Столом должна управлять четвертая ось PLC-330. Детали укладываются (реле управляет подачей детали из бункера) на свободный сектор, в слот для детали, поворот на 1/6, исполнение G-code, следующий поворот на 1/6... Таким образом "бесчеловечный" рабочий цикл удлиняется на кол-во деталей в бункере. А их достаточно в бункере, цикл можно будет считать замкнутым! Понимаешь что это для производственного цикла? Это минус один работник. Цинично, но лудитов, среди работников нет. Могу быть спокоен за станок.
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Тогда делаем так:
Все, Gкод будет выполняться num раз.
Ось А настраиваешь как бесконечную поворотную ось.
Код: Выделить всё
#<num> = 10
#1 = 0
(начало цикла)
o101 while [#1 LT #<num>]
(смещаемся по оси А на ..., смещение относительное)
G91 (Incremental mode)
G00 A...
G90 (Absolute mode)
(... тут Gкод программы ...)
(конец цикла)
o101 endwhile
M2
Ось А настраиваешь как бесконечную поворотную ось.
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Понадобилось выставить задержку в выполнении кода. Нашел таковую в G-code.
Кто пробовал ее в деле с EMC2?
Вот что нашел я:
КОМАНДА ЗАДЕРЖКИ
G04 ЗАДЕРЖКА
P Время задержки в секундах или миллисекундах
Команда G04 используется для программируемой временной задержки выполнения программы или её приостановки на заданное время. Если запрограммирована в строке, содержащей команды перемещения G00, G01, G02 или G03, все перемещения будут приостановлены на заданное в параметре P значение. Если значение параметра P не содержит десятичную точку, время задержки выражается в миллисекундах (0.001 секунды), иначе в секундах. Приостанавливается только перемещение по координатным осям, шпиндель продолжает вращаться с заданной скоростью и охлаждение остаётся включенным.
G04 P___
Минимальное значение – P0.001 секунды
Максимальное значение – P1000.000 секунд
Задержка на 3 секунды в EMC2 имеет следующий синтаксис:
G04 P 3.0
Кто пробовал ее в деле с EMC2?
Вот что нашел я:
КОМАНДА ЗАДЕРЖКИ
G04 ЗАДЕРЖКА
P Время задержки в секундах или миллисекундах
Команда G04 используется для программируемой временной задержки выполнения программы или её приостановки на заданное время. Если запрограммирована в строке, содержащей команды перемещения G00, G01, G02 или G03, все перемещения будут приостановлены на заданное в параметре P значение. Если значение параметра P не содержит десятичную точку, время задержки выражается в миллисекундах (0.001 секунды), иначе в секундах. Приостанавливается только перемещение по координатным осям, шпиндель продолжает вращаться с заданной скоростью и охлаждение остаётся включенным.
G04 P___
Минимальное значение – P0.001 секунды
Максимальное значение – P1000.000 секунд
Задержка на 3 секунды в EMC2 имеет следующий синтаксис:
G04 P 3.0
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
Должно работать, только судя по тексту это будет 3 миллисекунды, чтобы было 3 секунды надо G04 P3 - без точки.DMexico писал(а):G04 P 3.0
А тебе именно временная задержка нужна, или до какого-то события?
- DMexico
- Опытный
- Сообщения: 149
- Зарегистрирован: 13 мар 2010, 21:39
- Репутация: 7
- Откуда: Киев
- Контактная информация:
Re: Python + LPT
Читай внимательно: 3 сек. Нужна для того, чтобы вспышка накопила энергии. А вот с циклом не получилось у меня, который ты описал.
Мнение автора может не совпадать с мнением редакции
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Python + LPT
хмм, а чего не получилось?
О, наверное цикл бесконечный вышел... там надо #1 = #1+1 добавить...
О, наверное цикл бесконечный вышел... там надо #1 = #1+1 добавить...
