Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение michael-yurov »

1240 писал(а):В это время я могу открыть(отредактировать, удалить) файл.
Сообщений о запрете таких действий не будет.
Вывод:
Станок загружает всю программу в ОЗУ.
Вывод преждевременный.
У меня на станке (не linuxcnc) можно удалить файл во время обработки, но через некоторое время станок уткнется в отсутствие продолжения файла.
Т.е. он держит в памяти примерно пол минуты будущей УП.
Если изменить выполняемый файл - изменения повлияют на последующую обработку.
Сам не проверял, но, вероятно, можно дописывать файл по ходу обработки, и система управления будет подхватывать новые части фала УП.
Правда я не знаю, можно ли удалять уже отработанную часть УП, и как вообще это можно сделать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение nkp »

да - keystick шпарит и без файла...
посмотрим далее - но минут 10 работает...
--------
а вообще команда на том же питоне для файла open что обозначает?
наверно полную загрузку в оперативку...
тогда что тут гадать )))
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Serg »

1240 писал(а):В это время я могу открыть(отредактировать, удалить) файл.
Сообщений о запрете таких действий не будет.
Вывод:
Станок загружает всю программу в ОЗУ.
Неверный вывод. Файл в Linux состоит из содержимого и имени (грубо говоря). Имя - это запись в файле каталога, которая ссылается на содержимое файла. Соотв. никто не мешает сделать несколько разных ссылок на один файл (hardlink). Удаление файла - это всего-лишь удаление такой ссылки (имени). И только с удалением последней ссылки на файл удаляется собственно сам файл. Открытие файла какой-либо программой это тоже создание ссылки на файл, только в памяти программы и без имени. Отсюда вывод: если вы удалите файл, который открыт в какой-либо программе, то вы удалите только его имя, а сам файл останется потому-что осталась "в программе" ещё одна ссылка на него и программа сможет сколь угодно долго писатьи читать его. Но как только она закроет файл, то удалится последнаая ссылка на него и ОС удалит сам файл.

P.S. В описании сделано много упрощений, чтобы можно было понять суть без изучения структуры FS.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение nkp »

michael-yurov писал(а):но через некоторое время станок уткнется в отсутствие продолжения файла.
Т.е. он держит в памяти примерно пол минуты будущей УП.
тогда как такая ситуация возможна?
еще более интересно все таки - кто знает си - как же емс загружает-читает программу?
конечно - выгодней подгружать постепенно небольшими порциями - тогда размер файла ограничивается только размером диска ...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Serg »

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

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

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

Скорее всего, в ОС имеется буфер, куда при чтении загружается кусок файла. Минимум блок (512 байт), а скорее всего кластер (обычно несколько десятков килобайт). Оттуда и берутся данные (побайтно, построчно или как угодно прикладной программе). Еще один буфер имеет право быть в самом LinuxCNC. Возможно, чтение УП происходит так:

1. открыли файл УП в режиме read-only. (fopen())
2. спозиционировались на нужное место файла (fseek())
3. прочитали сколько-то строк УП
4. закрыли файл. (fclose())
5. выполнили прочитанные строки УП
6. если не было конца УП или конца файла, повторить с 1.

При этом файл между обращениями свободен для изменения сторонними программами.
Всякие GUI типа axis читают тот же файл независимо от ядра LinuxCNC (все забываю, как оно там называется :hottabych: )
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Nick »

nkp писал(а):а вообще команда на том же питоне для файла open что обозначает?
open только открывает файл read() - читает.
При этом то, что читается в keystick - это далеко не то, что будет выполняться LinuxCNC, у него должен быть свой парсер, у gui свой (gremlin или что-то еще).
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение nkp »

Nick писал(а):что читается в keystick - это далеко не то, что будет выполняться LinuxCNC
хотелось бы конечно разобраться - если верить тому - что сам емс берет код из файла порциями - тогда бы можно было на лету вносить изменения в "неиспользуемую часть"
Аватара пользователя
Starik
Опытный
Сообщения: 136
Зарегистрирован: 13 май 2012, 21:22
Репутация: 17
Откуда: Долгопрудный

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Starik »

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

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

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

nkp писал(а):а вообще команда на том же питоне для файла open что обозначает?
наверно полную загрузку в оперативку...
на питоне не знаю, а на Си традиционно было не так. Еще не так давно память стоила достаточно дорого и ограничивать размер обрабатываемого файла размером ОЗУ было бы безрассудно (мягко говоря).
Чудес не бывает. Бывают фокусы.
1240
Мастер
Сообщения: 972
Зарегистрирован: 25 янв 2013, 17:11
Репутация: 278
Откуда: Украина, Харьков.
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение 1240 »

Торможение (ограничение) при загрузке больших файлов вызвано необходимостью отображения большого количества линий соединяющих характерные точки G0(1)XYZ.
Если отображать каждую десятую (сотую или тысячную) точку (и возможно, точки изменения направления движения) можно ли разгрузить компьютер и получить визуализацию больших программ.
Дополнительно ввести команду "РАМКА" (название условное) внутри которой LinuxCNC должен отображать все точки.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Nick »

1240 писал(а):Если отображать каждую десятую (сотую или тысячную) точку (и возможно, точки изменения направления движения) можно ли разгрузить компьютер и получить визуализацию больших программ.
Так можно пропустить что-то важное...
По идее можно попробовать добавить скриптом в код строки (AXIS, hide) (AXIS, show)
Можешь скинуть на какой-нибудь обменник пример большого кода?
(лучшк всего http://disk.yandex.ru/)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Serg »

Надо будет попробовать допилить постпроцессор, чтобы вставлял команды выключения отображения в середины траекторий. Например про многопроходной прорезке отображать только первый и последний проход.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение torvn77 »

1240 писал(а): Хотелось бы понять какой объем ОЗУ необходим для выполнения УП допустим на 100Мб?
у меня при загрузке доходило примерно до "за три гига" и вылетало.
Последний раз редактировалось torvn77 26 июн 2013, 01:32, всего редактировалось 1 раз.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение nkp »

Starik писал(а): Хотелось бы понять какой объем ОЗУ необходим для выполнения УП допустим на 100Мб?
как так цитировать получается?? (по моему автор вопроса иной...)
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение torvn77 »

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

LinuxCNC ругается на префикс кодировки

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

Некоторые редакторы (я пользовался редактором из FAR 3) при создании файла в начало пишут несколько байт, обозначающих текущую кодировку. Другие программы эти байты обычно либо используют, либо просто игнорируют.
Но только не LinuxCNC!
Снимок.png (2210 просмотров) <a class='original' href='./download/file.php?id=16067&mode=view' target=_blank>Загрузить оригинал (162.33 КБ)</a>
Вот от подобной "программы" я долго пытался добиться взаимности, пока не открыл ее двоичным редактором и не увидел в начале символы EF BB BF, которые и сбивали с толка интерпретатор G-кода.
Вложения
qq.ngc
(12 байт) 1010 скачиваний
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

Сообщение Nick »

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

Re: Сбор багов LinuxCNC ( багтрекер bug bugtracker баг )

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

Nick писал(а):А есть где-то стандарт по этому поводу?
Да, есть.
Собственно, вот http://ru.wikipedia.org/wiki/Byte_order_mark
gedit, например, их никак не показывает, зато при записи файла бережно сохраняет :)
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Axis плохо работает с подпрограммами

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

Axis плохо работает с подпрограммами
Это выражается в том, что при загрузке файла, если в подпрограмме обнаруживается ошибка, LCNC указывает не номер строки в подпрограмме, где обнаружена ошибка, а номер строки, вызвавшей эту подпрограмму (точнее, следующей за ней, но простим ему эту мелочь).
Далее, уже при работе, при вызове подпрограммы, в окне текста программы указываются вообще не те строки, которые выполняются.
Чудес не бывает. Бывают фокусы.
Ответить

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