Программируемый контроллер прерываний

Микроконтроллеры для начинающих. часть 57. прерывания

Абстрактная модель программного обеспечения СКУД.

Целью создания абстрактной модели СКУД было:1.    Выделить минимальный набор абстрактных сущностей СКУД,2.    Определить порядок и механизм взаимодействия абстрактных сущностей.Выделение абстрактных сущностей позволяет создать программное обеспечение, минимально зависящее от способов реализации конкретных элементов системы.По результатам моделирования были выделены следующие абстрактные сущности:1.    БД СКУД как хранилище прав прохода,2.    Контроллер СКУД, как основной механизм валидации карты.Абстрактная БД СКУД.Независимо от способа реализации БД СКУД рассматривается как некая таблица, в которой хранятся права прохода.Механизм реализации этой таблицы может быть различным (не обязательно в таком виде, как это указано в информационной модели).Задача: выделить механизм, который позволяет получить таблицу прав независимо от способа реализации этой таблицы.Вариант решения задачи: таблица прав прохода формируется как ряд последовательных действий по добавлению и удалению записей.Если этот набор действия зафиксировать и сделать доступным извне, то повторение этих операций приведет к получению копии таблицы прав.Т.о., достаточно иметь очередь команд на формирование таблицы прав в открытом доступе, чтобы привести в соответствие любую подчиненную таблицу прав (в контроллерах).Реализация этой очереди для каждого из контроллеров СКУД позволит добиться однозначного соответствия БД контроллера СКУД базе данных СКУД.Т.о., БД СКУД должна предоставить:1.    Таблицу очереди команд,1.    Процедуру вставки событий.В ходе дальнейшего развития может предоставляться доступ и к другим элементам базы данных (например, к функциям для интеграции)Абстрактный контроллер СКУД.Контроллер СКУД должен обеспечить поддержку и реализацию минимального набора команд, перечень которых изложен в разделе Информационная модель СКУД.Наличие этого набор обеспечит прием команд из очереди команд БД СКУД, и БД контроллера СКУД и БД СКУД будут совпадать, что и требуется для решения задачи.Связь между БД СКУД и контроллером СКУД.Между БД СКУД и контроллером СКУД должен быть набор ПО, который удовлетворяет требованиям технического задания на ПО СКУД.Вариантов может быть много, и некоторые из них описаны в Приложении 4.Очевидно, что появляется уровень передачи данныхТ.к. набор команд абстрактного контроллера СКУД известен, то очевидно, что уровень передачи данных должен реализовать этот набор команд.В результате абстрактная модель программного обеспечения СКУД имеет такой вид:Рисунок 2 Абстрактная модель программного обеспечения СКУДПри таком уровне абстрагирования система может быть реализована в различных модификациях

При таком подходе:1.    для БД СКД может быть использована любая СУБД.2.    При реализации уровня передачи данных можно не учитывать специфику контроллеров СКУД и уделить внимание вопросам надежности.3.    Абстрактная модель контроллера СКУД позволяет:a.     Использовать разнотипные физические контроллеры СКУД.b.    Использовать программно реализованные объекты СКУД

Общие сведения о портах микроконтроллеров AVR

Порты микроконтроллеров AVR — это устройства ввода/вывода, позволяющие микроконтроллеру передавать или принимать данные. Стандартный порт микроконтроллера AVR содержит восемь разрядов данных, которые могут передаваться или приниматься параллельно. Ножки микроконтроллера также называют пинами, контактами или выводами. Порты обозначаются латинскими буквами А, В, С и т.д. Количество портов зависит от конкретной модели микроконтроллера.

Kонфигурирование каждой линии порта (задание направления передачи данных) может быть произведено программно в любой момент времени. Входные буферы портов построены по схеме триггера Шмитта. Для линий, сконфигурированных как входные, также имеется возможность подключения внутреннего подтягивающего резистора сопротивлением 35…120 кОм между входом и проводом питания. Kроме того, если вывод (вход) с подключенным внутренним подтягивающим резистором подключить к общему проводу, он может служить источником тока.

Обращение к портам производится через регистры ввода/вывода, причем под каждый порт в адресном пространстве ввода/вывода за-резервировано по 3 адреса. По этим адресам размещаются три регистра: регистр данных порта PORTx, регистр направления данных DDRx и регистр выводов порта PINx. Разряды этих регистров имеют названия: Px7…Px0 — для регистров PORTx, DDx7…DDx0 — для регистров DDRx и PINx7…PINx0 — для регистров PINx.

Действительные названия регистров (и их разрядов) получаются подстановкой названия порта вместо символа «x», соответственно для порта A ре¬гистры называются PORTA, DDRA, PINA, для порта B — PORTB, DDRB, PINB и т.д.

Следует заметить, что «регистры» PINx на самом деле регистрами не являются, по этим адресам осуществляется доступ к физическим значениям сигналов на выводах порта. Поэтому они доступны только для чтения, тогда как регистры PORTx и DDRx доступны и для чтения, и для записи.

Таким образом, запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. А чтение состояния порта выполняется чтением либо регистра данных порта PORTx, либо регистра выводов порта PINx. При чтении регистра выводов порта PINx происходит считывание логических уровней сигналов, присутствующих на выводах порта. А при чтении регистра данных порта PORTx происходит считывание данных, находящихся в регистре-защелке порта – это справедливо как для входных, так и для выходных контактов.

Любой порт микроконтроллера AVR можно сконфигурировать как вход или как выход. Для этой цели используется регистр DDRx. На вход или выход можно сконфигурировать сразу весь порт или только отдельный его вывод (контакт, пин).

Регистр DDRx определяет, является тот или иной вывод порта входом или выходом. Если некоторый разряд регистра DDRx содержит логическую единицу, то соответствующий вывод порта сконфигурирован как выход, в противном случае — как вход. Буква x в данном случае должна обозначать имя порта, с которым вы работаете. Таким образом, для порта A это будет регистр DDRA, для порта B — регистр DDRB и т. д.

Принцип работы ПЛК

По сути, микроконтроллер достаточно близок к реле. Только вместо механических контактов и катушек в нем — электронные цепи. Понять принцип действия будет легко любому инженеру, знакомому со схемами, основами электротехники.

Датчик освещенности на входе подает сигнал в блок обработки данных. В нормальном состоянии процессор не реагирует. Как только сенсор определит падение освещения, изменится его сопротивление, центральный блок задействует цепи питания электроламп.

Для управления ПЛК, его программирования используется бытовой ПК. Несколько отдельных микроконтроллеров образуют каскад с усложненными задачами. Системы «умный дом», автоматика включения двигателя насоса для закачки воды в накопительный бак давно содержат в себе подобные блоки.

Сложные микроконтроллерные устройства обеспечивают охрану, защиту периметра (квартиры), включая связь с полицией (владельцем) через модем, подъем тревоги при проникновении нарушителей, разрушении механизма закрытия двери.

Первый этап работы устройства состоит из экспресс-теста задействованного оборудования. Одновременно идет загрузка операционной среды, управляющих программ. Все как в настольном ПК при старте Windows. Предусмотрена пошаговая отработка команд (отладка), при которой допускается мониторинг, корректировка переменных.

Для простоты восприятия рабочий, шаговый режим ПЛК разбит на типовые циклы. Они повторяются во время функционирования устройства. В каждом цикле, «маршрутной карте» заключаются 3 действия:

Завершается цикл быстрым переходом к первому этапу «урока».

Типы связи систем

Умное удаленное освещение дома

Связь для управления этой довольно сложной системой является немаловажным компонентом. Существует несколько основных типов связи:

  • Беспроводная локальная. Этот тип связи имеет ограниченный радиус действия и производится с помощью радиосигнала, Wi-Fi, или же в крайнем случае Bluetooth. Управление осуществляется с любой точки помещения или даже придомовой территории. Однако, если дом многоэтажный и ещё выполнен из материала, который выполняет экранирующую функцию (обшитый железом или даже состоит бетонных плит с арматурной увязкой), то устанавливаются специальные, усиливающие беспроводной сигнал, приборы или же дополнительные радиоточки;
  • Удалённая беспроводная связь. Она возможна при условии подключения контроллера умного дома к глобальным сетям или системам расширения связи, которые обеспечивают постоянный доступ к ним. Это такие сети, как GSM/GPRS, любой мобильны интернет. То есть, даже если отсутствует интернет можно отправить или получит смс на телефон о состоянии той или иной системы управляемой контроллером. Основные устройства связи это телефон (смартфон), планшет или ноутбук.
  • Проводной локальный. Это один из устаревших и выходящих из обихода способов, но всё же обладающих хорошей надёжностью. Связь происходит по кабелю, витой паре или электрической проводке. Любой центральный или региональный контроллер умного дома имеет такое подключение. Расширение связи и функции происходит с помощью коммутатора, который создаёт несколько ответвлений. Управление осуществляется путём нажатия кнопок на панели управления, она может быть сенсорной или же механической. Но иногда и через компьютер можно выполнять соединение, но это не совсем удобно теряется мобильность в управлении.
  • Проводной удаленный способ. Это довольно дорогой способ, так как подразумевает прокладку большого количества кабельной продукции. И чем дальше будет расположен блок управления тем проблемнее его связь с контроллером. Чаще всего такой метод связи применяется не для частных а для государственных организаций и структур для управления несложными процессами корпусов зданий и близлежащей территории. Для домашнего пользования применяется крайне редко.

То есть устройства, за счёт которых, и происходит непосредственное управление чаще всего идут в комплекте. Представляют они из себя графические панели управления с кнопочным или сенсорным воздействием, также это могут быть пульты дистанционного управления, настроенные на радиочастоту передатчика. Такие приборы управления, как мобильные телефоны, компьютеры или планшеты, естественно, приобретаются отдельно. Связь через них и управление происходит при помощи специально разработанного программного управления, которое и обеспечивает удалённый доступ при помощи интернета.

Примеры работы через MQTT

Получение значения от датчика температуры и вывод его в веб-интерфейс


Показания датчика и его уникальный идентификатор на странице Devices веб-интерфейса

К Wiren Board подключён датчик температуры по шине 1-Wire. Проследим, как данные с него через MQTT попадают в веб-интерфейс:

  1. Драйвер wb-mqtt-w1, отвечающий за данную аппаратную функцию, опрашивает подключенные к контролеру датчики 1-Wire.
  2. При получении значения драйвер публикует MQTT сообщение вида:
    /devices/wb-w1/controls/28-0115a48fcfff 23.25

    Оно значит, что от устройства 1-Wire с идентификатором 28-0115a48fcfff получено значение 23.25 °C.

  3. Веб-интерфейс, который подписан на все сообщения из MQTT, получает это сообщение и выводит значение датчика на страницу.

Нажатие кнопки в веб-интерфейсе и переключение реле на внешнем модуле


Веб-интерфейс после нажатия кнопки включения Реле 1 на подключённом по RS-485 релейном модуле WB-MRM2

К контроллеру по шине RS-485 подключён релейный модуль WB-MRM2. Пользователь в веб-интерфейсе нажимает кнопку включения реле. Проследим, как команда из веб-интерфейса попадает на внешний модуль:

  1. После нажатия кнопки веб-интерфейс публикует по MQTT сообщение вида:
    /devices/wb-mrm2_130/controls/Relay 1/on 1

    Оно значит, что устройство WB-MRM2 с адресом 130 должно перевести Реле 1 в состояние логической единицы — «включено».

  2. Драйвер wb-mqtt-serial, отвечающий за данную аппаратную функцию, получает это сообщение (он подписан на все сообщения, относящиеся к подключённым по RS-485 устройствам) и посылает по шине RS-485 релейному модулю команду на включение первого реле.
  3. Релейный модуль WB-MRM2 получает команду от контроллера, переключает реле и посылает обратно уведомление «Реле 1 включено».
  4. Драйвер wb-mqtt-serial получает это уведомление по RS-485 и публикует по MQTT сообщение:
    /devices/wb-mrm2_130/controls/Relay 1 1

    Оно значит, что первое реле на устройстве WB-MRM2 с адресом 130 находится (уже переведено) в состоянии логической единицы — «включено».

# Асинхронность

Мы любим современный JavaScript и знаем, что извлечение данных в основном асинхронно. Поэтому Nest
поддерживает и хорошо работает с синтаксисом .

Каждая асинхронная функция должна возвращать . Это означает, что вы можете вернуть значение,
которое Nest сможет зарезолвить самостоятельно. Давайте посмотрим пример этого:

cats.controller.ts

Приведенный выше код полностью корректен. Более того, обработчики маршрутов Nest стали еще мощнее,
поскольку могут возвращать RxJS observable streams(opens new window).
Nest автоматически подпишется на источник и возьмет последнее выданное значение (как только поток будет завершен).

cats.controller.ts

Оба вышеуказанных подхода работают, и вы можете использовать тот, который соответствует вашим требованиям.

Для каких задач нужно обнулять контроллер

Основная задача процедуры обнуления контроллера – это его разблокировка и восстановление работоспособности ноутбука, как мобильного устройства, питающегося от аккумуляторов. При этом также решается несколько побочных, но важных задач. Во время сброса можно (и нужно) установить паспортное значение емкости АКБ, а если точно известно фактическое – то и его (у новых элементов можно считать обе емкости равными, хотя это на совести производителя). Также можно обнулить счетчик циклов заряда. Это нужно для ведения правильной статистики и отслеживания в дальнейшем состояния батареи – утилиты контроля АКБ берут данные от контроллера.

Логика простой программы

Допустим, у нас есть контроллер, лампа и выключатель. Контроллер подключается к источнику питания, со входом соединяется выключатель, а на выходе ставится лампа. При нажатии кнопки должна загораться лампа. Вариант простейшей программы для ПЛК:

  1. При разомкнутом выключателе на вход не подается напряжение, поэтому на выходе лампа не будет загораться.
  2. При нажатии на кнопку подается сигнал на вход. В программе контакты, соответствующие порту, будут активироваться. Все мнимые реле начнут работать внутри контроллера. Это образное обозначение, на деле никаких электромагнитных реле в нем нет. В результате появляется напряжение на выходе контроллера и лампа загорается.

Все действия, которые производятся с контроллерами, удобнее всего рассматривать на примере электромагнитных реле. Так нагляднее видна работа устройства.

Подключение элементов к ПЛК

Во всех моделях контроллеров есть клеммы для подключения питания – некоторые нуждаются в переменном напряжении вплоть до 120 В, а другие – в постоянном до 24 В. Напряжение питания зависит от модели устройства. Входные клеммы обозначаются буквой Х – на каждую подается отдельный сигнал. Общий провод обычно соединяется с нейтралью источника переменного тока или с минусом постоянного.

В корпусе контроллера есть оптический изолятор – простой светодиод. С его помощью происходит связь входной клеммы и общей. При подаче напряжения на ПЛК загорается светодиод – именно по нему можно судить о том, что устройство работает. На выходе происходит генерация сигнала при помощи компьютерной схемотехники – активируется устройство переключения.

 В качестве переключающего устройства могут использоваться электромагнитные реле, транзисторы, силовые ключи, тиристоры. Выходы обозначаются буквой Y. На каждом выходе устанавливается светодиод, сигнализирующий о том, что устройство работает.

Как происходит программирование

Контроллеры – это устройства, позволяющие обрабатывать электрический сигнал и преобразовывать его. На сегодняшний день в ПЛК ставится логика при помощи компьютерной программы. Именно она определяет, на каких выходных клеммах будет присутствовать напряжение при определенных условиях на входных клеммах. Отчасти эта логика схожа с той, которая применяется в релейной схемотехнике. Но в ней нет никаких реле, переключателей, контактов. Написание и просмотр программы происходит при помощи компьютера, который соединяется с портом программирования.

Скрипт PowerShell для проверки доступности всех контроллеров домена

Следующий скрипт PowerShell позволяет поочерёдно проверять контроллеры домена и выполнять для каждого из них определённые действия:

$DCs = Get-ADDomainController -Filter *
ForEach-Object($DC in $DCs)
{
	действия
}

Вот пример простого скрипта PowerShell, который проверяет доступность порта LDAPS (TCP 636) на каждом контроллере домена в вашем домене с помощью командлета Test-NetConnection. Если порт LDAPS недоступен, появится предупреждение.

$DCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem
ForEach($DC in $DCs)
{
	$PortResult=Test-NetConnection -ComputerName $DC.Hostname -Port 636 -InformationLevel Quiet
	if ($PortResult -ne "$True"){
		write-host $DC.Hostname " не доступен" -BackgroundColor Red -ForegroundColor White
	}else {
	write-host $DC.Hostname " доступен" -BackgroundColor Green -ForegroundColor White}
}

Получился простой скрипт для отслеживания доступности всех контроллеров домена в вашем домене.

Также существуют разные сценарии для проверки всех контроллеров домена по очереди.

Принцип действия ПЛК

В отличие от микропроцессорной техники принцип действия ПЛК немного другой. Софт делится на две части. Первая часть представляет собой блок системных программ. Если провести аналогию с ПК, то системное ПО контроллера выступает в роли операционной системы, ответственной за работу низкоуровневых процессов. Системная часть ПО устанавливается в постоянной памяти в любой момент вступает в работу.

Когда ПЛК включается, то уже через мгновение запускается операционная система. Выполнение пользовательской программы циклическое. Цикл работы состоит из четырех фаз:

  • Опрос входов;
  • Выполнение команд;
  • Установка значений для входов;
  • Вспомогательные операции.

Первая фаза цикла полностью обеспечивается системным ПО управления ПЛК. Затем управление берет на себя прикладное ПО – созданный оператором алгоритм. По данной программе контроллер будет выполнять то, что от него хотят. По завершению выполнения этих команд работа опять передается системному ПО. Процесс составления управляющей прикладной программы ПЛК максимально упрощен – программист не должен задумываться, как управлять аппаратными возможностями. Оператор лишь должен указать, какой сигнал будет на входе и как нужно на него реагировать на выходе.

Другие команды G-кода

Итак, команды G-кода, которые мы описали выше, являются наиболее распространенными, но их гораздо больше. Существуют такие команды, как компенсация резца, масштабирование, системы координат заготовки, выдержка и т. Д.

Помимо G-кода, существуют также команды M-кода, которые используются при генерации реальной полноценной программы G-кода. Вот несколько распространенных команд M-кода:

  • M00 — Остановка программы
  • M02 — Конец программы
  • M03 — шпиндель включен — по часовой стрелке
  • M04 — шпиндель включен — против часовой стрелки
  • M05 — остановка шпинделя
  • M06 — Смена инструмента
  • M08 — Система охлаждения ВКЛ.
  • M09 — Система охлаждения ВЫКЛ.
  • M30 — Конец программы

В случае 3D-принтера:

  • M104 — Запуск нагрева экструдера
  • M109 — Подождите, пока экструдер достигнет T0
  • M140 — Запуск подогрева кровати
  • M190 — Подождите, пока стол не достигнет T0
  • M106 — Установить скорость вентилятора

Некоторым из этих команд требуются соответствующие параметры. Например, при включении шпинделя с помощью M03 мы можем установить скорость шпинделя с помощью параметра S. Итак, линия  будет включать шпиндель со скоростью 1000 об / мин.

Мы также можем отметить, что многие коды являются модальными , что означает, что они остаются в силе до тех пор, пока не будут отменены или заменены другим кодом. Например, скажем, у нас есть код для линейного движения резания . Если следующее движение снова будет линейным резанием, мы можем просто ввести координаты X и Y, без надписи G01.

То же самое относится и к параметру скорости подачи F. Нам не нужно включать его в каждую строку, если мы не хотим изменить его значение.

В некоторых файлах G-кода вы также можете видеть « N ## » перед командами. Слово N просто для нумерации строки или блока кода. Это может быть полезно для идентификации конкретной строки в случае ошибки в огромной программе.

