Страница 1 из 5

прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 04:29
pkasy
всем привет.
поиском ничего не нашел, поэтому спрошу прямо.
как настроить pncconfig для 6 осей?
в нем то можно выбрать только 4 - XYZA, хотя дальше есть выбор 4х серво и 2х шаговых. вот только названия осей везде XYZA, а нужно XYZABC.
что и где менять? если только в исходниках, то где они?
извиняюсь, если вам мои вопросы покажутся смешными.
с уважением,
Павел

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 07:37
Lexxa
лучше ручками потом добавь. Тебе все равно придется ковырять и ини и хал файлы.

А что за станок такой? Вроде на сколько я знаю 5 осей и на токарном и на фрезерном решают все проблемы.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 07:42
pkasy
ну, не осей, осей всего 4.
+смена инструмента - поворот карусели.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 08:18
nkp
можешь за основу взят конфигурационные файлы из sim 9 осей
потом выбросишь лишние
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

# EMC controller parameters for a simulated machine.

# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.

# General section -------------------------------------------------------------
[EMC]

# Version of this INI file
VERSION =               $Revision$

# Name of machine, for use with display, etc.
MACHINE =               LinuxCNC-HAL-SIM-AXIS

# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
# DEBUG =               0x7FFFFFFF
DEBUG = 0

# Sections for display options ------------------------------------------------
[DISPLAY]

# Name of display program, e.g., xemc
DISPLAY =             axis

# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =            0.100

# Path to help file
HELP_FILE =             doc/help.txt

# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET =       RELATIVE

# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK =     ACTUAL

# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE =     1.2
MAX_SPINDLE_OVERRIDE =  1.0
# Prefix to be used
PROGRAM_PREFIX = ../../../nc_files/

# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5

EDITOR = gedit

INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in

GEOMETRY = XYZBCUVW

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script

png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

# Task controller section -----------------------------------------------------
[TASK]

# Name of task controller program, e.g., milltask
TASK =                  milltask

# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =            0.001

# Part program interpreter section --------------------------------------------
[RS274NGC]

# File containing interpreter variables
PARAMETER_FILE = sim-9axis.var

# Motion control section ------------------------------------------------------
[EMCMOT]

EMCMOT =              motmod

# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =          1.0

# Interval between tries to emcmot, in seconds
COMM_WAIT =             0.010

# Servo task period, in nano-seconds
SERVO_PERIOD =               1000000

# Hardware Abstraction Layer section --------------------------------------------------
[HAL]

# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.
#

# list of hal config files to run through halcmd
# files are executed in the order in which they appear
HALFILE = core_sim9.hal
HALFILE = sim_spindle_encoder.hal
HALFILE = axis_manualtoolchange.hal
HALFILE = simulated_home.hal
HALFILE = locking_indexer.hal
#HALFILE = gamepad.hal

# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =                    save neta

# Single file that is executed after the GUI has started.  Only supported by
# AXIS at this time (only AXIS creates a HAL component of its own)
#POSTGUI_HALFILE = test_postgui.hal

HALUI = halui

# Trajectory planner section --------------------------------------------------
[TRAJ]

AXES =                  9
COORDINATES =           X Y Z A B C U V W
HOME =                  0 0 0 0 0 0 0 0 0
LINEAR_UNITS =          inch
ANGULAR_UNITS =         degree
CYCLE_TIME =            0.010
DEFAULT_VELOCITY =      1.0
DEFAULT_ANGULAR_VELOCITY = 45.0
POSITION_FILE = position9.txt
MAX_LINEAR_VELOCITY =   1.2
MAX_ANGULAR_VELOCITY =  90.0

# Axes sections ---------------------------------------------------------------

[AXIS_0]

TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -10.0
MAX_LIMIT =                     10.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                5.0
HOME_LATCH_VEL =                 1.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 1
HOME_IS_SHARED = 1

[AXIS_1]

TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -10.0
MAX_LIMIT =                     10.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                5.0
HOME_LATCH_VEL =                 1.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 1

[AXIS_2]

TYPE =                          LINEAR
HOME =                          0.0
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -2.0
MAX_LIMIT =                     4.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    1.0
HOME_SEARCH_VEL =                5.0
HOME_LATCH_VEL =                 1.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 1

[AXIS_3]

