alex_sar писал(а): ↑
Где непонятно, открываешь man на компонент и читаешь как работает и какие пины у него. Например man motion, man and2
И ясность появится. Там правда не сложно, очень красиво придумано!
Не правда! (в моем случае - тугодум и мало знаний)
Не раз смотрел и ничегошеньки непонятно.
Вот припер мануала генератора ШИМ
Код: Выделить всё
arisc.pwm HAL pins
arisc.pwm.N.enable (bit, in) channel ON/OFF (1/0). Default is 0.
· · ·
arisc.pwm.N.pwm-port (u32, in) GPIO port number (0..7) for PWM signal.
arisc.pwm.N.pwm-pin (u32, in) GPIO pin number (0..23) for the PWM signal.
arisc.pwm.N.pwm-invert (bit, in) invert the PWM signal? (0/1). Default is 0.
· · ·
arisc.pwm.N.dir-port (u32, in) GPIO port number (0..7) for PWM signal.
arisc.pwm.N.dir-pin (u32, in) GPIO pin number (0..23) for the DIR signal.
arisc.pwm.N.dir-invert (bit, in) invert the DIR signal? (0/1). Default is 0.
arisc.pwm.N.dir-hold (u32, io) minimal pause (in nanoseconds) between last PWM pulse and a DIR signal change. Default is 50000 ns.
arisc.pwm.N.dir-setup (u32, io) minimal pause (in nanoseconds) between DIR signal change and next PWM pulse. Default is 50000 ns.
· · ·
arisc.pwm.N.dc-cmd (float, in) desired duty cycle (-1..1). 1 = 100%. Default is 0.
arisc.pwm.N.dc-min (float, io) minimum duty cycle. If dc-fb < dc-min, real duty cycle will be set to dc-min. Default is -1.
arisc.pwm.N.dc-max (float, io) maximum duty cycle. If dc-fb > dc-max, real duty cycle will be set to dc-max. Default is 1.
arisc.pwm.N.dc-max-t (u32, io) maximum time (in nanoseconds) of a PWM pulse duration. If value is 0, value is ignored. Default is 0.
arisc.pwm.N.dc-offset (float, io) simple offset for the desired duty cycle value. Default is 0.
arisc.pwm.N.dc-scale (float, io) simple scale multiplier for the desired duty cycle value. Default is 1.
arisc.pwm.N.dc-fb (float, out) real duty cycle feedback = dc-cmd / dc-scale + dc-offset. Then value will be limited by the dc-min, dc-max and dc-max-t values.
· · ·
arisc.pwm.N.freq-cmd (float, io) desired PWM frequency (in Hz). Default is 0.
arisc.pwm.N.freq-min (float, io) minimum PWM frequency (in Hz). If freq-fb < freq-min, real frequency will be set to 0. Default is 50 Hz.
arisc.pwm.N.freq-max (float, io) maximum PWM frequency (in Hz). If freq-fb > freq-max, real frequency will be set to freq-max. Default is 500000 Hz.
arisc.pwm.N.freq-fb (float, out) real PWM frequency feedback.
· · ·
arisc.pwm.N.vel-cmd (float, in) desired velocity (in movement units/second). Default is 0.
arisc.pwm.N.vel-scale (float, in) simple scale multiplier for the desired velocity value. Default is 1.
arisc.pwm.N.vel-fb (float, out) real velocity feedback (in movement units/second).
· · ·
arisc.pwm.N.pos-cmd (float, in) desired position (in movement units). Default is 0.
arisc.pwm.N.pos-scale (float, in) number of PWM pulses per movement unit. Default is 1.
arisc.pwm.N.pos-fb (float, out) real position feedback in movement units.
· · ·
arisc.pwm.N.counts (s32, out) real position feedback in PWM pulses.
Как узнать что куда подключить, что бы шпиндель работал по степ/дир?
Пример для осей
Код: Выделить всё
loadrt motion base_period_nsec=50000 servo_period_nsec=1000000 num_joints=1
loadrt arisc pwm=p
setp arisc.pwm.0.pos-scale [AXIS_0]SCALE
setp arisc.pwm.0.pwm-port 0 # 0=PA
setp arisc.pwm.0.pwm-pin 12 # PA12
setp arisc.pwm.0.pwm-invert 0
setp arisc.pwm.0.dir-port 0 # 0=PA
setp arisc.pwm.0.dir-pin 11 # PA11
setp arisc.pwm.0.dir-invert 0
net x-enable arisc.pwm.0.enable joint.0.amp-enable-out
net x-pos-cmd arisc.pwm.0.pos-cmd joint.0.motor-pos-cmd
Пока что
так сделал, но не проверял, что дает на выходе..
Но там свои приколы, не говоря о том, что находил конфигурацию для токарного с 4 шт ШИМ (видимо xyz и шпиндель)
Потом ещё не совсем понимаю разницу шим=p,v... (позиция, скорость и ещё что-то там есть)
В серве тоже есть управление: позиция, скорость и момент.
Какая разница? На что влияет?
alex_sar писал(а):
Там в hal файле всего-то четыре команды используется - загружаются компоненты, добавляются их обработчики
Вот с этим я разобрался
alex_sar писал(а):
и собственно соединения.
А вот тут уже проблемы...
К примеру вот для карт МЕСА пояснение (но там свои обработчики, или как их там и "подключение" к пинам упрощенное)
https://youtu.be/BKVSvPLVmcs
А как ШИМ заставить подобным образом работать для LPT, или для того же arisc.pwm
Пока что для меня тёмный лес, что подавать на входы выходы пинов.
alex_sar писал(а):
"net" как раз и есть соединение, один выход может идти на много входов, но не наоборот).
Про соединения уже читал и как отсоеденять, если что не нужно.
А вот это
alex_sar писал(а):
надо взять готовый конфиг, который знаешь как работает, и зарисовать схему на бумаге.
Для меня уже тёмный лес....
Где гарантия, что я правильно зарисую схему и ещё больше не запутаю себя?
Я даже с простым Scalе не разобрался ещё... (не горит, но методом проб и ошибок подбираю...)
Как в детстве не понимал, как работает транзистор по одному проводу - ну на схеме то проводок один. А оказывается второй "заземлён"...
Тут наверное тоже не всё так сложно, но есть нюансы...