Управление частотником через modbus.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Показывай схему конвертера и его соединений.
И схему включения частотника заодно, лучше, если из неё будут понятны длины проводов и точки их подключения.

Ещё можно показать что пишет dmesg за время работы частотника.
Последний раз редактировалось Serg 05 дек 2013, 13:14, всего редактировалось 1 раз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Сергей Саныч »

adif писал(а):И как же убрать эти помехи?
0. Убедиться, что в частотнике есть гальваническая развязка по RS-485!
1. Соединить корпус компьютера, корпус шпинделя и железо станка достаточно толстым проводом.
2. По возможности укоротить кабель USB, использовать хороший экранированный кабель. Лучше вообще обойтись без кабеля.
3. Надеть ферритовые кольца на кабель от частотника к шпинделю.
Чудес не бывает. Бывают фокусы.
adif
Кандидат
Сообщения: 69
Зарегистрирован: 02 дек 2010, 09:55
Репутация: 18
Контактная информация:

Re: Управление частотником через modbus.

Сообщение adif »

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 устройством. А потом находится устройство но ему присваивается другой адрес и уже связи с частотником нет. Поэтому начал копать сам преобразователь.
Serg-tmn писал(а):По возможности укоротить кабель USB, использовать хороший экранированный кабель. Лучше вообще обойтись без кабеля.
Убрал usb кабель полностью, припаял разъем (с флешки выковырял) прямо на плату конвертора и втыкнул в порт, а от конвертора (usb-RS485) к частотнику экранированным проводом и ЗАРАБОТАЛО! :good:
Спасибо за подсказки! Теперь надо ввести задержку на отработку кода при разгоне шпинделя и можно начинать работать на станке.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Nick »

adif писал(а):Спасибо за подсказки! Теперь надо ввести задержку на отработку кода при разгоне шпинделя и можно начинать работать на станке.
Обратной связи от шпинделя нет?
Если есть, то через near и motion.spindle-at-speed, если нет - то через lowpass и near и motion.spindle-at-speed :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Сергей Саныч »

Nick писал(а):Если есть, то через near и motion.spindle-at-speed, если нет - то через lowpass и near и motion.spindle-at-speed
вот это я не понял - причем тут lowpass (ФНЧ) :thinking:
Обратная связь по частоте в любом случае есть - это же модбас. Обычно ее хватает. А по реальным оборотам - отдельный вопрос.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Nick »

Serg-tmn писал(а):вот это я не понял - причем тут lowpass (ФНЧ)
ну как же, если нет обратной связи, то делаем суррогатную обратную связь - пропускаем задание на скорость шпинделя через lowpass и таким образом делается задержка на разгон шпинделя, причем, если обороты не сильно поменялись - то задержка меньше...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Сергей Саныч »

Nick писал(а):пропускаем задание на скорость шпинделя через lowpass и таким образом делается задержка на разгон шпинделя,
Во как!(с)
Но в данном случае у нас есть информация о фактической частоте инвертора - spindle-vfd.motor-freq
Чудес не бывает. Бывают фокусы.
adif
Кандидат
Сообщения: 69
Зарегистрирован: 02 дек 2010, 09:55
Репутация: 18
Контактная информация:

Re: Управление частотником через modbus.

Сообщение adif »

При простое включенного станка исчезает связь с частотником. Есть подозрение что засыпает порт USB. Вынимание из порта преобразователя USB-rs485 и вставляние в порт не дает эффекта. После закрытия программы и запуска программы linuxcnc вылетает ошибка что не найден преобразователь. Помогает только перезагрузка компьютера. Как сделать чтобы не засыпал порт USB? или как наново системе найти преобразователь без перезагрузки и закрытия программы linuxcnc?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Что говорит dmesg после того, как заснёт?

Перед началом эксперимента желательно выполнить команду "dmesg -c", что она скажет не интересно.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
adif
Кандидат
Сообщения: 69
Зарегистрирован: 02 дек 2010, 09:55
Репутация: 18
Контактная информация:

Re: Управление частотником через modbus.

Сообщение adif »

еще оказалось что связь с USB-rs485 исчезает когда вставляю флешку. Смотрел dmesg: после перезагрузки находит устройство FT232 и присоединяет его к ttyUSB0 но после большого простоя или присоединения флешки устройство FT232 присоединяет к ttyUSB1. Linuxcnc ищет устройство по адресу ttyUSB0 и не находит его и выдает ошибку. После перезагрузки FT232 и присоединяет к ttyUSB0 и все хорошо работает. Надо чтобы Linuxcnc искал преобразователь как на ttyUSB0 так и на ttyUSB1. И как это сделать?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Либо USB- контроллеру разрешено засыпать (в БИОС?), либо он глючит.
Попробуй флешку вставлять в другие порты...

