Разработка модуля дискретного ввода-вывода для распределенной системы управления технологическими процессами с интерфейсом RS-485 и поддержкой протокола ModBus
Технические характеристики модулей дискретного ввода-вывода FieldPoint. Основные элементы системы управления технологическими процессами DeltaV. Методы подключения клавиатуры с использованием сдвиговых регистров. Выбор схемы гальванической развязки.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 29.06.2014 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок 2.10 - Структурная схема микросхемы 78хх
В настоящее время (2012 год), кроме базового семейства 7805, выпускаются его варианты на бомльшие и меньшие выходные токи (78ххM, 78xxL и другие) в корпусах ТО-220, ТО-92, SOP8L, D2PAK.
В Советском Союзе выпускались аналогичные микросхемы. В 1980-х годах появились «гражданские» аналоги - серии КР142ЕНхх в пластиковых корпусах КТ-28-2 (TO-220), аналогичных серии 78хх. А в 2000-х годах начался выпуск маломощных (500 мА) стабилизаторов серии КР1332ЕНхх, аналогичных серии 78Mхх, и микромощных (100 мА) стабилизаторов серии КР1157ЕНхх, КР1181ЕНхх аналогичных серии 78Lхх. Микросхемы стабилизаторов серии 142ЕН выпускаются на следующий ряд напряжений: 5, 6, 8, 9, 12, 15, 18, 20, 24 и 27 В.
Для питания модуля выбрана микросхема с выходным напряжением 5В - 7805.
3. Разработка программного обеспечения модуля дискретного ввода-вывода
3.1 Описание протокола Modbus
Протокол Modbus был разработан компанией Modicon (в настоящее время принадлежит компании Schneider Electric) для обмена данными между контроллерами и модулями ввода/вывода. Он основан на архитектуре «клиент-сервер» и является открытым, поэтому любой к нему имеется доступ к структуре пакетов и может свободно применять этот протокол в собственных устройствах и программных модулях. Протокол Modbus является наиболее распространенным решением обмена данными между средствами автоматизации, как для промышленной автоматизации, так и для автоматизации зданий. Причиной распространенности протокола Modbus является простота его реализации.
Протокол Modbus имеет несколько разновидностей:
- протокол RTU использует команды, в которых все символы передаются в 16-разрядном виде;
- протокол ASCII http://autoworks.com.ua/setevye-resheniya/modbus-ascii/использует команды, в которых все символы передаются как ASCII код отдельного символа.
Протокол Modbus поддерживает 4 типа данных:
- Discrete Inputs - один бит, доступен только для чтения;
- Coils - один бит, доступен для чтения и записи;
- Input Registers -- 16-битный беззнаковый или знаковый тип, доступен только для чтения;
- Holding Registers -- 16-битный беззнаковый или знаковый тип, доступен для чтения и записи.
Спецификация протокола Modbus состоит из трех частей:
а) документ 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.
Modbus RTU- это открытый сетевой протокол передачи данных, для построения сетей между программируемыми логическими контроллерами. Modbus RTU стал де-факто стандартом сетевых протоколов в сфере промышленной автоматизации. RTU имеет шинную топологию и использует модель ведущий/ведомый, как метод доступа к шине. Принято называть процесс ведущего клиентом, а процесс ведомого сервером.
Канальный уровень Modbus RTU позволяет использовать адресацию с идентификацией узлов. Каждое ведомое устройство имеет свой уникальный адрес. Ведущее устройство в адресации не нуждается, поскольку мастер в сети может быть только один. При индивидуальном запросе, клиент формирует сообщение и оправляет его по необходимому адресу. Сервер обрабатывает это сообщение и отправляет ответ. Для отсылки широковещательных сообщений используется нулевой адрес.
Режим RTU использует в качестве физического интерфейса RS-232 или RS-485. Именно применение этих интерфейсов и отличает эту спецификацию протокола от TCP (так же известным как IP, EtherNet илиTCP/IP), который использует физический уровень EtherNet.
Отличие от ASCII спецификации Modbus RTU заключается в структуре сообщения и его кодировке. Сообщение использует 8 бит данных из выделенных 11. Формат сообщения представляет собой 1 стартовый бит, 8 бит данных, 1 бит паритета +1 стоповый или без паритета +2 стоповых. Контрольная сумма высчитывается по алгоритму CRC16. Разграничивают кадры между собой с помощью пауз. Формат кадра для RTU режима обмена на рисунке 3.1.
Рисунок 3.1 - Формат кадра для RTU режима обмена
Modbus ASCII - это спецификация сетевого протокола обмена данных, для обеспечения сетевой связи между интеллектуальными устройствами. Так же как и все другие спецификации Modbus ASCII является одномастерным протоколом, функционирующим по принципу «ведущий-ведомый». Modbus ASCII использует шинную топологию, с использованием сетевых интерфейсов RS-232 или RS-485.
Основным отличием Modbus ASCII от RTU является использование специальной таблицы значений. Каждому символу отвечают 2 байта данных, соответственно их используется в 2 раза больше, однако расшифровка и сетевое управление осуществляется намного проще. Задержка между кадрами допустима в пределах 1 секунды. Сеть, построенная на использовании этой версии протокола, может включать в себя до 31 узла.
Структура сообщения имеет следующий вид: каждый байт передается в шестнадцатеричном представлении. В таком случае байты данных, код функции и байт поля проверки передаются в виде 0-9, A-F.
Для разграничения отдельных кадров используется символ «:» и специализированная последовательность «CR LF». Формат кадра представляет собой следующую последовательность: 1 стартовый, 7 битов данных 1 бит паритета + 1 стоповый или без паритета + 2 стоповых. Формат кадра для ASCII режима обмена представлено на рисунке 3.2.
Рисунок 3.2 - Формат кадра для ASCII режима обмена
Специальные приемники на шине отслеживают символ «:», который указывает на начало кадра. По принятию символа, отлавливаются поля адресации. Таким образом, легко реализовывается синхронизация устройств.
Так как, в Modbus ASCII используется стартовая и столбовая последовательность в разграничении, спецификация не чувствительна к значительным паузам между символами.
Для разрабатываемого устройства более подходящим протоколом ModBus будет ASCII. При использовании ASCII режима каждый байт сообщения передается как два ASCII символа. Главное преимущество этого способа время между передачей символов может быть до 1 секунды (допустима задержка до 1 секунды между двумя соседними символами), без возникновения ошибок при передаче, что очень важно в промышленности.
Режим RTU не выбран из-за того, что при передаче данных, кадры между собой разграничиваются с помощью пауз, что при использовании ПК с операционной системой без реального времени будут ошибки при приеме, поскольку будут задержки. Отличие от ASCII спецификации Modbus RTU заключается в структуре сообщения и его кодировке. В ASCII каждому символу отвечают 2 байта данных, соответственно их используется в 2 раза больше, однако расшифровка и сетевое управление осуществляется намного проще.
Основным отличием Modbus ASCII от RTU является использование специальной таблицы значений. Каждому символу отвечают 2 байта данных, соответственно их используется в 2 раза больше, однако расшифровка и сетевое управление осуществляется намного проще. Задержка между кадрами допустима в пределах 1 секунды.
Протокол обмена Modbus поддерживается большинством промышленных (scada) систем, существуют большое количество свободно распространяемых библиотек/программ с открытым исходным кодом.
3.2 Использование свободно распространяемой библиотеки Freemodbus
Роль мастера (master) будет выполнять ПК, роль ведомого (slave) - avr atmega168. За основу взято: для ведомого (slave) - freemodbus; для ведущего (master) - qmodbus.
Freemodbus - реализация ведомого устройства (slave), поддерживает modbus-rtu, modbus-ascii, modbus-tcp, портирован на большое количество архитектур, в том числе и для atmega avr.
Компиляция Freemodbus.
Для сборки под AVR редактируется Makefile, изменяются переменные СС, OBJCOPY, AVRDUDE. В них надо указываем путь к соответствующим программам. В данном случае путь указан в переменной окружения PATH, поэтому просто указываются имена программ:
CC=avr-gcc
OBJCOPY=avr-objcopy
AVRDUDE=avrdude
Далее задается используемый AVR микроконтроллер:
MCU = atmega8
В CFLAGS указывается используемый кварц - 16 МГц:
-DF_CPU=16000000UL
Из сборки используются elf и hex:
all: $(TARGET).elf $(TARGET).hex
Доступ к данным в modbus.
В описании протокола modbus определено четыре типа данных:
- Discrete Inputs размером один бит и доступен только на чтение;
- Coils размером один бит и доступен на чтение и на запись;
- Input Registers представляет собой 16-битный регистр доступный только на чтении;
- Holding Registers представляет собой 16-битный регистр доступный на чтение и на запись.
Для каждого типа в freemodbus надо реализовать функцию, обеспечивающую доступ к данным.
Для Input Registers:
eMBErrorCode eMBRegInputCB ( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs ).
Для Holding Registers:
eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode ).
Для Coils:
eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils, eMBRegisterMode eMode ).
Для Discrete Inputs:
eMBErrorCode eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete ).
В этих функциях pucRegBuffer - массив, в который будут записаны значения регистров при чтении, или из которого будут считаны значения регистров которые надо записать; usAddress - начальный адрес регистров; usNRegs, usNDiscrete, usNCoils - количество регистров; eMode - режим чтения или записи.
У каждого типа регистров в ModBus есть свое адресное пространство, поэтому регистры разного типа могут иметь одинаковые адреса.
В файле modbus-v1.5.0/faily/AVR/modbus.c используется следующий код функций eMBRegInputCB и eMBRegHoldingCB:
eMBErrorCode
eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )
{ eMBErrorCode eStatus = MB_ENOERR;
if( ( usAddress == 1 ) && ( usNRegs == 1 ) ) {
*pucRegBuffer++ = 0;
*pucRegBuffer++ = ~PINA; }
else { eStatus = MB_ENOREG; }
return eStatus; }
eMBErrorCode
eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode )
{ eMBErrorCode eStatus = MB_ENOERR;
if( ( usAddress == 1 ) && ( usNRegs == 1 ) ) {
if( eMode == MB_REG_READ ) {
*pucRegBuffer++ = 0;
*pucRegBuffer++ = ~PINB; }
else { pucRegBuffer++;
PORTB = ~(*pucRegBuffer++); } }
else { eStatus = MB_ENOREG; }
return eStatus; }
В качестве реализаций eMBRegCoilsCB и eMBRegDiscreteCB оставим функции - “заглушки”:
eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress,
USHORT usNCoils, eMBRegisterMode eMode )
{ return MB_ENOREG; }
eMBErrorCode eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete )
{ return MB_ENOREG; }
Согласно описанию протокола modbus существует три варианта реализации: RTU, ASCII и TCP. Выбран - modbus ASCII.
Для настройки соединения в freemodbus надо вызывать функцию eMBInit:
eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity );
где: eMode - тип реализации, MB_RTU или MB_ASCII; ucSlaveAddress - адрес устройства на шине modbus; ucPort - номер CОМ порта, в реализации для avr atmega не имеет значения; ulBaudRate - скорость обмена 38400; eParity - контроль четности: MB_PAR_NONE - без контроля четности, MB_PAR_ODD - дополнение до нечетности , MB_PAR_EVEN - дополнение до четности.
Настройки для протокол modbus ASCII следующие: адрес контроллера 10, скорость 38400, включен контроль дополнения до четности:
eStatus = eMBInit( MB_ ASCII, 10, 0, 38400, MB_PAR_EVEN ).
Modbus TCP и modbus RTU не используются, поэтому следует их отключить как ненужные части кода. Для этого используется файл modbus/include/mbconfig.h, где следует заменить заменим (1) на (0) у дефайнов MB_RTU_ENABLED и MB_TCP_ENABLED:
/*! \brief If Modbus ASCII support is enabled. */
#define MB_ASCII_ENABLED ( 1 )
/*! \brief If Modbus RTU support is enabled. */
#define MB_RTU_ENABLED ( 0 )
/*! \brief If Modbus TCP support is enabled. */
#define MB_TCP_ENABLED ( 0 )
3.3 Алгоритмы работы программы управления модулем дискретного ввода - вывода
На рисунке 3.3 показан главный цикл программы управления модулем ввода - вывода. В блоке инициализации происходит настройка периферийных модулей (SPI и UART), устанавливается скорость обмена и формат данных. Так же производится инициализация библиотеки Freemodbus, настройка адресов самого ведомого устройства и его регистров, производится запуск обработчика прерывания. Алгоритм работы блока инициализации показан на рис. 3.4.
Рисунок 3.3 - Главный цикл программы
В бесконечном цикле выполняется последовательно чтение состояния входов, для этого вызывается функция GetIO(), которая записывает состояние входов модуля в две переменные типа unsigned char - HregInput для старших 8 входов и в LRegInput для младших. Алгоритм работы функции GetIO() показан на рис. 3.5.
Рисунок 3.4 - Алгоритм работы подпрограммы инициализации
В бесконечном цикле также вызывается функция eMBPoll(), которая производит парсинг сообщений в очереди UART и вызовом соответствующих функций обратного вызова производит запись или чтение данных. Алгоритм работы этой функции не показан, так как является частью библиотеки Freemodbus.
Рисунок 3.5 - Алгоритм работы блока считывания состояния входов
В бесконечном цикле после обработки сообщений Modbus происходит установка выходов модуля функцией SetIO() в соответствии с данными полученными через интерфейс UART. Алгоритм работы этой функции показан на рис. 3.6
Рисунок 3.6 - Алгоритм работы блок установки выходов
3.4 Отладка протокола с использованием свободно распространяемой программы QModBus
QModBus, кросcплатформенная реализация на Qt, компилируется под windows и под linux. Поддерживает modbus-rtu и modbus-ascii.
Рисунок 3.7 - Окно программы монитора протокола ModBus
Для отладки обмена между измерителем и ПК используется программа QModbus. Запускаем QModBus. Устанавливаем соответствующий COM-порт, скорость 38400, 8 бит данных, контроль дополнения до четности, 1 стоп бит. Slave ID - адрес контроллера avr на шине modbus равен 10.
Читаем состояние кнопок, для этого выбираем команду «Read Input Registers», выставляем адрес регистра = 0, и количество = 1. После нажатия на кнопку Send происходит обмен. Считанное из AVR значение отображается в поле Data.
дискретный гальванический сдвиговый регистр
Выводы
Во время выполнения дипломной работы была рассмотрена литература и проведен обзор технического материала предоставляемого фирмами - производителями промышленного оборудования. Среди огромного ассортимента средств распределенного ввода - вывода очень важно учитывать ремонтопригодность (применяемая элементная база) и наличие послегарантийного обслуживания.
Для реализации возможности одновременной работы с большим количеством входных и выходных дискретных сигналов выбрано схемное решение на базе сдвиговых регистров. Для гальванической развязки каналов между собой и питающими линиями использована схема оптронной развязки. Подключение управляющего микроконтроллера и регистров сдвига происходит через интерфейс SPI. Преобразователь уровней RS-485 и TTL также снабжены оптронной изоляцией и раздельным источником питания. Так же в наличии светодиодная индикация состояния модуля.
Для реализации стека протокола ModBus выбрана свободно распространяемая библиотека FreeModBus, которая содержит полностью готовые к работе функции, и позволила без лишних сложностей интегрировать в свой проект поддержку ModBus ASCII. Так же разработаны алгоритмы работы функций инициализации, записи и чтения информационных каналов, а также основной цикл программы.
Литература
1 Новоселов С.П. Методичні вказівки з дипломного проектування для студентів усіх форм навчання спеціальностей 7.05020201 «Автоматизоване управління технологічними процесами», 7.05020202 «Комп'ютерно-інтегровані технологічні процеси та виробництва» / Упоряд.: С.П. Новоселов, Б.О. Шостак, І.В. Жарікова. - Харків: ХНУРЕ, - 2012. - 60с.
2 Дзюндзюк Б.В. Методичні вказівки до виконання розділу «Охорона праці та безпека в надзвичайних ситуаціях» у дипломних проектах (роботах) ОКР «спеціаліст» усіх форм навчання факультетів РТ, ЕТ, ТКВТ, АКТ Упоряд.: Б.В. Дзюндзюк, Є.М. Анпілогов, Т.Є. Стиценко - Харків: ХНУРЕ, 2011. - 32с.
3 Соколова Л.В. Методичні рекомендації до виконання економічної частини дипломних проектів, робіт для студентів денної та заочної форми навчання усіх спеціальностей / Упорядник Л.В.Соколова, О.І. Горбач, С.В. Гришко, Є.В. Діденко, Л.В. Левченко, Г.М. Путятіна, В.Г. Харченко. - Харків: ХНУРЕ, 2010. - 14с.
Размещено на Allbest.ru
...Подобные документы
Проектирование модуля вывода дискретных и ввода аналоговых сигналов для систем управления различным технологическим оборудованием. Моделирование схемы модуля в ССМ Multisim. Разработка печатной платы модуля. Разработка принципиальной и структурной схем.
курсовая работа [1,8 M], добавлен 03.11.2014Разработка расширителя портов ввода-вывода и особенности его применения. Программируемая логическая интегральная схема CPLD. Плис CoolRunner-II, главные функции. Листинг модулей на языке Verilog. Временная диаграмма, внутреннее содержание модуля.
курсовая работа [1,9 M], добавлен 26.01.2013Разработка микропроцессорной системы на основе однокристального 8-разрядного микропроцессора КР580ВМ80А. Основные характеристики системы. Формирование сигнала выбора модуля. Структура памяти, организация ввода и вывода. Программное обеспечение системы.
курсовая работа [422,5 K], добавлен 10.03.2015Общие принципы резервирования. Методы диагностики обрыва во входных цепях аналоговых модулей. Принцип работы системы, резервированной методом замещения. Резервирование датчиков и модулей ввода дискретных сигналов, аналоговых модулей ввода и вывода.
статья [185,8 K], добавлен 12.12.2010Разработка интерфейса и уточнённой структурной схемы, процессорного модуля, подсистем памяти и ввода/вывода, алгоритма программного обеспечения. Оценка памяти программ и данных. Структура адресного пространства. Организация клавиатуры и индикации.
курсовая работа [2,4 M], добавлен 09.08.2015Цифровые технологии получения рентгенографических изображений. Усовершенствование модуля ввода/вывода данных в цифровом рентгенографическом аппарате Sire Mobil Compact для улучшения качества фильтрации и изображения путем внедрения новых технологий.
курсовая работа [732,4 K], добавлен 10.11.2010Назначение и описание принципа действия устройства автотранспортного средства, требования к информационно-измерительной системе. Выбор бортового компьютера и модулей ввода (вывода), интерфейса связи. Разработка схемы электрической принципиальной.
курсовая работа [1,2 M], добавлен 05.01.2013Разработка структурной схемы автоматической системы управления на комплекте КР580. Характеристика общих принципов построения устройства. Расчет и выбор элементной базы. Микропроцессор и вспомогательные устройства. Организация ввода-вывода информации.
курсовая работа [573,5 K], добавлен 02.04.2013Реализация блоков структурной схемы на основе функциональных узлов общего назначения (регистров, счетчиков, дешифраторов, мультиплексоров, элементов задержки, триггеров с разветвленной логикой. Порты ввода и вывода, дешифратор адреса, работа модуля.
курсовая работа [15,8 M], добавлен 03.04.2012Структурная схема устройства. Выбор элементной базы и электрической схемы. Использование многоуровневой конвейерной обработки. Последовательность выполнения программы. Команды условного и безусловного перехода. Пространство регистров ввода-вывода.
контрольная работа [308,2 K], добавлен 07.07.2013Пропорциональный гидравлический распределитель. Расчет характеристик движения для привода с гидравлическим цилиндром. Проектирование электрогидравлической схемы. Разработка системы управления стендом, требования к ней, выбор среды программирования.
дипломная работа [1,6 M], добавлен 30.05.2014Порядок и обоснование выбора микропроцессора, схема его подключения. Организация ввода-вывода и памяти микропроцессора. Разработка и апробация программного обеспечения на базе восьмиразрядного МП Z80. Методы повышения частоты работы микропроцессора.
курсовая работа [735,7 K], добавлен 03.01.2010Проектирование схемы устройства управления, выбор и описание элементов схем (ввода-вывода, логические, счетчик и другие элементы), принципы и подходы к реализации различных функций. Моделирование работы схемы в Electronics Workbench, анализ результатов.
контрольная работа [690,8 K], добавлен 04.04.2016Частотное представление дискретного сигнала, частотные характеристики дискретных систем управления. Применение правила Лопиталя, формулы дискретного преобразования Лапласа, график частотного спектра. Построение частотной характеристики системы.
контрольная работа [85,3 K], добавлен 18.08.2009Надежность современных автоматизированных систем управления технологическими процессами как важная составляющая их качества. Взаимосвязь надежности и иных свойств. Оценка надежности программ и оперативного персонала. Показатели надежности функций.
курсовая работа [313,2 K], добавлен 23.07.2015Система управления технологическими процессами и оборудованием. Многоэмиттерный и полевой транзисторы. Логические элементы. Триггеры, дешифраторы, мультиплексор, регистр, счетчики, делитель частоты и запоминающие устройства. Функциональные узлы.
практическая работа [266,3 K], добавлен 03.03.2009Структурная схема микроконтроллерной системы. Схемы подключения микроконтроллера, цифровых и аналоговых сигналов, линейного дисплея и клавиатуры. Текст главной программы на языке Ассемблера для МК51. Программа ввода и обработки аналоговой информации.
курсовая работа [372,6 K], добавлен 19.12.2013Анализ функционирования установок для исследования режимов работы компонентов с СЭВМ. Разработка схем микропроцессорных устройств и периферийного оборудования ЭВМ для учебного комплекса по интерфейсам ввода-вывода. Функционирование микросхемы КР580ВВ55.
курсовая работа [2,5 M], добавлен 20.05.2011Арифметико-логическое устройство микропроцессора: его структура и составные части, назначение, функции, основные технические характеристики. Организация системы ввода/вывода микро ЭВМ. Реальный режим работы микропроцессора, его значение и описание.
контрольная работа [201,1 K], добавлен 12.02.2014Основные характеристики технологического объекта управления. Выбор средств автоматизации для подсистемы вывода командной информации. Моделирование системы автоматического регулирования в динамическом режиме. Выбор параметров настройки контроллера.
курсовая работа [1,2 M], добавлен 08.03.2014