Modbus

Поделись знанием:
Перейти к: навигация, поиск

Modbus — открытый коммуникационный протокол, основанный на архитектуре ведущий-ведомый (master-slave). Широко применяется в промышленности для организации связи между электронными устройствами. Может использоваться для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP (Modbus TCP).

Не следует путать MODBUS и MODBUS Plus. MODBUS Plus — проприетарный протокол принадлежащий Schneider Electric. Физический уровень уникальный, похож на Ethernet 10BASE-T, полудуплекс по одной витой паре, скорость 1 Мбит/с. Транспортный протокол — HDLC, поверх которого специфицировано расширение для передачи MODBUS PDU.

JBUS — подмножество протокола Modbus RTU с небольшими отличиями в способе адресации[1].





История

Modbus был разработан компанией Modicon (в настоящее время принадлежит Schneider Electric) для использования в её контроллерах с программируемой логикой. Впервые спецификация протокола была опубликована в 1979 году[2]. Это был открытый стандарт, описывающий формат сообщений и способы их передачи в сети, состоящей из различных электронных устройств.

Первоначально контроллеры MODICON использовали последовательный интерфейс RS-232[2]. Позднее стал применяться интерфейс RS-485, так как он обеспечивает более высокую надёжность, позволяет использовать более длинные линии связи и подключать к одной линии несколько устройств.

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

Стандарт MODBUS

В настоящее время развитием Modbus занимается некоммерческая организация Modbus-IDA[3].

Специфическая терминология

  • PDU (Protocol Data Unit) — общая для всех физических уровней часть пакета MODBUS. Включает в себя код функции и данные пакета.
  • ADU (Application Data Unit) — полный пакет MODBUS. Включает в себя специфичную для физического уровня часть пакета и PDU.

MODBUS специфицирует 4 типа данных:

  • Discrete Inputs — однобитовый тип, доступен только для чтения.
  • Coils — однобитовый тип, доступен для чтения и записи.
  • Input Registers — 16-битовый знаковый или беззнаковый тип, доступен только для чтения.
  • Holding Registers — 16-битовый знаковый или беззнаковый тип, доступен для чтения и записи.

Состав стандарта

Стандарты MODBUS состоят из 3 частей:

  • Документ Modbus Application Protocol содержит спецификацию прикладного уровня сетевой модели OSI:
    • Элементарный пакет протокола, так называемый PDU (Protocol Data Unit), он един для всех физических уровней. PDU упаковывается в индивидуальный для каждого транспорта application data unit (ADU).
    • Коды функций и состав PDU для каждого кода.
  • Документ Modbus over serial line содержит спецификацию канального и физического уровней сетевой модели OSI для физических уровней RS-485 и RS-232. В принципе, может использоваться любой физический уровень, основанный на асинхронном приемопередатчике.
  • Документ MODBUS Messaging on TCP/IP Implementation Guide содержит спецификацию ADU для транспорта через TCP/IP-стек.

Достоинства стандарта

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

Недостатки стандарта

Стандарт в своей основе был разработан в 1979 году компанией Modicon (в данное время владелец Schneider Electric) с учётом потребностей и вычислительных возможностей того времени, и многие актуальные для современных промышленных сетей вопросы не были учтены[4]. Необходимо отметить, что отсутствие перечисленных возможностей является следствием простоты протокола, которая облегчает его изучение и ускоряет внедрение.

  • Стандарт специфицирует метод передачи только двух типов данных[5]. Отсутствие чёткого указания в стандарте привело к тому, что с другими типами данных сторонние производители MODBUS-решений поступали по своему усмотрению. Различие мнений производителей оборудования в этом вопросе не позволило впоследствии сделать уточнения в официальном документе: это вызвало бы всплеск недовольства производителей несогласных с предлагавшимися поправками стандарта и возможную войну форматов.
  • Стандарт не регламентирует начальную инициализацию системы. Назначение сетевых адресов и прописывание в системе параметров каждого конкретного устройства выполняются вручную на этапе адаптации и программирования системы.
  • Не предусмотрена передача сообщений по инициативе подчинённого устройства (прерываний)[5]. Ведущее устройство должно периодически опрашивать ведомые.
  • Длина запроса ограничена, а данные могут быть запрошены только из последовательно расположенных регистров. Это увеличивает задержки и накладные расходы при использовании сети, так как для получения данных из регистров, расположенных далеко друг от друга в адресном пространстве, мастер должен либо запрашивать ненужные данные, либо использовать несколько запросов[5].
  • Не предусмотрен способ, с помощью которого подчинённое устройство могло бы обнаружить потерю связи с ведущим[5].

Введение

Контроллеры на шине Modbus взаимодействуют, используя master-slave модель, основанную на транзакциях, состоящих из запроса и ответа.

Обычно в сети есть только одно ведущее, так называемое, «главное» (англ. master) устройство, и несколько ведомых — «подчинённых» (англ. slaves) устройств. Главное устройство (мастер) инициирует транзакции (передаёт запросы). Мастер может адресовать запрос индивидуально любому подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчинённое устройство, опознав свой адрес, отвечает на запрос, адресованный именно ему. При получении широковещательного запроса ответ подчинёнными устройствами не формируется.

