EMC2 - пояснялка от "чайника"

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Пару лет назад я с друзьями взялся за проектирование и изготовление фрезерного станка. Затем был второй. Затем планшетный принтер...

Так уж вышло, что спец по Линуксу "удалился" от дел. А делать-то нужно! Вот и решил я изучить систему ЛинуксCNC самостоятельно.
Примерялся несколько месяцев, читал форум, в инете "гулял". И вот настал момент делать свою конфигурацию для своего станка.

Сразу оговорюсь - я имею высшее образование - электронщик со специализацией "Проектирование ЭВМ". Вроде как не со стороны ;)
Но читаю описания, выставленные на форуме и понимаю - на чужом языке написано! Абракадабра!

Спасибо форумчанам - помогли "вползти" в систему (хотя понимаю, что нахожусь только на пороге).

Считаю, что просто необходимо поделиться теми "открытиями", без которых понимание этой системы просто невозможно. А писать буду тем языком, на котором говорят "паяльники", а не "программисты". Может кому поможет? Буду рад!

"Сухой остаток" от темы переношу на Вики - http://cnc-club.ru/wiki/index.php/Linux ... 0%BE%D0%B2

Итак.
Последний раз редактировалось Ворон226 14 фев 2013, 21:52, всего редактировалось 2 раза.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

НАЧАЛО. ОПИСАНИЕ EMC2 или EMC2 Integrators Manual.

Глава 1
Важные определения

Никаких проблем. Всё понятно. Идём дальше...

Часть I
Конфигурация
Глава 2
Аппаратное обеспечение (Hardware)
2.1 Latency Test

И опять всё понятно. Тест провел. Данные записал...

3. Конфигурационные файлы

И тут всё в порядке...

Дальше стал конфигурить систему, используя Stepconf. Столкнулся с проблемой, что Stepconf не дал мне возможности сконфигурировать систему такой, которая мне нужна. Испробовав несколько вариантов понял - нужно будет прописывать конфигурацию "ручками".

Вот и подошел я с INI-файлу...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Глава 4. Файл INI

Вопросы начали появляться, но житейское правило: Не трогай того, что не понимаешь - помогло прописать бОльшую часть ini-файла. Больше того, прописал четвертую ось (она у меня должна качать гель: шаговик-насос). Даже подвигал насос. Но КАК его запустить программой? Да еще в нужное время, с нужной скоростью!

Тут без понимания HAL-файла не обойтись.

И тут началось!..
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Глава 5
EMC2 и HAL

И вот первая строка:

Motion загружается при помощи команды motmod. Родственные программы должны быть запущены до motion...

Перечитал пару раз. Непонятно. Пропустил и полез дальше. Ещё более непонятно.
Открыл HAL у себя и стал читать, взирая на реальный текст реального HAL-а... Стал понимать структуру самого файла. Но что там написано???

После двух недель стало ясно следующее:

1. Система EMC2 или LinuxCNC - это огромный набор маленьких программок, которые определенным образом сконфигурированы в систему. Потому, чтобы начать самому прописывать свою систему своего станка - необходимо понять логику этой конфигурации.
А она оказалась довольно простой. Только написана на ином языке, на языке программистов ;)

Итак, эти маленькие программки называют КОМПОНЕНТАМИ. У каждого компонента есть своё ИМЯ.
Вложения
text001.png
text001.png (7.56 КБ) 4966 просмотров
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

У каждого компонента есть контакты (клеммы, разъемы) входов и выходов. Их называют ПИНы. У каждого компонента пинов может быть различное количество. У каждого пина есть своё имя. Пины бывают входные и выходные. А записывать это имя пина договорились так:

(имя компонента).(имя пина)

Например:
motion.analog-out-00 , где

motion- имя компонента,
analog-out-00 - имя пина, этот пин выходной и его номер 00.

ВАЖНО!
Не стоит верить имени пина в части входной он или выходной. Есть случаи, когда в названии пина есть "in" или "out@? а на самом деле всё обстоит совсем не так. Так где же узнать входной это пин или выходной?
Вариант 1. Почитать мануал (описание) EMC2. Там это выглядит как-то так:

iocontrol.0.coolant-flood (bit, out) - как мы уже разобрались, эта запись означает, что это выходной пин coolant-flood компонента iocontrol.0

Вариант 2 (мной пока слабо используемый)
Смотреть на свойства пина можно и в емс - любой пин открываем в Halshow и смотрим.
Вложения
text002.png (4964 просмотра) <a class='original' href='./download/file.php?id=11729&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (12.19 КБ)</a>
Последний раз редактировалось Ворон226 09 фев 2013, 15:06, всего редактировалось 5 раз.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Также компонент может иметь один или несколько параметров (это такие коэффициенты, которые используются при работе компонента). Тут нет проблем - такое есть в любой схеме (номиналы резисторов, например).

