Динамический код на банковской карте или технология 3-D Secure? Код 3d
Динамический код на банковской карте или 3-D Secure?
03 Фев.
Динамический код на банковской карте или технология 3-D Secure?
Блог | 3.02.2020
На различных тематических информационных ресурсах, посвящённых электронной коммерции и платежным картам, производители и обозреватели рассказывают об инновациях, призванных делать наши покупки в интернете еще безопаснее. В последнее время в интернете появилось множество статей о последней новинке компании Gemalto – пластиковой карте с автоматически изменяющимся кодом проверки подлинности — Dynamic Code Verification или сокращенно DCV. Особо подчеркивается высокий уровень защиты владельцев карт от мошеннических онлайн-платежей.
Как команда, имеющая непосредственное отношение к процессингу карточных платежей через интернет и радеющая за безопасность электронной коммерции, мы не могли пройти мимо предлагаемой инновации и не сравнить ее с технологией 3-D Secure, которая фактически является стандартом интернет-эквайринга в сфере защиты от мошеннических платежей.
Традиционный СVV/CVC – трехзначный код на банковской карте
Любому владельцу банковской платежной карты, который хоть раз оплачивал что-либо через интернет, хорошо известно, что для совершения платежа наряду со всеми реквизитами карты нужно ввести и трехзначный код, напечатанный на ее обратной стороне. В русскоязычном сегменте интернета эти три цифры обычно так и называют «трехзначный код». В англоязычном мире он известен как CVV (Card Verification Value) или CVC (Card Verification Code).
Изначально CVV/CVC был призван защитить электронную коммерцию от платежей, с использованием похищенных реквизитов банковских платёжных карт. В недавнем прошлом, как минимум лет 20 назад, основным источником хищения карточных реквизитов для интернет-мошенников являлся мир «оффлайна». Номер карты, имя владельца и срок ее действия можно было или подсмотреть и запомнить, когда владелец расплачивался в торговой точке, или скопировать со слип-чеков. А поскольку CVV/CVC просто печатался на обратной стороне карты, увидеть его и похитить было значительно сложнее, чем остальные карточные реквизиты.
Слип-чек – это чек, на который переносились карточные данные, эмбоссированные (или, проще говоря, выдавленные) на карте, путем ее прокатки в слип-машинке. Был такой способ приема карточных платежей, когда электронные каналы связи не были так хорошо развиты как сейчас, и торговые предприятия были оборудованы не электронными POS-терминалами, а такими вот механическими устройствами.
Однако с развитием электронной торговли защитная функция CVV/CVC постепенно утратила свою эффективность, так как мошенники начали активно использовать фишинговые методы добычи карточных данных, при которых, введенные в заблуждение, владельцы карт самостоятельно сообщали им не только выдавленные на карте реквизиты, но и тот самый CVV/CVC.
Эволюция CVV/CVC — динамический трехзначный код
Динамический код, DCV – это эволюционное развитие устаревших CVV/CVC. В отличие от них, на протяжении всего действия срока карты DCV регулярно меняется через равные промежутки времени (по умолчанию каждые 20 минут) по определенному алгоритму, известному только банку-эмитенту. Для отображения DCV в платежную карту встроен миниатюрный дисплей.
По замыслу разработчика технологии, DCV делает невозможным использование похищенных карточных реквизитов. Даже если мошенникам удалось получить полный набор данных, как максимум, через 20 минут код изменится, и попытка интернет-платежа с использованием устаревшего трехзначного кода будет отклонена банком-эмитентом.
Динамический верификационный код или 3-D Secure? Вопросы безопасности, удобства, стоимости.
Идея DCV понятна, логична и, действительно, обеспечивает более высокую защиту интернет-платежей по сравнению с использованием статичных CVV/CVC.
Но не опоздала ли технология DCV с выходом на рынок? Сможет ли она составить конкуренцию уже устоявшемуся и общепринятому стандарту в платежной индустрии — верификации владельца карты при совершении интернет-платежа c 3-D Secure? И, наконец, насколько карты с DCV могут быть удобны для эмитентов и конечных пользователей?
Вероятно, DCV могла бы стать революционно прорывной технологией обеспечения безопасности интернет-платежей, если бы в этой области уже не существовало 3-D Secure. Дело в том, что при всей своей инновационности и технологичности DCV все же уступает 3-D Secure в уровне обеспечения безопасности платежей.
Да, DCV меняется каждые 20 минут. Но при использовании современных реализаций 3-D Secure, код подтверждения платежа генерируется и сообщается владельцу карты непосредственно в процессе обработки транзакции (платежа). И поэтому, если в случае с DCV у злоумышленника теоретически есть, пусть и очень небольшой, но шанс использовать похищенные карточные данные до очередной смены DCV, то в случае 3-D Secure у мошенника такого шанса в принципе нет.
А если пластиковая карта физически украдена? DCV, в этом случае, никак не сможет защитить владельца от траты его денег мошенниками в интернет-магазинах. Конечно, банковские инструкции требуют от владельца карты незамедлительно сообщить в банк о ее утрате для немедленной блокировки. Но между хищением и обнаружением пропажи может пройти не один час, а в некоторых случаях и не один день. Этого времени более чем достаточно, чтобы мошенник выкачал с карты все деньги через интернет.
В случае, если интернет-платежи защищены 3-D Secure, преступник не сможет воспользоваться украденной картой. Но, даже если каким-то образом и сможет (например, интернет-торговец отключил опцию проверки по 3-D Secure для всех своих покупателей), правила платежных систем будут на стороне владельца карты и банка–эмитента. Если транзакция по карте, защищенной 3-D Secure, прошла без проверки плательщика (т.е. у владельца карты в процессе покупки не был запрошен код), то ответственность за такую транзакцию лежит на продавце и банке-эквайере, и в случае мошенничества деньги будут возвращены покупателю.
Возникают опасения и в отношении удобства повседневного долговременного использования карты с DCV. Далеко не все люди бережно и осторожно обращаются с куском пластика. Карта может изрядно потереться, как минимум. Она может согнуться. От нее может отколоться уголок. И, тем не менее, при всех повреждениях такую карту можно использовать при оплате через интернет. Очевидно, что с картой, оснащенной DCV, придется обращаться аккуратно, чтобы не дай бог не повредить миниатюрный дисплей. Иначе DCV продолжит меняться, но владелец карты ничего не увидит.
И также очевидно, что стоимость изготовления карты с DCV должна быть выше, чем карты с обычными CVV/CVC.
Все эти размышления дают основания полагать, что DCV пока не может на равных конкурировать с уже существующей и проверенной технологией 3-D Secure. А потому вряд ли эта технология получит широкое распространение в банках-эмитентах тех платежных систем, где 3-D Secure уже используется.
А вот в тех платежных системах, где 3-D Secure по каким-то причинам до сих пор не внедрена (например, БЕЛКАРТ или российской «Мир»), DCV может стать неплохой альтернативой.
Время покажет. К слову интернет-магазины, принимающие платежи по банковским картам через процессинговую платформу bePaid, надежно защищены от мошенничества технологией 3-D Secure и другими инновационными инструментами безопасности.
С уважением,
Команда bePaid
bepaid.by
Динамический код на банковской карте или технология 3-D Secure? | Статья
На различных тематических информационных ресурсах, посвящённых электронной коммерции и платежным картам, производители и обозреватели рассказывают об инновациях, призванных делать наши покупки в интернете еще безопаснее. В последнее время в интернете появилось множество статей о последней новинке компании Gemalto – пластиковой карте с автоматически изменяющимся кодом проверки подлинности — Dynamic Code Verification или сокращенно DCV. Особо подчеркивается высокий уровень защиты владельцев карт от мошеннических онлайн-платежей.
Как команда, имеющая непосредственное отношение к процессингу карточных платежей через интернет и радеющая за безопасность электронной коммерции, мы не могли пройти мимо предлагаемой инновации и не сравнить ее с технологией 3-D Secure, которая фактически является стандартом интернет-эквайринга в сфере защиты от мошеннических платежей.
Традиционный СVV/CVC – трехзначный код на банковской карте
Любому владельцу банковской платежной карты, который хоть раз оплачивал что-либо через интернет, хорошо известно, что для совершения платежа наряду со всеми реквизитами карты нужно ввести и трехзначный код, напечатанный на ее обратной стороне. В русскоязычном сегменте интернета эти три цифры обычно так и называют «трехзначный код». В англоязычном мире он известен как CVV (Card Verification Value) или CVC (Card Verification Code).
Изначально CVV/CVC был призван защитить электронную коммерцию от платежей, с использованием похищенных реквизитов банковских платёжных карт. В недавнем прошлом, как минимум лет 20 назад, основным источником хищения карточных реквизитов для интернет-мошенников являлся мир «оффлайна». Номер карты, имя владельца и срок ее действия можно было или подсмотреть и запомнить, когда владелец расплачивался в торговой точке, или скопировать со слип-чеков. А поскольку CVV/CVC просто печатался на обратной стороне карты, увидеть его и похитить было значительно сложнее, чем остальные карточные реквизиты.
Слип-чек – это чек, на который переносились карточные данные, эмбоссированные (или, проще говоря, выдавленные) на карте, путем ее прокатки в слип-машинке. Был такой способ приема карточных платежей, когда электронные каналы связи не были так хорошо развиты как сейчас, и торговые предприятия были оборудованы не электронными POS-терминалами, а такими вот механическими устройствами.
Однако с развитием электронной торговли защитная функция CVV/CVC постепенно утратила свою эффективность, так как мошенники начали активно использовать фишинговые методы добычи карточных данных, при которых, введенные в заблуждение, владельцы карт самостоятельно сообщали им не только выдавленные на карте реквизиты, но и тот самый CVV/CVC.
Эволюция CVV/CVC — динамический трехзначный код
Динамический код, DCV – это эволюционное развитие устаревших CVV/CVC. В отличие от них, на протяжении всего действия срока карты DCV регулярно меняется через равные промежутки времени (по умолчанию каждые 20 минут) по определенному алгоритму, известному только банку-эмитенту. Для отображения DCV в платежную карту встроен миниатюрный дисплей.
По замыслу разработчика технологии, DCV делает невозможным использование похищенных карточных реквизитов. Даже если мошенникам удалось получить полный набор данных, как максимум, через 20 минут код изменится, и попытка интернет-платежа с использованием устаревшего трехзначного кода будет отклонена банком-эмитентом.
Динамический верификационный код или 3-D Secure? Вопросы безопасности, удобства, стоимости.
Идея DCV понятна, логична и, действительно, обеспечивает более высокую защиту интернет-платежей по сравнению с использованием статичных CVV/CVC.
Но не опоздала ли технология DCV с выходом на рынок? Сможет ли она составить конкуренцию уже устоявшемуся и общепринятому стандарту в платежной индустрии — верификации владельца карты при совершении интернет-платежа c 3-D Secure? И, наконец, насколько карты с DCV могут быть удобны для эмитентов и конечных пользователей?
Вероятно, DCV могла бы стать революционно прорывной технологией обеспечения безопасности интернет-платежей, если бы в этой области уже не существовало 3-D Secure. Дело в том, что при всей своей инновационности и технологичности DCV все же уступает 3-D Secure в уровне обеспечения безопасности платежей.
Да, DCV меняется каждые 20 минут. Но при использовании современных реализаций 3-D Secure, код подтверждения платежа генерируется и сообщается владельцу карты непосредственно в процессе обработки транзакции (платежа). И поэтому, если в случае с DCV у злоумышленника теоретически есть, пусть и очень небольшой, но шанс использовать похищенные карточные данные до очередной смены DCV, то в случае 3-D Secure у мошенника такого шанса в принципе нет.
А если пластиковая карта физически украдена? DCV, в этом случае, никак не сможет защитить владельца от траты его денег мошенниками в интернет-магазинах. Конечно, банковские инструкции требуют от владельца карты незамедлительно сообщить в банк о ее утрате для немедленной блокировки. Но между хищением и обнаружением пропажи может пройти не один час, а в некоторых случаях и не один день. Этого времени более чем достаточно, чтобы мошенник выкачал с карты все деньги через интернет.
В случае, если интернет-платежи защищены 3-D Secure, преступник не сможет воспользоваться украденной картой. Но, даже если каким-то образом и сможет (например, интернет-торговец отключил опцию проверки по 3-D Secure для всех своих покупателей), правила платежных систем будут на стороне владельца карты и банка–эмитента. Если транзакция по карте, защищенной 3-D Secure, прошла без проверки плательщика (т.е. у владельца карты в процессе покупки не был запрошен код), то ответственность за такую транзакцию лежит на продавце и банке-эквайере, и в случае мошенничества деньги будут возвращены покупателю.
Возникают опасения и в отношении удобства повседневного долговременного использования карты с DCV. Далеко не все люди бережно и осторожно обращаются с куском пластика. Карта может изрядно потереться, как минимум. Она может согнуться. От нее может отколоться уголок. И, тем не менее, при всех повреждениях такую карту можно использовать при оплате через интернет. Очевидно, что с картой, оснащенной DCV, придется обращаться аккуратно, чтобы не дай бог не повредить миниатюрный дисплей. Иначе DCV продолжит меняться, но владелец карты ничего не увидит.
И также очевидно, что стоимость изготовления карты с DCV должна быть выше, чем карты с обычными CVV/CVC.
Все эти размышления дают основания полагать, что DCV пока не может на равных конкурировать с уже существующей и проверенной технологией 3-D Secure. А потому вряд ли эта технология получит широкое распространение в банках-эмитентах тех платежных систем, где 3-D Secure уже используется.
А вот в тех платежных системах, где 3-D Secure по каким-то причинам до сих пор не внедрена (например, БЕЛКАРТ или российской «Мир»), DCV может стать неплохой альтернативой.
Время покажет. К слову интернет-магазины, принимающие платежи по банковским картам через процессинговую платформу bePaid, надежно защищены от мошенничества технологией 3-D Secure и другими инновационными инструментами безопасности.
С уважением,
Команда bePaid
dev.by
Разбираем G-коды реальной программы
Добавлено в закладки: 6
Что такое G-код
G-код это язык программирования для станков с числовым программным управлением, коими и являются наши 3D принтеры. Файл с G-кодом в текстовом формате, где каждая строка кода называется кадром. Существует некая базовая часть языка, на основе которой производители станков придумывают свои подмножества языка. Например G-коды Ultimaker и RepRap немного отличаются, и оба они очень примитивны по сравнению с G-кодами для промышленных станков.
Как получить файл с G-кодом?
Для 3D принтеров G-код формируется автоматически программой “слайсером” после загрузки в неё 3D модели детали. В слайсере задаётся технология изготовления детали, на основе которой и формируется G-код.
Формируем файл с G-кодом
Рассмотрим G-код сформированный слайсером Cura для обычного RepRap 3D принтера.
Открываем слайсер Cura и перетаскиваем на рабочий стол 3D модель детали в формате STL.
Если 3D принтер не подключен к компьютеру, то можно сохранить файл кликнув мышкой на пиктограмме с изображением дискетки. Если подключен – через меню Файл.
Анализируем
Для визуального и покадрового анализа G-кода удобно использовать онлайн сервис Gcode.ws. Что мы и сделаем. Перетаскиваем туда наш файл с G-кодом и переходим на вкладку GCode.
Структура файла
Условно программу можно разделить на несколько блоков-этапов:
- Комментарии с различной информацией
- Подготовительные операции
- Рабочая часть – изготовление детали
- Заключительные операции
Комментарии
Комментарии можно вставлять отдельным кадром или после основных команд. Начинаются они со знака ; “точка с запятой”.
Подготовительные операции
Для 3D принтера перед печатью важно установить точку отсчёта координат и нагреть стол с хотэндом. В Cura подготовительные операции называются start.gcode и находятся во вкладке Start/End-Gcode.
Во первых здесь можно настроить первый блок с комментариями. Второй блок рассмотрим покадрово:
M190 S70.000000 – принтер включает нагрев стола и ждёт, пока он не нагреется до заданной температуры 70 градусов
M109 S200.000000 – принтер включает нагрев сопла и ждёт, пока оно не нагреется до заданной температуры 200 градусов
G21 – устанавливает метрическую систему координат
G90 – устанавливает абсолютные перемещения относительно нулей принтера
M82 – устанавливает управление экструдером в абсолютных измерениях
M107 – в начале печати обдув детали отключен
G28 X0 Y0 – перемещение к концевым выключателям осей X и Y для инициализации нулей по этим координатами. Направление перемещения кареток задаётся в прошивке
G28 Z0 – тоже самое теперь и для оси Z
G1 X100 Y100 Z50 {F travel} – точка, в которую выходит сопло перед началом печати
G1 – прямолинейное рабочее перемещение с заданной скоростью F
X100 Y100 Z50 – абсолютные координаты конечной точки для перемещения
{F travel} – скорость перемещения. Видим в G-коде, что она равна 4200, это мм в минуту, а мы везде задаём мм в секунду =70. Здесь участвует координата Z и она самая медленная, значит скорость перемещения ограничивается максимальной скоростью перемещения по оси Z, заданной в прошивке
G92 E0 – обнуляет количество выдавленного пластика
G1 F200 E4 – выдавливает E4 – 4 мм прутка со скоростью F200 – 200 мм в минуту
G1 {F travel} – задаёт скорость для дальнейших рабочих перемещений, пока она не изменится следующей командой
M117 Printing… – выводит на дисплей сообщение Printing…
Рабочая часть – изготовление детали
Рабочая часть состоит в основном из перемещений и выдавливания пластикового расплава.
G0 – холостой ход без выдавливания пластика.
M106 S89 – включился обдув детали со скоростью S89 из диапазона 0-255
Сработало расширение TweakAtZ для уменьшения температуры стола после печати первых слоёв до 50 градусов
M140 S50.000000 – команда для изменения температуры стола без ожидания и остановок
Отвод сопла для охлаждения детали
G4 P3879 – Время ожидания в миллисекундах P3879 – 3,879 секунд
Заключительный код
M104 S0 – Изменение температуры сопла без ожидания. S0 – отключение нагрева
G91 – устанавливает перемещения в приращениях, то есть если пишем X10, то сопло перемещается на 10 мм в “плюс” относительно текущей координаты. Иногда используется при настройке по оси Z
G1 E-1 F300 – втягивание экструдером E-1 – 1 мм прутка
M84 – отключение шаговых двигателей
В заключение
Если посмотреть на страницу wiki с описание G-кодов можно ужаснуться их количеству, а если как мы посмотреть в реальный код, оказывается их используется очень мало и поэтому код легко читается и понимается.
Ссылка на обсуждение статьи на форуме.
Метки: Cura   2015-11-30      Раздел: Обзор, Слайсеры   Автор: AKDZG Просмотров: 56 477   Нет комментариев
3deshnik.ru
G-коды — Энциклопедия ТриДэшника
Эта страница пытается описать все разнообразие "G-кодов", используемые в RepRap прошивках. Коды для перемещения печатающие головки взяты с NIST RS274NGC G-code standard, поэтому RepRap прошивки вполне пригодны для постройки ЧПУ станков и аналогичных устройств. Смотрите так же История G-кодов.
Есть несколько способов подготовить G-код для 3D принтера. Одним из способов является использование "слайсера", например Slic3r, Skeinforge или Cura. Данные программы берут CAD модель, нарезают ее на слои, и формируют G-код для каждого слоя. "Слайсинг" самый простой способ перейти от 3D-модели к напечатанному изделию, но при их использовании пользователь приносит в жертву некоторую гибкость. Еще один вариант для создания G-кодов является использование более низкоуровневых библиотек, таких как mecode. Библиотеки mecode дают вам точный контроль над траектории движения инструмента, она может быть полезна при печати сложных и ответственных моделей, когда обычные "слайсеры" не справляются с поставленной задачей. Последним и самым трудоемким способом является написание g-кода самостоятельно. Этот способ может быть полезен при печати простых моделей на этапе тестирования и калибровки 3D принтера.
Поскольку существует много различных прошивок, реализующие новые или специфические функции была создана основная страница RepRap кодов. Целью которой является предотвращение повторного использования одних и тех же g-кодов для двух разных задач. Из за большого числа пользователей и разработчиков существует правило: добавь новый код сюда, а затем реализуй его.
Но человеческая природа такова, что не всегда это делается согласно общепринятым правилам. В таких случаях правило гласит, что более поздние публикация кода на этой странице является устаревшей и должна быть изменена, если нет на то более веской причины, например общий стандарт g-кодов. Обратите внимание, что основной датой является дата публикации здесь, а не дата реализации.
Введение
Типичный кусок G-кода, для RepRap 3D принтера выглядит следующим образом:
N3 T0*57 N4 G92 E0*67 N5 G28*22 N6 G1 F1500.0*82 N7 G1 X2.0 Y2.0 F3000.0*85 N8 G1 X3.0 Y3.0*33G-коды также могут быть сохранены в файл на SD карту. Файл, содержащий RepRap G-код, обычно, имеет расширение '.g' , '.gco' или '.gcode' . Файлы для BFB / RapMan имеют расширение '.bfb' . G-код полученный с помощью "слайсера" может выглядеть следующим образом:
G92 E0 G28 G1 F1500 G1 X2.0 Y2.0 F3000 G1 X3.0 Y3.0Смысл всех этих символов и цифр поясняется ниже.
"Слайсеры" добавляют скрипты из G-кодов в начало и конец файла для выполнения определенных действий до и/или после печати, таких как калибровка рабочей зоны, нагрев/ охлаждение нагревательного стола и печатающей головки (HotEnd), выполние скрипта вытирания "соплей" перед старом печати и многое другое. Более подробную информацию на страницах: Стартовый G-код и Финишный G-код.
Чтобы выяснить, какие G-коды поддерживаются в каждой из прошивок, представлена таблица, прикрепленная в описание к каждой команде:
Обозначения:
{{yes}} G-код полностью поддерживается программно-аппаратными средствами. {{partial}} or {{experimental}} Частичная поддержка G-кода. Часто требуется проверка исходного кода прошивки или переключать конфигурационные переключатели на материнской плате. {{automatic}} Встроенное программное обеспечение обрабатывает этот G-код автоматически, так что нет никакой необходимости посылать данную команду. Примером может служить включение/выключение питания, командой M80 / M81 в прошивке Teacup. {{???}} Не известно поддерживает ли данный G-код прошивка. Вы можете проверить это самостоятельно, прежде чем его использовать. {{no}} Прошивка не поддерживает данный G-код. {{deprecated}} Прошивка конфликтует с этом G-кодом. Автору(ам) прошивки следует изменить устаревший G-код в последней поддерживаемой версии прошивки.Синтаксис (Fields)
RepRap G-код представляет собой список строк, разделенных пробелами или разрывом строки. Строка может быть воспринята как команда, параметр или использована для любого другого цели. каждая строка состоит из одной буквы с числом, написанными слитно, или может быть использована как флаг. В файле содержится информация о значении строки (см список ниже в этом разделе). Числа могут быть целыми (128), или дробными (12.42), в зависимости от контекста. Например, координата Х может принимать целые значения ( 'x175' ) или дробные ( 'X17.62' ), но выбор порядкового номера экструдера 2,76 будет бессмысленным. В этом описании числа в строке (команде) представлены в виде 'nnn' .
В RepRap прошивках некоторые параметры могут состоять из нескольких отдельных цифровых значений, разделенных двоеточием. Как правило, это используется для задания параметров нескольких экструдеров. Если установлено лишь одно значение, без разделения двоеточием, то это значение применяется ко всем экструдерам.
Gnnn | Стандартная команда, переход к заданной точке |
Mnnn | RepRap- ориентированные команды. Например включение вентилятора |
Tnnn | Выберите инструмент NNN. В RepRap, инструмент, как правило, ассоциируется с соплом или печатающей головкой, которая может работать с одиним или более экструдеров. |
Snnn | Команды, такие как время в секундах; температура; напряжение. |
Pnnn | Команды, такие как время в миллисекундах; для задания значений Kp для настройки ШИМ (PID) |
Xnnn | Координата X, используется обычно для перемещения по данной координате. Может быть целым или дробным числом. |
Ynnn | Координата Y, используется обычно для перемещения по данной координате. Может быть целым или дробным числом. |
Znnn | Координата Z, используется обычно для перемещения по данной координате. Может быть целым или дробным числом. |
U,V,W | Дополнительные координатные оси (в RepRap прошивках) |
Innn | Параметр смещения координаты Y при движении по дуге. Или для задания значений Ki для настройки ШИМ (PID) |
Jnnn | Параметр смещения координаты Y при движении по дуге |
Dnnn | Параметр используется для задания диаметра. Или для задания значений Ki для настройки ШИМ (PID) |
Hnnn | Параметр используемый для выбора номера печатающей головки для ШИМ (PID) регулирования |
Fnnn | Скорость подачи в мм в минуту. (Скорость движения печатающей головки) |
Rnnn | Параметр используемый для задания температуры |
Qnnn | Не используется в настоящее время |
Ennn | Длина экструдирования (выдавливания пластика). Используется и задается так же как для координат X, Y и Z, но применима к длине нити. |
Nnnn | Номер строки. Используется для запроса повторной передачи в случае возникновения ошибок. |
*nnn | Контрольная сумма. Используется для проверки на наличие ошибок. |
Комментарии
G-код комментария начинается с точки с запятой, и заканчивается в конце строки:
N3 T0*57 ; Это комментарий N4 G92 E0*67 ; Это тоже комментарий N5 G28*22Комментарии и пробелы будут игнорироваться RepRap принтером. Лучше убрать их из файла перед отправкой G-кода на принтер, так как это экономит полосу пропускания.
Специальные символы
N: Номер линии
Пример: N123
Если присутствует, то номер строки должен стоять в начале строки. Для G-кода, хранящегося на SD картах номер строки обычно опускается.
Если функция включена, то RepRap прошивка считает, что номер строк увеличится на 1, и если этого не произойдет оно выдаст ошибку. Но вы можете сбросить счетчик с помощью команды M110 (смотри ниже).
*: Контрольная сумма
Пример: *71
Если команда присутствует, контрольная сумма должна быть последним полем в строке, но перед комментарием. Для G-кода, хранящегося SD картах контрольная сумма обычно опускается.
Если проверка поддерживается, то RepRap сверяет контрольную сумму с локально вычисленным значением и если они отличаются, повторно запрашивает строку с данным номером.
Проверка
Пример N123 [...произвольный G-код...] *71
RepRap прошивка проверяет номер строки и контрольную сумму. Вы можете пропустить оба этих параметра, но в таком случае прошивка не сделает проверку. Если передается только один параметр, прошивка выдает ошибку. Должны быть заданы обе переменные.
Контрольная сумма "CS" для строки G-кода "cmd" (включая номер его строки) вычисляет путем исключение байтов в строке до символа * следующим образом:
int cs = 0; for(i = 0; cmd[i] != '*' && cmd[i] != NULL; i++) cs = cs ^ cmd[i]; cs &= 0xff; // Безопасное программирование...и значение прибавляет как десятичное целое число к команде после *.
Буферизация
Если буферизация поддерживается, прошивка сохраняет некоторый объем g-команд во временную память, буфер для последующего выполнения. Это позволяет избежать заметных задержек при передаче данных. Как только поступает команда она буферизируется и хранится локально до ее выполнения. Если локальный буфер заполнен, то получение команд откладывается до тех пор пока не освободится буфер. Таким образом достигается управление потоком данных.
Как правило, буферизируются команды движения (перемещения): G0-G3 и G28-G32. Teacup Firmware буферезируются так же некоторые команды настроек: G20, G21, G90 и G91. Все остальные команды G, M или T не сохраняются в буфере.
RepRap прошивки также организуют внутреннюю очередь, чтобы гарантировать, что некоторые G-коды (например, M106) выполнялись в правильном порядке, а не произвольном. Эта функция недоступна в RepRapFirmware-dc42.
Когда небуферизованная команда получена она сохраняется, но оно не будет выполнена, пока буфер не будет исчерпан, и только после этого команда будет выполнена. Таким образом, контроллер остановится на одной из этих команд, пока не выполнит его. Короткие паузы между этими командами и любые, следующие за ними, не влияют на производительность.
G-команды
G0 & G1: Перемещение
- G0 : Быстрое (холостое) линейное перемещение
- G1 : Линейное перемещение
RepRap прошивки одинаково воспринимают команды G0 и G1, так как разница между ними не велика 2
1. G1 F1500 2. G1 X50 Y25.3 E22.4В вышеупомянутом примере мы устанавливаем скорость перемещения в 1500 мм/минуту в первой строке, затем с этой заданной скоростью перемещаемся на 50 мм по Оси X и на 25.3 мм по Оси Y, выдавливая 22.4 мм нити между двумя точками.
1. G1 F1500 2. G1 X50 Y25.3 E22.4 F3000Однако в данном примере, в первой строке мы устанавливаем скорость перемещения в 1500 мм/минуту, но перемещаемся по координатам уже со скоростью 3000 мм/минуту так как мы задали новую скорость в конце второй строки.
RepRap специально рассматривает скорость перемещения как переменную (например, X, Y, Z и E), чтобы линейно интерполировать данное значение. Это дает полный контроль над ускорением и замедлением головки принтера, чтобы обеспечить плавное синхронное движение, а так же равномерно выдавливать необходимый объем пластика. 3
Для реверса экструдера (ретракта) на заданную величину (например, чтобы уменьшить внутреннее давление пластика в печатающей головки во время холостого перемещения, во избежания потеков пластика - "соплей") просто используются команды G0 или G1, чтобы передать значение Е, который меньше, чем значения величины выдавленного пластика.
Пояснения1Некоторые прошивках позволяют включить или отключить функцию слежения за концевыми выключателями во время движения. Пожалуйста, проверьте корректно ли ваша прошивка работает с данными командами, так как неправильная работа данных команд может привести к поломкам. В RepRap прошивках, на дельта принтере используются параметры S1 или S2 для вызова параметров XYZ используются для обозначения положений башен двигателей вместо положения головы, а также для того, чтобы включить срабатывание концевых выключателей, при параметре S1.
2В RS274NGC Spec, G0 является Быстрым перемещением , которая была использован для перемещения между текущей точкой в пространстве и новой точкой максимально быстро и эффективно, насколько это возможно. А G1 является Контролируемым перемещением , которая была использована для перемещения между текущей и новую точкой как можно точнее.
3Некоторые прошивках могут не поддерживать настройки скорости подачи, написанные в одной строчке с командами перемещения.
4В RepRap прошивках предусмотрен дополнительный параметр 'R1', чтобы сообщить принтеру, чтобы он вернулся к координатам на которых печать была ранее приостановлена. Если этот параметр используется и код содержит буквы оси, смещение будет добавлено к координатам паузы (например, G1 R1 Z5).
Некоторые старые машины, ЧПУ или любые другие, использует для быстрого перемещения движение не по прямой линии. Это также верно для некоторых не декартовых принтеров, например дельта или полярные принтеры, которые движутся быстрее и легче в кривой.
G2 & G3: Контроль криволинейного движения
Использование G2 Xnnn Ynnn Innn Jnnn Ennn Fnnn (Дуга по часовой стрелке) G3 Xnnn Ynnn Innn Jnnn Ennn Fnnn (Дуга против часовой стрелке) Параметры Xnnn Позиция для перемещения по оси X Ynnn Позиция для перемещения по оси Y Innn The point in X space from the current X position to maintain a constant distance from Jnnn The point in Y space from the current Y position to maintain a constant distance from Ennn Количество пластика, которое нужно выдавить между начальной и конечной точкой перемещения Fnnn Скорость перемещения в минуту между начальной и конечной точкой (если поддерживается) Пример G2 X90.6 Y13.8 I5 J10 E22.4 (Переместится по часовой стрелке от начальной точки (X=90.6,Y=13.8), с центром в точке (X=current_X+5, Y=current_Y+10), выдавить 22.4 мм материала между началом и концом движения) G3 X90.6 Y13.8 I5 J10 E22.4 (Переместится против часовой стрелке от начальной точки(X=90.6,Y=13.8), с центром в точке (X=current_X+5, Y=current_Y+10), выдавить 22.4 мм материала между началом и концом движения) Примечание1В Marlin прошивке не реализовано для 'DELTA' и 'Scara' принтеров.
G4: Ожидание (Пауза)
Pause the machine for a period of time.
Parameters Pnnn Время ожидания, в миллисекундах Snnn Время ожидания в секундах (только на RepetierFirmware, Marlin, Smoothieware и RepRapFirmware 1.16 и позже) Пример G4 P200В этом случае принтер не будет перемещаться и будет ничего не делать 200 миллисекунд. Во время ожидания по-прежнему будет сохраняться и контролироваться состояние принтера (например температура сопла и стола).
В прошивках Marlin, Smoothie и RepRapFirmware, параметр "S" будет ждать секунды, а параметр "P" будет ждать миллисекунды. Что означает, что команды "G4 S2" и "G4 P2000" равны (эквивалентны).
G6: Прямое перемещение по шагам
Прямое не интерполированное и не синхронизированное (кинематически) управление одним или несколькими шаговыми двигателями. Переменные могут быть в линейных единицах измерения (например, мм или дюймах на <код> DELTA </ код>) или в градусах (SCARA). Эта команда полезна для инициализации, диагностики и калибровки, после чего должна быть отключена в штатном режиме работы. Этот тип перемещения может быть потенциально опасным, особенно для delta робота, поэтому должно быть сделано все возможное, чтобы ограничить пределы перемещения, для предотвращения вибраций и ударов частей принтера (тверкинг) и их предотвратить их повреждение.
Параметры Annn Количество шагов или угол поворота оси (привода) A Bnnn Количество шагов или угол поворота оси (привода) B Cnnn Количество шагов или угол поворота оси (привода) C R Флаг относительного движения Пример SCARA робота G6 A45 ; перемещение оси A в SCARA роботе на угол 45° G6 B20 R ; перемещение оси B в SCARA роботе на угол 20° по часовой стрелке Пример DELTA робота G6 C10 R ; Перемещение каретки DELTA робота по оси C на 10ммG10: Смещение инструмента (печатающей головки)
Использование G10 Pnnn Xnnn Ynnn Znnn Rnnn Snnn1 Параметры Pnnn Номер инструмента (сопла) Xnnn смещение по оси X Ynnn смещение по оси Y U,V,Wnnn смещение осей U, V и W 5 Znnn смещение по оси Z 2 Rnnn температура в режиме ожидания(s) Snnn Активная температура(s) Пример G10 P2 X17.8 Y-19.3 Z0.0 (устанавливает смещение для инструмента (или в старых реализациях печатающая головка) значения X, Y и Z определены. ) G10 P1 R140 S205 (установка режима ожидания с поддержанием температуры3 для первой печатающей головки)Помните, что любой параметр, который вы не укажете, автоматически примет последнее известное значение. Это означает, что вы хотите установить Z0.0. RepRap прошивка назначит параметры инструмента, только если указан номер инструмента.
Значение R установка температуры в режим ожидания в градусах Цельсия оС, который будет применены для Печатающей головки (HotEnd), а значение S является его текущей температурой. Если вы не хотите, чтобы печатающая головка меняла температуру в режиме ожидания, установите оба значения одинаковыми. Смотрите T-код (выбор инструмента) ниже. В случаях с несколькими обогревательными элементами для них параметры задаются следующим образом: R100.0: 90,0: 20,0 S185.0: 200,0: 150,0.
Смотрите так же M585.
Примечания1 Marlin использует G10 / G11 для выполнения отката / подачи. Версия RepRapPro Марлин поддерживает G10 для коррекции инструмента (печатающей головки). Smoothie использует G10 для ретракта и G10 Ln для установки координат рабочей области.
2It's usually a bad idea to put a non-zero Z value in as well unless the tools are loaded and unloaded by some sort of tool changer or are on indepedent carriages. When all the tools are in the machine at once they should all be set to the same Z height.
3If the absolute zero temperature (-273.15) is passed as active and standby temperatures, RepRapFirmware will only switch off the tool heater(s) without changing their preset active or standby temperatures. RepRapFirmware-dc42 does not support this setting.
4The NIST G-code standard mentions an additional L parameter, which is ignored (except in smoothie). This command is subject to discussion.
5Tool offsets are applied after any X axis mapping has been performed. Therefore if for example you map X to U in your M563 command to create the tool, you should specify a U offset not an X offset. If you map X to both X and U, you can specify both offsets.
G10: Откат пластика (Ретракт)
Параметры Snnn длинна отката (S1 = длинный откат, S0 = короткий откат = по умолчанию) (только RepetierFirmware) Пример G10Откат нить в соответствии с настройками M207 (Marlin, RepRapFirmware) или в соответствии со значением S (Repetier).
RepRapFirmware распознает команду G10 в качестве команды, чтобы установить смещение инструмента и / или температуры, если параметр Р присутствует, и как команду отката, если данная переменная отсутствует.
G11: Подача пластика
Параметры Snnn длинна отката (S1 = длинный откат, S0 = короткий откат = по умолчанию) (только RepetierFirmware) G11Подача / восстанавливает положение пластика в соответствии с настройками M208 (Marlin, RepRapFirmware) или в соответствии со значением S (Repetier).
G17..19: Выбор плоскости (Специфично для ЧПУ)
Эти коды установить текущую плоскость следующим образом:
- G17 : XY (по умолчанию)
- G18 : ZX
- G19 : YZ
G20: Установка единиц измерения в дюймах
Пример G20С этого момента отсчет будет вестись в дюймах.
G21: Установка единиц измерения в миллиметрах
Пример G21С этого момента отсчет будет вестись в миллиметрах. (По умолчанию для RepRap)
G22 & G23: Откат (ретракт)/подача средствами прошивки
Usage G22 ; Откат G23 ; Противооткат/ПодачаРеализуется прошивкой для выполнения отката/подачи, вместо того, чтобы генерировать слайсером движение оси E (подачи экструдера) командой G1. Длинна отката/подачи и скорость реализуется программно-аппаратными средствами.
G28: Перемещение в начало ("домой")
Параметры Эта команда может быть использована без каких-либо дополнительных параметров. X Флаг, чтобы переместится к началу по оси X Y Флаг, чтобы переместится к началу по оси Y Z Флаг, чтобы переместится к началу по оси Z ПримерG28 ; Перемещение в начало всех осей G28 X Z ; Перемещение в начало по осям X и ZКогда прошивка принимает эту команду, она быстро перемещает указанные оси (или все оси, если не переданы параметры) к концевым выключателям, отступает от каждого концевого выключателя на небольшое расстояние, и медленно подходит к концевикам, данный метод позволяет повысить точность позиционирования. Этот процесс, известный как " Возврат в исходное положение, необходимо, чтобы определить положение кареток. Некоторые прошивки могут запретить движение за пределы концевых выключателей или запретить любые другие операции, пока не будет выполнена команда G28.
'X' , 'Y' и 'Z' параметры действуют только в качестве флагов. Любые вводимые координаты игнорируются. Например, G28 Z10 выполнится так же как и G28 Z. Delta принтеры не имеют домашнего положения по каждой из осей, отдельный их запуск может привести к краху механики. На данных принтерах в исходное положение должны двигаться все три оси одновременно.
Marlin прошивка (версия 1.1.0 и выше) имеет функцию под названием Z_SAFE_HOMING для принтеров, которые используют Z щуп (механизм калибровки) для возврата в исходное положение вместо концевого выключателя. С помощью этой опции, оси XY возвращаются в исходное положение первыми, а затем ось Z безопасно приближается к соплу.
RepRapFirmware использует макро-файлы для возврата в исходное положение всех осей или отдельных осей. Для всех осей используется файл homeall.g. Для отдельных осей ''homex.g, homey.g, или homez.g. На Delta принтерах, команда G28 всегда будет возвращать в исходное положение все три оси, вне зависимости от параметров X Y Z и использует файл homedelta.g.
Поскольку команда G28 специфична, не включайте ее в конец вашего g-кода. В принтерах с декартовой системой координат при подаче команды G28, все оси поедут в исходное положение и могут задеть напечатанную модель, или вообще повредить механические части. Лучше задавайте координаты перемещения осей в конце печати явно, используя команды: G0 или G1
Примечания1 MK4duo имеет параметр B, который сообщает принтеру, что необходимо вернуться к последним координатам до возврата в исходное положение.
G29: Полная авто калибровка
Эта команда использует щуп для измерения высоты стола в 3-х или более точках, чтобы определить его наклон и общую ровность. Затем принтер корректирует положение головки относительно стола. Оси принтера должны быть в начальном положении, команда G28, перед тем как запускать авто калибровку.
Каждая прошивка ведет себя по-разному и калибровка зависит от настроек и заложенного алгоритма. Например, Marlin 1.0.2 обеспечивает 3 различных типов автоматического выравнивания слоя и вариант ручного выравнивания стола. Смотрите документацию по каждой прошивке, что бы корректно настроить свой принтер.
Использование G29 G29 Snnn Параметры Snnn зависит от поведения прошивки Pfile.csv национальный параметр имени файла карты высот (только для прошивки RepRapFirmware) ПримерG29 ; Калибровка стола и включение компенсации кривизны G29 S2 ; специальный оператор, смотри документациюG29 Авто калибровка в прошивке Marlin
Marlin 1.0.2 и более ранние версии поддерживают три варианта автоматической калибровки стола:
- По 3-ем точкам для корректировки наклона стола.
- Метод планарной сетки (не поддерживается Дельта принтеры). Калибровка по сетке для получения матрицы с последующей корректировкой кривизны и наклона стола по методу "наименьших квадратов"
- Метод билинейной сетки (только Дельта принтеры). Калибровка по сетке, с помощью билинейной интерполяции для корректировки неровной кровати.
Marlin 1.1.0 и выше использует метод билинейной сетке, который будет использоваться на всех типах механик, а не только на Дельтах. Это предпочтительный путь развития
G29 Ручная калибровка в Marlin
В прошивке Marlin (версия 1.0.2 и выше) устанавливается параметром MESH_BED_LEVELING. Используется на принтерах, без датчика авто калибровки. Эта функция выравнивания стола компенсирует неровности оси Z поперек поверхности слоя с использованием сетки и билинейной интерполяции.
Использование ручной калибровки столаG29 S1 ; Переход к первой точке и ждать замер G29 S2 ; Сохранить положение данной точки по оси Z, и перейти к следующей G29 S3 Xn Yn Zn.nn ; Изменение высоты одной точки Опции для параметра S S0 Произвести замер сетки S1 Начать замер точек карты S2 Замер следующей точки S3 Xn Yn Zn.nn Вручную изменить одну точку S4 Zn.nn Установить смещение оси z. положительное значение от стола, отрицательно - ближе к столуG29 in Repetier firmware
Repetier firmware since v0.91 supports G29 with the optional Snnn parameter as described below. Useful to simply detect the Z bed angle so you can manually readjust your bed and get it as close to in plane as possible. If you wish to apply automatic software Z plane compensation on Repetier, use G32 instead with firmware 0.92.8 and above.
S0 Default value. Z bed heights are calculated at the measured points, relative to current Z position before issuing G29. S1 Same as S0, except printer immediately moves to Z maximum position (Z max endstop required!), and calculates new Z maximum height. You must first issue G28 Z to home to Z maximum position before issuing G29 Snnn for this to work correctly, or the printer height will be invalid. S2 Same as S1, except new calculated Z height is also stored to EEPROM.G29 in RepRapFirmware
RepRapFirmware:
S0 (default if no S parameter) Probe the bed, save the height map in a file on the SD card, and activate bed compensation. The default folder for the height map file is /sys and the default file name is heightmap.csv. S1 Load the height map from file and activate bed compensation. The default folder and filename as for S0. S2 Clear bed height mapTo define the grid, see M557.
G29.1: Настройка положения щупа Z
Пример G29.1 X30 Y20 Z0.5Установка положения устройства авто-калибровки (щупа) оси Z относительно сопла. Смещение будет вычисляться по всем осям.
G29.2: Set Z probe head offset calculated from toolhead position
Example: G29.2 Z0.0
Set the offset of the Z probe head. The offset will be subtracted from all probe moves. The calculated value is derived from the distance of the toolhead from the current axis zero point.
The user would typically place the toolhead at the zero point of the axis and issue the G29.2 command.
G30: Single Z-Probe
Usage G30 Pnnn Xnnn Ynnn Znnn Hnnn Snnn Parameters Pnnn Probe point number Xnnn X coordinate Ynnn Y coordinate Znnn Z coordinate Hnnn Height correction Snnn Set parameter Examples G30 Examples (RepRapFirmware) G30 ; Probe the bed at the current XY position. When the probe is triggered, set the Z coordinate to the probe trigger height. G30 S-1 ; Probe the bed at the current XY position. When the probe is triggered, do not adjust the Z coordinate. G30 P0 X20 Y50 Z-99999 ; Probe the bed at X20 Y50 and save the XY coordinates and the height error as point 0 G30 P3 X180 Y180 Z-99999 S4 ; Probe the bed at X180 Y180, save the XY coordinates and the height error as point 3 and calculate 4-point compensation or calibration G30 P3 X180 Y180 Z-99999 S-1 ; As previous example but just report the height errorsIn its simplest form probes bed at current XY location.
RepRapFirmware supports additional behaviour: if a Pn field is specified the probed X, Y, and Z values are saved as point n on the bed for calculating the offset plane or for performing delta printer calibration. If X, or Y, or Z values are specified (e.g. G30 P1 X20 Y50 Z0.3) then those values are used instead of the machine's current coordinates. A silly Z value (less than -9999.0) causes the machine to probe at the current point to get Z, rather than using the given value. If an S field is specified (e.g. G30 P1 Z0.3 S) the bed plane is computed for compensation and stored. The combination of these options allows for the machine to be moved to points using G1 commands, and then probe the bed, or for the user to position the nozzle interactively and use those coordinates. The user can also record those values and place them in a setup GCode file for automatic execution.
RepRapFirmware uses the value of the S parameter to specify what computation to perform. If the value is -1 then the Z offsets of all the points probed are printed, but no calibration is done. If the value is zero or not present, then this specifies that the number of factors to be calibrated is the same as the number of points probed. Otherwise, the value indicates the number of factors to be calibrated, which must be no greater than the number of points probed. In version 1.09, the number of factors may be 3, 4 or 5 when doing auto bed compensation on a Cartesian or CoreXY printer, and 3, 4, 6 or 7 when doing auto calibration of a Delta printer.
RepRapFirmware supports an optional H parameter, which is a height correction for that probe point. It allows for the Z probe having a trigger height that varies with XY position. The nominal trigger height of the Z probe (e.g. at bed centre) is declared in the Z parameter of the G31 command in the config.g file. When you probe using G30 and the probe triggers, the firmware will assume that the nozzle is at the nominal trigger height plus the value you have in the H parameter.
1MK4duo Firmware support an optional parameter for Autocalibration Delta.
Usage G30 Xnnn Ynnn Znnn Annn E R I D T S U Parameters Xnnn X coordinate Ynnn Y coordinate Znnn Z coordinate Annn A Autocalibration width nnn precision E Adjust Endstop R Adjust Endstop & Delta Radius I Adjust Tower D Adjust Diagonal Rod T Adjust Tower Radius Sn Stows the probe if 1 (default=1) Un <bool> with a non-zero value will apply the result to current zprobe_zoffsetG31: Set or Report Current Probe status
Usage G31 Pnnn Xnnn Ynnn Znnn Cnnn Snnn Parameters Pnnn Trigger value Xnnn Probe X offset1 Ynnn Probe Y offset1 Znnn Trigger Z height Cnnn Temperature coefficient2 Snnn Calibration temperature2 Examples G31 P500 Z2.6 G31 X16.0 Y1.5When used on its own this reports whether the Z probe is triggered, or gives the Z probe value in some units if the probe generates height values. If combined with a Z and P field (example: G31 P312 Z0.7) this will set the Z height to 0.7mm when the Z-probe value reaches 312 when a G28 Z0 (zero Z axis) command is sent. The machine will then move a further -0.7mm in Z to place itself at Z = 0. This allows non-contact measuring probes to approach but not touch the bed, and for the gap left to be allowed for. If the probe is a touch probe and generates a simple 0/1 off/on signal, then G31 Z0.7 will tell the RepRap machine that it is at a height of 0.7mm when the probe is triggered.
In RepRapFirmware, separate G31 parameters may be defined for different probe types (i.e. 0+4 for switches, 1+2 for IR probes and 3 for alternative sensors). To specify which probe you are setting parameters for, send a M558 command to select the probe type before sending the G31 command.
In Repetier, G31 supports no parameters and simply prints the high/low status of the Z probe.
Notes1X and Y offsets of the Z probe relative to the print head (i.e. the position when the empty tool is selected) can be specified in RepRapFirmware. This allows you to calculate your M557 probe coordinates based on the geometry of the bed, without having to correct them for Z probe X and Y offset. It also provides more accurate bed compensation.
2In RepRapFirmware, additional parameters 'S' (bed temperature in oC at which the specified Z parameter is correct, default is current bed temperature) and 'C' (temperature coefficient of Z parameter in mm/oC, default zero) can be set for the alternative (ultrasonic) sensor. This is useful for probes that are affected by temperature.
G31: Стыковка с механизмом авто калибровки
G32: Probe Z and calculate Z plane
Usage G32 G32 Snnn Parameters Snnn Store transformation matrix after probing1 Examples G32 G32 S2Probes the bed at 3 or more pre-defined points (see M557) and updates transformation matrix for bed leveling compensation.
RepRapFirmware executes macro file bed.g if present instead of using the M557 coordinates.
Notes1Currently only Repetier firmware v0.92.8 and higher have working support for an optional Snnn parameter. The numeric value sets the behavior that occurs immediately after point probe and transformation matrix calculation:
S0 Default value. Transformation matrix is updated in RAM but is not stored to EEPROM. Z bed height not calculated. S1 Transformation matrix is updated in RAM but is not stored to EEPROM. Printer immediately moves to Z maximum position (Z max endstop required!), and calculates new Z maximum height. You must first issue G28 to home to Z maximum position before issuing G32 Snnn for this to work correctly, or the printer height will be invalid. S2 Same as S1, except transformation matrix and Z max heights are also stored to EEPROM. S3 Transformation matrix is stored to EEPROM. Z bed height not calculated.G32: Расстыковка с механизмом авто калибровки
G33: Замер/вывод/корректировка карты неровностей
3deshnik.ru
подборка исходных кодов классических игр / Хабр
Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.Исторически так сложилось, что видеоигры не делятся исходниками. Конечно, они ведь предназначены для игроков. Но для программистов там всегда есть, на что посмотреть. И некоторые игры всё-таки выпускали свои исходники. А я давно намеревался сделать такую подборку.
К сожалению, почти все игры – для PC. Найти исходники для консолей или аркад почти нереально, и большинство программистов не в курсе различий подходов к программам на платформах, отличных от PC.
Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.
Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.
Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?
Итак, приступим (в хронологическом порядке):
Colossal Cave Adventure (1976)
![](/img/kod-3d_9.jpg)
Разработчик: William Crowther and Don Woods Издатель: Разные. Платформа: PDP-10 и друзья.
“You are in a maze of twisty little passages, all alike.” («Вы находитесь в лабиринте из неотличимых друг от друга небольших извилистых проходов»).
Возможно, это не на 100% коммерческая игра. Но её продавали, кроме того, она имеет историческую важность. И, кстати, именно по мотивам названия этой игры все приключенческие игры называются adventure.
Оригинал был написан на Fortran, в котором современным программистам будет сложновато разобраться. Но последние версии были на C.
Исходники: rickadams.org/adventure
Catacomb (1989)
Разработчик: John Carmack Издатель: Softdisk Платформа: Apple II / DOS
Не путайте с Catacomb 3D. Это ранняя двумерная версия игры. Разработана Кармаком до создания id и полностью написана на Turbo Pascal.
Исходники (DOS): github.com/FlatRockSoft/Catacomb
Prince Of Persia (1989)
![](/img/kod-3d_10.jpg)
Разработчик: Jordan Mechner Издатель: Brøderbund Платформа: Apple II / DOS / many more Обзор кода: fabiensanglard.net
Prince Of Persia произвёл фурор благодаря плавной анимации, голливудскому стилю подачи истории и интересному геймплею.
Написана полностью на ассемблере, что затрудняет задачу обзора кода. Рекомендую посмотреть интервью с Джорданом Мехнером, где он делится деталями о создании игры.
Исходник (Apple II): github.com/jmechner/Prince-of-Persia-Apple-II
SimCity (1989)
![](/img/kod-3d_11.jpg)
Разработчик: Maxis Издатель: Maxis / Brøderbund Платформа: All
Игра начала новый жанр. В основе алгоритма – симуляция города посредством клеточных алгоритмов. Хороший пример кода, который стоит изучить для понимания принципов работы. Исходники для unix-порта 1990 года были выпущены в 2008 году.
Исходники (Unix version): weblogs.asp.net/bsimser/simcity-source-code-released-to-the-wild-let-the-ports-begin
Hovertank 3D / Catacomb 3D (1991)
Разработчик: id Software Издатель: Softdisk Платформа: DOS
Первая веха в истории трёхмерных шутеров id Software. Эти игры используют технику raycasting, которая была улучшена в следующем хите, Wolfenstein, где были добавлены текстуры.
Исходники: github.com/FlatRockSoft/Catacomb3Dgithub.com/FlatRockSoft/Hovertank3D
Star Control II (1992)
Разработчик: Toys for Bob Издатель: Accolade Платформа: DOS / 3D0
Уникальная игра, не вписывающаяся ни в один из строгих жанров. Внешний вид чётко напоминает нам о 90-х годах и системе VGA, где цвета были подобраны не для красоты, а из стандартной палитры DPaint.
Рекомендую почитать обзор кода от The Escapist.
Исходник получен с порта на 3D0, оригинальный же был утерян. Это часто случается со старыми играми, когда разработчики уходят из компании.
Исходники (3D0): sourceforge.net/projects/sc2/files/UQM/0.1
Wolfenstein 3D / Blake Stone (1992/3)
![](/img/kod-3d_12.jpg)
Разработчик: id Software Издатель: Apogee Software Платформа: DOS
На основе предыдущего движка Catacomb был сделан серьёзный апгрейд на VGA-графику. И играть стало интереснее. Как в большинстве случаев с компанией id, исходники сравнительно легко читать, хотя ключевые части написаны на 16-битном ассемблере (в Doom уже такого не встретишь).
Интересно отметить, что для рисования вертикальных линий они динамически генерируют разные функции для каждой из возможных высот стен.
У Fabien можно найти инструкцию по компиляции исходников на современных инструментах.
Blake Stone, ответвление от Apogee на том же движке, вышло в 1993 году, за неделю до Doom. Можно представить, почему оно кануло в лету.
Исходники: github.com/id-Software/wolf3d Исходники: www.apogeesoftware.com/uncategorized/apogee-releases-blake-stone-source-code
Doom (1993)
![](/img/kod-3d_13.jpg)
Разработчик: id Software Издатель: GT Interactive Платформа: DOS Code review: fabiensanglard.net
В каком-то смысле это самый важный для изучения движок. В своё время это была революция – мир от первого лица, не плоский, как Wolf3D. Освещение, текстуры и изобретение DeathMatch.
Одной из самых знаковых вещей стало изобретение идеи «движка». До этого игры были сильно связаны с данными. Doom пропагандировал отвязку данных игры от движка. Это породило целые сообщества, модифицировавшие игры (Aliens TC, Fistful Of Doom).
Исходники: github.com/id-Software/DOOM
Descent (1994)
![](/img/kod-3d_14.jpg)
Разработчик: Parallax Software Издатель: Interplay Productions Платформа: DOS
Многие компании кинулись догонять Doom, запустив волну «Клонов Doom». Parallax удалось сделать нечто совсем другое.
В игре можно было летать на корабле по трёхмерному лабиринту из проходов, в отличие от 2.5D коридоров Doom (у id полная трёхмерность появилась лишь в Quake год спустя).
Исходники: www.codersnotes.com/files/gamesrc/d1srcpc.zip
Gravity Force 2 (1994)
Разработчик: Jens Andersson and Jan Kronqvist Издатель: Shareware Платформа: Amiga
Многие современники вспомнят эту игру. Amiga Power однажды назвала её второй лучшей игрой всех времён.
Это не совсем коммерческая игра, она была выпущена по принципу платного shareware, а затем её раздавали бесплатно на диске Amiga Power. Включил её в список потому, что в ту пору вообще редкие игры выдавали свои исходники. Если вам интересно, как делались 16-битные игры, обратите внимание.
Также не пропустите интервью с авторами игры.
Исходники: www.lysator.liu.se/~jensa/gf2
Heretic / Hexen (1994/5)
![](/img/kod-3d_15.jpg)
Разработчик: Raven Software Издатель: id Software / GT Interactive Платформа: DOS
Это был уникальный клон Doom по двум причинам: 1) лицензированный движок Doom и 2) хороший геймплей
Заметные улучшения: возможность смотреть вверх и вниз, скриптовой движок для внутриигровых событий (новая идея на то время).
Исходники: sourceforge.net/projects/heretic
Rise Of The Triad: Dark War (1995)
![](/img/kod-3d_16.jpg)
Разработчик: Apogee Software Издатель: Apogee Software / FormGen Платформа: DOS
ROTT это была странная игра. Она была порождена движком Wolfenstein 3D, при этом создатели умудрились эмулировать ощущения разных высот. Но всё равно игра не смогла конкурировать с Doom от 1993 года.
Исходники: www.codersnotes.com/files/gamesrc/rottsource.zip
Marathon 2: Durandal (1995)
Разработчик: Bungie Software Издатель: Bungie Software Платформа: Apple Macintosh / Windows 95
Серия отличилась тем, что в своё время попала в крайне маленький список игр, доступных на Apple Macintosh. И, в общем-то, это клон Doom. А через 3 месяца после её выхода id Software выпустила знаменитый “qtest”, позволявший взглянуть на движок Quake.
Поскольку Маки тогда использовали лишь писатели с художниками, несмотря на все усилия, серия провалилась. Небольшая компания разработчиков имела неплохой успех на разных других платформах.
Исходники: www.codersnotes.com/files/gamesrc/marathon2_src.tar.gz
Duke Nukem 3D / Shadow Warrior (1996)
![](/img/kod-3d_17.jpg)
Разработчик: 3D Realms Издатель: GT Interactive Software Платформа: DOS Code review: fabiensanglard.net
Из множества клонов, игры 3D Realms отличились хорошими попытками привнести нечто новое в игру. Движок Кена Сильвермана Build Engine добавил много интересных фич вроде наклонных полов, комнат, расположенных друг над другом и зеркал.
К сожалению, в отличие от самой игры, исходники просто ужасны. Я рылся в них несколько раз и до сих пор не могу разобраться, что там где. К счастью, обзор от Fabien проливает некоторый свет на происходящее в коде.
За дополнительной информацией обращайтесь на страницу автора.
Duke Nukem 3D / Исходники: www.codersnotes.com/files/gamesrc/duke3dsource.zip Shadow Warrior / Исходники: www.codersnotes.com/files/gamesrc/Shadow_Warrior_1.2_Source_Code.zip Build engine / Исходники: advsys.net/ken/buildsrc/default.htm
Quake 1/2/3 (1996-1999)
![](/img/kod-3d_18.jpg)
Разработчик: id Software Издатель: GT Interactive / Activision Платформа: DOS / Windows / others Code review: fabiensanglard.net (Quake 1) Code review: fabiensanglard.net (Quake 3)
Тут писать особо нечего, вы и сами всё знаете. Знатная веха в создании полностью трёхмерных движков, без всяких хаков вроде 2.5D
Упомяну несколько интересных подробностей. Возможно, это первая коммерческая игра, скомпилированная компилятором с открытым исходным кодом (DJGPP for DOS, ранний порт gcc).
В игре был свой скриптовой язык “Quake C” (позже lcc у Quake 3). Он был встроен специально для того, чтобы игроки могли делать модификации. Это, вкупе с системой ресурсов PWAD, породило огромное сообщество моддеров.
В Quake 1 был инновационный механизм кэширования результатов шейдинга. Но после распространения 3D-ускорителей это потеряло смысл. Следующая игра от id, Rage, использовала эту же идею.
Кроме того, Quake был очень надёжным движком. Никаких глюков растра или обсчёта столкновений.
Quake / Исходники: github.com/id-Software/Quake Quake 2 / Исходники: github.com/id-Software/Quake-2 Quake 3 / Исходники: github.com/id-Software/Quake-III-Arena
Abuse (1996)
![](/img/kod-3d_19.jpg)
Разработчик: Crack dot Com Издатель: Electronic Arts / Origin Systems Платформа: DOS / Linux / Mac
Обожаю Abuse.
В игре было использовано несколько инноваций. Крутая система управления одновременно с мыши и клавиатуры. Динамическое освещение (неслыханная вещь для платформеров).
Но больше всего, как программисту, мне понравилась система «визуального Lisp». Вся игра заскриптована на языке, напоминающем Lisp. Поведение врагов можно изменять во время выполнения игры, а не просто включать в код.
Ещё одним интересным моментом стал способ, по которому события можно подключать во встроенном редакторе карт – визуально перетаскивать линии от выключателя к двери, или от ловушки к месту, где появляются враги. Присутствует возможность задавать логику И/ИЛИ в виде скрытых объектов на уровне. Такого я в других редакторах не встречал.
Коммерческого успеха игра не снискала и через два года исходники были опубликованы. Следующая игра от Crack Dot Com, Golgotha, была выпущена по принципу open-source, включая всю графику.
Abuse / Исходники: www.codersnotes.com/files/gamesrc/abuse_pd.tgz Golgotha / Исходники: abuse.zoy.org/wiki/download
Aliens versus Predator (1999)
![](/img/kod-3d_20.jpg)
Разработчик: Rebellion Издатель: Fox Interactive / Electronic Arts / Sierra On-Line Платформа: Windows / Mac
Какое облегчение видеть здесь шутер не за авторством id. И хотя технических инноваций в игре особо не было, сингл-кампания у неё вышла просто потрясающей. И игра остаётся хорошим примером движка не от id.
Исходники: www.codersnotes.com/files/gamesrc/avptools.zip
Freespace 2 (1999)
![](/img/kod-3d_21.jpg)
Разработчик: Volition, Inc. Издатель: Interplay Entertainment Платформа: Windows
Как бы наследник франшизы Descent, но не совсем. Кампания и мультиплеер проходят полностью в космическом пространстве.
Прекрасный пример, как публикация исходников продляет жизнь игр на годы. К игре выпускаются всяческие наборы нового контента и апгрейды.
Исходники: www.codersnotes.com/files/gamesrc/fs2source.zip
The Operative: No One Lives Forever (2000)
![](/img/kod-3d_22.jpg)
Разработчик: Monolith Productions Издатель: Fox Interactive / Sierra Entertainment / MacPlay Платформа: Windows / Mac / PlayStation 2
У движка LithTech история долгая, хотя он и находится в тени более известных Quake и Unreal engine. Я особенно не рылся в исходника NOLF, но я подозреваю, что там есть лишь исходники самой игры, но не графического движка. И однозначно там не будет частей, связанных с работой на PlayStation 2.
А жаль – разработка для PS2 в наши дни должна выглядеть для программистов инопланетным делом, поскольку она гораздо сильнее подходила в методу ориентации на данные, чем это делают современные API.
Исходники: www.codersnotes.com/files/gamesrc/NOLFSource003.zip
MechCommander 2 (2001)
![](/img/kod-3d_23.jpg)
Разработчик: FASA Interactive Издатель: Microsoft Платформа: Windows
Исторически Microsoft и открытые исходные коды вместе не уживались. Но на склоне лет ситуация начинает смягчаться. Всё-таки приятно видеть, что большие компании приходят к более открытым взглядам на вещи – все эти наработки имеют нулевую коммерческую ценность, они ценны лишь исторически.
В прошлом году даже были выпущены исходники ранних версий MS-DOS и Word, что было неслыханным делом лет 30 назад.
Исходники: www.microsoft.com/downloads/details.aspx?FamilyID=6d790cde-c3e5-46be-b3a5-729581269a9c&DisplayLang=en
Doom 3 (2004)
![](/img/kod-3d_24.jpg)
Разработчик: id Software Издатель: Activision Платформа: Windows / Mac / Linux / Xbox / PS3 Code review: fabiensanglard.net
Если вы хотите изучить движки современных игр высшего класса, то Doom 3 – это один из наилучших примеров. На время выхода он был инновационным во многих областях. Метод использования моделей высокого разрешения на элементах низкого разрешения в игре сейчас является стандартом для коммерческих игр. В исходнике есть много всего интересного – одна лишь система обработки физики достойна изучения, в частности, отслеживание столкновений.
Это первая игра от id, написанная на С++. Прошлые игры из-за использования С несли в себе простоту. Doom 3 тоже довольно простой, но заметно уже изменение его вектора движения.
Также игра (печально) известна использованием трафаретных теней при расчёте освещения. Можно спорить, был это интересный эксперимент или поле для дальнейшей работы, но сегодняшние игры предпочитают использовать карты теней. Возможно, эта техника когда-нибудь ещё пригодится.
Отличный обзор кода от Fabien Anglard стоит прочтения.
Исходники: github.com/id-Software/DOOM-3 BFG edition Исходники: github.com/id-Software/DOOM-3-BFG
Gish (2004)
![](/img/kod-3d_25.jpg)
Разработчик: Cryptic Sea Издатель: Chronic Logic / Stardock Платформа: Windows / Linux
Gish был примечателен физикой «мягкого тела» и интересным подходом ко времени. Интересно разбираться в его исходниках и выяснять, как что работает. Никаких сторонних физических движков тут нет.
Интересно, что игра полностью написана на С – сейчас это редко встречается. Это не самый аккуратный из всех виденных мною исходников, но это хороший пример того, как игра может не превращаться в гигантскую расползшуюся базу кода с сотнями внешних зависимостей.
Исходники: www.crypticsea.com/download/gishsource153.zip
Canabalt (2009)
![](/img/kod-3d_26.jpg)
Разработчик: Adam Saltsman Издатель: Semi-Secret / Beatshapers / Kittehface Платформа: Flash / iOS / PSP / Android / Ouya
Не самая сложная игра, ну и что? Если вы хотите научиться делать игры, начинайте с простого – вот с этого.
Прототипирование заняло 5 дней, портирование на iOS – 10. Пример превращения простой идеи в достойное выражение. Это как бы возвращение 8-битной эпохи, когда еженедельно могли появляться новые жанры. Жаль, что с тех пор люди предпочитают клонировать идеи, а не творить самостоятельно.
Canabalt показывает, насколько вещи можно сделать просто, если захотеть.
Исходники: github.com/ericjohnson/canabalt-ios Комментарии: blog.semisecretsoftware.com
Что я упустил
Нужно упомянуть ещё несколько игр. Они не выпускали исходников, но подверглись фанатскому обратному инжинирингу. Это, конечно, не то же самое, что настоящие исходники, но тоже может быть интересным:Another World – fabiensanglard.net/anotherWorld_code_review (и прекрасное интервью на тему создания игры)Heart of the Alien – hota.sourceforge.net (сиквел предыдущей)Strike Commander – fabiensanglard.net/reverse_engineering_strike_commander/index.phpLittle Big Adventure – code.google.com/p/twin-e
Не попали в рейтинг
Сорцы следующих игр утекли в сеть нелегально, поэтому они не попали в зал славы:Half Life 2 Falcon 4.0 ReVolt Turrican III Mr. Nutz: Hoppin’ Mad Trespasser (ладно уж, вот вам обзор кода)
habr.com
QR коды для настройки VR очков
![](/img/kod-3d_27.jpg)
Подборка QR кодов для настройки шлемов Shinecon. Данная подборка будет обновляться при выходе новых моделей VR очков данной марки. Запустите приложение Google Cardboard, нажмите на три точки в правом верхнем углу, чтобы попасть в меню настроек, а затем нажмите на кнопку “Подключить другие очки”. Выберите нужный QR code и отсканируйте его с… Читать далее »
Раздел: QR коды для настройки VR очков Полезное Статьи![](/img/kod-3d_28.jpg)
Большая подборка QR кодов для различных очков виртуальной реальности. QR код предназначен для подстройки изображение под конкретную гарнитуру. Для некоторых очков предоставленно больше одного кода: просканируйте сначала первый, если результат Вас не устроит — второй. Запустите приложение Google Cardboard, нажмите на три точки в правом верхнем углу, чтобы попасть в… Читать далее »
Раздел: QR коды для настройки VR очков Полезное Статьи![](/img/kod-3d_29.jpg)
QR Code используется для настройки VR приложений (Как правило Google Cardboard) под конкретную модель очков виртуальной реальности. В основном производитель самостоятельно отображает QR код в инструкции или на коробке гарнитуры, к сожалению часто все это теряется или напечатано слишком мелко и неразборчиво. Если приведено несколько кодов, то сканировать стоит первый… Читать далее »
Раздел: QR коды для настройки VR очков Полезное![](/img/kod-3d_30.jpg)
Как это работает? Существует множество различных моделей очков виртуальной реальности , они все отличаются не только внешним видом но и характеристиками: углы обзора, расстояние между линзами, расстояние до экрана и другие. Для того чтобы настроить приложение Google Cartboard под конкретную модель VR гарнитуры потребуется отсканировать QR code. QR-код можно использовать в большинстве… Читать далее »
Раздел: QR коды для настройки VR очков Полезное![](/img/kod-3d_31.jpg)
Коды, приведенные ниже, используются для калибровки приложения Google Cartboard для работы с конкретной гарнитурой. Возможно, вам придется попробовать больше одного кода, чтобы найти тот, который подойдет лучше всех. Сначала вам нужно скачать Google Cartboard приложение для Android от Google Play или для iOS от App Store. Запустите приложение, нажмите на три точки… Читать далее »
Раздел: QR коды для настройки VR очков Статьи![](/img/kod-3d_32.jpg)
QR Код используется для подстройки изображения экрана вашего смартфона в очках виртуальной реальности. Данный код предназначен для VR шлема Xiaomi MI VR Play. Представлены 3 QR кода, первый — наиболее универсальный (На фото с шлемом). Если Вам не удается просканировать QR код — попробуйте открыть, картинку с ним, в новом окне… Читать далее »
Раздел: QR коды для настройки VR очков Статьи![](/img/kod-3d_33.jpg)
Qr code предназначен для правильного отображения VR игр, видео и т.д. на вашем смартфоне. В данный QR код зашифрованы данные о очках виртуальной реальности FiiT VR, в частности расстояние от линз до телефона, углы обзора линз (Fov), искажение линз и так далее. Сканировать этот код следует в приложении CardBoard. — Для начало… Читать далее »
Раздел: QR коды для настройки VR очков Статьи![](/img/kod-3d_34.jpg)
Qr code предназначен для автоматической подстройки вашего устройства под ваши очки виртуальной реальности. Как правило код изображен на коробке, но бывают исключения. В данный QR код зашифрованы данные о BOBO Z4, в частности расстояние от линз до телефона, углы обзора линз и другое. Сканировать этот код следует в приложении CarBoard. — Для начало… Читать далее »
Раздел: QR коды для настройки VR очков Статьи![](/img/kod-3d_35.jpg)
Для того что бы VR контен правильно отображался на вашем устройстве, требуется сделать калибровку. Она должна быть выполнена с использованием Carboard приложения и специального QR-кода, который включает всю необходимую информацию (например, расстояние до линзы, расстояние между линзами и экраном, искажения линз, угол обзора и т. д.). Если вы решите обойтись без кода, изображение может быть… Читать далее »
Раздел: QR коды для настройки VR очков Статьиvrland.ru