Спецификация Modbus описывает структуру запросов и ответов. Их основа — элементарный пакет протокола, так называемый PDU (Protocol Data Unit). Структура PDU не зависит от типа линии связи и включает в себя код функции и поле данных. Код функции кодируется однобайтовым полем и может принимать значения в диапазоне 1…127. Диапазон значений 128…255 зарезервирован для кодов ошибок. Поле данных может быть переменной длины. Размер пакета PDU ограничен 253 байтами.

Modbus PDU
код функции данные
1 байт N < 253 (байт)

Для передачи пакета по физическим линиям связи PDU помещается в другой пакет, содержащий дополнительные поля. Этот пакет носит название ADU (Application Data Unit). Формат ADU зависит от типа линии связи. Существуют три варианта ADU, два для передачи данных через асинхронный интерфейс и один — через TCP/IP сети:

  • Modbus ASCII — для обмена используются только ASCII символы. Для проверки целостности используется однобайтовая контрольная сумма. Начало и конец сообщения помечаются специальными символами (начало сообщения ":", конец сообщения CR/LF).
  • Modbus RTU — компактный двоичный вариант. Сообщения разделяются по паузе в линии. Сообщение должно начинаться и заканчиваться интервалом тишины, длительностью не менее 3,5 символов при данной скорости передачи. Во время передачи сообщения не должно быть пауз длительностью более 1,5 символов. Для скоростей более 19200 бод допускается использовать интервалы 1,75 и 0,75 мс, соответственно. Проверка целостности осуществляется с помощью CRC.
  • Modbus TCP — для передачи данных через TCP/IP соединение.

Общая структура ADU следующая (в зависимости от реализации, некоторые из полей могут отсутствовать):

адрес ведомого (подчинённого) устройства код функции данные блок обнаружения ошибок

где

  • адрес ведомого устройства — адрес подчинённого устройства, к которому адресован запрос. Ведомые устройства отвечают только на запросы, поступившие в их адрес. Ответ также начинается с адреса отвечающего ведомого устройства, который может изменяться от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознаёт каждое устройство, адреса в диапазоне 248…255 — зарезервированы;
  • код функции — это следующее однобайтное поле кадра. Оно говорит ведомому устройству, какие данные или выполнение какого действия требует от него ведущее устройство;
  • данные — поле содержит информацию, необходимую ведомому устройству для выполнения заданной мастером функции или содержит данные, передаваемые ведомым устройством в ответ на запрос ведущего. Длина и формат поля зависит от номера функции, также в поле данных может быть детализация кода функции;
  • блок обнаружения ошибок — контрольная сумма для проверки отсутствия ошибок в кадре.

Максимальный размер ADU для последовательных сетей RS232/RS485 — 256 байт, для сетей TCP — 260 байт.

Для Modbus TCP ADU выглядит следующим образом:

ID транзакции ID протокола длина пакета адрес ведомого устройства код функции данные

где

  • ID транзакции — два байта, обычно нули
  • ID протокола — два байта, нули
  • длина пакета — два байта, старший затем младший, длина следующей за этим полем части пакета
  • адрес ведомого устройства — адрес подчинённого устройства, к которому адресован запрос. Обычно игнорируется, если соединение уже установлено с конкретным устройством, или в системе только одно устройство. Может использоваться, если соединение установлено с мостом, который связан физически, например, с сетью RS-485.

Следует обратить внимание, что поле контроля ошибок в Modbus TCP отсутствует, так как целостность данных обеспечивает TCP/IP стек.

Категории кодов функций

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

Стандартные команды 
Их описание должно быть опубликовано и утверждено Modbus-IDA. Эта категория включает в себя как уже определенные, так и неиспользуемые в настоящее время коды.
Пользовательские команды 
Два диапазона кодов (от 65 до 72 и от 100 до 110), для которых пользователь может назначить произвольную функцию. При этом не гарантируется, что какое-то другое устройство не будет использовать тот же самый код для выполнения другой функции.
Зарезервированные 
В эту категорию входят коды функций, не являющиеся стандартными, но уже используемые в устройствах, производимых различными компаниями. Это коды 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 и 127.

Модель данных

Одно из типичных применений протокола — чтение и запись данных в регистры контроллеров. Спецификация протокола определяет четыре таблицы данных:

Таблица Тип элемента Тип доступа
Регистры флагов (Coils) один бит чтение и запись
Дискретные входы (Discrete Inputs) один бит только чтение
Регистры хранения (Holding Registers) 16-битное слово чтение и запись
Регистры ввода (Input Registers) 16-битное слово только чтение

Доступ к элементам в каждой таблице осуществляется с помощью 16-битного адреса, первой ячейке соответствует адрес 0. Таким образом, каждая таблица может содержать до 65536 элементов. Спецификация не определяет, что физически должны представлять собой элементы таблиц и по каким внутренним адресам устройства они должны быть доступны. Например, допустимо организовать перекрывающиеся таблицы. В этом случае команды работающие с дискретными данными и с 16-битными регистрами будут фактически обращаться к одним и тем же данным.

Следует отметить, что со способом адресации данных связана определённая путаница. Modbus был первоначально разработан для контроллеров Modicon. В этих контроллерах для каждой из таблиц использовалась специальная нумерация. Например, первому регистру ввода соответствовал номер ячейки 30001, а первому регистру хранения — 40001. Таким образом, регистру хранения с адресом 107 в команде Modbus соответствовал регистр № 40108 контроллера. Хотя такое соответствие адресов больше не является частью стандарта, некоторые программные пакеты могут автоматически «корректировать» вводимые пользователем адреса, например, вычитая 40001 из адреса регистра хранения.

