8-900-374-94-44
[email protected]
Slide Image
Меню

Can модуль для сигнализации что это: Что такое CAN-модуль в автомобильной сигнализации, принцип работы и настройка

Содержание

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

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

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

схема-функций кан модуля в автосигнализации

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

Но в то же время сейчас уже и на бюджетных моделях есть CAN-шина, которая позволяет  считывать с нее диагностические данные и управлять исполнительными механизмами – например, теми же замками дверей. Установив в сигнализацию модуль КАН-шины, мы сможем получать нужные данные о состоянии автомобиля и по возможности управлять им, подсоединив всего два или четыре провода (зависит от архитектуры проводки – либо мы подключаемся только к одной шине, либо раздельно к шинам двигателя и кузова).

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

Принцип действия КАН-модуля

На сайте работает автоэлектрик-диагност, сертифицированный специалист StarLine. Если есть вопросы по автосигнализациям задавайте их в конце статьи в комментариях или Вконтакте. Указывайте при обращение марку машины и модель сигнализации.

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

При этом само по себе программирование не низкоуровневое, то есть установщику не обязательно знать, какие конкретно команды нужно подавать на шину для определенного действия: достаточно просто выбрать номер прошивки, соответствующий модели и комплектации автомобиля. Узнать номер можно на сайте производителя охранной системы. Например, прошивка КАН-модуля «Старлайн» для Honda CR-V 2017 года с кнопкой «Старт-Стоп» имеет номер 2444.

Нужен ли CAN-модуль для моей машины?

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

КАН-модуль «Старлайн» дает ряд функций, которые при аналоговом подключении недоступны:

  1. Функция Slave – безопасное снятие автосигнализации с охраны штатными кнопками на радиоключе, брелок переходит в режим радиометки, подтверждающей право на запуск двигателя.
  2. Кодовый иммобилайзер – можно запретить запуск двигателя, пока не будет нажата заранее заданная последовательность штатных кнопок автомобиля.
  3. Бесключевой обход штатного иммобилайзера – больше не требуется вынимать чип из одного штатного ключа, чтобы обеспечить работу автозапуска, через CAN-шину система сможет самостоятельно имитировать присутствие «правильного» ключа в автомобиле.
Видео:Что такое кан модуль.

Уже хотя бы ради бесключевого обхода иммобилайзера установка КАН-модуля становится привлекательным решением, даже если всю систему нетрудно подключить «по аналогу». Для автозапуска CAN-подключение интересно еще и возможностью точного контроля факта работы двигателя. При аналоговом подключении для этого приходится использовать либо специальный вход тахометрического сигнала, либо идти более грубыми путями (по росту напряжения в сети при включении генератора, по изменению напряжения на его выходе контрольной лампы).

Даже на ряде бензиновых автомобилей корректно считываемый сигнализацией тахометрический сигнал получить трудно. Например, на холостом ходу у Citroen C4 «Старлайн» не распознает сигнал с форсунок, если не собрать самодельный сумматор, и будет глушить мотор после того, как он сбросит обороты. На дизелях же возможностей тахометрического входа еще меньше. В то же время подключение CAN-модуля даст сигнализации возможность однозначно определить, работает двигатель или нет, вовремя отключая стартер и не отключая зажигание при ошибках считывания оборотов по физическому сигналу.

Настройка CAN-модуля

Рассмотрим процесс программирования модуля CAN-шины на примере популярной StarLine A93. Сам модуль устанавливается непосредственно на плату центрального блока, где предусмотрены специальные гнезда. На плате модуля есть USB-разъем, который в дальнейшем позволит обновлять прошивку.

программирование кен модуля

Чтобы войти в режим программирования модуля, временно отключите от сигнализации разъемы питания и CAN-шины. Зажав кнопку Valet, возвращаем на место разъем питания и продолжаем удерживать кнопку, пока не отзвучат пять сигналов сирены.

