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

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

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



?ением CRC. После этого происходит 8 сдвигов значения CRC влево, при этом если выталкивается 1, то происходит исключающее или с полиномом 0xA001.

Код всей программы с комментариями приведён в приложении Б.

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

Для проверки правильной работы программы необходимо было создать такой набор тестов, который позволил бы проверить все функции с различными условиями (проверка широковещательной передачи, проверка обработки исключений). Для отправки сообщений через com-порт использовалась программа SerialNetTools. Для подсчёта контрольной суммы была написана программа.

Функция чтения дискретных входов:

Для проверки функции чтения дискретных вводов было создано 2 теста, первый запрашивает на чтение весь регистр флагов, второй - запрашивает лишние биты. В первом случае функция возвращает состояние регистра флагов, во втором - исключение. Результаты тестирование приведены на рисунке 4.1.

Рисунок 4.1 - функции чтения дискретных вводов

Функция чтения регистров ввода:

Для проверки функции чтения регистров ввода также было направлено 2 теста. Первый запрашивает старшие десять РОН микроконтроллера, второй - запрашивает недопустимые значения. В ответ на первый тест приходит содержимое старших десяти РОН, на второй - исключение. Результаты тестирования приведены на рисунке 4.2.

Рисунок 4.2 - чтение регистров ввода

Функция записи регистров хранения:

Для проверки функции записи дискретных регистров было создано четыре теста:

1.обычная запись значения регистра хранения. В ответ на этот запрос приходит его копия.

2.широковещательная запись регистра хранения. В этом случае ответ не приходит.

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

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

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

Функция чтения регистров хранения:

Для проверки функции чтения регистров хранения было создано 2 теста: первый читает первые 15 регистров, второй читает регистры по недопустимому адресу. В случае корректного чтения для регистров, чьи значения были записаны, совпадают. Стоит заметить, что значение, которое предназначалось другому устройству, записано не было. В случае чтения недопустимого адреса возвращается исключение. Результаты тестирования функций чтения и записи регистров хранения представлены на рисунке 4.3.

Рисунок 4.3 - функции чтения и записи регистров хранения

Функция записи флагов:

Для функции записи флагов было разработано следующие четыре теста:

1.установить третий флаг. Ответом на этот запрос приходит его копия.

2.установить пятый флаг всем устройствам. Ответ на этот запрос не приходит.

.Сбросить третий флаг устройству с другим кодом. Ответ на этот запрос не приходит.

.Записать в четвёртый флаг некорректное значение. В ответ на этот запрос приходит исключение.

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

Функция чтения флагов:

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

Рисунок 4.4 - функции чтения и записи флагов

На этапе отладки и тестирования были найдены и исправлены все ошибки, которые позволил выявить данный набор тестов.

Заключение

В результате проделанной работы была спроектирована и разработана программа, которая реализует основные функции протокола modbus для микроконтроллеров семейства AVR.

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

К недостаткам системы можно отнести ограниченный набор функций и малый объём выделенной для хранения данных памяти. Также во время отправки ответа программа теряет много времени на ожидание готовности передатчика.

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

1.Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. - СПб.: БХВ-Петербург, 2008. - 384с.

2.Евстифеев А.В. микроконтроллеры AVR семейства Tiny и Mega фирмы Atmel - М.: Издательский дом Додэка-XXI, 2004. - 560с.

3.AVR. Учебный курс. Передача данных через UART // www.easyelectronics.ru. - .

4.Modbus Specification and implementation guides // www.modbus.org . -

Приложение А

Блок-схема инициализации программы:

Блок-схема обработки принятого байта:

Блок-схема функции обработки запроса:

Блок-схема функции чтения флагов:

Блок-схема функции чтения регистров:

Блок-схема функции записи флага:

Блок-схема функции записи регистра:

клиент протокол сервер запрос

Приложение Б

Листинг кода программы: