не получается настроить QTDragon

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
tokarka82
Новичок
Сообщения: 16
Зарегистрирован: 08 дек 2021, 12:34
Репутация: 0
Настоящее имя: Александр
Контактная информация:

не получается настроить QTDragon

Сообщение tokarka82 »

Всем доброго времени суток.

Затеял на одном из фрезеров переход с gmoccapy на QTdragon. Воодные такие:
Станок на mesa 7i92, ПЧ 9100 рулится по модбасу. Образ дебиана с сайта linuxcnc.
Изначально, работал на lcnc 2.8.4, на нем же и решил переходить, однако столкнулся с определенным набором проблем.
На искомой версии не удалось подключить вывод параметров частотника на GUI, воевал три дня и три ночи.
В custom_postgui было так:
#---шпиндель---

net spindle.amp qtdragon.spindle_amps vfdmod.parameters.output-current
net spindle.volts qtdragon.spindle_volts vfdmod.parameters.output-voltage
Переписывал со стрелочками и без- результат один. Все параметры vfdmod в hal pins видит, но на qtdragon упорно не заводит.
Проблема решилась переходом на lcnc 2.9.0, изменил в custom_postgui название пинов qtdragon в соответствии с наименованием версии и все заработало:
#---шпиндель---

net spindle.amps qtdragon.spindle-amps <= vfdmod.parameters.output-current
net spindle.volts qtdragon.spindle-volts <= vfdmod.parameters.output-voltage
Казалось бы, проблема решилась и можно идти домой пить пиво, но не тут то было.
В версиях lcnc 2.8.4/2.9.0/2.10 существуют одинаковые проблемы с qtdragon. Мне так и не удалось запустить на них выполнение УП.
Дело в том, что QT внутри себя пересчитывает обороты, получаемые от ПЧ х60 (рассчитан не на rpm, а на rps?). Для корректного отображения оборотов и срабатывания сигнала at-speed приходится в my_config_file.ini править множитель и делитель оборотов с учетом внутреннего умножения х60 внутри QT
[SpindleRpmIn]
# Function code:
# 0x06 - write single register (default).
# 0x10 - write multiple registers.
;FunctionCode=0x06
Address=0x2000
Multiplier=10
Divider=24

[SpindleRpmOut]
# An address of the output speed (or frequency) register.
;FunctionCode=0x06
Address=0x3001
Multiplier=1
Divider=6
То есть, при входном задании в 6000 об./мин в частотник, он дает ответ о том, что вышел 100 об., QT внутри себя применяет множитель и в итоге мы получаем срабатывание at-speed и корректное отображение оборотов. Но, УП при этом дальше не движется.

В hal станка мы имеем:
# ---setup spindle control signals---

net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs <= spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rpm => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
в сustom:
loadusr -W vfdmod --debug my-config-file.ini

net spindle-cw => vfdmod.control.run-forward
net spindle-ccw => vfdmod.control.run-reverse

net spindle-vel-fb-rpm <= vfdmod.spindle.rpm-out
net spindle-vel-cmd-rpm => vfdmod.spindle.rpm-in

net spindle-at-speed <= vfdmod.spindle.at-speed
Подобная ситуация с зависанием выполнения УП была у меня на gmoccapy, когда УП я написал не под стандартные для меня подача на оборот, а подача на зуб (G95 вместо G94).

Финальной проблемой является УП под гравер. Версии 2.9/2.10 выдают ошибку при выборе УП с гравировкой. На gmoccapy ошибка появляется, нет визуализации УП и не видно gcode, однако программа выполняется. На QT ошибка приводит к вылетанию lcnc в целом. Ошибка везде одинаковая:
Traceback (most recent call last)
File "/usr/lib/python3/dist-packages/qtvcp/widgets/gcode_editor.py", line
612, in load_program
self.load_text(filename)
File "/usr/lib/python3/dist-packages/qtvcp/widgets/gcode_editor.py", line
322, in load_text
self.setText(f.read())
File "/usr/lib/pyton3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data,self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 29:
invalid start byte
Помогите, пожалуйста, советом как этот букет исправить.
tokarka82
Новичок
Сообщения: 16
Зарегистрирован: 08 дек 2021, 12:34
Репутация: 0
Настоящее имя: Александр
Контактная информация:

