Возможности
https://youtu.be/kV7CG8pSJBo - За основу взят исходник 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. Если на каком-то из этапов возникают трудности, то, наверное, задаём вопросы в этой теме.
Подключение компонента к вашей конфигурации 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
Пример:
Код: Выделить всё
def fault_codes_list(case):
return {
0 : "ALL CLEAR",
3 : "LOW VOLTAGE",
7 : "OVERLOAD",
8 : "OVERHEATING",
9 : "OVERVOLTAGE",
}.get(case, "UNKNOWN ERROR")
Архив с исходниками
Обновление от 29.09.2017
Благодаря участнику форума N1X установлено, что в компоненте отсутствует пауза после передачи пакета, что может быть причиной неустойчивой связи с некоторыми частотниками. Исходник, где этот баг пофиксен, выложен тут: http://www.cnc-club.ru/forum/viewtopic. ... 30#p383830
Обновление от 01.04.2020
Проект морально устарел! Переходите на новую версию: http://www.cnc-club.ru/forum/viewtopic. ... 79#p557679