TYPE =                          ANGULAR
HOME =                          0.0
MAX_VELOCITY =                  90.0
MAX_ACCELERATION =              1200.0
BACKLASH = 0.000
INPUT_SCALE =                   40
OUTPUT_SCALE = 1.000
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 1

[AXIS_4]

TYPE =                          ANGULAR
HOME =                          0.0
MAX_VELOCITY =                  90.0
MAX_ACCELERATION =              1200.0
BACKLASH = 0.000
INPUT_SCALE =                   40
OUTPUT_SCALE = 1.000
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET =                    45.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 1
LOCKING_INDEXER = 1

[AXIS_5]

TYPE =                          ANGULAR
HOME =                          0.0
MAX_VELOCITY =                  90.0
MAX_ACCELERATION =              1200.0
BACKLASH = 0.000
INPUT_SCALE =                   40
OUTPUT_SCALE = 1.000
FERROR = 5.0
MIN_FERROR = 1.0
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 1

[AXIS_6]

TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -10.0
MAX_LIMIT =                     10.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 0

[AXIS_7]

TYPE =                          LINEAR
HOME =                          0.000
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -10.0
MAX_LIMIT =                     10.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 0

[AXIS_8]

TYPE =                          LINEAR
HOME =                          0.0
MAX_VELOCITY =                  1.2
MAX_ACCELERATION =              20.0
BACKLASH = 0.000
INPUT_SCALE =                   4000
OUTPUT_SCALE = 1.000
MIN_LIMIT =                     -2.0
MAX_LIMIT =                     4.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET =                    0.0
HOME_SEARCH_VEL =                0.0
HOME_LATCH_VEL =                 0.0
HOME_USE_INDEX =                 NO
HOME_IGNORE_LIMITS =             NO
HOME_SEQUENCE = 0
HOME_IS_SHARED = 0


# section for main IO controller parameters -----------------------------------
[EMCIO]

# Name of IO controller program, e.g., io
EMCIO = 		io

# cycle time, in seconds
CYCLE_TIME =    0.100

# tool table file
TOOL_TABLE = sim.tbl
TOOL_CHANGE_POSITION = 0 0 2
(для просмотра содержимого нажмите на ссылку)
Выделение(018).jpg (3830 просмотров) <a class='original' href='./download/file.php?id=12993&sid=69c1a92b3a9d6cbb009dd82d72797fb8&mode=view' target=_blank>Загрузить оригинал (295.06 КБ)</a>
это в примерах:
sim/axis/axis_9axis.ini
(для просмотра содержимого нажмите на ссылку)
Выделение(019).jpg (3830 просмотров) <a class='original' href='./download/file.php?id=12994&sid=69c1a92b3a9d6cbb009dd82d72797fb8&mode=view' target=_blank>Загрузить оригинал (189.57 КБ)</a>
а смену инструмента может просто на ладдере сделать
или там какая то хитрая смена?

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 09:40
pkasy
ничего хитрого. просто кто-то должен крутить карусель.
а ладдер я еще не знаю.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 10:22
Nick
Осями смену лучше не делать.
Что там у тебя стоит на сменщике, какие двигатели, какие датчики?

Делай "рыбу" на pncconf, выкладывай сюда hal и ini - поможем доработать.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 10:44
pkasy
на турбоснс все решалось просто.
постпроцессором ))
команда смены инструмента реализована как перемещение по трем осям в нужную точку, сигнал на релюшку, подъем вверх после срабатывания датчика, двигателем (осью) G0 на нужный инструмент, опускание, релюшку отпустили, срабатывает датчик, включаем шпиндель и вперед.

как это сделать ладдером? буду разбираться

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 10:46
pkasy
это, конечно, не ось в общепринятом смысле, но кто то же должен крутить карусель?
значит, должен работать степген, значит, нужна ось.
как-то так.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 19 мар 2013, 11:07
nkp
pkasy писал(а):как это сделать ладдером?
есть пины:
iocontrol.0.tool-change (bit, out) равен TRUE когда запрошена замена инструмента.
iocontrol.0.tool-changed (bit, in) Должен быть установлен в TRUE когда замена инструмента завершена.