Компоненты могут "соединяться" между собой посредством связей (проводки между входами и выходами). Тут есть тоже свои правила:
1. Чтобы не путаться, договорились каждую связь обзывать своим именем.

В этом случае, запись "коммутации" двух компонентов будет выглядеть так:

(команда) (имя связи) (источник "сигнала") (приёмник "сигнала")

net vel <= motion.current-vel => stepgen.3.vel , что означает

создаём (команда net) связь (vel) между пином current-vel компонента motion и пином vel компонента stepgen.3 (тут 3 - это номер компонента с таким именем - ведь один компонент может использоваться одновременно несколько раз, но под разными порядковыми номерами). Стрелочки <= и => писать необязательно. С ними на начальном этапе овладения системой проще - понятно ОТКУДА и куда передается "сигнал".

Возможно эту запись сделать так:

net vel <= motion.current-vel
net vel => stepgen.3.vel

- как вам будет удобнее и понятнее.
Кстати, эти две строчки могут быть записаны в разных местах HAL-файла.
Вложения
text003.png (4963 просмотра) <a class='original' href='./download/file.php?id=11730&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (29.4 КБ)</a>
Последний раз редактировалось Ворон226 08 фев 2013, 22:22, всего редактировалось 1 раз.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Есть и второе правило при записи связи:
2. К одному выходному пину можно подсоединить несколько входных пинов. Но один входной пин можно подсоединить только к одному выходному пину.
Вложения
text004.png (4963 просмотра) <a class='original' href='./download/file.php?id=11731&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (31.24 КБ)</a>
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Продолжение следует. Мэтров прошу поправлять, если "чайник" в силу своей необразованности что-то упустит или переврёт ;)
Хочешь быть счастливым? Будь им!
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

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

Ворон226 - продолжай! Великое дело затеял :good:
По себе сужу - осознание того, что
Система EMC2 или LinuxCNC - это огромный набор маленьких программок
- компонентов, которые связаны по схеме, описанной hal-файлами - пришло далеко не сразу.
Изначально представлялся некий единый монстр с кучей настроек, которые делаются через ini и hal-файлы.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение tooshka »

Вот если бы вся документация была на таком доступном языке)) Мечта!! Автору низкий поклон.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
nik1
Мастер
Сообщения: 8408
Зарегистрирован: 02 окт 2012, 07:37
Репутация: 3628
Откуда: Красногорск
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение nik1 »

Хоть и не пользую Емс , но читаю и начинаю понимать как это работает
Статья очень правильная и нужная :good: :beer_blow:
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Impartial »

Ворон226 писал(а):2. К одному выходному пину можно подсоединить несколько входных пинов. Но один входной пин можно подсоединить только к одному выходному пину.
Здесь наверное нужно добавить, что пин может состоять из множества физических проводов, переходя на язык электроники. И их количество от выхода до входа должно быть одинаковым.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Impartial писал(а):... пин может состоять из множества физических проводов, переходя на язык электроники. И их количество от выхода до входа должно быть одинаковым.
(если я правильно понял)

К выходному пину можно подключать несколько связей. ВАЖНО, чтобы каждая связь была присоединена к выходу и к входу (входам).

В записи это может выглядеть так:

net vel <= motion.current-vel => stepgen.3.vel
net velin <= motion.current-vel => sum2.0.in0 , что означает

выходной пин current-vel компонента motion подключен связью vel к входному пину vel компонента stepgen.3 и связью velin к входному пину in0 компонента sum2.0
Вложения
text005.png (4936 просмотров) <a class='original' href='./download/file.php?id=11756&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (33.07 КБ)</a>
Хочешь быть счастливым? Будь им!
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение nkp »

Все разложено по полочкам :good: :good:
Я предложил бы автору сделать "пояснялку" в виде статьи - то есть сложить все в первый пост.
Во первых он всегда будет доступен тс для редактирования.
Во вторых - не надо читать лишнее (порой уводящее в сторону от истины) - а в шапке будет только "выжимка-концентрат".
Ну а захочет человек всю тему проштудировать - милости просим ;) .
--------------
один момент по содержимому - в дополнение к сказанному:
Ворон226 писал(а):Пины бывают входные (in) и выходные (out).
нужно иметь в виду , что в некоторых случаях наличие в наименовании пина приставок "in" и "out" не соответствуют
их действительному назначению
лучше всегда руководствоваться описанию пина в документации
там всегда после названия пина идет его тип и далее его описание
приведу примеры:
компонент serport
пин:
serport.N.pin-1-in bit out
то есть в наименовании стоит "in" - а пин является выходом
это очень легко понять - если нарисовать блок-схему и увидеть,что при коммутации компонентов
их физические выходы в тоже время должны быть входами для программных компонентов
самый очевидный пример - паралельный порт:
нам нужно с условного пина "А" (который является физическим пином порта - то есть мы к нему реально можем подключить провод)
взять сигнал допустим с программного генератора шагов(компонент stepgen)
значит мы с выхода stepgen берем сигнал и подаем его на наш пин "А"
он должен в этом случае быть входом для сигнала - но в тоже время мы с него же и выводим сигнал "наружу" порта
и тут он уже работает как выход
ну в принципе этой каши можно было избежать:
нодо было бы просто у всех компонентов сделать обязательными и входы и выходы - даже если компонент
и ничего не делает с сигналом - тупо коммутирует вход с выходом
тогда бы все было логично и стройно
но разработчики посчитали это излишним (и правильно сделали ;) )
а смотреть на свойства пина можно и в емс - любой пин открываем в Halshow и смотрим:
Выделение(026).jpg (4931 просмотр) <a class='original' href='./download/file.php?id=11762&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (169.1 КБ)</a>
Выделение(025).jpg (4931 просмотр) <a class='original' href='./download/file.php?id=11761&sid=747360856532414c4f45fdf54fe9d2a3&mode=view' target=_blank>Загрузить оригинал (162.91 КБ)</a>
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Impartial »

Ворон226 писал(а):К выходному пину можно подключать несколько связей. ВАЖНО, чтобы каждая связь была присоединена к выходу и к входу (входам).
Я о том, что физически пин "motion.current-vel" состоит из 32 линий и его бессмысленно раздирать по частям так как это целое число со знаком или с плавающей точкой.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

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

Impartial писал(а):
Ворон226 писал(а):К выходному пину можно подключать несколько связей. ВАЖНО, чтобы каждая связь была присоединена к выходу и к входу (входам).
Я о том, что физически пин "motion.current-vel" состоит из 32 линий и его бессмысленно раздирать по частям так как это целое число со знаком или с плавающей точкой.
А можно интерпретировать и как один провод, по которому передается аналоговое значение.
Сейчас даже не всякий программист задумывается, сколько битов в int, long, float или double.
Чудес не бывает. Бывают фокусы.
valb
Мастер
Сообщения: 267
Зарегистрирован: 10 апр 2011, 23:01
Репутация: 20
Откуда: Пенза
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение valb »

Наконец-то! Хоть электронщики взялись за ДЕЛО! Ато глядишь Ф книгу, а видишь фигу. :hehehe:
Топикстартеру респект! :good:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение nkp »

Impartial писал(а):Здесь наверное нужно добавить,
ну да - это конечно добавит понимания "чайникам" и ни в коем случае не введет их в долгий ступор :hehehe: :hehehe: :hehehe:
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение vmarkiv »

Главное в описаниях для " чайников " - что-бы не "ботать по фене ", а использовать терминологию ЧПУ и программирования
Аватара пользователя
Ворон226
Мастер
Сообщения: 1922
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: EMC2 - пояснялка от "чайника"

Сообщение Ворон226 »

Всем большое спасибо за поддержку!
Я действительно пока слабо разбираюсь в LinuxCNC, но хочу разобраться. Пишу именно с того уровня, на котором и нахожусь сейчас. Позднее, конечно, можно будет всё подчистить и сделать отдельный файлик, если в нём будет нужда.
vmarkiv писал(а):Главное в описаниях для " чайников " - что-бы не "ботать по фене ", а использовать терминологию ЧПУ и программирования
Полностью согласен с тобой! Потому стараюсь сначала найти понятный образ и тут же его привязать к термину, который используется в официальных описаниях. Так сказать "мостик" от "чайника" к "профи".


Продолжу...

Вот приходите вы домой (вошли в систему), подошли к телевизору, нажимаете на пульте 5 канал (обращаетесь к компоненту) и... А экран-то тёмный!
Оказывается телевизор-то не включили!!!

Так же происходит и с компонентами Линукса.
В HAL-е нужно первым делом "включить" нужные компоненты - "загрузить компонент HAL реального времени"!

Так мы подошли к понятию КОМАНДЫ.

1. loadrt - загружает компонент HAL реального времени.
Например,
loadrt stepgen step_type=0,0,0,0 , что означает: загружаем (loadrt) компонет stepgen с некоторыми установками (step_type=0,0,0,0), о которых поговорим позже.

2. addf - добавляет компонент реального времени в поток. А по-русски, эта команда определяет, где будет находиться компонент: в высокоскоростном потоке (base-thread) или в низкоскоростном потоке (servo-thread).
Выглядит это как-то так:

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread


ВАЖНО!
Эти команды должны быть обязательно! Именно они определяют: какими компонентами мы собираемся пользоваться и какие требования к этим компонентам мы предъявляем по скорости.
Хочешь быть счастливым? Будь им!
Ответить

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