Система подаст еще 4 сигнала, когда кнопка будет отпущена. Теперь перейдите в соответствующее меню настроек CAN-модуля однократным нажатием кнопки Valet. Затем вводим четырехзначный номер прошивки, быстро нажимая кнопку число раз, соответствующее очередной цифре номера. Например, для кода 1312 нужно нажать кнопку 1 раз, дождаться одиночного сигнала сирены, нажать ее три раза, после трехкратного сигнала нажать дважды, прослушать двойной «кряк» сирены, нажать кнопку еще два раза. После двойного сигнала с небольшой паузой система подаст еще два оповещения, если номер введен правильно, или четыре, если такой номер прошивки не найден.

Далее настраиваются функции модуля, для чего предусмотрено несколько уровней меню:

  1.  Статусные функции: двукратное нажатие Valet
  2. Управляющие функции: трехкратное нажатие
  3. Дополнительные функции: четыре нажатия

Можно полностью сбросить CAN-модуль на заводские настройки пятикратным нажатием Valet – если Вы запутались в настройке, и проще начать ее «с нуля»

Меню статусных функций позволяет задать, какие именно информационные сигналы будут считываться с CAN-шины. Например, если Вы подсоединили аналоговый контроль концевиков дверей, считывание информации концевиков с CAN-шины отключите, иначе аналоговый вход не будет работать. Аналогично в меню управляющих функций можно определить, будет ли CAN-модуль управлять «аварийкой», закрытием и открытием центрального замка (причем закрытие и открытие настраиваются отдельно), замком багажника, автозапуском и так далее. В меню дополнительных функций настраивается функция Slave.

Как определить, какие функции нужно реализовать по аналогу, а какие доступны через CAN-шину? Достаточно выбрать на портале can.starline.ru модель автомобиля и тип модуля (2CAN, CAN+LIN и так далее), чтобы узнать номер прошивки, скачать последнюю версию и увидеть перечень функций, доступных в этой прошивке через CAN.

На Chevrolet Cruze до 2015 года с замком зажигания актуальная на момент написания статьи прошивка 1765 потребует включение управление аварийной сигнализацией «по аналогу», а вот управление штатным центральным замком уже можно смело настраивать по CAN-шине, не подключая дополнительные провода. Блокировку запуска придется подключать внешнюю, потому что заглушить мотор через диагностическую шину в этой прошивке тоже нельзя.

Ещё кое-что полезное для Вас:

 

Обновление прошивки CAN модуля через шину

В дальнейшем, когда прошивка обновится, появятся дополнительные функции, можно будет просто активировать их в настройках CAN-модуля, не отключая ранее выведенные в штатную проводку аналоговые каналы.

Что такое CAN модуль

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

CAN модуль это цифровой адаптер CAN шины он служит для контроля и чтения цифровых сигналов информационной CAN шины автомобиля и преобразования сигналов автосигнализации в цифровые сигналы а\м.

CAN модуль внешний StarLine

При установке CAN модуля, вмешательство в штатную электропроводку Вашего автомобиля минимально!

На рисунке представлена схема подключения CAN модуля к автомобилю (всего 5 проводов) и к сигнализации.

Схема подключения CAN модуля к автомобилю и к сигнализации

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

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

Купить CAN модули можно у нас на сайте.

CAN модуль в автосигнализации

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

CAN модуль встроенный в автосигнализацию

В самых современных автосигнализациях существует возможность подключения к двум кан шинам автомобиля, для более "богатого" контроля необходимых датчиков и управления сервисными функциями автомобиля.

На рисунке представлена схема подключения CAN сигнализации к автомобилю (всего 5 проводов и сирена).

Схема подключения CAN сигнализации к автомобилю

Макгруп

McGrp.Ru

  • Контакты
  • Форум
  • Разделы
    • Новости
    • Статьи
    • Истории брендов
    • Вопросы и ответы
    • Опросы
    • Реклама на сайте
    • Система рейтингов
    • Рейтинг пользователей
    • Стать экспертом
    • Сотрудничество
    • Заказать мануал
    • Добавить инструкцию
    • Поиск
  • Вход
    • С помощью логина и пароля
    • Или войдите через соцсети

  • Регистрация
  1. Главная
  2. Страница не найдена

  • Реклама на сайте
  • Контакты

  • © 2015 McGrp.Ru

Для чего необходим CAN (КАН) модуль?

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

При установке CAN модуля, вмешательство в штатную электропроводку Вашего автомобиля минимально! Иногда излишнее (неграмотное) вмешательство может привести к проблемам в штатной проводке и появлению ошибок автомобильного компьютера.

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

При использовании цифрового адаптера CAN шины при установке автосигнализации на автомобиль исключается лишний разбор автомобиля (например всех дверей) для подключения к центральному замку, концевикам дверей и т.д. Чем меньше разбирали — тем меньше вариантов появления в дальнейшем скрипов и «сверчков». Нет протяжки лишних проводов, что делает установку автосигнализации скрытной, при этом сама установка занимает гораздо меньше времени (например с CAN модулем уйдет 4 часа на установку, без него — несколько дней). CAN шина проходит по всему автомобилю, что позволяет подключаться к ней где угодно, соответственно прятать автосигнализацию и блокировки в самых труднодоступных и неожиданных местах. На некоторых автомобилях без использования CAN модуля вообще не обойтись.

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

Видео статья НТВ про использование CAN модулей:

Что такое CAN в автосигнализациях StarLine и зачем он нужен

Существует два типа установки автосигнализаций StarLine на автомобиль.

Первый тип - аналоговый способ подключения.

Каждый импульс от автосигнализации StarLine идет по своему проводу к исполнительному элементу (например: открытие или закрытие ЦЗ), состояние каждой зоны так же сообщается по своему отдельному проводу (например: открытие или закрытие двери). Таким образом, для подключения автосигнализации к авто и реализации необходимого функционала (например: автозапуск двигателя или дистанционное открытие багажника) необходимо сделать от 7 до 20 точек подключений, врезаясь в штатную проводку автомобиля!. Весь модельный ряд StarLine имеет возможность подключения по аналогу.

Второй тип - цифровой способ подключения.

Все современные автомобили оборудованы т.н. цифровой CAN-шиной. Это по сути цифровая сеть, в которой постоянно происходит кодированное общение между разными блоками авто. CAN-шина представляет из себя витую-пару провод, подключившись к которым можно как управлять устройствами в автомобиле (например: закрывать замки и поднимать стекла), так и считывать состояния требуемых контрольных зон (например: открылась дверь или капот).

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

Кроме того, для огромного числа моделей имеется возможность реализовать т.н. режим SUPER SLAVE, когда постановка и снятие сигнализации StarLine происходит штатным алгоритмом (с родного ключа или бесключевым доступом) автомобиля, но обязательно происходит авторизация по брелоку-метке. Преимущество этого режима в том, что Вам не нужно доставать ничего лишнего! Он просто должен находится в зоне опроса после снятия с охраны для авторизации, которая происходит в течении короткого времени. Более подробно можете ознакомиться в статье - «Slave-режим или чего опасаться?».

А с помощью максимально расширенной поддержке модулей StarLine 2CAN-2LIN владелец авто может получить приятные бонусы в виде iCAN — блокировка двигателя и iKey – бесключевой обходчик штатного иммобилайзера для запуска двигателя!

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

Актуальный список поддерживаемых автомобилей, а так же возможные функции, поддерживаемые модулем StarLine Вы можете посмотреть здесь - can.starline.ru

Что такое CAN-модуль - Автоинжиниринг - Сеть установочных центров в Москве

Рабочее напряжение, В 12/24

Ток потребления, А менее 20мА

Диапазон рабочих температур, С от -40 до +85 С°

 

ALTOX WBUS-5 GPS — это устройство управления предпусковым подогревателем двигателя или отопителем салона с помощью телефона.

Устройство поддерживает работу как с мобильными телефонами любого типа, так и со стационарными телефонами поддерживающими тоновый набор.

Помимо управления голосовыми вызовами и СМС сообщениями модулем можно управлять через бесплатное приложение ALTOX HEATER для мобильных устройств на платформе Android и iOS.

Управление подогревателями Webasto осуществляется по фирменному цифровому протоколу W-bus, либо с помощью аналогового сигнала для подогревателей не поддерживающих данный протокол.

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

Благодаря интегрированному GPS/ГЛОНАСС приемнику с помощью данного устройства можно контролировать перемещение и нахождение транспортного средства в режиме реального времени

 

Список штатных подогревателей совместимых с GSM-модулем ALTOX WBUS-5 GPS:

  • BMW (E60 / E61 / E66 / E66 / X5(E53) аналоговый)
  • Сitroen (Evasion / C8 / Jumpy)
  • Chevrolet (Cruze / Malibu / Orlando / Trax / Voyager)
  • Dodge (Caravan)
  • Ford (Galaxy I / Galaxy II / Transit)
  • Land Rover (Freelander 2 / Discovery 3 / Discovery 4 / Range Rover Sport)
  • Merсedes (W202 / W210 / W211 / W220 / Sprinter / Vito)
  • Opel (Astra J / Cascada / Insignia / Meriva B / Mokka / Omega / Vivaro / Zafira)
  • Peugeot (806 / 807 / Boxer / Espace)
  • Seat (Alhambra I / Alhambra II (7N) / Altea / Leon)
  • Skoda (Octavia / Superb / Yeti)

CAN модуль. Как правильно подобрать сигнализацию на автомобиль?

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

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

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

 CAN модуль StarLine - квадратики, на которых написано StarLine

Для второго пункта опишу пример для более ясного представления. Возьмем к примеру Volkswagen Tiguan 2011 года с механической коробкой передач. Для корректной работы охранной системы и для безопасного дистанционного запуска, надо чтобы сигнализация видела, открыта ли какая-либо дверь автомобиля. Для этого обычно сигнализация подключается напрямую к концевым выключателям дверей. Но в этом автомобиле, чтобы проделать данную процедуру (довольно таки трудоемкую), надо разобрать все двери (аккуратно снять панели), протянуть от каждого замка провод в салон! Это как минимум 4 часа работы. Плюс это отразится на цене.

Имея в наличии сигнализацию со встроенным CAN-модулем, мы соединяем два провода внутри салона и считываем с них все основные показатели (открыты или закрыты двери, заведен ли двигатель и поднят ли рычаг ручного тормоза).

 

Отсюда плюсы использования сигнализации с автозапуском, имеющим CAN-модуль:

  1. Меньше соединений - выше надежность.
  2. Не надо разбирать все двери - экономия времени и опять надежность.
  3. Простота монтажа - и опять раз надежность и экономия ваших денег.
Сигнал

- установка обработчиков для асинхронных событий - документация Python 3.8.5

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

Общие правила

Функция signal.signal () позволяет определять пользовательские обработчики, которые будут выполняется при получении сигнала. Небольшое количество обработчиков по умолчанию установлено: SIGPIPE игнорируется (поэтому ошибки записи в каналы и сокеты может сообщаться как обычные исключения Python) и SIGINT - это преобразовано в KeyboardInterrupt исключение , если родительский процесс не изменил это.

Обработчик определенного сигнала, однажды установленный, остается установленным до тех пор, пока он явно сбросить (Python эмулирует интерфейс стиля BSD независимо от базовая реализация), за исключением обработчика для SIGCHLD , который следует за базовой реализацией.

Выполнение обработчиков сигналов Python

Обработчик сигнала Python не выполняется внутри сигнала низкого уровня (C) обработчик. Вместо этого обработчик сигналов низкого уровня устанавливает флаг, который сообщает виртуальная машина для выполнения соответствующего обработчика сигналов Python в более поздний момент (например, в следующей инструкции байт-кода).Это имеет последствия:

  • Нет смысла отлавливать синхронные ошибки, такие как SIGFPE или SIGSEGV , которые вызваны недопустимой операцией в коде C. питон вернется из обработчика сигнала в код C, который, вероятно, вызовет снова тот же сигнал, из-за чего Python явно зависает. Из Python 3.3 и далее вы можете использовать модуль Faulthandler для сообщения о синхронном ошибки.

  • Длительное вычисление, реализованное исключительно на C (например, обычное сопоставление выражений в большом тексте) может выполняться без прерывания для произвольное количество времени, независимо от полученных сигналов.Питон обработчики сигналов будут вызываться по окончании расчета.

Сигналы и темы

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

Кроме того, только основной поток может устанавливать новый обработчик сигнала.

Содержание модуля

Переменные, определенные в модуле signal :

сигнал. SIG_DFL

Это один из двух стандартных вариантов обработки сигналов; он просто выполнит функция по умолчанию для сигнала. Например, в большинстве систем действие по умолчанию для SIGQUIT - сбросить ядро ​​и выйти, в то время как действие по умолчанию для SIGCHLD - просто игнорировать его.

сигнал. SIG_IGN

Это еще один стандартный обработчик сигналов, который просто игнорирует данный сигнал.

сигнал. SIGABRT

Прервать сигнал от прервать (3) .

сигнал. SIGALRM

Сигнал таймера от аварийного сигнала (2) .

Доступность: Unix.

сигнал. SIGBREAK

Прерывание с клавиатуры (CTRL + BREAK).

Наличие: Windows.

сигнал. SIGBUS

Ошибка шины (неправильный доступ к памяти).

Доступность: Unix.

сигнал. SIGCHLD

Дочерний процесс остановлен или завершен.

Наличие: Windows.

сигнал. SIGCLD

Псевдоним SIGCHLD .

сигнал. SIGCONT

Продолжить процесс, если он в настоящее время остановлен

Доступность: Unix.

сигнал. SIGFPE

Исключение с плавающей точкой. Например, деление на ноль.

См. Также

ZeroDivisionError возникает, когда второй аргумент деления или операция по модулю равна нулю.

сигнал. SIGHUP

Обнаружено зависание управляющего терминала или завершение управляющего процесса.

Доступность: Unix.

сигнал. SIGILL

Незаконная инструкция.

сигнал. СИГНАЛ

Прерывание с клавиатуры (CTRL + C).

Действие по умолчанию - вызвать KeyboardInterrupt .

сигнал. SIGKILL

Сигнал уничтожения.

Его нельзя поймать, заблокировать или проигнорировать.

Доступность: Unix.

сигнал. СИГПАЙП

Сломанная труба: запись в трубу без считывателей.

По умолчанию сигнал игнорируется.

Доступность: Unix.

сигнал. SIGSEGV

Ошибка сегментации: недопустимая ссылка на память.

.

17,4. signal - Установить обработчики для асинхронных событий - документация Python 2.7.18

Этот модуль предоставляет механизмы для использования обработчиков сигналов в Python. Некоторые общие правила работы с сигналами и их обработчиками:

  • После установки обработчик определенного сигнала остается установленным, пока явно сбросить (Python эмулирует интерфейс стиля BSD независимо от базовая реализация), за исключением обработчика для SIGCHLD , который следует за базовой реализацией.

  • Невозможно временно «заблокировать» сигналы от критических участков (т.к. это поддерживается не всеми разновидностями Unix).

  • Хотя обработчики сигналов Python вызываются асинхронно, пока Python пользователь обеспокоен, они могут возникать только между «атомарными» инструкциями Интерпретатор Python. Это означает, что сигналы, поступающие при длительных вычислениях реализовано исключительно на C (например, сопоставление регулярных выражений на больших массивах text) может быть отложено на произвольное время.

  • Когда сигнал поступает во время операции ввода / вывода, возможно, что ввод / вывод операция вызывает исключение после возврата обработчика сигнала. Это зависит от семантики базовой системы Unix в отношении прерванной системы звонки.

  • Поскольку обработчик сигнала C всегда возвращается, нет смысла ловить синхронные ошибки, такие как SIGFPE или SIGSEGV .

  • Python по умолчанию устанавливает небольшое количество обработчиков сигналов: SIGPIPE игнорируется (поэтому об ошибках записи в каналах и сокетах можно сообщать как об обычных Исключения Python) и SIGINT переведен в KeyboardInterrupt исключение.Все это можно изменить.

  • Следует проявлять осторожность, если и сигналы, и потоки используются в одном программа. Главное, что нужно помнить при использовании сигналов и потоков одновременно: всегда выполнять signal () операций в основном потоке исполнения. Любой поток может выполнить alarm () , getsignal () , pause () , setitimer () или getitimer () ; только основной поток может установить новый обработчик сигнала, и основной поток будет единственным, получать сигналы (это обеспечивается модулем Python signal , даже если реализация базового потока поддерживает отправку сигналов в отдельные потоки).Это означает, что сигналы нельзя использовать как средство межпотоковое общение. Вместо этого используйте замки.

Переменные, определенные в модуле signal :

сигнал. SIG_DFL

Это один из двух стандартных вариантов обработки сигналов; он просто выполнит функция по умолчанию для сигнала. Например, в большинстве систем действие по умолчанию для SIGQUIT - сбросить ядро ​​и выйти, в то время как действие по умолчанию для SIGCHLD - просто игнорировать его.

сигнал. SIG_IGN

Это еще один стандартный обработчик сигналов, который просто игнорирует данный сигнал.

SIG *

Все номера сигналов определены символически. Например, сигнал зависания определяется как сигнал .SIGHUP ; имена переменных идентичны имена, используемые в программах на C, как показано в . Страница руководства Unix для ‘ signal () ’ перечисляет существующие сигналы (в некоторых системах это сигнал (2) , в других список находится в сигнал (7) ).Обратите внимание, что не все системы определяют одинаковый набор имен сигналов; только те имена, которые определены система определяется этим модулем.

сигнал. CTRL_C_EVENT

Сигнал, соответствующий событию нажатия клавиши Ctrl + C . Этот сигнал может может использоваться только с os.kill () .

Наличие: Windows.

сигнал. CTRL_BREAK_EVENT

Сигнал, соответствующий событию нажатия клавиши Ctrl + Break .Этот сигнал может может использоваться только с os.kill () .

Наличие: Windows.

сигнал. НСИГ

На единицу больше, чем самый высокий номер сигнала.

сигнал. ITIMER_REAL

Уменьшает интервал таймера в реальном времени и выдает SIGALRM по истечении срока.

сигнал. ITIMER_VIRTUAL

Уменьшает интервал таймера только во время выполнения процесса и доставляет SIGVTALRM по истечении срока.

сигнал. ITIMER_PROF

Уменьшает интервал таймера как при выполнении процесса, так и при система выполняется от имени процесса. Вместе с ITIMER_VIRTUAL, этот таймер обычно используется для профилирования времени, потраченного приложением в пространстве пользователя и ядра.SIGPROF доставляется по истечении срока.

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

исключение сигнал. ItimerError

Возникает, чтобы сигнализировать об ошибке из базового setitimer () или getitimer () реализация. Ожидайте эту ошибку, если недопустимый интервальный таймер или отрицательное время передается на setitimer () . Эта ошибка является подтипом IOError .

Сигнальный модуль определяет следующие функции:

сигнал. тревога ( раз )

Если время не равно нулю, эта функция запрашивает, чтобы сигнал SIGALRM был отправлено в процесс за раз за секунд. Любой ранее запланированный сигнал тревоги отменено (в любое время можно запланировать только один будильник). Возвращаемое значение затем количество секунд до срабатывания любого ранее установленного будильника. доставлен.Если время равно нулю, сигнал тревоги не запланирован, и любой запланированный сигнал тревоги отменен. Если возвращаемое значение равно нулю, сигнализация в настоящее время не запланирована. (Видеть страница руководства Unix alarm (2) .) Доступность: Unix.

сигнал. getsignal ( signalnum )

Вернуть текущий обработчик сигнала для сигнала signalnum . Возвращаемое значение может быть вызываемым объектом Python или одним из специальных значений сигнал.SIG_IGN , signal.SIG_DFL или Нет . Вот, signal.SIG_IGN означает, что сигнал ранее игнорировался, signal.SIG_DFL означает, что способ обработки сигнала по умолчанию был ранее использовался, и Нет означает, что предыдущий обработчик сигнала не был установлен с Python.

сигнал. пауза ()

Заставить процесс засыпать до получения сигнала; соответствующий обработчик затем будет вызван.Ничего не возвращает. Не в Windows. (См. Справочную страницу Unix сигнал (2) .)

сигнал. setitimer ( который , секунд [, интервал ])
.

python - Могут ли модули иметь свойства так же, как объекты?

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Общественные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним возможности технической карьеры
  5. Талант Нанять технических талантов
  6. реклама Обратитесь к разработчикам по всему миру
,

Обработка сигналов Unix в Python

Системы

UNIX / Linux предлагают специальные механизмы для связи между каждым отдельным процессом. Одним из этих механизмов являются сигналы, и они относятся к различным методам связи между процессами (Inter Process Communication, сокращенно IPC).

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

Хотя это определено в стандарте POSIX, реакция на самом деле зависит от того, как разработчик написал сценарий и реализовал обработку сигналов.

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

Знакомство с сигналами

В системах на базе UNIX существует три категории сигналов:

  • Системные сигналы (аппаратные и системные ошибки): SIGILL, SIGTRAP, SIGBUS, SIGFPE, SIGKILL, SIGSEGV, SIGXCPU, SIGXFSZ, SIGIO

  • Сигналы устройства: SIGHUP, SIGINT, SIGPIPE, SIGALRM, SIGCHLD, SIGCONT, SIGSTOP, SIGTTIN, SIGTTOU, SIGURG, SIGWINCH, SIGIO

  • Пользовательские сигналы: SIGQUIT, SIGABRT, SIGUSR1, SIGUSR2, SIGTERM

Каждый сигнал представлен целым числом, а список доступных сигналов сравнительно длинный и не согласован между различными вариантами UNIX / Linux.В системе Debian GNU / Linux команда kill -l отображает следующий список сигналов:

  $ kill -l
 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN + 1 36) SIGRTMIN + 2 37) SIGRTMIN + 3
38) SIGRTMIN + 4 39) SIGRTMIN + 5 40) SIGRTMIN + 6 41) SIGRTMIN + 7 42) SIGRTMIN + 8
43) SIGRTMIN + 9 44) SIGRTMIN + 10 45) SIGRTMIN + 11 46) SIGRTMIN + 12 47) SIGRTMIN + 13
48) SIGRTMIN + 14 49) SIGRTMIN + 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
  

