Частотник и Modbus. Универсальная заготовка.

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 26 окт 2015, 15:05

Задался целью немного облегчить задачу для тех отчаяных энтузиастов, кто мечтает связать частотник с LinuxCNC по Modbus, но варианты исходников из этой темы по разным причинам не подходят, а при попытке понять как они устроены, с целью что-то изменить, в голове наступает состояние E-Stop. :hehehe: К слову, выражаю огромную благодарность автору того топика и всем активно участвовавшим в обсуждении. Спасибо!

Возможности

https://youtu.be/kV7CG8pSJBo
Частотник и Modbus. Универсальная заготовка. spindle-vfd-02.png


- За основу взят исходник gs2_vfd.c отсюда, обработан напильником и обильно сдобрен комментариями. В modbus.c и modbus.h никаких правок не вносилось.
- Исходники специально подготовлены для сравнительно лёгкой адаптации под любой ПЧ, поддерживающий стандартный режим обмена MODBUS RTU.
- Поддерживается мониторинг 11-ти параметров, задание частоты, подача команд на запуск и останов, сброс ошибки (fault reset). При достижении заданной частоты формируется spindle-at-speed.
- В зависимости от модели ПЧ предусмотрена возможность выбора способа задания скорости вращения:
а) установка значения требуемой частоты (Гц)
б) установка процента (%) от максимальной скорости
- Введены и вынесены в шапку константы для настройки параметров связи по умолчанию (/dev/ttyUSB0, 9600, 8N1 и т.п.)
- При вызове справки (spindle-vfd -h) в описание ключей, а именно их дефолтных значений, подставляются введённые выше константы. Таким образом, в случае измений в константах, после перекомпиляции справка всё равно останется корректной.
- Предусмотрена возможность читать параметры двумя способами:
а) Одна команда - один параметр. Медленный и верный способ.
б) Одна команда - несколько параметров. Более быстрый способ. Очень удобно для чтения последовательной цепочки регистров.
- Проведена чёткая граница между уровнями логирования:
--verbose - просто полезные сервисные сообщения (что отправлено в ПЧ, что принято и т.д.)
--debug - включет --verbose и добавляет содержимое отправленных и принятых байт-пакетов
- К общему статусу соединения MODBUS добавлен код последней ошибки связи
- Подготовлены две панели glade: вариант для закладки (tab) и панель для размещения в правой части окна axis
- Добавлена возможность быстрой расшифровки кодов ошибок ПЧ и ошибок связи на панели glade (см. spindle-vfd.py)
- Кнопка "сбросить ошибку" активна только если установлено соединение MODBUS

Что нужно для быстрого старта?

1. Распаковываем архив, находим и открываем spindle-vfd.c в текстовом редакторе, лучше всего в gedit, так как я активно пользовался символом табуляции, и, что-бы ничего визуально не поплыло, лучше использовать именно его. Если gedit не устанолен, попробуйте sudo apt-get install gedit или Яндекс/Google.
2. Практически в самом начале файла объявляются настройки связи по умолчанию, вписываем свои значения. Можно ничего не вписывать, но тогда корректные настройки придётся задавать в custom.hal.
3. Далее перечислены адреса регистров для мониторинга параметров, для задания частоты и управления. Внимательно читаем манул на свой ПЧ и подставляем правильные адреса регистров.
4. Определяемся со способом задания частоты (абс. значение частоты или процент от макс. значения), указываем минимальную и максимальную допустимые скорости.
5. Открываем терминал, переходим в папку с исходниками, то есть непосредственно туда где лежит spindle-vfd.c. Набираем make, а затем, если компиляция завершилась успешно, sudo make install. Как узнать что компиляция завершилась успешно, если из километров текста в терминале ничего не понятно? Очень просто, в текущей папке должен появиться исполняемый файл spindle-vfd.
6. Переходим в папку sim.axis.example, в ней подготовлено два примера для проверки. Если в п.2 не были прописаны корректные дефолтные настройки, то укажите их явно в custom.hal. После пробуем любую из двух тестовых конфигураций, набрав в командной строке linuxcnc axis_panel.ini или linuxcnc axis_tab.ini.
7. Если мониторинг параметров работает, но значения слишком велики/малы, то нужно в spindle-vfd.c найти функцию read_data и подправить множители для неверно отображаемых параметров. В исходном коде есть подробный комментарий. После повторяем п.5.
8. Если на каком-то из этапов возникают трудности, то, наверное, задаём вопросы в этой теме. :-D