Если при присоединённом FT232 случится ресет на USB-шине, то система не успеет освободить ttyUSB0, поэтому вновь найденный FT232 окажется на следующем свободном ttyUSB1. Вернуть обратно на ttyUSB0 можно простым отключением FT232 от компа и включением обратно после паузы секунд в 5.
adif писал(а):Надо чтобы Linuxcnc искал преобразователь как на ttyUSB0 так и на ttyUSB1
Так нельзя делать - на другом порту может оказаться какое-нибудь устройство, неконтролируемое включение которого во время перебора портов может натворить бед. Да и порт будет искаться только при старте linuxcnc, а не после того как отвалится.

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.

Сообщение Serg »

У меня сложилось впечатление, что номера портов присваиваются исключительно по номерам USB-портов. У меня есть винда на служебном ноуте и два переходника USB-RS232 на чипах ft232 и pl2303 - если их втыкать в один и тот-же порт USB, то всегда будет появляться один и тот-же COM с одним номером вне зависимости от типа адаптера. В некотором роде это удобно - не надо терминалку перенастраивать.
На ноуте 3 USB порта и их смело можно пометить как COM4, COM6 и COM10. Так было и на winxp и сейчас на win7.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Сергей Саныч »

UAVpilot писал(а):ft232 и pl2303 - если их втыкать в один и тот-же порт USB, то всегда будет появляться один и тот-же COM с одним номером вне зависимости от типа адаптера.
Про PL2302 - согласен. Про FT232 - если при первом подключении он определился как COM23 (реальный пример у меня), то он будет таким всегда, независимо от того, в какой порт потом втыкать будешь. Хотя, наверно, это (привязка к серийнику) от версии драйвера зависит. И, насколько помню, для FT есть конфигуратор, там тоже кое-что можно настроить.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Сергей Саныч писал(а):для FT есть конфигуратор, там тоже кое-что можно настроить
Точно ничего не настраивал - воткнул адаптер и венда сама где-то нашла драйвер.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Сергей Саныч »

Посмотрел здесь http://www.ftdichip.com/Drivers/VCP.htm - там вообще много чего есть в плане документации. Когда я с ними ковырялся (2007 год) почти что ничего не было. И да, драйверы ставил вручную.
я это к тому, что если заставить линуксовый драйвер привязываться к серийнику, то "перескока" с ttyUSB0 на ttyUSB1 удалось бы избежать.
У меня тоже были случаи пропадания порта из-за помех, но как-то не догадывался глянуть полный список портов после сбоя. Может, адаптер тоже перескакивал на другой порт.
Чудес не бывает. Бывают фокусы.
adif
Кандидат
Сообщения: 69
Зарегистрирован: 02 дек 2010, 09:55
Репутация: 18
Контактная информация:

Re: Управление частотником через modbus.

Сообщение adif »

UAVpilot писал(а): Вернуть обратно на ttyUSB0 можно простым отключением FT232 от компа и включением обратно после паузы секунд в 5.
Работает! Это уже лучше чем перезагрузка. А вообще то буду искать другой преобразователь чтобы проверить не глючит ли мой преобразователь, потому как есть на это подозрение.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Сергей Саныч писал(а):я это к тому, что если заставить линуксовый драйвер привязываться к серийнику, то "перескока" с ttyUSB0 на ttyUSB1 удалось бы избежать.
Так можно сделать, будет лучше, но всё равно останется вероятность непопадания - если система не успеет освободить ttyUSB0
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Управление частотником через modbus.

Сообщение Serg »

Привязка USB-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"
...
Теперь можно в /etc/udev/rules.d создать файл с именем типа 99-rs485.rules и в нем написать что-то типа такого:

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

KERNEL=="ttyUSB*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A900WD6Q", MODE="0666", SYMLINK+="rs485"
Далее нужно заставить udev перечитать обновлённые правила. "Чайники" в линуксе могут просто перезагрузить комп, а продвинутые юзеры могут воспользоваться командой

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

udevadm control --reload
После этого при подключении данного адаптера к USB-порту система будет автоматически создавать симлинк /dev/rs485 на реальное устройство.

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

$ 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.

Сообщение verser »

Вылезла проблемка, может кто сталкивался с такой - после обновления linuxcnc из исходников перестал работать драйвер hy_vfd, такая ошибка выскакивает

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

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...
Перекомпилировал hy_vfd по-новому, не помогает.
Попробовал также обновиться linuxcnc не с ветки master(2.8.0-pre1), а с ветки 2.7, тоже не помогло.
Ответить

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