Стандартные функции протокола Modbus

PDU запроса и ответа для стандартных функций
номер
функции
запрос/ответ
1 (0x01) A1 A0 Q1 Q0
N D (N байт)
2 (0x02) A1 A0 Q1 Q0
N D (N байт)
3 (0x03) A1 A0 Q1 Q0
N D (N байт)
4 (0x04) A1 A0 Q1 Q0
N D (N байт)
5 (0x05) A1 A0 D1 D0
A1 A0 D1 D0
6 (0x06) A1 A0 D1 D0
A1 A0 D1 D0
15 (0x0F) A1 A0 Q1 Q0 N D (N байт)
A1 A0 Q1 Q0
16 (0x10) A1 A0 Q1 Q0 N D (N байт)
A1 A0 Q1 Q0

  • A1 и A0 — адрес элемента,
  • Q1 и Q0 — количество элементов,
  • N — количество байт данных
  • D — данные

Доступ к данным

Чтение данных

Для чтения значений из перечисленных выше таблиц данных используются функции с кодами 1—4 (шестнадцатеричные значения 0x01—0x04):

  • 1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status).
  • 2 (0x02) — чтение значений из нескольких дискретных входов (Read Discrete Inputs).
  • 3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers).
  • 4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers).

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

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

Значения регистров хранения и регистров ввода передаются начиная с указанного адреса, по два байта на регистр, старший байт каждого регистра передаётся первым:

байт 1 байт 2 байт 3 байт 4 байт N-1 байт N
RA,1 RA,0 RA+1,1 RA+1,0 RA+Q-1,1 RA+Q-1,0

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

байт 1 байт N
FA+7 FA+6 FA+5 FA+4 FA+3 FA+2 FA+1 FA 0 0 FA+Q-1 FA+Q-2

Запись одного значения

  • 5 (0x05) — запись значения одного флага (Force Single Coil).
  • 6 (0x06) — запись значения в один регистр хранения (Preset Single Register).

Команда состоит из адреса элемента (2 байта) и устанавливаемого значения (2 байта).

Для регистра хранения значение является просто 16-битным словом.

Для флагов значение 0xFF00 означает включённое состояние, 0x0000 — выключенное, другие значения недопустимы.

Если команда выполнена успешно, ведомое устройство возвращает копию запроса.

Запись нескольких значений

  • 15 (0x0F) — запись значений в несколько регистров флагов (Force Multiple Coils)
  • 16 (0x10) — запись значений в несколько регистров хранения (Preset Multiple Registers)

Команда состоит из адреса элемента, количества изменяемых элементов, количества передаваемых байт устанавливаемых значений и самих устанавливаемых значений. Данные упаковываются так же, как в командах чтения данных.

Ответ состоит из начального адреса и количества изменённых элементов.

Изменение регистров

  • 22 (0x16) — запись в один регистр хранения с использованием маски "И" и маски "ИЛИ" (Mask Write Register).

Команда состоит из адреса регистра и двух 16-битных чисел, которые используются как маски, с помощью которых можно индивидуально сбросить или установить отдельные биты в регистре. Конечный результат определяется формулой:

Результат = (Текущее_значение AND Маска_И) OR (Маска_ИЛИ AND (NOT Маска_И))

Очереди данных

  • 24 (0x18) — Чтение данных из очереди (Read FIFO Queue)

Функция предназначена для получения 16-битных слов из очереди, организованной по принципу «первым пришёл — первым ушёл» (FIFO).

Доступ к файлам

  • 20 (0x14) — Чтение из файла (Read File Record)
  • 21 (0x15) — Запись в файл (Write File Record)

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

Кроме того, команда содержит однобайтовый код для указания типа ссылки на данные. В действующей версии стандарта определен только один тип (описанный выше) с кодом 0x06.

Диагностика

Перечисленные ниже функции предназначены для устройств на последовательных линиях связи (Modbus RTU и Modbus ASCII).

  • 7 (0x07) — Чтение сигналов состояния (Read Exception Status)

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

  • 8 (0x08) — Диагностика (Diagnostic)
  • 11 (0x0B) — Чтение счетчика событий (Get Com Event Counter)
  • 12 (0x0C) — Чтение журнала событий (Get Com Event Log)

Эти функции предназначены для проверки функционирования последовательной линий связи.

  • 17 (0x11) — Чтение информации об устройстве (Report Slave ID)

Функция предназначена для получения информации о типе устройства и его состоянии. Формат ответа зависит от устройства.

Другие

  • 43 (0x2B) — Encapsulated Interface Transport

Функция предназначена для передачи данных в произвольных форматах (определённых другими стандартами) от ведущего (master) к ведомому (slave) и обратно.

Тип передаваемых данных определяется дополнительным кодом (MEI — MODBUS Encapsulated Interface), передаваемым после номера функции. Стандарт определяет MEI 13 (0x0D), предназначенный для инкапсуляции протокола CANopen. MEI 14 (0x0E) используется для получения информации об устройстве и MEI в диапазонах 0—12 и 15—255 зарезервированы.

Обработка ошибок

Во время обмена данными могут возникать ошибки двух типов:

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

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

В Modbus TCP дополнительная проверка целостности данных не предусмотрена. Передача данных без искажений обеспечивается протоколами TCP/IP.

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

Стандартные коды ошибок

  • 01 — Принятый код функции не может быть обработан.
  • 02 — Адрес данных, указанный в запросе, недоступен.
  • 03 — Значение, содержащееся в поле данных запроса, является недопустимой величиной.
  • 04 — Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие.
  • 05 — Ведомое устройство приняло запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет ведущее устройство от генерации ошибки тайм-аута.
  • 06 — Ведомое устройство занято обработкой команды. Ведущее устройство должно повторить сообщение позже, когда ведомое освободится.
  • 07 — Ведомое устройство не может выполнить программную функцию, заданную в запросе. Этот код возвращается для неуспешного программного запроса, использующего функции с номерами 13 или 14. Ведущее устройство должно запросить диагностическую информацию или информацию об ошибках от ведомого.
  • 08 — Ведомое устройство при чтении расширенной памяти обнаружило ошибку паритета. Ведущее устройство может повторить запрос, но обычно в таких случаях требуется ремонт.

Примеры

Ниже приведён пример команды ведущего устройства и ответов ведомого (для Modbus RTU).

Запрос
Направление передачи адрес подчинённого устройства номер функции Адрес Количество флагов Количество байт данных Данные CRC
старший байт младший байт старший байт младший байт старший байт младший байт младший байт старший байт
Master→Slave
0x01
0x0F
0x00
0x13
0x00
0x0A
0x02
0xCD
0x01
0x72
0xCB
Ответ
Направление передачи адрес подчинённого устройства номер функции Адрес Количество флагов CRC
старший байт младший байт старший байт младший байт старший байт младший байт
Slave→Master
0x01
0x0F
0x00
0x13
0x00
0x0A
0x24
0x09
Сообщение об ошибке
Направление передачи адрес подчинённого устройства номер функции код ошибки CRC
младший байт старший байт
Slave→Master
0x01
0x8F
0x02
0xC5
0xF1

Напишите отзыв о статье "Modbus"