когда срабатывает М6 Тxx - то становится активным iocontrol.0.tool-change
его заводим в схему ладдера :
net tool-change iocontrol.0.tool-change => classicladder.0.in-00 # сигнал по М6 посылаем на контакт Start
строим свою схему ;)
когда делаем True iocontrol.0.tool-changed - то емс продолжает выполнение кода
net done classicladder.0.out-03 => iocontrol.0.tool-changed # сигнал - продолжаем выполнять программу
по ладдеру смотреть здесь и можно здесь
вот пример ладдера для смены на токарном (голова 6 инстр):
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

net tool-change iocontrol.0.tool-change => classicladder.0.in-00               # сигнал по М6 посылаем на контакт Start
net tool-number iocontrol.0.tool-prep-number  =>  classicladder.0.s32in-00      # передаем номер следующего инструмента в переменную %IW0

net dat1  parport.0.pin-13-in-not => classicladder.0.in-02         # получаем сигнал от датчика положения головки
net dat2  parport.0.pin-12-in-not => classicladder.0.in-03           # получаем сигнал от датчика положения головки
net dat3  parport.0.pin-15-in-not => classicladder.0.in-04             # получаем сигнал от датчика положения головки
net dat4  parport.0.pin-10-in-not => classicladder.0.in-05             # получаем сигнал от датчика положения головки
net dat5  parport.0.pin-09-in-not => classicladder.0.in-06           # получаем сигнал от датчика положения головки
net dat6  parport.0.pin-08-in-not => classicladder.0.in-07            # получаем сигнал от датчика положения головки

net done classicladder.0.out-03  =>  iocontrol.0.tool-changed        # сигнал - продолжаем выполнять программу
net www classicladder.0.out-06  => parport.0.pin-14-out               # сигнал на эл. дв -вращение по часовой
net LL  classicladder.0.out-02  => parport.0.pin-17-out               # сигнал на эл. дв -вращение против часовой

net Fix parport.0.pin-11-in-not => classicladder.0.in-08    #Концевик зажима головы
custom.clp
(6.47 КБ) 1158 скачиваний
вот программка ладдера для отладки схем:
classicladder-0.8.010.zip
(472.51 КБ) 463 скачивания
в ней можно рисовать схемы и смотреть работу
потом сохраняешь файл , ложишь в папку с конфигом, а в хал прописываешь сам ладдер и файл примерно так:
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
loadusr classicladder custom.clp
addf classicladder.0.refresh servo-thread

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 20 мар 2013, 00:10
pkasy
спасибо, по тексту все понятно, кроме момента - как крутить карусель и перемещать фрезер?
nkp писал(а):net www classicladder.0.out-06  => parport.0.pin-14-out
с пином понято, но как это в команды обернуть?

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

ну, в принципе, никто не мешает сделать смену инструмента как раньше.

вопрос вот такой.
как указать pncconfig, что у меня 6 разных двигателей/осей с разными именами?
или где взять исходники, что бы переписать его?

я понимаю, что ручками можно исправить все, но при наличии компьютера это выглядит дико.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 20 мар 2013, 00:19
nkp
pkasy писал(а):с пином понято, но как это в команды обернуть
что ты имеешь в виду?
pkasy писал(а): ручками можно исправить все, но при наличии компьютера это выглядит дико.
по pncconfig не подскажу - не пользовал - да и зачем - быстее так написать
из примеров берешь 4-х осевой и дописываешь 2 оси
я так понял пока для шаговиков?

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 20 мар 2013, 00:55
pkasy
для шаговиков любой напишет :)
что там вообще писать? тайминги+степ+дир и вперед, ломать фрезы.
nkp писал(а):что ты имеешь в виду?
я имею в виду, что на твоей лестнице идет управление обычным двигателем и сравнение датчиков инструмента с желаемым. как накрутил до нужно, то все смена закончена. на токарке это понятно.
там инструмент можно менять не выключая шпиндель и все это очень просто.
а вот как его менять на фрезере?
то есть в том месте, где у тебя включается двигатель смены, должна начинаться процедура смены инструмента фрезера, а это не просто замкнуть реле и ждать совпадения.
кстати, у меня на токарке инструменты можно крутить только в одну сторону.

а процедура смены инструмента на фрезере состоит из бОльшего числа шагов. конечно, можно выкинуть шаговик и поставить моторчик и навешать на карусель датчиков и все будет в паутинке как новогодняя елка. 4х датчиков для карусели в десять фрез хватит.
но все равно останется вопрос, как из ладдера подать комманду на перемещение по G0 по абсолютным/машинным координатам X Y Z? а потом, соответственно, вернуться в то же место для обработки.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 20 мар 2013, 10:38
nkp
pkasy писал(а):как из ладдера подать комманду на перемещение
из ладдера (как и любым пином вообще) можно подать MDI команду
а можно и без ладдера - написать свою процедуру под М6 - фильтром через ини , или другим способом
pkasy писал(а): любой напишет...
что там вообще писать?
pkasy писал(а):и все это очень просто...
а мне вот с первого раза редко удается что либо запустить :)
долго потом отлавливаю косяки :)

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 20 мар 2013, 11:52
pkasy
ну, косяки у всех бывают.
такова их природа.

за ссылку спасибо. буду изучать.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 10:34
pkasy
вот что нашел:
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... ool_turret
для тех, кто тоже хочет карусель крутить.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 10:54
Nick
На карусели у тебя шаговик стоит?

Опиши подробнее процедуру смены, и сфоткай свой агрегат.

Вообще, шпиндель выключается через ini:
TOOL_CHANGE_WITH_SPINDLE_ON = 1 - The spindle will be left on during the tool change when the value is 1. Useful for lathes or machines where the material is in the spindle, not the tool.
Ставим 0 и шпиндель будет выключаться.

Переезд перед сменой в определенное время:
TOOL_CHANGE_POSITION = 0 0 2 - Specifies the XYZ location to move to when performing a tool change if three digits are used. Specifies the XYZABC location when 6 digits are used. Specifies the XYZABCUVW location when 9 digits are used. Tool Changes can be combined. For example if you combine the quill up with change position you can move the Z first then the X and Y
Также можно сначала подняться в Z0 а потом ехать к смене.
TOOL_CHANGE_QUILL_UP = 1 - The Z axis will be moved to machine zero prior to the tool change when the value is 1. This is the same as issuing a G0 G53 Z0
После этого остается работа непосредственно сменщика.

Если у тебя на приводе карусели стоит шаговик - надо добавить еще 1 stepgen. В общем пиши подробнее - поможем :).
pkasy писал(а):я понимаю, что ручками можно исправить все, но при наличии компьютера это выглядит дико.
Как раз наоборот. Никакой GUI не будет обладать той функциональностью, которой обладают текстовые конфиги! Никогда! В этом сила и основа философии Linux. Поэтому большинство конфигов - это простые текстовые файлы, а не непонятная аброкадабра.
Знаешь как смешно каждый раз смотреть на обсуждения настроек мача, которые можно показать только большим количеством скриншотов, а с LinuxCNC хватает просто двух файлов и все становится понятно.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 11:27
pkasy
да, пожалуйста, помоги.
сначала разобраться с ладдером. особенно в той ссылке.
мне он совсем не понятен. то есть совсем. на него нужно смотреть под каким то другим углом.
где есть прочитать на него что-нибудь понятное?
как я понял, есть два ладдера, один для реальной работы в лснс, а второй для отладки. при этом файлы не обладают переносимостью и нужно набирать / перерисовывать заново.
что то я пропустил...

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 11:34
nkp
pkasy писал(а):что то я пропустил...
тот ладдер что в архиве подходит и для тестирования и совместим с встроенным в емс
там же есть ссылки немного почитать

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 11:38
pkasy
Nick писал(а):if you combine the quill up with change position you can move the Z first then the X and Y
то есть? можно написать
TOOL_CHANGE_POSITION = Z 0
TOOL_CHANGE_POSITION = Y 0
блин, синтаксис то команды какой? если
Nick писал(а):Specifies the XYZ location to move to when performing a tool change if three digits are used.
то это нафиг не нужно. так как для смены инструмента используется только Z Y, а когда указываешь три координаты, то идет перемещение по всем трем.
в общем, мне нужно сначала поднять, до машинного нуля, потом сдвинуть по Z до машинного нуля.
потом релюшки-концевики, потом повернуть шаговиком на нужный инстремент, потом релюшки-концевики, вернуться по Y, продолжить выполнение файла.

Re: прошу помощи настроить pncconf для 6 осей

Добавлено: 22 мар 2013, 11:44
pkasy
nkp писал(а):там же есть ссылки немного почитать
спасибо, я его уже установил и уже не понял.
буду дальше читать.