Реализация протокола Modbus

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

ГОУ ВПО ЮГОРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Институт Систем Управления и Информационных Технологий

Кафедра Автоматизированные системы обработки информации и управления

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ

по диiиплине: Языки программирования низкого уровня

на тему Реализация протокола Modbus

Выполнил: Бирюков Н.А.

студент группы 1170

Специальность: 230102

Шифр: 117010

Проверил: преподаватель

С.Н. Горбунов

Ханты-Мансийск, 2011

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

ЮГОРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Институт Систем Управления и Информационных Технологий

Кафедра Автоматизированные системы обработки информации и управления

ЗАДАНИЕ

На курсовую работу по диiиплине Языки программирования низкого уровня

Тема курсовой работы: Реализация протокола Modbus для микроконтроллера семейства AVR

На языке Assembler создать программу, реализующую протокол Modbus в качестве Slave устройства для микроконтроллера семейства AVR.

Программа должна быть реализована для стенда СУ-МК-AVR (Контроллер At Mega 128) и выполнять следующие функции:

1.осуществлять приём/передачу сообщений по UART.

2.чтение нескольких флагов.

.чтение нескольких дискретных регистров.

.чтение регистров хранения.

.чтение нескольких регистров ввода.

.запись значения одного флага.

.запись значения в один регистр.

Задание выдал _______________ Горбунов С.Н.

Задание принял _______________Бирюков Н.А.

Содержание

Введение

. Анализ задания на курсовую работу

. Проектирование программы

.1 Чтение флагов

.2 Чтение дискретных входов

.3 Чтение регистров хранения

.4 Чтение регистров ввода

.5 Запись одного флага

.6 Запись одного регистра хранения

.7 Исключительная ситуация

.8 Контрольная сумма

. Разработка программы

.1 Инициализация

.2 Обработка прерываний

.3 Обработка запроса

.4 Чтение флагов

.5 Чтение регистров хранения

.6 Чтение регистров ввода

.7 Запись флага

.8 Запись регистра

.9 Обработка исключительных ситуаций

.10 Контрольная сумма

. Тестирование программы

Заключение

Список использованных источников

Приложение А

Приложение Б

Введение

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

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

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

1. Анализ задания на курсовую работу

Существует три основных реализации протокола Modbus, две для передачи данных по последовательным линиям связи, как медным EIA/TIA-232-E (RS-232), EIA-422, EIA/TIA-485-A (RS-485), так и оптическим и радио:

Modbus RTU и

Modbus ASCII,

и одна для передачи данных по сетям Ethernet поверх TCP/IP:

Modbus TCP.

В данной курсовой работе представлен Modbus RTU, так как этот вариант наиболее подходит для программирования на микроконтроллере AVR, так как реализация стека TCP/IP необоснованно усложнило бы программу. Реализация ASCII не оправдана, так как формат сообщений Modbus RTU гораздо удобнее обрабатывать. Modbus ASCII использует 7 бит данных при передаче по последовательной линии, для идентификации начала и конца посылки используется дополнительные символы (: в начале строки и символы перевода строки в конце).

Рассмотрим формат сообщений ModBus RTU. Структура ModBus состоит из запросов и ответов. Их основа - элементарный пакет протокола, так называемый PDU (Protocol Data Unit). Структура PDU (Рисунок 1.1) не зависит от типа линии связи и включает в себя код функции (FCode) и поле данных (Data).

Рисунок 1.1 - Структура пакета PDU

Для передачи пакета по физическим линиям связи PDU помещается в другой пакет, содержащий дополнительные поля. Этот пакет носит название ADU (Application Data Unit). Общая структура ADU пакета для ModBus RTU представлена на рисунке 1.2.

Рисунок 1.2 - Общая структура ADU пакета для ModBus RTU

Пакет Modbus RTU ADU помимо PDU пакета включает в себя также Slave ID - адрес ведомого устройства и контрольную сумму CRC16 для проверки корректности пакета.

В данной реализации протокола Modbus используются следующие типы данных:

Флаг - один бит, регистр флагов доступны как на чтение, так и на запись. Флаги хранятся в оперативной памяти микроконтроллера. Для флагов выделен 1 байт, таким образом можно обращаться к 8 флагам.

Дискретный регистр - один бит, доступен только для чтения. Дискретный регистр является портом ввода. Дискретные регистры являются регистром статуса микроконтроллера, следовательно доступны 8 би