Re: Vfdmod - управляем частотником по MODBUS RTU
Добавлено: 05 окт 2020, 22:20
есть много адаптеров 232 <-> 485, которые работают без внешнего питания. наверное берут с DTR, RTS...
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Не надо использовать экран в качестве дренажного провода - это легко добавит более чудесатых глюков, у дренажного провода есть определённая специфика подключения. Да и используется он только для выравнивания потенциалов, если разница потенциалов между приёмником и передатчиком не запредельная, то дренаж лучше не использовать - он немного ухудшает помехозащищённость витой пары.
Да согласен не очень стерильно в гаражеalex_sar писал(а): ↑05 окт 2020, 21:58 Ну без питания он уж точно работать не станет. Если только молитвами какими-нибудь )
Отличный адаптер, ему бы жить и жить. Он ещё поустойчивей свистка бы работал если бы работал...
Ещё раз, я вроде уже писал.. Экранированную надо взять витую пару.
Провода из одной пары цепляешь на A / B. Экран цепляешь на GND адаптера. Соединять с землей частотника напрямую- не надо. Питание надо подключить... )
Адаптер проверить просто - подцепить к винде, там же работало всаё.
И это.. как всё валяется, там можно не только свисток пожечь, а вообще всё к фигам! Советую взять кусок фанеры и саморезами на него всё
прикрутить. Ну и вот пыль на материнке (мне не показалось?) - от неё одной можно глюков немало словить..
Код: Выделить всё
# Include your custom HAL commands here
# This file will not be overwritten when you run PNCconf again
# Если хотите видеть отладочные сообщения добавьте флаг --debug
# loadusr -W vfdmod --debug my-config-file.ini
loadusr -W vfdmod --debug fc051.ini
net spindle-vel-cmd-rpm => vfdmod.spindle.rpm-in
net spindle-at-speed <= vfdmod.spindle.at-speed
net spindle-cw => vfdmod.control.run-forward
net spindle-ccw => vfdmod.control.run-reverseКод: Выделить всё
[Common]
#ComponentName=fc051
ComponentName=vfdmod
MaxSpeedRPM=1390
MinSpeedRPM=30
;AtSpeedThreshold=0.05
[RS485]
SlaveAddress=2
#SerialDevice=/dev/ttyUSBPort0
SerialDevice=/dev/ttyUSB0
BaudRate=9600
# Parity: 'N' for none (default), 'E' for even, 'O' for odd.
Parity=N
StopBits=1
LoopDelay=200
# Delay in characters at front of every MODBUS request.
# MODBUS specification recommends at least 3.5 characters,
# so default value must be 4.
# Increase this value if communication errors happen.
# Range: 0 ... 100.
#060
ProtocolDelay=5
# A minimum count of successfull requests to set HAL 'is-connected' output
# to TRUE. Default value is 10. Range: 1 ... 100.
IsConnectedDelay=10
# Comma separated critical errors that call reconnection event.
# For example: error code 5 occures when SerialDevice has been
# physically disconnected.
;ConnectionErrorList=5
# Delay in milliseconds between reconnection attempts, this parameter
# is active when ConnectionErrorList is not empty. Default value is 1000 ms.
# Range: 0 ... 10000.
;ConnectionDelay=1000
[Control]
# Function code:
# 0x06 - write single register (default).
# 0x10 - write multiple registers.
# 0x05 - write single coil.
# 0x0F - write multiple coils.
;FunctionCode=0x06
# **********************************************************
# Values below are active when FunctionCode is 0x06 or 0x10.
# **********************************************************
# An address of the control register.
# 50000-1
Address=0xC34F
# A value to run spindle forward.
RunForwardValue=0x047C
# A value to run spindle reverse.
RunReverseValue=0x847C
# A value to reset a fault state.
# If this parameter is commented then fault reset feature will be disabled.
FaultResetValue=0x04A8
# A value to stop spindle.
StopValue=0x0428
# **********************************************************
# Values below are active when FunctionCode is 0x05 or 0x0F.
# **********************************************************
# An address of the coil that turns spindle on.
;RunCoil=0x????
# An address of the coil that sets spindle direction.
;DirectionCoil=0x????
# An address of the coil that resets a fault state.
# If this parameter is commented then fault reset feature will be disabled.
;FaultResetCoil=0x????
[SpindleRpmIn]
# Function code:
# 0x06 - write single register (default).
# 0x10 - write multiple registers.
;FunctionCode=0x06
# An address of the command speed (or frequency) register.
# 50010-1
Address=0xC359
# Multiplier and Divider are integer values to correct command speed value
# before it will be written to command speed register.
# Corrected command speed = (command speed) x Multiplier / Divider.
# Use both (Multiplier & Divider) to reach float coefficient.
Multiplier=16384
Divider=1390
[SpindleRpmOut]
# An address of the output speed (or frequency) register.
Address=0xC421
# Multiplier and Divider are integer values to correct output speed value
# after it has been read from output speed register.
# Corrected output speed = (output speed) x Multiplier / Divider.
# Use both (Multiplier & Divider) to reach float coefficient.
Multiplier=1390
Divider=16384
[User parameter 1]
Address=0x3F0B
# HAL pin type: 'bit', 'float', 's32' or 'u32'.
PinType=float
Multiplier=1
Divider=100
PinName=output-current
#[User parameter 2]
#Address=0x4203
#PinType=u32
#Multiplier=1
#Divider=1
#PinName=fault-code
0,1 сек с тормозным резистором в ручном режиме переключателем с фиксированным положением, но по модбас после мгновенной остановки ещё и свистит ШИМ 5-10 сек, пока не отрубит его что-то.
Можно с примером?
Давай на твоем примере (с файла)alex_sar писал(а): ↑10 окт 2020, 20:20 S это обороты (M3 S1000) например
у тебя получается (герцы умножаем на 100, частотник в таких единицах принимает)
5000 / 1390 = 3.6
multiplier = 5000
divider = 1390
(исправил - так понятнее должно быть, цифры может наоборот - проще попробовать чем глубоко думать ) )
два числа просто чтобы float не использовать.
во втором параметре (где чтение параметра) - надо поменять местами цифры.
У тебя по ходу ПЧ на 400Гц - 24 000 об/мин.# Corrected output speed = (output speed) x Multiplier / Divider.
# Use both (Multiplier & Divider) to reach float coefficient.
Multiplier=24000
Divider=16384
Точно, перепутал с другим частотником! Тут по другому.xenon-alien писал(а): ↑ Для меня что-то не понятно... Пошел гуглить...
Т.е. и для моих 50Гц тоже 16384 оставляю.
Страница 83 в этом мануалеxenon-alien писал(а): ↑ В каком из мануалов можно почитать rs485 значение для FC-51 Danfoss-a? (хотя сейчас поищу...)
Благодарю, Уже нашел. (потому и ссылка появилась - у меня их 10-15 шт этих мануавлов)
нет нет, вообще никак не связано. не знаю точно почему два числа сделано, догадываюсь - чтобы вычисление быстрее шло (без плавающих запятых). по идее там просто коэффициент получается для перевода из об/мин линуксцнс в значение понятное частотнику. и больше ничего.xenon-alien писал(а): ↑ Или как раз для этого тот мультиплексор и делитель?
нет, простая редукция. На моторе шкив малый, а на ТВ-16 три разного размера, но использоваться будет только самый большой. И редукция получится примерно 2:1, 3:1 (мотор : шпиндель) по этому и хочу на 3000 оборотов присмотреть двигатель. Сейчас УЦИ показывает макс 800 об/мин при том что двигатель на 1390.
Понял, у меня на эл.гитаре и так стоит (АВ), но заказал дифференциальный, что бы была и индексная метка.
Понял, но для резьб энкодер нужен. (даже на фрезерном, если делать rigid taping)
При указанных вводных, чтобы в регистр задания частоты заехало значение 5000, нужно максимальные обороты 840 об/мин умножить на поправочный коэффициент 5,952. Поскольку множитель Multiplier и делитель Divider - это целые положительные числа, коэффициент приводим к виду 5952/1000. И теперь получается так:xenon-alien писал(а): На максималках шпиндель у меня выдает 840 об. по УЦИ (двигатель 1390 Об. - 50 Гц)
Код: Выделить всё
[SpindleRpmIn]
Multiplier=5952
Divider=1000Параметры Multiplier и Divider - это целые положительные числа, множитель и делитель соответственно. По указанному выше адресу будет записано значение, сначала умноженное на множитель, а затем поделенное на делитель. В зависимости от того какое значение принимает преобразователь частоты в качестве задания скорости - скорость в оборотах в минуту, частоту в герцах, процент от максимальной скорости - следует рассчитать множитель и делитель таким образом, чтобы в регистр задания скорости писалось верное значение. Чтобы получить поправочный коэффициент с плавающей точкой используйте оба параметра. Например, для умножения заданной частоты на 0.33 следует указать Multiplier=33 и Divider=100.
во-первых чё это я в кавычках? )xenon-alien писал(а): ↑ У меня после стопа ещё пару секунд свистит ШИМ, но лично я торможение током не прописывал, подозрение на код прописанный "автором" в файле конфигураций.
Код: Выделить всё
# A value to run spindle forward.
RunForwardValue=0x047C
# A value to run spindle reverse.
RunReverseValue=0x847C
# A value to reset a fault state.
# If this parameter is commented then fault reset feature will be disabled.
FaultResetValue=0x04A8
# A value to stop spindle.
StopValue=0x0428
Да это строго говоря не про линуксцнц, это чисто этого модуля фишка.Благодарю, но я в ЛЦНЦ не давно и все эти формулы и коеф. тьма тьмущая даже на русском.
Волшебные числа то я нашел, только не врублюсь, как их расшифровать... В двоичную ещё не переводил... Ща погляжу...
Мельком читал мануал - там тоже полно подобного...