Примечания

  1. [www.promotic.eu/en/pmdoc/Subsystems/Comm/Protocol/Modbus.htm#Type_JBus PROMOTIC - Communication by Modbus protocol]
  2. 1 2 [www.lammertbies.nl/comm/info/modbus.html Modbus interface tutorial]
  3. [www.modbus.org/about_us.php About Modbus-IDA]
  4. Charles Palmer, Sujeet Shenoi (ed) Critical Infrastructure Protection III: Third IFIP WG 11. 10 International Conference, Hanover, New Hampshire, USA, March 23–25, 2009, Revised Selected Papers Springer, 2009 ISBN 3-642-04797-1, page 87
  5. 1 2 3 4 [www.ni.com/white-paper/52135/en/pdf Application Development with Modbus]

Литература

  • [www.modbus.org/tech.php Оригинальные спецификации протокола на английском языке]
  • [www.modbus.org/specs.php Modbus Specifications and Implementation Guides (ModBus TCP/IP)]

Ссылки

Отрывок, характеризующий Modbus

Ростовы до 1 го сентября, то есть до кануна вступления неприятеля в Москву, оставались в городе.
После поступления Пети в полк казаков Оболенского и отъезда его в Белую Церковь, где формировался этот полк, на графиню нашел страх. Мысль о том, что оба ее сына находятся на войне, что оба они ушли из под ее крыла, что нынче или завтра каждый из них, а может быть, и оба вместе, как три сына одной ее знакомой, могут быть убиты, в первый раз теперь, в это лето, с жестокой ясностью пришла ей в голову. Она пыталась вытребовать к себе Николая, хотела сама ехать к Пете, определить его куда нибудь в Петербурге, но и то и другое оказывалось невозможным. Петя не мог быть возвращен иначе, как вместе с полком или посредством перевода в другой действующий полк. Николай находился где то в армии и после своего последнего письма, в котором подробно описывал свою встречу с княжной Марьей, не давал о себе слуха. Графиня не спала ночей и, когда засыпала, видела во сне убитых сыновей. После многих советов и переговоров граф придумал наконец средство для успокоения графини. Он перевел Петю из полка Оболенского в полк Безухова, который формировался под Москвою. Хотя Петя и оставался в военной службе, но при этом переводе графиня имела утешенье видеть хотя одного сына у себя под крылышком и надеялась устроить своего Петю так, чтобы больше не выпускать его и записывать всегда в такие места службы, где бы он никак не мог попасть в сражение. Пока один Nicolas был в опасности, графине казалось (и она даже каялась в этом), что она любит старшего больше всех остальных детей; но когда меньшой, шалун, дурно учившийся, все ломавший в доме и всем надоевший Петя, этот курносый Петя, с своими веселыми черными глазами, свежим румянцем и чуть пробивающимся пушком на щеках, попал туда, к этим большим, страшным, жестоким мужчинам, которые там что то сражаются и что то в этом находят радостного, – тогда матери показалось, что его то она любила больше, гораздо больше всех своих детей. Чем ближе подходило то время, когда должен был вернуться в Москву ожидаемый Петя, тем более увеличивалось беспокойство графини. Она думала уже, что никогда не дождется этого счастия. Присутствие не только Сони, но и любимой Наташи, даже мужа, раздражало графиню. «Что мне за дело до них, мне никого не нужно, кроме Пети!» – думала она.
В последних числах августа Ростовы получили второе письмо от Николая. Он писал из Воронежской губернии, куда он был послан за лошадьми. Письмо это не успокоило графиню. Зная одного сына вне опасности, она еще сильнее стала тревожиться за Петю.
Несмотря на то, что уже с 20 го числа августа почти все знакомые Ростовых повыехали из Москвы, несмотря на то, что все уговаривали графиню уезжать как можно скорее, она ничего не хотела слышать об отъезде до тех пор, пока не вернется ее сокровище, обожаемый Петя. 28 августа приехал Петя. Болезненно страстная нежность, с которою мать встретила его, не понравилась шестнадцатилетнему офицеру. Несмотря на то, что мать скрыла от него свое намеренье не выпускать его теперь из под своего крылышка, Петя понял ее замыслы и, инстинктивно боясь того, чтобы с матерью не разнежничаться, не обабиться (так он думал сам с собой), он холодно обошелся с ней, избегал ее и во время своего пребывания в Москве исключительно держался общества Наташи, к которой он всегда имел особенную, почти влюбленную братскую нежность.
По обычной беспечности графа, 28 августа ничто еще не было готово для отъезда, и ожидаемые из рязанской и московской деревень подводы для подъема из дома всего имущества пришли только 30 го.
С 28 по 31 августа вся Москва была в хлопотах и движении. Каждый день в Дорогомиловскую заставу ввозили и развозили по Москве тысячи раненых в Бородинском сражении, и тысячи подвод, с жителями и имуществом, выезжали в другие заставы. Несмотря на афишки Растопчина, или независимо от них, или вследствие их, самые противоречащие и странные новости передавались по городу. Кто говорил о том, что не велено никому выезжать; кто, напротив, рассказывал, что подняли все иконы из церквей и что всех высылают насильно; кто говорил, что было еще сраженье после Бородинского, в котором разбиты французы; кто говорил, напротив, что все русское войско уничтожено; кто говорил о московском ополчении, которое пойдет с духовенством впереди на Три Горы; кто потихоньку рассказывал, что Августину не ведено выезжать, что пойманы изменники, что мужики бунтуют и грабят тех, кто выезжает, и т. п., и т. п. Но это только говорили, а в сущности, и те, которые ехали, и те, которые оставались (несмотря на то, что еще не было совета в Филях, на котором решено было оставить Москву), – все чувствовали, хотя и не выказывали этого, что Москва непременно сдана будет и что надо как можно скорее убираться самим и спасать свое имущество. Чувствовалось, что все вдруг должно разорваться и измениться, но до 1 го числа ничто еще не изменялось. Как преступник, которого ведут на казнь, знает, что вот вот он должен погибнуть, но все еще приглядывается вокруг себя и поправляет дурно надетую шапку, так и Москва невольно продолжала свою обычную жизнь, хотя знала, что близко то время погибели, когда разорвутся все те условные отношения жизни, которым привыкли покоряться.
В продолжение этих трех дней, предшествовавших пленению Москвы, все семейство Ростовых находилось в различных житейских хлопотах. Глава семейства, граф Илья Андреич, беспрестанно ездил по городу, собирая со всех сторон ходившие слухи, и дома делал общие поверхностные и торопливые распоряжения о приготовлениях к отъезду.
Графиня следила за уборкой вещей, всем была недовольна и ходила за беспрестанно убегавшим от нее Петей, ревнуя его к Наташе, с которой он проводил все время. Соня одна распоряжалась практической стороной дела: укладываньем вещей. Но Соня была особенно грустна и молчалива все это последнее время. Письмо Nicolas, в котором он упоминал о княжне Марье, вызвало в ее присутствии радостные рассуждения графини о том, как во встрече княжны Марьи с Nicolas она видела промысл божий.
– Я никогда не радовалась тогда, – сказала графиня, – когда Болконский был женихом Наташи, а я всегда желала, и у меня есть предчувствие, что Николинька женится на княжне. И как бы это хорошо было!
Соня чувствовала, что это была правда, что единственная возможность поправления дел Ростовых была женитьба на богатой и что княжна была хорошая партия. Но ей было это очень горько. Несмотря на свое горе или, может быть, именно вследствие своего горя, она на себя взяла все трудные заботы распоряжений об уборке и укладке вещей и целые дни была занята. Граф и графиня обращались к ней, когда им что нибудь нужно было приказывать. Петя и Наташа, напротив, не только не помогали родителям, но большею частью всем в доме надоедали и мешали. И целый день почти слышны были в доме их беготня, крики и беспричинный хохот. Они смеялись и радовались вовсе не оттого, что была причина их смеху; но им на душе было радостно и весело, и потому все, что ни случалось, было для них причиной радости и смеха. Пете было весело оттого, что, уехав из дома мальчиком, он вернулся (как ему говорили все) молодцом мужчиной; весело было оттого, что он дома, оттого, что он из Белой Церкви, где не скоро была надежда попасть в сраженье, попал в Москву, где на днях будут драться; и главное, весело оттого, что Наташа, настроению духа которой он всегда покорялся, была весела. Наташа же была весела потому, что она слишком долго была грустна, и теперь ничто не напоминало ей причину ее грусти, и она была здорова. Еще она была весела потому, что был человек, который ею восхищался (восхищение других была та мазь колес, которая была необходима для того, чтоб ее машина совершенно свободно двигалась), и Петя восхищался ею. Главное же, веселы они были потому, что война была под Москвой, что будут сражаться у заставы, что раздают оружие, что все бегут, уезжают куда то, что вообще происходит что то необычайное, что всегда радостно для человека, в особенности для молодого.


31 го августа, в субботу, в доме Ростовых все казалось перевернутым вверх дном. Все двери были растворены, вся мебель вынесена или переставлена, зеркала, картины сняты. В комнатах стояли сундуки, валялось сено, оберточная бумага и веревки. Мужики и дворовые, выносившие вещи, тяжелыми шагами ходили по паркету. На дворе теснились мужицкие телеги, некоторые уже уложенные верхом и увязанные, некоторые еще пустые.
Голоса и шаги огромной дворни и приехавших с подводами мужиков звучали, перекликиваясь, на дворе и в доме. Граф с утра выехал куда то. Графиня, у которой разболелась голова от суеты и шума, лежала в новой диванной с уксусными повязками на голове. Пети не было дома (он пошел к товарищу, с которым намеревался из ополченцев перейти в действующую армию). Соня присутствовала в зале при укладке хрусталя и фарфора. Наташа сидела в своей разоренной комнате на полу, между разбросанными платьями, лентами, шарфами, и, неподвижно глядя на пол, держала в руках старое бальное платье, то самое (уже старое по моде) платье, в котором она в первый раз была на петербургском бале.
Наташе совестно было ничего не делать в доме, тогда как все были так заняты, и она несколько раз с утра еще пробовала приняться за дело; но душа ее не лежала к этому делу; а она не могла и не умела делать что нибудь не от всей души, не изо всех своих сил. Она постояла над Соней при укладке фарфора, хотела помочь, но тотчас же бросила и пошла к себе укладывать свои вещи. Сначала ее веселило то, что она раздавала свои платья и ленты горничным, но потом, когда остальные все таки надо было укладывать, ей это показалось скучным.
– Дуняша, ты уложишь, голубушка? Да? Да?
И когда Дуняша охотно обещалась ей все сделать, Наташа села на пол, взяла в руки старое бальное платье и задумалась совсем не о том, что бы должно было занимать ее теперь. Из задумчивости, в которой находилась Наташа, вывел ее говор девушек в соседней девичьей и звуки их поспешных шагов из девичьей на заднее крыльцо. Наташа встала и посмотрела в окно. На улице остановился огромный поезд раненых.
Девушки, лакеи, ключница, няня, повар, кучера, форейторы, поваренки стояли у ворот, глядя на раненых.
Наташа, накинув белый носовой платок на волосы и придерживая его обеими руками за кончики, вышла на улицу.
Бывшая ключница, старушка Мавра Кузминишна, отделилась от толпы, стоявшей у ворот, и, подойдя к телеге, на которой была рогожная кибиточка, разговаривала с лежавшим в этой телеге молодым бледным офицером. Наташа подвинулась на несколько шагов и робко остановилась, продолжая придерживать свой платок и слушая то, что говорила ключница.
– Что ж, у вас, значит, никого и нет в Москве? – говорила Мавра Кузминишна. – Вам бы покойнее где на квартире… Вот бы хоть к нам. Господа уезжают.
– Не знаю, позволят ли, – слабым голосом сказал офицер. – Вон начальник… спросите, – и он указал на толстого майора, который возвращался назад по улице по ряду телег.
Наташа испуганными глазами заглянула в лицо раненого офицера и тотчас же пошла навстречу майору.
– Можно раненым у нас в доме остановиться? – спросила она.
Майор с улыбкой приложил руку к козырьку.
– Кого вам угодно, мамзель? – сказал он, суживая глаза и улыбаясь.
Наташа спокойно повторила свой вопрос, и лицо и вся манера ее, несмотря на то, что она продолжала держать свой платок за кончики, были так серьезны, что майор перестал улыбаться и, сначала задумавшись, как бы спрашивая себя, в какой степени это можно, ответил ей утвердительно.
– О, да, отчего ж, можно, – сказал он.
Наташа слегка наклонила голову и быстрыми шагами вернулась к Мавре Кузминишне, стоявшей над офицером и с жалобным участием разговаривавшей с ним.
– Можно, он сказал, можно! – шепотом сказала Наташа.
Офицер в кибиточке завернул во двор Ростовых, и десятки телег с ранеными стали, по приглашениям городских жителей, заворачивать в дворы и подъезжать к подъездам домов Поварской улицы. Наташе, видимо, поправились эти, вне обычных условий жизни, отношения с новыми людьми. Она вместе с Маврой Кузминишной старалась заворотить на свой двор как можно больше раненых.
– Надо все таки папаше доложить, – сказала Мавра Кузминишна.
– Ничего, ничего, разве не все равно! На один день мы в гостиную перейдем. Можно всю нашу половину им отдать.
– Ну, уж вы, барышня, придумаете! Да хоть и в флигеля, в холостую, к нянюшке, и то спросить надо.
– Ну, я спрошу.
Наташа побежала в дом и на цыпочках вошла в полуотворенную дверь диванной, из которой пахло уксусом и гофманскими каплями.
– Вы спите, мама?
– Ах, какой сон! – сказала, пробуждаясь, только что задремавшая графиня.
– Мама, голубчик, – сказала Наташа, становясь на колени перед матерью и близко приставляя свое лицо к ее лицу. – Виновата, простите, никогда не буду, я вас разбудила. Меня Мавра Кузминишна послала, тут раненых привезли, офицеров, позволите? А им некуда деваться; я знаю, что вы позволите… – говорила она быстро, не переводя духа.
– Какие офицеры? Кого привезли? Ничего не понимаю, – сказала графиня.
Наташа засмеялась, графиня тоже слабо улыбалась.
– Я знала, что вы позволите… так я так и скажу. – И Наташа, поцеловав мать, встала и пошла к двери.
В зале она встретила отца, с дурными известиями возвратившегося домой.
– Досиделись мы! – с невольной досадой сказал граф. – И клуб закрыт, и полиция выходит.
– Папа, ничего, что я раненых пригласила в дом? – сказала ему Наташа.
– Разумеется, ничего, – рассеянно сказал граф. – Не в том дело, а теперь прошу, чтобы пустяками не заниматься, а помогать укладывать и ехать, ехать, ехать завтра… – И граф передал дворецкому и людям то же приказание. За обедом вернувшийся Петя рассказывал свои новости.
Он говорил, что нынче народ разбирал оружие в Кремле, что в афише Растопчина хотя и сказано, что он клич кликнет дня за два, но что уж сделано распоряжение наверное о том, чтобы завтра весь народ шел на Три Горы с оружием, и что там будет большое сражение.
Графиня с робким ужасом посматривала на веселое, разгоряченное лицо своего сына в то время, как он говорил это. Она знала, что ежели она скажет слово о том, что она просит Петю не ходить на это сражение (она знала, что он радуется этому предстоящему сражению), то он скажет что нибудь о мужчинах, о чести, об отечестве, – что нибудь такое бессмысленное, мужское, упрямое, против чего нельзя возражать, и дело будет испорчено, и поэтому, надеясь устроить так, чтобы уехать до этого и взять с собой Петю, как защитника и покровителя, она ничего не сказала Пете, а после обеда призвала графа и со слезами умоляла его увезти ее скорее, в эту же ночь, если возможно. С женской, невольной хитростью любви, она, до сих пор выказывавшая совершенное бесстрашие, говорила, что она умрет от страха, ежели не уедут нынче ночью. Она, не притворяясь, боялась теперь всего.


M me Schoss, ходившая к своей дочери, еще болоо увеличила страх графини рассказами о том, что она видела на Мясницкой улице в питейной конторе. Возвращаясь по улице, она не могла пройти домой от пьяной толпы народа, бушевавшей у конторы. Она взяла извозчика и объехала переулком домой; и извозчик рассказывал ей, что народ разбивал бочки в питейной конторе, что так велено.
После обеда все домашние Ростовых с восторженной поспешностью принялись за дело укладки вещей и приготовлений к отъезду. Старый граф, вдруг принявшись за дело, всё после обеда не переставая ходил со двора в дом и обратно, бестолково крича на торопящихся людей и еще более торопя их. Петя распоряжался на дворе. Соня не знала, что делать под влиянием противоречивых приказаний графа, и совсем терялась. Люди, крича, споря и шумя, бегали по комнатам и двору. Наташа, с свойственной ей во всем страстностью, вдруг тоже принялась за дело. Сначала вмешательство ее в дело укладывания было встречено с недоверием. От нее всё ждали шутки и не хотели слушаться ее; но она с упорством и страстностью требовала себе покорности, сердилась, чуть не плакала, что ее не слушают, и, наконец, добилась того, что в нее поверили. Первый подвиг ее, стоивший ей огромных усилий и давший ей власть, была укладка ковров. У графа в доме были дорогие gobelins и персидские ковры. Когда Наташа взялась за дело, в зале стояли два ящика открытые: один почти доверху уложенный фарфором, другой с коврами. Фарфора было еще много наставлено на столах и еще всё несли из кладовой. Надо было начинать новый, третий ящик, и за ним пошли люди.
– Соня, постой, да мы всё так уложим, – сказала Наташа.
– Нельзя, барышня, уж пробовали, – сказал буфетчнк.
– Нет, постой, пожалуйста. – И Наташа начала доставать из ящика завернутые в бумаги блюда и тарелки.
– Блюда надо сюда, в ковры, – сказала она.
– Да еще и ковры то дай бог на три ящика разложить, – сказал буфетчик.
– Да постой, пожалуйста. – И Наташа быстро, ловко начала разбирать. – Это не надо, – говорила она про киевские тарелки, – это да, это в ковры, – говорила она про саксонские блюда.
– Да оставь, Наташа; ну полно, мы уложим, – с упреком говорила Соня.
– Эх, барышня! – говорил дворецкий. Но Наташа не сдалась, выкинула все вещи и быстро начала опять укладывать, решая, что плохие домашние ковры и лишнюю посуду не надо совсем брать. Когда всё было вынуто, начали опять укладывать. И действительно, выкинув почти все дешевое, то, что не стоило брать с собой, все ценное уложили в два ящика. Не закрывалась только крышка коверного ящика. Можно было вынуть немного вещей, но Наташа хотела настоять на своем. Она укладывала, перекладывала, нажимала, заставляла буфетчика и Петю, которого она увлекла за собой в дело укладыванья, нажимать крышку и сама делала отчаянные усилия.
– Да полно, Наташа, – говорила ей Соня. – Я вижу, ты права, да вынь один верхний.
– Не хочу, – кричала Наташа, одной рукой придерживая распустившиеся волосы по потному лицу, другой надавливая ковры. – Да жми же, Петька, жми! Васильич, нажимай! – кричала она. Ковры нажались, и крышка закрылась. Наташа, хлопая в ладоши, завизжала от радости, и слезы брызнули у ней из глаз. Но это продолжалось секунду. Тотчас же она принялась за другое дело, и уже ей вполне верили, и граф не сердился, когда ему говорили, что Наталья Ильинишна отменила его приказанье, и дворовые приходили к Наташе спрашивать: увязывать или нет подводу и довольно ли она наложена? Дело спорилось благодаря распоряжениям Наташи: оставлялись ненужные вещи и укладывались самым тесным образом самые дорогие.
Но как ни хлопотали все люди, к поздней ночи еще не все могло быть уложено. Графиня заснула, и граф, отложив отъезд до утра, пошел спать.
Соня, Наташа спали, не раздеваясь, в диванной. В эту ночь еще нового раненого провозили через Поварскую, и Мавра Кузминишна, стоявшая у ворот, заворотила его к Ростовым. Раненый этот, по соображениям Мавры Кузминишны, был очень значительный человек. Его везли в коляске, совершенно закрытой фартуком и с спущенным верхом. На козлах вместе с извозчиком сидел старик, почтенный камердинер. Сзади в повозке ехали доктор и два солдата.
– Пожалуйте к нам, пожалуйте. Господа уезжают, весь дом пустой, – сказала старушка, обращаясь к старому слуге.
– Да что, – отвечал камердинер, вздыхая, – и довезти не чаем! У нас и свой дом в Москве, да далеко, да и не живет никто.
– К нам милости просим, у наших господ всего много, пожалуйте, – говорила Мавра Кузминишна. – А что, очень нездоровы? – прибавила она.
Камердинер махнул рукой.
– Не чаем довезти! У доктора спросить надо. – И камердинер сошел с козел и подошел к повозке.
– Хорошо, – сказал доктор.
Камердинер подошел опять к коляске, заглянул в нее, покачал головой, велел кучеру заворачивать на двор и остановился подле Мавры Кузминишны.
– Господи Иисусе Христе! – проговорила она.
Мавра Кузминишна предлагала внести раненого в дом.
– Господа ничего не скажут… – говорила она. Но надо было избежать подъема на лестницу, и потому раненого внесли во флигель и положили в бывшей комнате m me Schoss. Раненый этот был князь Андрей Болконский.


Наступил последний день Москвы. Была ясная веселая осенняя погода. Было воскресенье. Как и в обыкновенные воскресенья, благовестили к обедне во всех церквах. Никто, казалось, еще не мог понять того, что ожидает Москву.
Только два указателя состояния общества выражали то положение, в котором была Москва: чернь, то есть сословие бедных людей, и цены на предметы. Фабричные, дворовые и мужики огромной толпой, в которую замешались чиновники, семинаристы, дворяне, в этот день рано утром вышли на Три Горы. Постояв там и не дождавшись Растопчина и убедившись в том, что Москва будет сдана, эта толпа рассыпалась по Москве, по питейным домам и трактирам. Цены в этот день тоже указывали на положение дел. Цены на оружие, на золото, на телеги и лошадей всё шли возвышаясь, а цены на бумажки и на городские вещи всё шли уменьшаясь, так что в середине дня были случаи, что дорогие товары, как сукна, извозчики вывозили исполу, а за мужицкую лошадь платили пятьсот рублей; мебель же, зеркала, бронзы отдавали даром.
В степенном и старом доме Ростовых распадение прежних условий жизни выразилось очень слабо. В отношении людей было только то, что в ночь пропало три человека из огромной дворни; но ничего не было украдено; и в отношении цен вещей оказалось то, что тридцать подвод, пришедшие из деревень, были огромное богатство, которому многие завидовали и за которые Ростовым предлагали огромные деньги. Мало того, что за эти подводы предлагали огромные деньги, с вечера и рано утром 1 го сентября на двор к Ростовым приходили посланные денщики и слуги от раненых офицеров и притаскивались сами раненые, помещенные у Ростовых и в соседних домах, и умоляли людей Ростовых похлопотать о том, чтоб им дали подводы для выезда из Москвы. Дворецкий, к которому обращались с такими просьбами, хотя и жалел раненых, решительно отказывал, говоря, что он даже и не посмеет доложить о том графу. Как ни жалки были остающиеся раненые, было очевидно, что, отдай одну подводу, не было причины не отдать другую, все – отдать и свои экипажи. Тридцать подвод не могли спасти всех раненых, а в общем бедствии нельзя было не думать о себе и своей семье. Так думал дворецкий за своего барина.