Контроллеры двигателей

устройство управления двигателем

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

Таким образом, микроконтроллер и контроллер двигателя должны работать вместе. Для того, чтобы моторы двигались так как нам нужно, используются устройства управления электродвигателями. Обычно микроконтроллер может подавать команду на контроллер двигателя о том, как приводить в действие двигатели с помощью стандартного и простого метода связи.

  • Например, такого как UART (Universal asynchronous receiver/transmitter или УАПП — универсальный асинхронный приемопередатчик). Это один из самых старых и распространенных протоколов передачи данных.
  • Возможно использование PWM (широтно-импульсную модуляцию — ШИМ).
  • Кроме того, некоторые контроллеры двигателей могут управляться вручную аналоговым напряжением, обычно создаваемым потенциометром.

Физический размер и вес контроллера двигателя могут значительно различаться. От устройства, меньшего, чем кончик пальца, используемого для управления мини-сумо роботом до большого контроллера весом в несколько килограммов. Вес и размер контроллера двигателя обычно оказывает минимальное влияние на робота.

Хотя бывает необходимо сделать робота маленького размера или беспилотный летательный аппарат. В результате вес и размер контроллера может быть критичным. Размер контроллера двигателя обычно связан с максимальным током, который он может обеспечить. Увеличенный ток также означает необходимость использования проводов большего диаметра.

Что такое прерывания

Прежде всего, нам надо разобраться, что же такое прерывания. Собственно говоря ответ на этот вопрос кроется в самом термине. Прерывание действительно прерывает нормальное выполнение программы. А управление получает процедура обработки (обслуживания) прерывания, которую кратко называют ISR — Interrupt service routine.

После завершения обработки прерывания выполнение программы продолжается как обычно, с того самого места, в котором прерывание возникло.

Очень похоже на вызов подпрограмм? Да, похоже. Но есть одно важнейшее отличие — программа не должна знать, что прерывание вообще возникало. Программа не должна зависеть от того, возникло прерывание, или нет. За исключением случаев, когда программист такую зависимость предусматривает в явном виде.

А это означает, что переход к обработке прерывания требует дополнительных действий, которые могут выполняться или аппаратно, или программно.

Программные прерывания, синхронные

В микроконтроллерах, тех, что мы рассматриваем, программные прерывания есть только в STM8. Это команда TRAP. Но в микроконтроллерах вообще, тем более, в микропроцессорах, может быть несколько различных программных прерываний.

Программные прерывания всегда синхронные. То есть, они возникают синхронно с ходом выполнения программы, всегда в одном и том же месте — при выполнении команды прерывания.

Программные прерывания можно рассматривать как простой вызов подпрограммы, но адрес этой подпрограммы всегда предопределен и изменить его нельзя. И нельзя передать такой подпрограмме параметры, иначе чем заранее предусмотренные программистом переменные, обычно, глобальные.

Поскольку программные прерывания вызываем мы сами, не требуется сохранение состояния (контекста) процессора. Но поведение конкретного процессора при обработке программных прерываний нужно искать в документации.

Мы не будем рассматривать программные прерывания в рамках данного цикла статей.

Аппаратные прерывания, асинхронные

Сегодня аппаратные прерывания есть в подавляющем большинстве микроконтроллеров. Но исключения все таки есть, например, линейка BaseLine микроконтроллеров PIC.

Аппаратные прерывания всегда асинхронные. То есть, момент их возникновения никак не связан с выполнением программы. Может возникнуть вопрос, как так не связан, а, например, АЦП? Мы же сами запрашиваем преобразование, а значит, возникающее при завершении преобразования прерывание вызвано именно нами, синхронно.

Нет, совсем не синхронно и не нами. Да, мы сами запросили преобразование. Но сколько для преобразования потребуется времени мы не знаем, количество тактов преобразования может зависеть от многих параметров. Поэтому и прерывание все равно возникнет асинхронно.

Аппаратные прерывания могут быть вызваны и внутренними модулями микроконтроллера, и внешними цепями (через специальный вход INT). Кроме того, аппаратные прерывания могут возникать и при выполнении программы, команды. Например, деление на 0. И это тоже асинхронное прерывание.

Приоритеты прерываний

Некоторые аппаратные прерывания могут быть более важными, чем другие. Например, готовность байта полученного из канала связи более важна, чем нажатие кнопки. При этом говорят о приоритете прерываний.

Уровней приоритета может быть несколько. Но возможно и полное отсутствие деления на приоритеты. Если одновременно возникает несколько запросов прерывания, то обрабатываться они будут в порядке убывания приоритета. Реализуется приоретизация аппаратно.

Прерывание может возникнуть во время обработки другого прерывания. В этом случае говорят о вложенности прерываний.

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

Процедура обработки прерывания тоже может быть прервана новым прерыванием, но только если его приоритет выше, чем у обрабатываемого. То есть, мы получаем обработку прерывания внутри обработки другого прерывания. Это и есть вложенность.

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

Примеры использования Get-ADDomainController

Чтобы получить контроллер домена с помощью механизма обнаружения DCLocator, используйте опцию -Discover. Вы можете указать критерии поиска, задав такие опции, как -Service, -SiteName, -DomainName, -NextClosestSite, -AvoidSelf и -ForceDiscover.

Также вы можете найти контроллер домена, которому должен принадлежать ваш компьютер, через службу -DCLocator:

Get-ADDomainController -Discover

Следующая команда получит один доступный контроллер домена на указанном сайте:

Get-ADDomainController -Discover -Site "Default-First-Site-Name"

Опция -ForceDiscover указывает командлету очистить всю кэшированную информацию о контроллере домена и выполнить новое обнаружение. Если этот параметр не указан, командлет может возвращать кэшированные сведения о контроллере домена.

Get-ADDomainController -Discover -Site "Default-First-Site-Name" -ForceDiscover

Эта команда получает один доступный контроллер указанного домена в данном домене с помощью обнаружения.

Get-ADDomainController -Discover -Domain "user01.com"

Вы можете найти ближайший доступный контроллер домена с активной ролью веб-служб AD:

Get-ADDomainController -ForceDiscover -Discover -Service ADWS

Опция -Service задаёт типы получаемых контроллеров домена. Вы можете указать более одного типа, используя список, разделённый запятыми. Допустимые значения для этого параметра:

  • PrimaryDC или 1
  • GlobalCatalog или 2
  • KDC или 3
  • TimeService или 4
  • ReliableTimeService или 5
  • ADWS или 6

Пример использования опции -Service для поиска PDC (Primary Domain Controller Emulator) в вашем домене:

Get-ADDomainController -Discover -Service PrimaryDC

Эта команда ищет компьютер с функцией Глобального каталога в текущем лесу:

Get-ADDomainController -Discover -Service "GlobalCatalog"

Эта команда получает основной контроллер домена с помощью обнаружения и проверяет, используется ли он в качестве сервера времени.

Get-ADDomainController -Discover -Domain "corp.contoso.com" -Service "PrimaryDC","TimeService"

Если ваш контроллер домена не найден или не отвечает, вы можете найти его на ближайшем сайте AD (определяется весом межсайтовых ссылок):

Get-ADDomainController -Discover -ForceDiscover -NextClosestSite

Чтобы найти и получить более одного контроллера домена, используйте опцию -Filter.

Чтобы отобразить список всех контроллеров домена в текущем домене, выполните такую команду:

Get-ADDomainController -Filter * | Format-Table

Используя следующую команду, вы можете подсчитать количество контроллеров домена в AD:

Get-ADDomainController -Filter * | Measure-Object

Вы можете отобразить более удобную таблицу, в которой показаны все контроллеры домена, их имена хостов, IP-адреса, версии ОС и имена сайтов AD:

Get-ADDomainController -Filter *| Select-Object Name,ipv4Address,OperatingSystem,site | Sort-Object name

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

Get-ADDomainController -Filter * -Server dc01.test.com | Select Name,ipv4Address, IsGlobalCatalog,Site
Понравилась статья? Поделиться с друзьями:
Автобасс
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: