Частотник и 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. В терминале набираем make, а затем, если компиляция завершилась успешно, sudo make install.
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 Кб) Скачиваний: 227


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 свой собственный... :)
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14810
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3597
Медальки:
Настоящее имя: Сергей

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

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

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

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

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

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

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

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

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

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

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

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

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

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, ибо изменены не обязательные параметры протокола, а лишь рекомендованные.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 14810
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3597
Медальки:
Настоящее имя: Сергей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: aleksic666, Andy52280, Bing [Bot], bordyn, deniks, frezeryga, Google [Bot], HolodARS, MGG, migrat, Mutumbo, NKS, parket_3d, Power968, Prav, rage, Redmn, scroober, selenur, seregacnc, Seriyvolk, sorter, VAT, verser, Yahoo [Bot], Yandex [bot], zman88

Поделиться

Reputation System ©'