Подключение компонента к вашей конфигурации LinuxCNC

1. Копируем содержимое папки linuxcnc в папку с вашей рабочей конфигурацией, заменив или дополнив файлы custom.hal и custom_postgui.hal.
2. Открываем в любом текстовом редакторе ini-файл и в секции [DISPLAY] прописываем одну из двух glade-панелей.

Если нравится панель в правой части окна Axis:
Код: Выделить всёРазвернуть
[DISPLAY]
GLADEVCP = -u spindle-vfd.py spindle-vfd-panel.glade

Если же хочется видеть вкладку:
Код: Выделить всёРазвернуть
[DISPLAY]
EMBED_TAB_NAME=Spindle-VFD
EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u spindle-vfd.py spindle-vfd-tab.glade

3. Также в текстовом редакторе открываем spindle-vfd.py и редактируем список ошибок ПЧ. Вместо ерунды, приведённой по умолчанию, впишите корректные расшифровки кодов неисправностей, сверившись с мануалом на преобразователь.

Пример:
Код: Выделить всёРазвернуть
def fault_codes_list(case):
    return {
    0 : "ALL CLEAR",
    3 : "LOW VOLTAGE",
    7 : "OVERLOAD",
    8 : "OVERHEATING",
    9 : "OVERVOLTAGE",
    }.get(case, "UNKNOWN ERROR")

4. На этом всё. Можно запускать LinuxCNC.

Архив с исходниками

spindle-vfd.tar.gz
(55.61 Кб) Скачиваний: 354


Обновление от 29.09.17
Благодаря участнику форума N1X установлено, что в компоненте отсутствует пауза после передачи пакета, что может быть причиной неустойчивой связи с некоторыми частотниками. Исходник, где этот баг пофиксен, выложен тут: http://www.cnc-club.ru/forum/viewtopic. ... 30#p383830

P.S. Не ставил целью изобрести нечто новое, и ни в коем случае не претендую на такое изобретение. Мне просто хотелось сделать понятный вариант исходников для пользователей, мало знакомых с языком C++. То есть максимум комментариев, понятный код, минимум необходимого функционала. Надеюсь, кому-то поможет. :monkey:
Последний раз редактировалось BentScrew 13 мар 2018, 10:31, всего редактировалось 5 раз(а).
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 26 окт 2015, 16:06

Пожелание по интерерфейсу:
Большой и красивый индикатор скорости нафик не нужен (разве что только для склеротиков) - и так понятно, что он будет показывать то, что задано параметром S.
А вот индикатор тока необходим - именно он показывает нагрузку на шпиндель, что гораздо важнее.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 27 окт 2015, 13:50

UAVpilot писал(а):А вот индикатор тока необходим

Переделал панель-закладку, так лучше?
Частотник и Modbus. Универсальная заготовка. spindle-vfd-tab-new.png
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение Сергей Саныч » 27 окт 2015, 14:06

А откуда брать информацию про момент? :thinking:
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7902
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2450
Медальки:

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 27 окт 2015, 14:16

Зависит от частотника, одни умеют отдавать значение момента, другие нет. Например, мой Tecorp HC1C+ не умеет. :cry: Эта панель - просто заготовка, куда выведен необходимый минимум. Каждый может её подправить так как нравится, что-то убрать, чего-то добавить.
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 27 окт 2015, 17:07

Я б для универсальности оставил только один индикатор, которые показывал-бы момент, если есть или ток в противном случае.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение eugenysg » 27 окт 2015, 17:22

За труды +.
Но вот
BentScrew писал(а): но варианты исходников из этой темы по разным причинам не подходят, а при попытке понять как они устроены, с целью что-то изменить, в голове наступает состояние E-Stop.

не совсем правда - у меня ушло 1,5 вечера под пиво что бы заточить имеющиеся исходники под Веспер E2-8300. Комментарии более чем понятны, структура то же не запутанная.
P.S. Последний раз до этого Cи трогал руками лет 10 назад.
eugenysg
Опытный
 
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 27 окт 2015, 19:09

А попробуй заточить под Huanyang...
У него не только команды/регистры не стандартные, но сам Modbus свой собственный... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 28 окт 2015, 15:07

Опять перерисовал панель-закладку с... тремя индикаторами! Это последняя редакция, честно. :hehehe: Скриншот панели и архив с исходниками перезалил.
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 28 окт 2015, 19:26

А зачем выходное напряжение? Тем более это по сути просто функция от частоты.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение Сергей Саныч » 29 окт 2015, 10:59

UAVpilot писал(а):А зачем выходное напряжение? Тем более это по сути просто функция от частоты.
В векторном режиме - не просто.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7902
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2450
Медальки:

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 29 окт 2015, 12:37

В любом режиме напряжение меняется так, чтобы получить нужный ток на обмотках. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение eugenysg » 30 окт 2015, 12:29

UAVpilot писал(а):У него не только команды/регистры не стандартные, но сам Modbus свой собственный...

Modbus один, стандартный. Если собственный то это уже не Modbus получается, а протокол похожий на...
eugenysg
Опытный
 
Сообщения: 119
Зарегистрирован: 18 ноя 2013, 13:23
Репутация: 25

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение UAVpilot » 30 окт 2015, 12:54

Это всё-же Modbus, ибо изменены не обязательные параметры протокола, а лишь рекомендованные.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 16546
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4060
Медальки:
Настоящее имя: Сергей

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение Kulibin74 » 04 фев 2016, 11:28

А можно сделать так, чтобы если вдруг шпиндель аварийно остановился или возникла какая нибудь ошибка (превышение момента больше допустимого) станок вставал на аварийный стоп?
Kulibin74
Почётный участник
Почётный участник
 
Сообщения: 606
Зарегистрирован: 08 апр 2013, 15:33
Откуда: Москва
Репутация: 60
Медальки:
Настоящее имя: Сергей Александрович

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 04 фев 2016, 11:39

Почему бы и нет? Надо добавить в компонент опрос текущего значения момента и выходной пин для него, а при превышении некоторого порогового значения формировать сигнал, который затем завести на e-stop.
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение Сергей Саныч » 04 фев 2016, 14:53

BentScrew писал(а):Надо добавить в компонент опрос текущего значения момента
Где б его только взять? :thinking:
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7902
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2450
Медальки:

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение BentScrew » 04 фев 2016, 15:20

Дык ясно-понятно, что брать нужно из самого частотника, если конечно он имеет такую фичу. :hehehe:
Деталь что сейчас делаеТ? ФрезеруеТСЯ! Деталь что завтра будет делаТЬ? ФрезероваТЬСЯ!
Шпиндель что сейчас делаеТ? ВращаеТСЯ! Шпиндель что не должен сделаТЬ? ОстановиТЬСЯ!

Фрезеруй грамотно! :-D
Аватара пользователя
BentScrew
Мастер
 
Сообщения: 257
Зарегистрирован: 17 окт 2014, 15:03
Откуда: г.Хабаровск
Репутация: 132
Медальки:
Настоящее имя: Александр

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение Сергей Саныч » 04 фев 2016, 15:34

В векторном режиме можно еще на ток шпинделя смотреть.
В "скалярном" на малых оборотах этот параметр не информативен. Можно полностью затормозить шпиндель, а ток почти не изменится.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7902
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2450
Медальки:

Re: Частотник и Modbus. Универсальная заготовка.

Сообщение mmavka » 17 окт 2016, 04:42

Доброго времени суток.
У меня проблема с настройкой данной заготовки. На вашем примере в тестовой конфигурации, все работает. Немного подправил файл. Частотник не поддерживает x06. пришлось пользоваться 10
так вот. в тестовой конфигурации я все настроил. Все работает. Но стоило присоединить к рабочей конфигурации у меня не больше 3000 об.мин. и не меняется. хотя все параметры читаются и шпиндель вкл и выкл. меняет направление.
Куда копать?
mmavka
Новичок
 
Сообщения: 27
Зарегистрирован: 04 окт 2014, 23:13
Откуда: Ярославль
Репутация: 0
Настоящее имя: Илья

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: #Алексей#, _taras_, Alex lamaka, Andrey_Pavkin, Argon-11, Bing [Bot], dovganya, Google [Bot], kpankratov, michael-yurov, niksooon, R6MF49T2, Redmn, sima8520, Surtaev, uralpt, VeicheAntectHig, Vit888, Yandex [bot]

Поделиться

Reputation System ©'