М кода: 18 — Фрезерный станок — M-коды
Содержание
Базовые м-коды
Введение
Коды,
обозначающиеся буквой М (Miscellaneous),
называются вспомогательными и
предназначены для управления режимами
работы станка. М-код может стоять как
отдельно, так и находиться в кадре с
G-кодами. Некоторые М-коды работают
совместно с другими адресами. Например,
М-код, отвечающий за направление вращения
шпинделя, обычно указывается с адресом
S, который необходим для задания числа
его оборотов при вращении:
N10
S1000 М03
В
табл. 8 помещены базовые М-коды, которые
должен знать каждый технолог-программист.
Когда М-код находится в кадре с G-кодом,
то порядок выполнения зависит от модели
ЧПУ. Возьмем, например, следующий кадр:
N10
G01 Х100.0 Y100.0 Z100.0 F50.0 М08
Этот
кадр выполняет линейное перемещение и
включает подачу охлаждающей жидкости
(М08). Одни станки включают подачу СОЖ
сразу, другие – только после перемещения
в указанную позицию. Зная это, опытный
программист старается указывать код
М08 перед выполнением перемещения на
рабочей подаче:
N05
М08
N10 G01 Х100.
0 Y100.0 Z100.0 F50.0
Нужно
учесть, что некоторые системы ЧПУ
позволяют задавать в кадре только один
М-код. В этом случае если в кадре находятся
несколько М-кодов, то СЧПУ выдаст
сообщение об ошибке. Для избежания
ошибок внимательно прочтите раздел
документации станка и системы ЧПУ о
работе с М-кодами.
Таблица
7.1. Базовые М-коды
М | Действие |
М00 | Запрограммированный |
М01 | Останов |
M02 | Конец |
М03 | Прямое |
М04 | Обратное |
М05 | Останов |
М06 | Автоматическая |
М08 | Включение |
М09 | Выключение |
М30 | Конец |
Останов
выполнения управляющей программы –
М00 и М01
Очень
часто возникают ситуации, когда необходимо
временно прервать вьполнение программы.
Например, для того чтобы удалить стружку,
проверить размеры обрабатываемой детали
или переставить крепежные элементы в
другое положение.
Коды
М00 и М01 временно приостанавливают
выполнение программы обработки, или,
говоря другими словами, делают паузу в
производственном цикле станка. Когда
СЧПУ читает код М00, то происходит так
называемый запрограммированный останов.
Все осевые перемещения останавливаются
и возобновляются лишь после того, как
оператор станка нажмет клавишу Старт
цикла на панели УЧПУ. При этом шпиндель
продолжает вращаться, и другие функции
остаются активными. Если оператор станка
нажимает клавишу Старт цикла, то
выполнение программы будет продолжено
с кадра, следующего за М00.
…
N200
G01 X200
N210 G00 Z100
N220 M00
N230
G00 Z5
N240 G01 Z-1 F50 …
Для
того чтобы безопасно удалить стружку
из зоны обработки или снять ее со сверла,
необходимо остановить шпиндель. То есть
перед командой М00 нужно указать код
выключения вращения шпинделя М05. Однако
не забудьте снова включить шпиндель,
иначе инструмент будет перемещаться
без вращения, что приведет к его поломке.
…
N200
G01 X200
N210 G00 Z100
N215 M05
N220
M00
N225 M03 S1000
N230 G00 Z5
N240
G01 Z-1 F50 …
Код
М01 предназначен для останова по выбору.
Действует он аналогично коду М00, однако
предоставляет выбор оператору – нужно
или не нужно прерывать выполнение
управляющей программы. На панели УЧПУ
практически любого станка имеется
клавиша (или переключатель) «М01». Если
эта клавиша нажата, то при чтении кадра
с М01 происходит останов. Если же клавиша
не нажата, то команда М01 пропускается
и выполнение УП не прерывается.
…
N200
G01 X200
N210 G00 Z100
N220 M01
N230
G00 Z5
N240 G01 Z-1 F50 …
Таблица
7.2. Поведение станка при работе с кодом
М01
Клавиша | Поведение |
Вкл. | Выполнение |
Выкл. | Выполнение |
Управление
вращением шпинделя – М03, М04, М05
Вспомогательные
коды М03 и М04 предназначены для управления
вращением шпинделя. Единственная разница
между двумя этими М-кодами заключается
в направлении вращения. Код М03 отвечает
за прямое (по часовой стрелке), а М04 –
за обратное вращение шпинделя (против
часовой стрелки). Направление вращения
определяется, если смотреть в отрицательном
направлении оси Z (со стороны шпинделя
в сторону заготовки). При фрезеровании
режущие инструменты должны иметь прямое
вращение (М03). При выводе метчика из
отверстия, при нарезании левой резьбы,
в циклах автоматического измерения
диаметра инструмента может потребоваться
обратное вращение пшинделя (М04).
В конце
программы обработки и перед сменой
инструмента нужно остановить вращение
шпинделя при помощи команды М05.
…
N40
Z5.0
N45 G00 Z100.0
N50 M05
M55
M30
%
Для
задания частоты вращения шпинделя
используется S-адрес. За S следует числовое
значение, выражающее скорость вращения
шпинделя в оборотах за одну минуту.
Большинство СЧПУ воспринимают только
целочисленное значение S. Обычно код
М03 и S находятся в одном кадре. Например,
кадр N20 заставляет вра- щаться шпиндель
в прямом направлении со скоростью 1000
оборотов в минуту:
%
O0002
N05
G21 G40 G49 G54 G80 G90 G98 G00
N10 T1 M06
N15
G43 h2 Z100.0
N20 M03 S1000
N25 X100.0 Y150.0
Z5
N30 G01 Z-0.5
N35 X200.0 Y250.0
N40
Z5.0
N45 G00 Z100.0
N50 M05
M55
M30
%
Рис.
7.1. При фрезеровании используется прямое
вращение шпинделя (М03)
Некоторые
станки (преимущественно старых моделей)
оснащены специальной коробкой скоростей.
Нужная передача для соответствующего
диапазона скоростей вращения шпинделя
выбирается автоматически или с помощью
М-кодов.
Обычно для включения низкой
передачи используется код М41, а для
включения более высоких передач – М42,
М43 и т. д. Переключение передач в этом
случае необходимо, чтобы двигатель,
вращающий шпиндель, не подвергался
чрезмерным нагрузкам (вспомните процесс
переключения передач в автомобиле).
Приведем небольшой программный пример.
В кадре N20 включается низкая передача,
а в кад ре N25 шпиндель начинает вращаться
со скоростью 900 оборотов в минуту:
…
N10
T5 M06
N15 G43 H5
N20 M41
N25 M03
S900
…
Управление
подачей СОЖ – М07, М08, М09
В
процессе фрезерования охлаждающая
жидкость подается в зону обработки для
увеличения стойкости инструмента,
улучшения качества обрабатываемой
поверхности и удаления (вымывания)
стружки. Станки с ЧПУ оснащаются системой
автоматической подачи СОЖ. Управление
этой системой осуществляется при помощи
нескольких М-кодов. Обычно код М08
используется для включения подачи
охлаждающей жидкости, а код М09 – для
выключения. Некоторые станки позволяют
подавать СОЖ в зону обработки в различном
виде.
Например, код М08 может вызывать
подачу охлаждающей жидкости в виде
струи, а код М07 – в распыленном виде.
Рис.
7.2. Подача СОЖ в зону резания
Подачу
СОЖ принято отключать перед сменой
инструмента и в конце программы обработки.
Многие современные станки делают это
автоматически при чтении кода М06 (смена
инструмента), кодов М30 и М02 (конец
программы). Кроме программного управления
системой автоматической подачи СОЖ,
существует и ручное управление,
позволяющее оператору станка при помощи
определенных клавиш на панели УЧПУ
включать или выключать подачу охлаждающей
жидкости в случае необходимости.
Для
того чтобы струя охлаждающей жидкости
точно попадала в нужное место зоны
обработки и на режущий инструмент,
используют гибкие шланги.
Автоматическая
смена инструмента – М06
Код
М06 предназначен для автоматической
смены инструмента. Некоторые станки с
ЧПУ прошлых поколений или недорогие
настольные станки не имеют устройства
автоматической смены инструмента.
В
этом случае оператор станка вынужден
останавливать программу и вручную
менять один инструмент на другой, что
конечно же неудобно.
Многие
современные станки с ЧПУ имеют это
полезное устройство, освобождающее
оператора от лишнего вмешательства в
производственный цикл станка. Инструменты
находятся в ячейках специального
барабана, который обычно называют
магазином инструментов. В большинстве
станков каждая из ячеек магазина
инструментов имеет собственный номер.
Специальные датчики и устройство
обратной связи помогают системе ЧПУ
определить положение магазина инструментов
и наличие инструмента в ячейках.
Рис.
7.3. Режущие инструменты в магазине станка
с ЧПУ
Обычно
для выполнения автоматической смены
инструмента программист напрямую
указывает номер инструмента, который
необходимо взять (номер инструмента в
большинстве случаев совпадает с номером
ячейки инструментального магазина).
Такой способ смены инструмента называется
абсолютным.
Некоторые старые станки
использовали относительный способ
смены инструмента. В этом случае номер
инструмента отсчитывался от номера
текущего инструмента, что менее удобно.
Производители
станков постоянно совершенствуют
конструкцию устройств автоматической
смены инструмента. Сегодня наиболее
популярными являются следующие
конфигурации:
магазин
инструментов перемещается при смене
инструмента, тип «зонтик»;магазин
инструментов не перемещается при смене
инструмента, тип «рука».
Сначала
рассмотрим алгоритм работы устройства
автоматической смены инструмента с
перемещающимся магазином. Когда
управляющая программа доходит до кадра
смены инструмента, шпиндель перемещается
в определенную точку, находящуюся рядом
с магазином инструментов. Магазин
инструментов перемещается в эту же
точку до «сцепления» инструмента с
пустой ячейкой. Шпиндель немного
поднимается вверх, освобождая отработавший
инструмент.
Магазин инструментов
поворачивается таким образом, чтобы
выбранный инструмент находился под
шпинделем. Шпиндель опускается, зажимает
новый инструмент и отводится вверх.
Магазин инструментов перемещается
обратно на свое место.
Если
магазин инструментов не перемещается,
то возможен следующий алгоритм работы.
Сначала шпиндель перемещается в
определенную точку, находящуюся рядом
с магазином инструментов. Затем магазин
инструментов поворачивается таким
образом, чтобы выбранный инструмент
находился напротив шпинделя. Механический
захват («рука»), находящийся между
магазином и шпинделем, захватывает
отработавший инструмент в шпинделе и
новый инструмент в магазине. Захват
опускается вниз, освобождает инструмент
и меняет их местами. Захват поднимается
вверх, при этом новый инструмент
зажимается в шпинделе, а старый остается
в магазине инструментов.
Внимательно
ознакомьтесь с соответствующим разделом
документации станка, для того чтобы
хорошо понимать, как на вашем станке
производится смена инструмента.
Обычно
станки с ЧПУ производят смену инструмента
при указании в программе следующей
команды:
М06
Т1
Адрес
Т обозначает номер вызываемого инструмента
(в данном случае инструмент № 1), а М06
обеспечивает смену. Например, если в УП
запрограммировать М06 Т5, то будет вызван
инструмент № 5. Большинство СЧПУ допускают
любой порядок слов данных в кадре смены
инструмента. То есть вы можете вызвать
инструмент № 1 и таким образом:
Т1М06
Некоторые
СЧПУ требуют, чтобы адрес Т и команда
М06 находились в разных кадрах, иначе
автоматическая смена инструмента может
быть выполнена неправильно:
N10
Т1
N20 М06
Сразу
после смены необходимо выполнить
компенсацию длины нового инструмента.
Как вы уже знаете, компенсация длины
инструмента осуществляется при помощи
кода G43 и следующего за ним Н-слова
данных. Для удобства номер корректора
на длину совпадает с номером инструмента.
Например, для выполнения компенсации
длины инструмента № 1 в УП необходимо
указать:
G43
h2
Некоторые
станки старых моделей требовали указывать
направление компенсации длины инструмента.
При этом код G43 обозначал положительное
направление, a G44 – отрицательное
направление компенсации. К счастью,
сегодня такой неудобный способ
используется крайне редко.
Кадры
смены инструмента и активации компенсации
длины нового инструмента в управляющей
программе:
%
O0002
N05
G21 G40 G49 G54 G80 G90 G98 G00
N10 T1 M06
N15
G43 h2 Z100.0
N20 M03 S1000
N25 X100.0 Y150.0
Z5
N30 G01 Z-0.5
N35 X200.0 Y250.0
N40
Z5.0
N45 G00 Z100.0
N50 M05
M55
M30
%
В
кадре N10 производится смена инструмента
(вызов инструмента № 1), а в кадре N15
выполняется компенсация длины инструмента
№ 1 и инструмент перемещается в точку
Z100.0.
Перед
тем как вызвать новый инструмент, принято
отменять компенсацию длины активного
инструмента. Это действие производится
при помощи кода G49, хотя многие современные
СЧПУ отменяют компенсацию длины
автоматически при указании команды
М06. Если произведена смена инструмента,
а компенсация его длины не выполнена,
то возможно столкновение инструмента
с заготовкой или частями станка.
Многие
программисты для обеспечения безопасности
перед сменой инструмента выполняют
возврат в исходную позицию по оси Z:
…
G91
G28 Z0
T3 M06
G43 h4
…
Чтобы
избежать серьезных ошибок, при смене
инструмента оператору станка необходимо
быть особенно внимательным.
Завершение
программы – М30 и М02
В
конце любой управляющей программы
должен находиться код ее завершения –
М30 или М02. При выполнении любого из этих
кодов станок останавливается независимо
от того, какую функцию он выполнял.
Разница между М30 и М02 заключается лишь
в том, что код М30, помимо завершения
программы, «перематывает» или «сбрасывает»
ее на начало, а код М02 не делает этого.
Проще говоря, при окончании программы
обработки с М30 курсор текущего положения
переводится в самое начало программы,
а с М02 остается в конце.
…
N40
Z5.0
N45 G00 Z100.0
N50 M05
M55
M30
%
Обычно
при завершении программы обработки
производится перемещение рабочего
стола или инструмента в позицию, которая
облегчает оператору снятие готовой
детали со станка.
Такое перемещение
совершается с помощью кода возврата в
исходную позицию G28:
…
N120
G91 G28 X0 Y0 Z0
N130 M05
N140 M30
%
Особенности и различия G и M кодов для станков с ЧПУ
Содержание статьи:
Обработка с числовым программным управлением (ЧПУ), будь то фрезерный, токарный или другой станок с ЧПУ, стала основным производственным процессом в современных цехах. Эти чудеса технологии способны превратить прямоугольную заготовку в сложное и изысканное готовое изделие, словно по волшебству.
Однако это не волшебство, потому что эти прекрасные машины бесполезно сидят, пока кто-то (или что-то) не скажет им, что делать. Программисты и машинисты ЧПУ дают машинам инструкции с помощью языка программирования, который оживляет их и направляет на выполнение определенных операций.
Таким образом, все эти сложные процессы не могут происходить без фрезерных и токарных станков с ЧПУ. И эти станки не могут функционировать до тех пор, пока компьютер и программирование ЧПУ не скажут им, что делать на понятном им языке.
И мы называем этот язык G-кодом.
Что означает G-код в обработке на станках с ЧПУ?
Буква G в G-коде означает геометрию, давая станку с ЧПУ указания, как и куда двигаться. Хотя система называется G-Code, другие буквы и цифры обозначают различные функции в программе. Однако каждый G-код содержит указания, информирующие станок о том, как создавать вариации его основных функций. Как правило, станки с ЧПУ имеют три основные операции, которые система адаптирует для создания желаемых форм:
- Быстро перемещаться по прямой линии
- Перемещение по прямой линии с определенной скоростью подачи
- Перемещение по кругу с определенной скоростью подачи
Что такое основные G-коды?
Вот четыре наиболее распространенных G-кода и то, как они выглядят в программе G-кодов:
- G00 – Быстрое позиционирование в определенной плоскости XY
- G01 – Линейное перемещение подачи
- G02 – Круговое интерполяционное перемещение по часовой стрелке
- G03 – перемещение против часовой стрелки (CCW) с круговой интерполяцией
Как вы можете видеть, строки кода организованы в блоки, причем каждый блок управляет одной операцией, например, фрезерованием с определенным режущим инструментом.
Каждая строка блока маркируется номером строки, обычно буквой N и четным числом (N2, N4, N6 и т.д.).
Если вы пишете программу G-кода вручную, вы должны делать это правильно. В противном случае один неправильно написанный G-код может привести к поломке вашей заготовки и оснастки. К счастью, существует программное обеспечение для автоматизированного производства, позволяющее оптимизировать траектории движения оснастки и генерировать G-код, предлагающий инструкции для станка с ЧПУ. Программное обеспечение CAM может создавать тысячи строк кода, поэтому вам не придется делать это вручную.
Сколько существует G-кодов?
Хотя мы имеем доступ к примерно сотне команд G-кода для управления станками с ЧПУ, есть несколько команд, которые мы называем “основной группой”, и они знакомы практически каждому станку.
G00 Быстрое перемещение
Используйте эту команду для быстрого перемещения, когда инструмент не касается детали.
Используйте ее только тогда, когда фреза или инструмент не снимает материал, например, при смене инструмента. При использовании быстрого перемещения убедитесь, что на пути инструмента нет зажимов, деталей или тисков. Можно избежать сбоя, если сначала выполнить быстрое перемещение к выбранной плоскости XY, а затем вниз по оси Z.
Линейная интерполяция G01
Используйте команду G01 для резки по прямой линии, хотя для ее перемещения требуется команда скорости подачи (F). Например, программист может задать начальную точку и перемещать режущий инструмент по прямой линии вдоль оси X или Y до конечной точки.
Круговая интерполяция G02 и G03
G02 используется для обработки дуги или радиуса по часовой стрелке, а G03 – против часовой стрелки. Помните, что при использовании G02 с G01 и G03 вы можете обрабатывать любую форму, что делает эти три G-кода основой программирования с использованием G-кодов.
G04 – Приостановка
Иногда нам необходимо приостановить работу режущего инструмента, вставив в код G04 на короткое время.
Например, можно добавить паузу, когда плоскодонное сверло достигает дна отверстия, кратковременно приостанавливая движение по оси Z при работающем сверле для устранения дребезга.
Компенсация фрезы G40, G41 и G42
Компенсация фрезы учитывает диаметр инструмента, когда программист создает траекторию резания, смещая радиус инструмента в зависимости от направления резания. Вот три G-кода, управляющие этим процессом:
- G40 Отменяет компенсацию фрезы
- G41 Компенсация левого резца
- G42 Компенсация правой фрезы
G43 Компенсация длины инструмента
Компенсация длины инструмента позволяет станку с ЧПУ учитывать длину каждого из введенных и сохраненных в станке инструментов. Станок рассчитывает изменения на основе местоположения программы и длины инструмента. Если код G43 неактивен, станок будет перемещать конец шпинделя вместо конца режущего инструмента.
Консервированные циклы
Консервированные циклы позволяют программисту написать G-код для сверления и расточки нескольких отверстий с меньшим количеством строк G-кода.
Вся информация находится в одной строке, а следующие строки являются позиционными. Вот эти циклы:
- G80 Цикл
- G81 Цикл сверления
- G82 Цикл встречного бурения
- G83 Цикл сверления по методу Пека
- G84 Цикл жесткого нарезания резьбы
- G85 Цикл растачивания (заход, выход)
- G86 Цикл растачивания (заход, быстрый выход)
Что такое М-коды в фрезерной обработке с ЧПУ?
М-код — это еще один язык управления станком для обработки с ЧПУ, используемый вместе с G-кодом для выключения и включения различных функций станка. Буква “М” в командах М-кода сообщает станку, что за ней следует другая функция. В то время как команды G-кода указывают позиции с помощью декартовой системы координат, M-код направляет действия станка. Хотя М-код представляет различные функции, некоторые говорят, что он означает “машинный” код, поскольку он управляет работой станка.
Коды G и M имеют специфическое применение в программировании.
Например, вы можете направить режущий инструмент станка с ЧПУ в определенное место без кодов M. Тем не менее, вы не можете давать ему прямые команды, такие как остановка программы, смена режущего инструмента, включение охлаждающей жидкости или другие действия, выходящие за рамки трех основных движений, которые контролируют G-коды.
Какие бывают М-коды?
M03 — это команда включения шпинделя, которой обычно предшествует код S для установки скорости вращения шпинделя. Список М-кодов начинается с М00 (остановка программы) и продолжается до М99 (конец подпрограммы), хотя каждому номеру не присвоен.
Ниже приведен неполный список М-кодов:
- M00 Остановка программы
- M01 Остановка программы – опционально
- M02 Конец программы
- M03 Пуск шпинделя вперед, по часовой стрелке
- M04 Запуск шпинделя в обратном направлении или вращение против часовой стрелки
- M05 Остановка шпинделя
- M06 Смена инструмента
В чем разница между G и M кодами?
Три основных способа отличают G- и M-коды друг от друга.
- G-код управляет движением и функционированием станка с ЧПУ, в то время как M-код управляет операциями, не связанными с движением.
- G-код активирует станок с ЧПУ, а M-код активирует программируемый логический контроллер станка.
- Команды G-кода часто отличаются в станках с ЧПУ, в то время как большинство команд M-кода остаются неизменными.
Заключение
Станки с ЧПУ изменили производственную индустрию и упростили процесс производства точных и стабильных деталей. Однако эти станки не знали бы, что делать, если бы не было G-кода и M-кода.
По сути, G-код указывает станку, как выполнять его операции, а M-код выполняет негеометрические действия станка. G-код и M-код должны работать вместе, чтобы станок с ЧПУ функционировал правильно.
Введение в Power Query M Code
Power Query — это очень мощный инструмент для извлечения и преобразования данных, встроенный в Excel 2016 (или более позднюю версию), Excel для Office 365 и Power BI.
Его можно найти на вкладке Данные в разделе ленты «Получение и преобразование данных».
Он очень мощный, а также очень простой в использовании, а редактор запросов имеет очень интуитивно понятный пользовательский интерфейс для пользователя Excel. Многие шаги преобразования можно легко выполнить с помощью ленты редактора запросов Power, и вам не нужно знать какой-либо код для очистки и формирования ваших данных.
За кулисами удобного для пользователя редактора Excel переводит каждый шаг вашего процесса преобразования из этих ленточных команд в кодовый язык M power query.
Этот пост познакомит вас с основами языка кода M power query и предполагает, что вы уже знакомы с основами power query.
Что такое М-код?
M означает данные M ash-up, так как запрос мощности связан с подключением к различным источникам данных и их «смешиванием».
M-код — это язык за кулисами запроса питания.
Когда вы создаете преобразование данных в пользовательском интерфейсе редактора мощных запросов, Excel записывает соответствующий M-код для запроса.
M является функциональным языком, что означает, что он в основном написан с функциями, которые вызываются для оценки и возврата результатов. Код M поставляется с очень большой библиотекой предопределенных функций, и вы также можете создавать свои собственные.
Где можно написать код Power Query M?
Если вы хотите начать писать или редактировать M-код, вам нужно знать, где это можно сделать. Это возможно в двух местах: в строке формул или в расширенном редакторе.
Панель формул
Для каждого шага, созданного в пользовательском интерфейсе редактора, вы можете просмотреть соответствующий M-код в строке формул.
Если вы не видите строку формул, перейдите на вкладку View и убедитесь, что установлен флажок Панель формул .
Вы можете редактировать M-код для любого шага запроса, щелкнув формулу и отредактировав существующий код.
По завершении вы можете принять любые изменения, нажав на галочку или нажав Введите . Вы также можете отменить свои изменения, нажав X или нажав Esc .
Вы также можете создать совершенно новые шаги в своем запросе с помощью строки формул, щелкнув символ fx рядом с панелью формул. Это создаст новый шаг, который ссылается на предыдущий шаг по имени, а затем вы можете создать любой M-код, который вам нужен.
Расширенный редактор
В строке формул отображается только М-код для текущего выбранного шага в запросе, но в расширенном редакторе можно просматривать и редактировать М-код для всего запроса.
Вы можете открыть расширенный редактор из двух мест на ленте редактора. На вкладке Home или на вкладке View нажмите кнопку Advanced Editor .
Несмотря на «расширенное» прозвище, редактор является самым простым редактором кода, который вы увидите, и (пока) не содержит каких-либо функций автозаполнения IntelliSense, подсветки синтаксиса или автоматического форматирования.
Расширенный редактор отобразит имя запроса, покажет M-код для запроса и отобразит предупреждение о любых нарушениях синтаксиса в M-коде. Вот и все!
Библиотека стандартных функций
Поскольку код М является функциональным языком, все дело в функциях, а код М поставляется с большой библиотекой предопределенных функций, называемой стандартной библиотекой.
Информацию обо всех доступных функциях стандартной библиотеки можно найти на веб-странице Microsoft Power Query M Reference, включая синтаксис функций и примеры.
Стандартную библиотеку также можно просмотреть в редакторе запросов Power с помощью ключевого слова #shared .
При вводе в строку формул вы можете просмотреть все доступные функции, щелкнув слово Функция справа от названия функции. Вы найдете тот же синтаксис и примеры, что и на справочной веб-странице.
Чувствительность к регистру
Первое, о чем нужно помнить при написании M-кода, это то, что это язык с учетом регистра.
Это означает, что x не то же самое, что X или abc не то же самое, что ABC . Это верно для любых значений, переменных, функций и т. д.
Выражения и значения в Power Query
Power query — это все о выражениях и значениях .
Выражение — это то, что можно вычислить, чтобы вернуть значение в запросе мощности. 1 + 1 — это выражение, результатом которого является значение 9.0077 2 .
Значение представляет собой отдельный фрагмент данных. Значения могут быть отдельными значениями, такими как числа, текст, логическое значение, нуль, двоичное значение, дата, время, дата-время, дата-время или продолжительность.
Значения также могут иметь более сложную структуру, чем отдельные значения, такие как списки, записи и таблицы.
Вы также можете использовать значения, представляющие собой комбинацию списков, записей и таблиц. Списки списков, таблицы списков, таблицы таблиц и т.
д. Это все возможные структуры значений.
Одиночные литеральные значения
Отдельные литеральные значения являются основным строительным блоком всех остальных значений.
-
123,45— числовое значение. -
"Привет, мир!"— это текстовое значение. -
true— логическое значение. -
nullпредставляют отсутствие значения.
Отдельные внутренние значения
Внутренние значения создаются с использованием различных внутренних функций.
-
#время(часы,минуты,секунды) -
#date(годы, месяцы, дни) -
#datetime(годы, месяцы, дни, часы, минуты, секунды) -
#datetimezone( годы, месяцы, дни, часы, минуты, секунды) , смещение-часы, смещение-минуты) -
#duration(дни, часы, минуты, секунды)
Например, для построения даты 2018-12-31 вам потребуется построить ее с помощью #date(2018, 12, 31) встроенная функция.
Структурированные значения
Списки
Список представляет собой упорядоченную последовательность значений.
Список можно определить с помощью фигурных скобок. {1, 2, 3} — это список, содержащий числа 1 , 2 и 3 . Поскольку порядок важен, это не тот же список, что и {3, 2, 1} .
{"Hello", "World"} — это список, содержащий текст "Hello" и "World" .
Также возможны списки списков, поэтому {{1, 2}, {3, 4, 5}} — это список из двух списков. Первый список содержит числа 1 и 2 , а второй список содержит числа 3 , 4 и 5 .
Вы можете создавать последовательные списки, используя формат {x..y} . {2..5} создаст список {2, 3, 4, 5} . Это также работает и для текстовых символов. {"a". создаст список
."d"} {"а", "б", "в", "г"} .
У вас также может быть список без элементов, {} — это пустой список.
Поскольку списки упорядочены, вы можете ссылаться на элементы в списке с отсчитываемым от нуля номером индекса . {1, 2, 3}{2} будет оцениваться как 3 , так как это второй элемент в списке (на основе нулевого индекса).
Записи
Запись представляет собой упорядоченную последовательность из Полей .
Каждое поле состоит из имени поля, которое однозначно идентифицирует поле, и значения поля, которое может быть значением любого типа.
Вы можете определить запись с помощью квадратных скобок. [FirstName = "John", Age = 38] — это запись с двумя полями. Первое поле в записи имеет имя поля FirstName и значение John . Второе поле в записи имеет имя поля Age и значение 38 .
Также возможны записи записей, [Person = [FirstName="John", Age = 38]] — запись с одним полем с именем поля Person и значение поля, которое является записью.
Также возможны пустые записи, [] — пустая запись.
На значение поля в записи можно ссылаться по имени поля. [FirstName = "John", Age = 38][FirstName] будет оцениваться как John .
Таблицы
A Таблица представляет собой упорядоченную последовательность из строк , где каждая строка представляет собой список.
Таблицы можно создавать только с помощью встроенной функции. Вы можете построить таблицу, используя #table() из списка заголовков столбцов и списка строк.
#table({"Буквы", "Числа"}, {{"A", 1}, {"B", 2}, {"C", 3}}) создаст таблицу с 2 столбцами , 3 строки и заголовки столбцов Буквы и Цифры .
Можно создать пустую таблицу, используя пустые списки во встроенной функции #table() . #table({}, {}) создаст пустую таблицу.
Вы можете ссылаться на любое значение в таблице с отсчитываемым от нуля индексом строки и именем заголовка столбца. #table({"Буквы", "Числа"}, {{"A", 1}, {"B", 2}, {"C", 3}}){2}[Буквы] будет оцениваться как C , так как это 2-я строка (на основе нулевого индекса) столбца Letters .
Выражения
Выражения — это все, что может быть преобразовано в значение.
Это относится и к самим ценностям. Например, выражение 1 оценивается как значение 1 .
Хотя обычно вы думаете, что выражения состоят из более сложных операций или функций.
Например.
- Выражение
1 + 1дает результат2. - Выражение
3 > 2даетtrue. - Выражение
"Hello" & "World"оценивается как"Hello World".
- Выражение
Text.Upper("Hello World")оценивается как"HELLO WORLD".
Операторы
Наряду со стандартной библиотекой M-код также имеет список специальных функций, называемых операторами.
Они принимают ровно два значения (или выражения, результатом которых является значение) и возвращают одно значение.
Арифметика
Код M поставляется с основными арифметическими операторами, которые вы ожидаете от обычных Excel + , -, * и /. Они позволят вам складывать, вычитать, умножать и делить значения соответственно.
Их можно использовать с различными другими типами значений, кроме чисел. Например, вы можете добавить продолжительность к дате.
#date(2018,12,25) + #duration(7, 0, 0, 0) будет оцениваться как 2019-01-01 .
Сравнение
Вы можете сравнивать значения в M-коде, используя операторы сравнения < , > , <= , >= , = , <>
8.
-
x < yбудет иметь значение true, если x меньше y. -
x > yбудет оцениваться как true, если x больше y. -
x <= yбудет оцениваться как true, если x меньше или равно y. -
x >= yбудет оцениваться как true, если x больше или равно y. -
x = yбудет оцениваться как true, если x равно y. -
x <> yбудет оцениваться как true, если x не равно y.
Можно использовать с различными типами значений. Например, вы можете сравнить два списка с помощью оператора равенства.
{1,2,3,4} = {1,2,3} будет оцениваться как false , поскольку списки не совпадают.
Объединение и объединение
Вы можете объединять текст и объединять списки, записи и таблицы с помощью оператора амперсанда и .
Например.
-
"Hello" и "World"будет оцениваться как"Hello World".
-
{1,2,3} и {3,4,5}будет оцениваться как{1,2,3,3,4,5}.
Логический
Вы можете выполнять операции над логическими значениями (или выражениями, которые возвращают логические значения) с помощью не , и , а или операторы.
-
не xбудет оцениваться как истина, если x ложно. -
x и yбудут оцениваться как истинные, когда оба x и y истинны. -
x или yбудет оцениваться как истина, когда либо x, либо y истинны.
Код комментариев
Как и следовало ожидать от любого языка программирования, в код можно добавлять комментарии.
В М-коде возможны два типа комментариев. Однострочные комментарии и многострочные комментарии.
Однострочные комментарии
M-код находится здесь Здесь находится код М // Это однострочный комментарий Здесь находится М-код
Однострочный комментарий можно создать, поставив перед комментарием два символа косой черты // .
Все, что находится в той же строке до этого, будет интерпретироваться как M-код, а все, что после него, будет интерпретировано как комментарий.
Многострочные комментарии
Здесь находится код M /*Это комментарий на нескольких строках*/ Здесь идет М-код
Можно создать многострочный комментарий, поместив комментарий между /* и */ символами. Все, что выходит за их пределы, будет интерпретироваться как М-код. Все, что находится между ними, будет интерпретироваться как комментарий.
Оператор Let
Оператор let позволяет оценить набор значений и присвоить им имена переменных, которые затем можно использовать в последующем выражении, следующем за оператором in .
лет
а = 1,
б = 2,
с = а + б
в
с Это выражение состоит из трех выражений, вычисляемых после оператора let .
Каждое выражение отделяется запятой, кроме последнего перед в выражении .
В этом примере все выражение let и in будет оцениваться как 3 .
лет
с = а + б,
б = 2,
а = 1
в
c Вы можете подумать, что выражения в операторе let должны появляться в том порядке, в котором они должны быть вычислены. Но это не так!
Приведенный выше код абсолютно верен и также будет оцениваться как 3 . Оценщик М-кода автоматически рассчитает порядок необходимых вычислений на основе зависимостей выражений.
Очевидно, что человеку легче читать М-код, если он написан в порядке оценки, но есть и другое преимущество.
Выражения появятся как отдельные шаги в окне Applied Steps . При записи не по порядку выражения будут отображаться как один комбинированный шаг.
лет
а = 1,
б = 2
в
a + b Вы также можете вычислять выражения в части in выражения let... in... .
Имена переменных
лет
#"Это имя переменной? Ого!!!" = 1 + 1
в
#"Это имя переменной? Ого!!!" Вы можете присвоить своим выражениям практически любое имя, используя символы #"" .
Вы даже можете использовать пробелы и другие специальные символы.
Единственным исключением является использование зарезервированных ключевых слов.
Имена переменных появятся в Applied Steps редактора запросов, поэтому возможность использовать символы пробела — отличная возможность.
Выражения Each
Выражение each — это сокращение для объявления функций, принимающих один параметр с именем _ (подчеркивание).
лет
Источник = #table({"Числа"}, {{1}, {2}, {3}, {4}, {5}}),
#"Добавленный пользовательский" = Table.AddColumn(Источник, "Двойной", каждый 2*[Числа])
в
#"Добавлен пользовательский" В этом примере вы создаете новый столбец, который умножает столбец Numbers на 2 для в каждой строке .
лет
Источник = #table({"Числа"}, {{1}, {2}, {3}, {4}, {5}}),
#"Добавленный пользовательский" = Table.AddColumn(Source, "Double", (_) => 2*_[Numbers])
в
#"Added Custom" Вы можете создать тот же запрос, используя синтаксис подчеркивания, который семантически эквивалентен оператору each .
Оба запроса будут работать одинаково.
Операторы If Then Else
M-код довольно скуден по сравнению с другими языками, когда дело доходит до логических выражений.
Нет доступных операторов select case или loop . Доступно только выражение if... then... else... .
if [логическое выражение для проверки] затем [сделайте это, когда верно] else [сделать это, если ложь]
Синтаксис прост и подобен большинству других языков программирования.
Это может быть все в одной строке или может быть представлено в отдельных строках для удобства чтения.
Попытаться иначе Заявления
Ошибки могут возникнуть при попытке выполнить операции, требующие определенных типов данных. Например, попытка умножить число на текстовое значение приведет к ошибке.
лет
Источник = #table({"Число", "Число и текст"}, {{2, 2}, {2, "Привет"}}),
#"Добавленный пользовательский" = Table.AddColumn(Источник, "Продукт", каждая попытка [Число]*[Число и текст] иначе 0)
в
#"Добавлен пользовательский" Ошибок можно избежать, используя выражение try..
.. else...
Это позволит избежать ошибок в результатах запроса и позволит заменить ошибки любым значением или выражением.
Функции
Функция — это отображение набора значений параметра в значение. Наряду с функциями стандартной библиотеки M-код позволяет создавать собственные функции.
лет
Произведение = (х, у) => х * у,
Результат = Продукт (2,3)
в
Результат Этот запрос определяет функцию, умножающую два числа. Затем запрос вызывает и вычисляет функцию со значениями 2 и 3 , которая оценивается как 6 .
Функции с дополнительными параметрами
Существует два типа параметров функций: обязательный параметр и необязательный параметр.
Обязательные параметры должны всегда указываться при вызове функции.
Дополнительные параметры не нужно указывать при вызове функции. Если необязательный параметр отсутствует, то в функцию будет передано значение ноль .
лет
Продукт = (x, необязательный y) => если y равен нулю, то x иначе x * y,
Результат = Продукт(2)
в
Результат Эта функция имеет необязательный второй аргумент. Затем запрос вызывает и оценивает функцию, используя только обязательный параметр со значением 2, которое оценивается как 2.
Обратите внимание, что функция должна учитывать, что y имеет значение null, в противном случае отсутствующий необязательный аргумент может привести к тому, что функция вычислит значение ошибка.
Рекурсивные функции
Также можно написать функцию, которая ссылается сама на себя, используя оператор области видимости @ .
лет
Фибоначчи = (п) =>
если п = 1
затем 1
еще
если п = 2
затем 1
иначе @Fibonacci(n-1) + @Fibonacci(n-2),
Результат = Фибоначчи (7)
в
Результат Последовательность Фибоначчи является примером функции, определяемой рекурсивно.
Следующее число в последовательности определяется как сумма двух предыдущих чисел.
Итак, чтобы получить n-е число, вам нужно знать (n-1)-е и (n-2)-е числа.
Эта функция найдет n-е число Фибоначчи путем сложения (n-1)-го и (n-2)-го чисел Фибоначчи.
Результатом запроса является 13 , поскольку 13 — это 7-е число Фибоначчи.
Вот еще несколько полезных примеров использования рекурсивных функций для репликации функции TRIM Excel для удаления лишних пробелов между словами или массового поиска и замены значений на основе списка.
Функции запроса
В приведенных выше примерах определена функция в запросе, затем вызвана и оценена функция в запросе.
Также можно создать запрос, являющийся функцией (функция запроса), которую можно вызывать и оценивать из других запросов.
let FunctionResult = (Аргумент1, Аргумент2,...) =>
позволять
/*Здесь находится M-код для оценки в функции*/
в
Результат
в
FunctionResult Это общий формат, необходимый для создания функции запроса.
Обратите внимание: вам потребуется оператор let... in... в операторе let... in... функции запроса для выполнения нескольких шагов.
Выводы
Расширенный запрос — это отличная функция Excel, которая может помочь вам автоматизировать и упростить импорт и преобразование данных.
Вы можете многое сделать, используя только графический интерфейс «наведи и щелкни», даже не касаясь M-кода.
Но по мере того, как ваши требования становятся более продвинутыми, может наступить время, когда вам потребуется отредактировать созданный вами M-код или написать свой собственный с нуля.
Любой новый язык программирования не читается, если вы сначала не знаете основ. Мы надеемся, что это руководство поможет вам начать работу с M-кодом, чтобы вы могли начать создавать более сложные запросы.
Об авторе
Джон является Microsoft MVP и квалифицированным актуарием с более чем 15-летним опытом. Он работал в различных отраслях, включая страхование, рекламные технологии и совсем недавно в консалтинге Power Platform.
Он умеет решать проблемы и страстно любит использовать технологии для повышения эффективности бизнеса.
Pulse Том 31, декабрь 2020 г. | BAE Systems
Если вы когда-нибудь терялись во время вождения, искали ночную еду на вынос по телефону или пытались взобраться на гору в тумане, вы, вероятно, полагались на глобальную систему позиционирования. Оборонный сектор также зависит от GPS, и очень важно иметь надежный сигнал, который обеспечивает точное позиционирование, навигацию и синхронизацию — или PNT. От пилотирования самолета к месту назначения до сообщения точек сбора по пересеченной местности — каждый из них зависит от сигнала GPS.
Но что произойдет, если пропадет сигнал GPS? Это повлияет на нашу повседневную жизнь, силы обороны могут рисковать во враждебных ситуациях, а технологии, обеспечивающие нашу связанную жизнь, какой мы ее знаем, будут потеряны. Будьте уверены, в настоящее время 30 спутников GPS усердно работают над передачей сигналов со скоростью света, хотя сигналы от некоторых из этих спутников находятся под угрозой.
У наших противников есть возможности маскировать сигналы GPS и создавать поддельные, а коммерческий и оборонный секторы спрашивают: «Где я?» чаще.
Современные сигналы GPS поддерживают национальную оборону; национальная безопасность; и гражданские, коммерческие и научные требования. Еще в 2017 году было подсчитано, что только в Соединенных Штатах GPS принесла более 1,4 триллиона долларов экономической выгоды. Спутниковая группировка GPS, принадлежащая правительству США и управляемая ВВС США, посылает повторяющиеся сигналы, обмениваясь информацией о точном местоположении каждого спутника и времени, когда они отправили сигнал. Устройства с приемниками GPS, такие как смарт-часы, ошейники для домашних животных и другая электроника, получают эти сигналы, вычисляя расстояние от трех или более спутников GPS, чтобы триангулировать свое местоположение. Но сигналы, исходящие от некоторых из этих спутников, можно заглушить и ими можно манипулировать.
ВВС США провели масштабную модернизацию спутниковой системы GPS, наземного сегмента и пользовательского оборудования, чтобы предоставить нашим истребителям расширенные возможности в виде сигнала нового военного кода (M-Code).
На сегодняшний день в настоящее время активны 23 спутника GPS с поддержкой М-кода, и соответствующее пользовательское оборудование GPS с М-кодом, а также приемники М-кода с защитой от помех и спуфинга пользуются большим спросом у военных США. Они также являются приоритетным направлением для таких компаний, как BAE Systems.
BAE Systems — одна из трех компаний в мире, разрабатывающих базовую технологию M-Code и GPS-приемники M-Code для вооруженных сил США после недавнего приобретения ее подразделения Navigation & Sensor Systems в июле 2020 года. Precision Strike, управляющее направление бизнеса в рамках Сектор электронных систем переживает массовый рост на рынке GPS, а NSS поставляет приемники M-Code для защиты военных. На самом деле, пять из восьми военных GPS-технологий NSS прошли сертификацию M-кода безопасности и в настоящее время находятся в стадии полной разработки. Затем эти технологии могут быть интегрированы в более чем 700 военных систем, требующих обновления М-кода.
Так почему М-код важен? Поскольку PNT находится под угрозой, M-Code представляет собой надежный и безопасный сигнал GPS, который имеет решающее значение для наших наземных войск, бортовых платформ и систем вооружения.
С появлением инновационных систем оперативного управления возникает потребность в безопасном сигнале, обеспечивающем защиту от помех и спуфинга. M-Code, мощный, хорошо зашифрованный военный сигнал GPS, более безопасен, чем любой другой, используемый сегодня.
Это также сводится к защите от помех и спуфинга. Наши противники усердно работают над увеличением мощности своих электромагнитных сигналов, чтобы создать дополнительный «шум», который может преодолеть сигналы передачи от наших спутников GPS. Во всем мире были преднамеренные случаи создания помех, которые нарушали связь, системы защиты и другие устройства GPS, которые уязвимы для методов глушения со стороны противника.
Поскольку многие ветви нашего правительства полагаются на точную информацию PNT, эти данные подвержены преднамеренному или непреднамеренному нарушению сигнала GPS, поэтому сигналы M-Code обеспечивают надежную защиту от помех. Существует также обманное подавление, которое представляет собой искусство эффективной подделки поддельных сигналов GPS для создания дезинформации.
GPS-спуфинг происходит, когда кто-то использует радиопередачу для отправки поддельного сигнала GPS на приемник, который противодействует и подавляет спутниковый сигнал GPS. Спуфинг может сбить с курса самолеты или наземные войска и подвергнуть их опасности, но высоко зашифрованный и более мощный сигнал М-кода защитит сигналы GPS от спуфинга и обеспечит дополнительную безопасность нашим бойцам.
Заглядывая вперед, BAE Systems ожидает, что все больше военных систем будут модернизированы с сегодняшнего Y-кода (первоначальный военный сигнал шифрования GPS) до M-кода, поскольку наши военные бойцы сейчас больше, чем когда-либо, зависят от надежного и безопасного GPS. Поскольку помехи и спуфинг со стороны противника становятся все более заметными, M-Code изменит правила игры, необходимые нашим вооруженным силам для преодоления сложных условий приема сигналов.
Имея более чем 45-летний опыт надежной работы с GPS, компания BAE Systems зарекомендовала себя в таких областях, как высокоточные боеприпасы, конструкция ГСН и системная интеграция.




Всего комментариев: 0