Управление частотником через modbus.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Показывай схему конвертера и его соединений.
И схему включения частотника заодно, лучше, если из неё будут понятны длины проводов и точки их подключения.
Ещё можно показать что пишет dmesg за время работы частотника.
И схему включения частотника заодно, лучше, если из неё будут понятны длины проводов и точки их подключения.
Ещё можно показать что пишет dmesg за время работы частотника.
Последний раз редактировалось Serg 05 дек 2013, 13:14, всего редактировалось 1 раз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
0. Убедиться, что в частотнике есть гальваническая развязка по RS-485!adif писал(а):И как же убрать эти помехи?
1. Соединить корпус компьютера, корпус шпинделя и железо станка достаточно толстым проводом.
2. По возможности укоротить кабель USB, использовать хороший экранированный кабель. Лучше вообще обойтись без кабеля.
3. Надеть ферритовые кольца на кабель от частотника к шпинделю.
Чудес не бывает. Бывают фокусы.
-
- Кандидат
- Сообщения: 69
- Зарегистрирован: 02 дек 2010, 09:55
- Репутация: 18
- Контактная информация:
Re: Управление частотником через modbus.
схема из "безумных экспериментов"UAVpilot писал(а):Показывай схему конвертера и его соединений.
UAVpilot писал(а):Ещё можно показать что пишет dmesg за время работы частотника.
Код: Выделить всё
[ 1697.287253] usb 3-2: new full speed USB device using ohci_hcd and address 12
[ 1697.494508] usb 3-2: configuration #1 chosen from 1 choice
[ 1697.498415] ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected
[ 1697.498495] usb 3-2: Detected FT232BM
[ 1697.498503] usb 3-2: Number of endpoints 2
[ 1697.498508] usb 3-2: Endpoint 1 MaxPacketSize 64
[ 1697.498512] usb 3-2: Endpoint 2 MaxPacketSize 64
[ 1697.498515] usb 3-2: Setting MaxPacketSize 64
[ 1697.500582] usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB0
[ 1791.930577] I-pipe: Domain RTAI registered.
[ 1791.930596] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 1791.930601] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 1791.930614] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 1791.930619] PIPELINE layers:
[ 1791.930625] f904ce20 9ac15d93 RTAI 200
[ 1791.930630] c085cb20 0 Linux 100
[ 1791.987564] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 1791.987874] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 1791.987886] RTAI[sched]: hard timer type/freq = APIC/6235390(Hz); default timing: periodic; linear timed lists.
[ 1791.987893] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 1995368000 hz.
[ 1791.987898] RTAI[sched]: timer setup = 999 ns, resched latency = 2943 ns.
[ 1791.988075] RTAI[usi]: enabled.
[ 1792.217123] RTAI[math]: loaded.
[ 1792.378901] probe_parport 00:0d: activated
[ 1792.394107] config string '0x378 out '
[ 1835.584490] hub 3-0:1.0: port 2 disabled by hub (EMI?), re-enabling...
[ 1835.584505] usb 3-2: USB disconnect, address 12
[ 1835.586433] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[ 1835.586507] ftdi_sio 3-2:1.0: device disconnected
[ 1835.895696] usb 3-2: new full speed USB device using ohci_hcd and address 13
[ 1836.102701] usb 3-2: configuration #1 chosen from 1 choice
[ 1836.106556] ftdi_sio 3-2:1.0: FTDI USB Serial Device converter detected
[ 1836.106656] usb 3-2: Detected FT232BM
[ 1836.106664] usb 3-2: Number of endpoints 2
[ 1836.106669] usb 3-2: Endpoint 1 MaxPacketSize 64
[ 1836.106673] usb 3-2: Endpoint 2 MaxPacketSize 64
[ 1836.106676] usb 3-2: Setting MaxPacketSize 64
[ 1836.108840] usb 3-2: FTDI USB Serial Device converter now attached to ttyUSB1
Убрал usb кабель полностью, припаял разъем (с флешки выковырял) прямо на плату конвертора и втыкнул в порт, а от конвертора (usb-RS485) к частотнику экранированным проводом и ЗАРАБОТАЛО!Serg-tmn писал(а):По возможности укоротить кабель USB, использовать хороший экранированный кабель. Лучше вообще обойтись без кабеля.
Спасибо за подсказки! Теперь надо ввести задержку на отработку кода при разгоне шпинделя и можно начинать работать на станке.
Мой блог http://adif-studio.blogspot.com/
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Управление частотником через modbus.
Обратной связи от шпинделя нет?adif писал(а):Спасибо за подсказки! Теперь надо ввести задержку на отработку кода при разгоне шпинделя и можно начинать работать на станке.
Если есть, то через near и motion.spindle-at-speed, если нет - то через lowpass и near и motion.spindle-at-speed
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
вот это я не понял - причем тут lowpass (ФНЧ)Nick писал(а):Если есть, то через near и motion.spindle-at-speed, если нет - то через lowpass и near и motion.spindle-at-speed
Обратная связь по частоте в любом случае есть - это же модбас. Обычно ее хватает. А по реальным оборотам - отдельный вопрос.
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Управление частотником через modbus.
ну как же, если нет обратной связи, то делаем суррогатную обратную связь - пропускаем задание на скорость шпинделя через lowpass и таким образом делается задержка на разгон шпинделя, причем, если обороты не сильно поменялись - то задержка меньше...Serg-tmn писал(а):вот это я не понял - причем тут lowpass (ФНЧ)
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
Во как!(с)Nick писал(а):пропускаем задание на скорость шпинделя через lowpass и таким образом делается задержка на разгон шпинделя,
Но в данном случае у нас есть информация о фактической частоте инвертора - spindle-vfd.motor-freq
Чудес не бывает. Бывают фокусы.
-
- Кандидат
- Сообщения: 69
- Зарегистрирован: 02 дек 2010, 09:55
- Репутация: 18
- Контактная информация:
Re: Управление частотником через modbus.
При простое включенного станка исчезает связь с частотником. Есть подозрение что засыпает порт USB. Вынимание из порта преобразователя USB-rs485 и вставляние в порт не дает эффекта. После закрытия программы и запуска программы linuxcnc вылетает ошибка что не найден преобразователь. Помогает только перезагрузка компьютера. Как сделать чтобы не засыпал порт USB? или как наново системе найти преобразователь без перезагрузки и закрытия программы linuxcnc?
Мой блог http://adif-studio.blogspot.com/
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Что говорит dmesg после того, как заснёт?
Перед началом эксперимента желательно выполнить команду "dmesg -c", что она скажет не интересно.
Перед началом эксперимента желательно выполнить команду "dmesg -c", что она скажет не интересно.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Кандидат
- Сообщения: 69
- Зарегистрирован: 02 дек 2010, 09:55
- Репутация: 18
- Контактная информация:
Re: Управление частотником через modbus.
еще оказалось что связь с USB-rs485 исчезает когда вставляю флешку. Смотрел dmesg: после перезагрузки находит устройство FT232 и присоединяет его к ttyUSB0 но после большого простоя или присоединения флешки устройство FT232 присоединяет к ttyUSB1. Linuxcnc ищет устройство по адресу ttyUSB0 и не находит его и выдает ошибку. После перезагрузки FT232 и присоединяет к ttyUSB0 и все хорошо работает. Надо чтобы Linuxcnc искал преобразователь как на ttyUSB0 так и на ttyUSB1. И как это сделать?
Мой блог http://adif-studio.blogspot.com/
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Либо USB- контроллеру разрешено засыпать (в БИОС?), либо он глючит.
Попробуй флешку вставлять в другие порты...
Если при присоединённом FT232 случится ресет на USB-шине, то система не успеет освободить ttyUSB0, поэтому вновь найденный FT232 окажется на следующем свободном ttyUSB1. Вернуть обратно на ttyUSB0 можно простым отключением FT232 от компа и включением обратно после паузы секунд в 5.
P.S. У меня есть вариант, когда порт находится по серийнику FT232, но нужно найти время, чтоб причесать его.
Попробуй флешку вставлять в другие порты...
Если при присоединённом FT232 случится ресет на USB-шине, то система не успеет освободить ttyUSB0, поэтому вновь найденный FT232 окажется на следующем свободном ttyUSB1. Вернуть обратно на ttyUSB0 можно простым отключением FT232 от компа и включением обратно после паузы секунд в 5.
Так нельзя делать - на другом порту может оказаться какое-нибудь устройство, неконтролируемое включение которого во время перебора портов может натворить бед. Да и порт будет искаться только при старте linuxcnc, а не после того как отвалится.adif писал(а):Надо чтобы Linuxcnc искал преобразователь как на ttyUSB0 так и на ttyUSB1
P.S. У меня есть вариант, когда порт находится по серийнику FT232, но нужно найти время, чтоб причесать его.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
В виндовом драйвере FT232 есть привязка к серийнику. Если втыкать по очереди несколько адаптеров, то им будут присваиваться номера COM3, COM4,... COM255. Как-то довелось собирать партию из нескольких сотен устройств с FT232, это создавало проблемы при настройке. Связь между серийником и номером COM запоминалась где-то в недрах реестра и так просто вычистить ее не получалось. Удаление драйвера средствами Windows (XP) не помогало. Все равно после переустановки нумерация шла с последнего присвоенного номера. Потом уже на сайте FT появилась утилитка для чистки - видимо не у нас одних была такая проблема.
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
У меня сложилось впечатление, что номера портов присваиваются исключительно по номерам USB-портов. У меня есть винда на служебном ноуте и два переходника USB-RS232 на чипах ft232 и pl2303 - если их втыкать в один и тот-же порт USB, то всегда будет появляться один и тот-же COM с одним номером вне зависимости от типа адаптера. В некотором роде это удобно - не надо терминалку перенастраивать.
На ноуте 3 USB порта и их смело можно пометить как COM4, COM6 и COM10. Так было и на winxp и сейчас на win7.
На ноуте 3 USB порта и их смело можно пометить как COM4, COM6 и COM10. Так было и на winxp и сейчас на win7.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
Про PL2302 - согласен. Про FT232 - если при первом подключении он определился как COM23 (реальный пример у меня), то он будет таким всегда, независимо от того, в какой порт потом втыкать будешь. Хотя, наверно, это (привязка к серийнику) от версии драйвера зависит. И, насколько помню, для FT есть конфигуратор, там тоже кое-что можно настроить.UAVpilot писал(а):ft232 и pl2303 - если их втыкать в один и тот-же порт USB, то всегда будет появляться один и тот-же COM с одним номером вне зависимости от типа адаптера.
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Точно ничего не настраивал - воткнул адаптер и венда сама где-то нашла драйвер.Сергей Саныч писал(а):для FT есть конфигуратор, там тоже кое-что можно настроить
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Управление частотником через modbus.
Посмотрел здесь http://www.ftdichip.com/Drivers/VCP.htm - там вообще много чего есть в плане документации. Когда я с ними ковырялся (2007 год) почти что ничего не было. И да, драйверы ставил вручную.
я это к тому, что если заставить линуксовый драйвер привязываться к серийнику, то "перескока" с ttyUSB0 на ttyUSB1 удалось бы избежать.
У меня тоже были случаи пропадания порта из-за помех, но как-то не догадывался глянуть полный список портов после сбоя. Может, адаптер тоже перескакивал на другой порт.
я это к тому, что если заставить линуксовый драйвер привязываться к серийнику, то "перескока" с ttyUSB0 на ttyUSB1 удалось бы избежать.
У меня тоже были случаи пропадания порта из-за помех, но как-то не догадывался глянуть полный список портов после сбоя. Может, адаптер тоже перескакивал на другой порт.
Чудес не бывает. Бывают фокусы.
-
- Кандидат
- Сообщения: 69
- Зарегистрирован: 02 дек 2010, 09:55
- Репутация: 18
- Контактная информация:
Re: Управление частотником через modbus.
Работает! Это уже лучше чем перезагрузка. А вообще то буду искать другой преобразователь чтобы проверить не глючит ли мой преобразователь, потому как есть на это подозрение.UAVpilot писал(а): Вернуть обратно на ttyUSB0 можно простым отключением FT232 от компа и включением обратно после паузы секунд в 5.
Мой блог http://adif-studio.blogspot.com/
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Так можно сделать, будет лучше, но всё равно останется вероятность непопадания - если система не успеет освободить ttyUSB0Сергей Саныч писал(а):я это к тому, что если заставить линуксовый драйвер привязываться к серийнику, то "перескока" с ttyUSB0 на ttyUSB1 удалось бы избежать.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Управление частотником через modbus.
Привязка USB-RS485 адаптера к конкретному порту:
У чипа FT232 есть серийный номер (при желании его можно изменить), поэтому привязку имеет смысл делать по нему.
Сначала надо узнать этот серийный номер. Сделать это проще всего подключив адаптер к си стеме и командой dmesg посмотреть на какой порт система его прицепила и прочие параметры:
Тут сразу видны и порт и серийный номер.
Можно ещё посмотреть все параметры, причём в том виде, в каком их надо будет указывать в правилах udev:
Теперь можно в /etc/udev/rules.d создать файл с именем типа 99-rs485.rules и в нем написать что-то типа такого:
Далее нужно заставить udev перечитать обновлённые правила. "Чайники" в линуксе могут просто перезагрузить комп, а продвинутые юзеры могут воспользоваться командой
После этого при подключении данного адаптера к USB-порту система будет автоматически создавать симлинк /dev/rs485 на реальное устройство.
У чипа FT232 есть серийный номер (при желании его можно изменить), поэтому привязку имеет смысл делать по нему.
Сначала надо узнать этот серийный номер. Сделать это проще всего подключив адаптер к си стеме и командой dmesg посмотреть на какой порт система его прицепила и прочие параметры:
Код: Выделить всё
$ dmesg
...
[162861.381624] usb 3-3: new full-speed USB device number 7 using xhci_hcd
[162861.551299] usb 3-3: New USB device found, idVendor=0403, idProduct=6001
[162861.551302] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[162861.551303] usb 3-3: Product: FT232R USB UART
[162861.551304] usb 3-3: Manufacturer: FTDI
[162861.551305] usb 3-3: SerialNumber: A900WD6Q
[162862.609075] usbcore: registered new interface driver ftdi_sio
[162862.609092] usbserial: USB Serial support registered for FTDI USB Serial Device
[162862.609194] ftdi_sio 3-3:1.0: FTDI USB Serial Device converter detected
[162862.609225] usb 3-3: Detected FT232RL
[162862.609227] usb 3-3: Number of endpoints 2
[162862.609228] usb 3-3: Endpoint 1 MaxPacketSize 64
[162862.609230] usb 3-3: Endpoint 2 MaxPacketSize 64
[162862.609231] usb 3-3: Setting MaxPacketSize 64
[162862.609400] usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0
$
Можно ещё посмотреть все параметры, причём в том виде, в каком их надо будет указывать в правилах udev:
Код: Выделить всё
# udevadm info -a -n /dev/ttyUSB0
...
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-3':
KERNELS=="3-3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="3"
ATTRS{idVendor}=="0403"
ATTRS{speed}=="12"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{busnum}=="3"
ATTRS{devnum}=="7"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="90mA"
ATTRS{authorized}=="1"
ATTRS{bmAttributes}=="a0"
ATTRS{bNumConfigurations}=="1"
ATTRS{maxchild}=="0"
ATTRS{bcdDevice}=="0600"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{serial}=="A900WD6Q"
ATTRS{version}==" 2.00"
ATTRS{urbnum}=="15"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="FTDI"
ATTRS{removable}=="removable"
ATTRS{idProduct}=="6001"
ATTRS{bDeviceClass}=="00"
ATTRS{product}=="FT232R USB UART"
...
Код: Выделить всё
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A900WD6Q", MODE="0666", SYMLINK+="rs485"
Код: Выделить всё
udevadm control --reload
Код: Выделить всё
$ ls -l /dev/rs485
lrwxrwxrwx 1 root root 15 Aug 11 21:38 /dev/rs485 -> ttyUSB0
$
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- verser
- Мастер
- Сообщения: 1883
- Зарегистрирован: 21 июл 2013, 22:28
- Репутация: 1278
- Настоящее имя: Сергей
- Откуда: Тбилиси
- Контактная информация:
Re: Управление частотником через modbus.
Вылезла проблемка, может кто сталкивался с такой - после обновления linuxcnc из исходников перестал работать драйвер hy_vfd, такая ошибка выскакивает Перекомпилировал hy_vfd по-новому, не помогает.
Попробовал также обновиться linuxcnc не с ветки master(2.8.0-pre1), а с ветки 2.7, тоже не помогло.
Код: Выделить всё
Starting LinuxCNC...
spindle-vfd: device='/dev/ttyS0', baud=19200, bits=8, parity='none', stopbits=1, address=1, verbose=1, PID=14267
Opening /dev/ttyS0 at 19200 bauds (none)
HAL: ERROR: version code mismatch
HAL: ERROR: could not init shared memory
ULAPI: WARNING: module 'HAL_LIB_14267' failed to delete shmem 01
spindle-vfd: ERROR: hal_init failed
INFO CLASSICLADDER---I/O modbus master closed!
INFO CLASSICLADDER---I/O modbus master (Ethernet) init ok !
custom.hal:5: hy_vfd exited without becoming ready
Shutting down and cleaning up LinuxCNC...
Попробовал также обновиться linuxcnc не с ветки master(2.8.0-pre1), а с ветки 2.7, тоже не помогло.