Re: не получается настроить QTDragon

Сообщение tokarka82 »

Сам спросил- сам ответил. Пины шпинделя в Qtdragon действительно ориентированны на работу в rps, не rpm. Мне неудобно такое исчисление и настройки CAM менять не хотелось.
В файле конфигурации связи по modbus оставляем все как и было, программа не исполняется так как от vfdmod не поступает сигнал at-speed. Пин обратной связи по оборотам пропускаем через scale, а именно в .hal файле станка меняем конфигурацию.
Было:
# ---setup spindle control signals---

net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs <= spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rpm => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable
Стало:
# ---setup spindle control signals---
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 0.016666
net spindle-speed-scale vfdmod.spindle.rpm-out=> scale.0.in
net spindle-speed-DAC scale.0.out => spindle.0.speed-in

net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs <= spindle.0.revs

net spindle-index-enable <=> spindle.0.index-enable
Тем самым, "net spindle-vel-fb-rpm" проводится через множитель (делитель на 60)
Параметр surface speed инструмента таким образом получается заниженным в х60, однако at-speed, обороты и прочее работает вполне корректно.

УП Под гравер вылечилось тоже методом научного тыка. Из текста УП был устранен символ ° (graver 60°) и все отобразилось корректно
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: не получается настроить QTDragon

Сообщение alex_sar »

tokarka82 писал(а): 28 фев 2023, 21:49 Сам спросил- сам ответил. Пины шпинделя в Qtdragon действительно ориентированны на работу в rps, не rpm. Мне неудобно такое исчисление и настройки CAM менять не хотелось.
В файле конфигурации связи по modbus оставляем все как и было, программа не исполняется так как от vfdmod не поступает сигнал at-speed. Пин обратной связи по оборотам пропускаем через scale, а именно в .hal файле станка меняем конфигурацию.
Так в vfdmod есть в секции SpindleRpmOut параметры Multiplier и Divider, так что внешний scale и не нужен.
tokarka82
Новичок
Сообщения: 16
Зарегистрирован: 08 дек 2021, 12:34
Репутация: 0
Настоящее имя: Александр
Контактная информация:

Re: не получается настроить QTDragon

Сообщение tokarka82 »

alex_sar писал(а): 28 фев 2023, 23:52


Так в vfdmod есть в секции SpindleRpmOut параметры Multiplier и Divider, так что внешний scale и не нужен.
Я тоже так подумал первым делом, о чем описал в первом посте. Как итог- GUI рисует нам нормальные обороты, но vfdmod говорит что при заданных 6000об/мин крутится шпиндель 100 об/мин, сигнал с vfdmod at-speed не поступает и УП не стартует.
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: не получается настроить QTDragon

Сообщение alex_sar »

то есть у вас на частотнике rpmin и rpmout в разных единицах? странно...
ну хорошо что заработало.
tokarka82
Новичок
Сообщения: 16
Зарегистрирован: 08 дек 2021, 12:34
Репутация: 0
Настоящее имя: Александр
Контактная информация:

Re: не получается настроить QTDragon

Сообщение tokarka82 »

alex_sar писал(а): 01 мар 2023, 10:41 то есть у вас на частотнике rpmin и rpmout в разных единицах? странно...
ну хорошо что заработало.
1: Задание в УП стоит в RPM 6000, оно поступает в ПЧ как 6000. Если на выходе из частотника в vfdmod имеем 6000= работает at-speed, но обороты в GUI x60, УП при этом выполняется.
2: Задание в УП стоит в RPM 6000, оно поступает в ПЧ как 6000. На выходе из частотника имеем 100 после корректировки множителя vfdmod на 60 единиц = не работает at-speed, не стартует УП, но обороты в GUI корректные (vfdmod x 60)
3: Задание в УП в RPS...тут надо сильно много переписывать для перевода в RPS. Не наш метод.
4: Задание в УП стоит в RPM 6000, оно поступает в ПЧ как 6000. На выходе из частотника имеем 6000= работает at-speed, но для корректных оборотов в GUI сигнал vfdmod проводится через scale.0.gain 0.016666 (100/60)
byba
Кандидат
Сообщения: 51
Зарегистрирован: 14 сен 2014, 10:11
Репутация: 6
Контактная информация:

Re: не получается настроить QTDragon

Сообщение byba »

По мотивам вот этой ветки https://forum.linuxcnc.org/qtvcp/45552- ... hd?start=0
Может кому пригодиться.
Работает rpm
До конца еще скорее всего не еще разобрал, но работает.
Пока не проверено точно - показывает ошибки или нет.
Вводные: Linuxcnc 2.9.1, частотник Sunfar E550, vfdmod-0.3.2-stretch-amd64.deb, QTdragon_hd.

В ini станка, после [DISPLAY]
(для просмотра содержимого нажмите на ссылку)
#Spindle
MIN_SPINDLE_OVERRIDE = 1
MAX_SPINDLE_OVERRIDE = 1.5
DEFAULT_SPINDLE_0_SPEED = 500
SPINDLE_INCREMENT = 100
MIN_SPINDLE_0_SPEED = 500
MAX_SPINDLE_0_SPEED = 24000
MAX_SPINDLE_POWER = 2200

Создаем соответственно два файла (у меня my_mill_cnc.ini и my_vfd_spindle.hal)
my_mill_cnc.ini (напряжение и вольтаж указываем, иначе не будет показывать мощность)
(для просмотра содержимого нажмите на ссылку)
[CURENTOUTPUT]
Address=0xD001
Multiplier=1
Divider=47
PinType=float
PinName=OutputCurent

[VOLTAGEOUTPUT]
Address=0xD002
Multiplier=10
Divider=1
PinType=float
PinName=OutputVoltage

my_vfd_spindle.hal
(для просмотра содержимого нажмите на ссылку)
# yl_vfd speed feedback is given in RPM, while some pins need it in
# RPS, so we use a scale
loadrt scale names=scale_to_rpm

net spindle-speed spindle.0.speed-out => vfdmod.spindle.rpm-in
net spindle-cw spindle.0.forward => vfdmod.control.run-forward
net spindle-ccw spindle.0.reverse => vfdmod.control.run-reverse
net spindle-speed-fb <= vfdmod.spindle.rpm-out

net spindle-current <= vfdmod.parameters.OutputCurent
net spindle-voltage <= vfdmod.parameters.OutputVoltage
net spindle-comm-ok <= vfdmod.rs485.is-connected

net spindle-at-speed vfdmod.spindle.at-speed => spindle.0.at-speed

net spindle-current => qtdragon.spindle-amps
net spindle-voltage => qtdragon.spindle-volts


net spindle-error-count vfdmod.rs485.error-count qtdragon.spindle-modbus-errors
net spindle-error-last vfdmod.rs485.last-error qtdragon.spindle-fault

addf scale_to_rpm servo-thread
setp scale_to_rpm.gain 0.01666666
net spindle-speed-fb => scale_to_rpm.in
net spindle-speed-in spindle.0.speed-in <= scale_to_rpm.out

В custom.hal оставляем только loadusr -W vfdmod my_vfd_spindle.ini

В postgui_call_list.hal - source my_vfd_spindle.hal

Вроде все.
Вложения
QTdragon_vfdmod_rpm.png (752 просмотра) <a class='original' href='./download/file.php?id=209978&sid=989f87f6fd923d60061f2147c68781d7&mode=view' target=_blank>Загрузить оригинал (275.96 КБ)</a>
rstm
Кандидат
Сообщения: 49
Зарегистрирован: 25 фев 2018, 16:20
Репутация: 4
Настоящее имя: Рустам
Откуда: Уфа
Контактная информация:

Re: не получается настроить QTDragon

Сообщение rstm »

Скажите, а возможно ли вообще настроить qtDragon на оси xyzB?
Ответить

Вернуться в «LinuxCNC»