Сигналы с 1 по 15 примерно стандартизированы и в большинстве систем Linux имеют следующее значение:

  • 1 (SIGHUP): завершить соединение или перезагрузить конфигурацию для демонов
  • 2 (SIGINT): прервать сеанс с диалоговой станции
  • 3 (SIGQUIT): завершить сеанс с диалоговой станции
  • 4 (SIGILL): была выполнена недопустимая инструкция
  • 5 (SIGTRAP): выполнить одну инструкцию (trap)
  • 6 (SIGABRT): аварийное завершение
  • 7 (SIGBUS): ошибка на системной шине
  • 8 (SIGFPE): ошибка с плавающей запятой
  • 9 (SIGKILL): немедленно завершить процесс
  • 10 (SIGUSR1): определяемый пользователем сигнал
  • 11 (SIGSEGV): ошибка сегментации из-за незаконного доступа к сегменту памяти
  • 12 (SIGUSR2): определяемый пользователем сигнал
  • 13 (SIGPIPE): запись в канал, и никто из него не читает
  • 14 (SIGALRM): таймер отключен (тревога)
  • 15 (SIGTERM): мягко завершить процесс

Чтобы отправить сигнал процессу в терминале Linux, вы вызываете команду kill с номером сигнала (или именем сигнала) из приведенного выше списка и идентификатором процесса (pid).В следующем примере команда отправляет сигнал 15 (SIGTERM) процессу с pid 12345:

  $ убить -15 12345
  

Эквивалентный способ - использовать имя сигнала вместо его номера:

  $ kill -SIGTERM 12345
  

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

Использование библиотеки сигналов Python

Начиная с Python 1.4, библиотека сигналов является регулярным компонентом каждой версии Python. Чтобы использовать библиотеку сигналов , сначала импортируйте библиотеку в свою программу Python следующим образом:

  импортный сигнал
  

Захват и правильная реакция на полученный сигнал осуществляется функцией обратного вызова - так называемым обработчиком сигнала. Довольно простой обработчик сигнала с именем receiveSignal () можно записать следующим образом:

  def receiveSignal (signalNumber, frame):
    print ('Получено:', signalNumber)
    возвращение
  

Этот обработчик сигнала не делает ничего, кроме сообщения номера полученного сигнала.Следующим шагом является регистрация сигналов, которые перехватывает обработчик сигналов. Для программ Python все сигналы (кроме 9, SIGKILL) могут быть пойманы в вашем скрипте:

  если __name__ == '__main__':
    # регистрируем сигналы, которые нужно поймать
    signal.signal (сигнал.SIGHUP, receiveSignal)
    signal.signal (сигнал.SIGINT, receiveSignal)
    signal.signal (сигнал.SIGQUIT, receiveSignal)
    signal.signal (сигнал.SIGILL, receiveSignal)
    signal.signal (signal.SIGTRAP, receiveSignal)
    сигнал.сигнал (сигнал.SIGABRT, получитьСигнал)
    signal.signal (сигнал.SIGBUS, receiveSignal)
    сигнал.сигнал (сигнал.SIGFPE, получитьСигнал)
    # signal.signal (signal.SIGKILL, receiveSignal)
    signal.signal (сигнал.SIGUSR1, receiveSignal)
    signal.signal (сигнал.SIGSEGV, receiveSignal)
    signal.signal (сигнал.SIGUSR2, receiveSignal)
    signal.signal (сигнал.SIGPIPE, receiveSignal)
    signal.signal (сигнал.SIGALRM, receiveSignal)
    signal.signal (сигнал.SIGTERM, receiveSignal)
  

Затем мы добавляем информацию о текущем процессе и определяем идентификатор процесса с помощью метода getpid () из модуля os .В бесконечном цикле и мы ждем входящих сигналов. Мы реализуем это с помощью еще двух модулей Python - os и time. Мы также импортируем их в начале нашего скрипта Python:

  импорт ОС
время импорта
  

В цикле while нашей основной программы оператор печати выводит "Waiting ...". Вызов функции time.sleep () заставляет программу ждать три секунды.

  # выходной текущий идентификатор процесса
    print ('Мой PID:', os.GETPID ())

    # ждем в бесконечном цикле сигналов
    в то время как True:
        print ('Wa  
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *