Сигнал начала кадра. В качестве сигнала начала кадра используется интервал отсутствия передачи (передатчик выдает рецессивный уровень сигнала) в течение более 3.5 периодов
В качестве сигнала начала кадра используется интервал отсутствия передачи (передатчик выдает рецессивный уровень сигнала) в течение более 3.5 периодов передачи байта данных после завершения передачи последнего байта предыдущего кадра. Если передача нового кадра начинается ранее, это будет воспринято приемником как ошибка.
Адрес ведомого устройства
Размер – 1 байт. Содержит число – номер ведомого устройства.
Код функции
Размер – 1 байт. Содержит число – код функции и, для кадра приемника – флаг ошибки.
Данные
Размер определяется числом данных. Каждый байт содержит байт данных.
Контрольная сумма
Размер – 2 байта. В качестве контрольной суммы используется двухбайтовое число, подсчитываемое с помощью алгоритма CRC (Cyclical Redundancy Check). Вначале передается старший байт контрольной суммы, затем – младший.
Вычисление контрольной суммы выполняется на прикладном уровне.
Сигнал завершения кадра
Аналогичен сигналу начала кадра – перерыв в передаче не менее 3.5 периодов передачи данных.
Байты кадра должны передаваться сплошным потоком. Перерыв в передаче между байтами кадра не должен превышать 1.5 периода передачи байта. В противном случае кадр считается утерянным, следующий байт считается первым байтом нового кадра.
Прикладной уровень MODBUS.
Прикладной уровень MODBUS является единым для всех вариантов канального и физического уровня.
На прикладном уровне пакет данных MODBUS содержит следующие поля:
1. Поле адреса ведомого устройства.
2. Поле кода функции.
3. Поле данных.
4. Поле контрольной суммы.
Один пакет данных прикладного уровня всегда располагается в одном кадре данных канального уровня, существует строгое соответствие между полями пакета прикладного уровня и полями кадра канального уровня.
Поле адреса ведомого устройства
Поле адреса ведомого устройства занимает все поле “Адрес ведомого устройства” канального уровня. Адрес ведомого устройства – число в диапазоне 0 – 247.
Адрес 0 является широковещательным. Реально его использование допустимо только в случае, если в сети имеется только одно ведомое устройство, в противном случае одновременный ответ нескольких ведомых устройств приведет к сбою работы сети. Адреса с 1 по 247 являются адресами ведомых устройств.
Ведущее устройство не имеет собственного адреса. Кадр, передаваемый ведущим устройством, содержит адрес ведомого устройства, которому он адресован. Кадр ведомого устройства содержит собственный адрес ведомого устройства.
Поле кода функции
Поле кода функции занимает все поле “Код функции” канального уровня. Поле кода функции имеет размер 1 байт.
Поле кода функции определяет действие, которое должно выполнить ведомое устройство. Код функции может иметь значения в пределах 0 – 127. Каждый пакет прикладного уровня (и, соответственно – кадр канального уровня) может содержать код только одной функции.
Ведущее устройство передает код функции в младших битах поля, самый старший бит поля всегда равен нулю.
Ведомое устройство возвращает код функции без изменений за исключением старшего бита. Старший бит поля кода функции принимает следующие значения:
0 – функция выполнена без ошибок;
1 - при приеме или выполнении функции произошла ошибка. В дополнение к этому ведомое устройство возвращает в поле данных код исключения, указывающие более конкретно на произошедшую ошибку.
Поле данных
Поле данных занимает все поле “Данные” канального уровня. Поле данных, передаваемое ведущим устройством, содержит дополнительную информацию, необходимую для выполнения команды, определяемой полем кода функции. Поле данных, передаваемое ведомым устройством, может содержать:
1. В случае, если действие выполнено правильно – запрашиваемые ведущим устройством данные (или ничего, если никакие данные не запрашиваются).
2. В случае, если кадр от ведущего устройства принят неправильно или произошла ошибка при выполнении действия – 1 байт - соответствующий код исключения.
Дата добавления: 2016-04-19; просмотров: 818;