Программное обеспечение управления автоматизированным комплексом многоканальной связи

Разработка программного обеспечения для микропроцессорных систем МК51, интерфейсы в системах связи, основы асинхронной связи. Этапы решения задачи на ЭВМ, принципы тестирования программ и их отладка. Расчет затрат на разработку программного продукта.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 19.06.2010
Размер файла 270,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Введение

Данный дипломный проект выполнен на актуальную для предприятий-производителей устройств связи тему, тесно связанную с реальными планами исследований и производства, решая практическую задачу по разработке и внедрению программного обеспечения управления автоматизированным комплексом многоканальной связи. По своему характеру проект является опытно-конструкторским. Разработанное обеспечение для изделия ТС16Е1 полностью удовлетворяет техническому заданию. По своему содержанию дипломный проект соответствует современному уровню науки и техники.

В процессе решения задачи создания программного продукта детально были рассмотрены особенности разработки программного обеспечения для микропроцессорных систем, устройство и принципы работы микропроцессоров серии МК51 вообще, интерфейсы в системах связи, основы асинхронной последовательной связи, общие методы ввода / вывода через коммуникационный порт и изучен информационный обмен контроллер-ЭВМ с использованием интерфейса RS_232. Подробное описание структуры программы, алгоритмов построения и работы всех трех ее частей дает полное представление о ее создании, использовании и принципах работы.

В технологической части разработки программных систем и программной документации освещены этапы решения задачи на ЭВМ, принципы тестирования программ и их отладка. Целый раздел посвящен вопросам надежности программного обеспечения.

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

1. Специальная часть

1.1 Постановка задачи проекта

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

Е1 Е3, Е4

Рис. 1.1. Структурная схема основных частей комплекса

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

Блок управления обеспечивает передачу данных регистров линейных интерфейсов на внешнюю ПЭВМ. Основной частью блока управления является микроконтроллер АТ89С51. Связь организуется через последовательный порт процессора Р3 по RS_232_му интерфейсу.

Мультиплексор и демультиплексор являются блоками передачи сгруппированного сигнала со скоростью Е3, Е4, работая в режиме дуплекса. На принимающей стороне стоят зеркально такие же демультиплексор и мультиплексор соответственно.

Внешняя ПЭВМ, общаясь через последовательный порт микроконтроллера АТ89С51 с блоком управления, получает необходимую информацию о состоянии работы всех 16_ти линейных интерфейсов, контролируя таким образом весь комплекс удаленно. Для самой ПЭВМ таких комплексов может быть несколько.

Разработанное программное обеспечение позволит контролировать нормальную работу комплекса, взаимодействуя с внешней ПЭВМ по RS_232_му интерфейсу. К данному программному продукту предъявляются следующие требования:

Программное обеспечение для процессора АТ89С51 должно быть разработано в соответствии с общим алгоритмом ПО изделия ТС16Е1;

Использовать ОЗУ данных процессора АТ89С51 для хранения карты памяти состояний части битов регистров CR1, CR2, TSR и PSR 16_ти линейных интерфейсов по заданным адресам в заданном порядке;

Обеспечить своевременное обновление карты памяти состояний части битов регистров CR1, CR2, TSR и PSR всех интерфейсов;

Обеспечить передачу карты памяти состояний оговоренных регистров, взаимодействуя с внешней ПЭВМ, используя интерфейс RS_232, через последовательный порт Р3.

1.2 Особенности разработки программного обеспечения для микропроцессорных систем

В устройствах управления объектами на основе МП аппаратные средства и программное обеспечение существуют в форме неделимого аппаратно-программного комплекса. При проектировании контроллеров приходится решать одну из самых сложных задач разработки, а именно задачу оптимального распределения функций контроллера между аппаратными средствами и программным обеспечением. Решение этой задачи осложняется тем, что взаимосвязь и взаимовлияние аппаратных средств и программного обеспечения в микропроцессорной технике претерпевают динамичные изменения. Если в начале развития МП - техники определяющим было правило, в соответствии с которым аппаратные средства обеспечивают производительность, а программное обеспечение - дешевизну изделия, то в настоящее время это правило нуждается в серьёзной корректировке. Так как МП представляет собой стандартный массовый логический блок, конкретное назначение которого определяет пользователь с помощью программного обеспечения, то с ростом степени интеграции и, следовательно, функционально-логических возможностей МП резко понижается стоимость изделия в пересчёте на выполняемую функцию, что в конечном итоге и обеспечивает достижение высоких технико-экономических показателей изделий на МП. При этом затраты на разработку программного обеспечения изделия в 2 - 10 раз превышают затраты на приобретение и изготовление аппаратных средств.

В настоящее время наибольшее распространение получил методологический приём, при котором весь цикл разработки контроллеров рассматривается как последовательность трёх фаз проектирования:

Анализ задачи и выбора аппаратных средств контроллера;

Разработка прикладного программного обеспечения;

Комплексирование аппаратных средств и программного обеспечения в прототипе контроллера и его отладки.

Фаза разработки программного обеспечения, т.е. Фаза прикладных программ, в свою очередь, разбивается на два существенно различных этапа:

От постановки задачи к исходной программе;

От исходной программы к объектному модулю.

Этап разработки «от исходной программы к объектному модулю» имеет целью получение машинных кодов прикладных программ, работающих в МП. Этот этап разработки прикладного программного обеспечения легко поддаётся формализации и поддержан всей мощью системного программного обеспечения МП, направленного на автоматизацию процесса получения прикладных программ. В состав средств системного программного обеспечения входят трансляторы с различных алгоритмических языков высокого уровня, ассемблеры, редакторы текстов, программы - отладчики, программы - документаторы, и т.д. Наличие всех этих системных средств придаёт инженерной работе на этом этапе проектирования контроллеров характер простого конструирования, без большого объёма творческой инженерной деятельности. Так как на конечном изделии имеются только «голый» МП и средства его сопряжения с объектом, то выполнять отладку разрабатываемого прикладного программного обеспечения на нём невозможно, и, следовательно, разработчик вынужден обращаться к средствам вычислительной техники для выполнения всех формализуемых стадий разработки: трансляции, редактирования, отладки, загрузки объектных кодов в программируемую постоянную память МП. Попутно отметим, что системные средства автоматизации разработки прикладных программ МП на этапе «от исходной программы к объектному модулю» широко распространены и существуют в среде операционных систем микроЭВМ и присутствуют в операционных системах персональных компьютеров как отдельные пакеты инженерных программ.

Совсем по другому выглядит инженерный труд на этапе разработки программного обеспечения «от постановки задачи к исходной программе», так как он практически не поддаётся формализации и, следовательно, не может быть автоматизирован. Проектная работа здесь носит творческий характер, изобилует решениями, имеющими сугубо субъективную окраску, и решениями, продиктованными конъюнктурными соображениями. В силу перечисленных обстоятельств именно на этапе проектирования «от постановки задачи к исходной программе» разработчик сталкивается с наибольшим количеством трудностей.

Качество получаемого прикладного программного обеспечения контроллера всецело зависит от уровня проектных решений, принятых на этапе «от постановки задачи к исходной программе». Уровень проектных решений, в свою очередь, из-за отсутствия теории проектирования программируемых контроллеров определяется только опытом, квалификацией и интуицией разработчика. Однако накопленный опыт убеждает в том, что систематический подход к процессу разработки прикладных программ для контроллеров обеспечивает достижение хороших результатов даже начинающими разработчиками.

1.3 Использование контроллера АТ89С51

На данный момент широко применяются микроконтроллеры серии МК51. Существует обширная техническая документация и что самое главное широкий выбор отладочных средств от эмулятора ПЗУ и отладочного монитора до внутрисхемного эмулятора. Процессоры данной серии достаточно универсальны для успешного применения в микроэлектронике, что позволяет их использовать как при разработке простых систем, так и при создании сложных модулей электронной аппаратуры.

Рассмотрим микроЭВМ серии МК51 более подробно.

1.3.1 Основные программно-доступные устройства микроконтроллера АТ89С51

Основными программно-доступными устройствами микроконтроллера AT89C51 являются:

8_разрядный аккумулятор А;

8_разрядный вспомогательный регистр AВ;

триггеры признаков результата: C, OV, P, отрицательности, нуля;

триггеры выбора банка рабочих регистров RS0 и RS1;

триггер программно-управляемого флага F0;

16_разрядный счетчик команд PC;

16_разрядный регистр указателя данных DPTR;

8_разрядный регистр указателя стека SP;

внутренняя память программ емкостью 4 Kb, расширяемая внешними устройствами до 64 Kb;

внутренняя память данных емкостью 128 байт, в которой размещается от одного до четырех банков рабочих регистров R0_R7, область стека и побитово адресуемая область памяти;

внешняя память данных емкостью до 64 Kb;

два программируемых 16_разрядных таймера-счетчика;

программируемый двунаправленный последовательный порт ввода-вывода и соответствующие устройства управления;

четыре 8_разрядных двунаправленных параллельных порта ввода-вывода;

двухуровневую приоритетную систему прерываний с пятью векторами и двумя уровнями;

последовательный интерфейс;

тактовый генератор.

1.3.2 Структурная схема микроЭВМ серии МК51

Система команд микроЭВМ серии МК51 содержит 111 базовых команд с форматом 1, 2 или 3 байта. Микроконтроллер имеет:

32 РОН;

128 определяемых пользователем программно-управляемых флагов;

набор регистров специальных функций.

РОН и определяемые пользователем программно-управляемые флаги расположены в адресном пространстве внутреннего ОЗУ данных.

Важнейшей и отличительной чертой архитектуры семейства МК51 является то, что АЛУ может наряду с выполнением операций над 8_разрядными типами данных манипулировать одноразрядными данными. Отдельные программно-доступные биты могут быть установлены, сброшены или заменены их дополнением, могут пересылаться, проверяться и использоваться в логических вычислениях. Тогда как поддержка простых типов данных может с первого взгляда показаться шагом назад, это качество делает микроЭВМ семейства МК51 особенно удобным для применений, в которых используются контроллеры. Алгоритмы работы последних по своей сути предполагают наличие входных и выходных булевых переменных, которые сложно реализовывать при помощи стандартных микропроцессоров. Все эти свойства в целом называются булевым процессором семейства МК51. Благодаря такому мощному АЛУ набор инструкций микроЭВМ семейства МК51 одинаково хорошо подходит как для применений управления в реальном масштабе времени, так и для алгоритмов с большим объёмом данных.

Рис. 1.2а. Структурная схема МК51

Рис. 1.2б. Структурная схема МК51

Блок управления предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков микроЭВМ семейства МК51 во всех допустимых режимах её работы. В состав блока управления входят устройство выработки временных интервалов, логика ввода-вывода, регистр команд, регистр управления потреблением, дешифратор команд, ПЛМ и логика управления ЭВМ.

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

Логика ввода-вывода предназначена для приёма и выдачи сигналов, обеспечивающих обмен информацией ОМЭВМ с внешними устройствами через порты ввода-вывода Р0_Р3.

Регистр команд предназначен для записи и хранения 8_разрядного кода операции выполняемой команды, который с помощью дешифратора команд преобразовывается в 24_разрядный код для ПЛМ, с помощью которой вырабатывается набор микроопераций в соответствии с микропрограммой выполнения команды. Регистр команд программно недоступен.

Регистр управления потреблением PCON управляет скоростью передачи последовательного порта SMOD.

Логика управления ЭВМ в зависимости от режима работы МИКРОЭВМ СЕМЕЙСТВА МК51 вырабатывает необходимый набор управляющих сигналов.

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

Регистр аккумулятора и регистр временного хранения - восьмиразрядные регистры, предназначенные для приёма и хранения операндов на время выполнения операций над ними. Программно недоступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр В-восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

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

Регистр состояния программы предназначен для хранения информации о состоянии АЛУ при выполнении программы.

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

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

Счётчик команд предназначен для формирования текущего 16_разрядного адреса внешней памяти данных.

Порты Р0, Р1, Р2, Р3 являются двунаправленными портами ввода-вывода и предназначены для обеспечения обмена информацией микроЭВМ семейства МК51 с внешними устройствами.

Память данных предназначена для приёма, хранения и выдачи информации, используемой в процессе выполнения программы. Память данных, расположенная на кристалле ОМЭВМ, состоит из регистра адреса ОЗУ, дешифратора, ОЗУ и указателя стека.

Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объёмом до 64 Кбайт.

1.3.3 Адресные пространства АТ89С51

В AT89C51 имеются следующие адресные пространства:

Пространство адресов регистров специальных функций, таких как аккумулятор А, вспомогательный регистр AВ, старший и младший регистры указателя данных DPTR, фиксаторы портов ввода-вывода P0_P3, регистр слова состояния программы PSW, регистр указателя стека SP и др. Диапазон адресов регистров специальных функций находится в пределах от 128 до 255. При записи данных по адресу регистра несуществующей специальной функции данные теряются, при считывании из регистра несуществующей специальной функции данные не определенны;

Пространство адресов триггеров специальных функций, таких как триггеры признаков переноса C, переполнения OV, четности P, отрицательности N, нуля Z, триггеры выбора банка рабочих регистров RS0 и RS1; триггер программно-управляемого флага F0 и другие. Все триггеры специальных функций физически размещаются в регистрах специальных функций. Наличие триггеров специальных функций определяется типом микроконтроллера. Диапазон адресов триггеров специальных функций находится в пределах от 128 до 255. Части адресов соответствуют несуществующие триггеры. При записи бита по адресу несуществующего триггера этот бит теряется, при считывании бита из несуществующего триггера его значение неопределенно;

Пространство адресов памяти программ. Диапазон адресов этого пространства находится в пределах от 0 до 65535. Память программ с адресами от 0 до 4096 может реализоваться внутренним запоминающим устройством. В пространстве адресов памяти программ размещаются коды команд и, возможно, данные. Часть адресов пространства памяти программ зарезервирована для точек входа в программу начального запуска и программы обслуживания прерываний. Адрес команды, подлежащей выполнению, хранится в счетчике команд PC. Обращение к данным в памяти команд осуществляется по адресу равному сумме содержимого счетчика команд PC и аккумулятора A или регистра указателя данных DPTR и аккумулятора A;

Пространство адресов внешней памяти данных. Диапазон адресов этого пространства находится в пределах от 0 до 65535. Во внешней памяти данных могут размещаться только данные, обращение к которым осуществляется посредством содержимого рабочего регистра-указателя R0, R1 или регистра указателя данных DPTR;

Пространство прямых адресов внутренней памяти данных. Диапазон адресов этого пространства находится в пределах от 0 до 127. Обращение к данным в пространстве прямых адресов осуществляется посредством второго байта кода команды. Пространство адресов регистров специальных функций является продолжением данного пространства;

Пространство косвенных адресов внутренней памяти данных. Диапазон адресов этого пространства находится в пределах от 0 до 127. Пространство косвенных адресов от 0 до 127 физически совпадает с пространством прямых адресов;

Пространство поразрядных прямых адресов внутренней памяти данных. Диапазон адресов этого пространства находится в пределах от 0 до 127. Данное пространство физически совпадает с пространством прямых адресов ячеек от 32 до 47. Пространство адресов триггеров специальных функций является продолжением пространства поразрядных прямых адресов;

Пространство адресов стека. Диапазон адресов этого пространства находится в пределах от 0 до 127. Данное пространство физически совпадает с пространством косвенных адресов. Произвольный адрес верхушки стека можно установить, например, с помощью команды:

MOV SP, #<адрес>;

Пространство рабочих регистров, которое разделено на 4 банка. Каждый из банков содержит восемь 8_разрядных рабочих регистров R0 - R7. Диапазоны адресов пространства рабочих регистров во внутренней памяти данных следующие:

Для нулевого банка: 0 - 7;

Для первого банка: 8 - 15;

Для второго банка: 16 - 23;

Для третьего банка: 24 - 31.

Выбор текущего банка рабочих регистров определяется содержимым триггеров специальных функций RS0 и RS1:

Банк

Нулевой

0

0

Первый

0

1

Второй

1

0

Третий

1

1

Установить триггеры в требуемое состояние можно, например, посредством команд CLR RS0, CLR RS1, SETB RS0 и SETB RS1. Рабочие регистры R0 и R1 текущего банка могут использоваться при косвенной адресации внутренней и внешней памяти данных.

Адресам памяти текущего банка рабочих регистров R0_R7 в языке ассемблера присвоены символические имена AR0_AR7 соответственно. Распределение памяти ОЗУ процессора АТ89С51 представлено на рисунке 1.3.

Рис. 1.3. Распределение памяти ОЗУ процессора АТ89С51

1.3.4 Характеристики средств языка ассемблера

Средства языка ассемблера обеспечивают модульный способ построения программы. Программный модуль, записанный на языке ассемблера, называется исходным модулем. Результат трансляции исходного модуля - объектный модуль.

Исходная программа представляет собой последовательность предложений языка, сгруппированных в сегменты и оформленных в виде файла. Сегменты исходного модуля содержат описание машинных команд, данных, адресов и служат для генерации абсолютных или перемещаемых сегментов объектного модуля.

В зависимости от устройства памяти и способа адресации данных в этой памяти сегменты исходного модуля делятся на 4 типа:

CODE, который используется для определения команд, данных и адресов в пространстве памяти команд;

XDATA, который используется для определения адресов в пространстве внешней памяти данных;

DATA, который используется для определения прямых адресов в пространстве внутренней памяти данных;

IDATA, который используется для определения косвенных адресов в пространстве внутренней памяти данных;

BIT, который используется для определения прямых побитовых адресов в пространстве внутренней памяти данных.

При описании перемещаемого сегмента ему присваивается имя и тип, а также определяется способ его объединения с одноименными сегментами, описанными в других исходных модулях. Абсолютным сегментам присваивается только тип. Они не могут быть объединены с другими сегментами.

В языке ассемблера имеются средства для организации символических ссылок между различными программными модулями.

Программа в общем случае строится из набора абсолютных и перемещаемых объектных модулей и представляет собой абсолютный объектный модуль.

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

1.4 Интерфейсы в системах связи

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

1.4.1 Классификация интерфейсов

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

Межкрейтовые интерфейсы. В начале 70_х годов фирма Hewlett-Packard разработала восьмибитовое параллельное устройство сопряжения - «Hewlett-Packard Interface Bus» - для связи между измерительными приборами и управляющим компьютером на расстояниях до 20 м. И со скоростью до 1Мбит/с. В 1975 г. HP-IB был приведен IEEE к национальному стандарту США IEEE_488, а в 1987 г. Опубликована его последняя версия: IEEE_488.2. Международная электротехническая комиссия выпустила аналогичный стандарт в ноябре 1976 г. В России этот тип интерфейса стандартизован ГОСТ 26.003-80 «Система интерфейса для измерительных устройств с байт последовательным, бит параллельным обменом информацией» и известен также под названием «приборный интерфейс» и «канал общего пользования». Стандарт IEEE_488 получил широкое распространение и поддерживается почти всеми производителями измерительных приборов. Он даёт возможность объединять до 15 различных приборов в локальную измерительную систему, управляемую компьютером.

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

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

В настоящее время существуют несколько широко используемых интерфейсов: RS_232C/V.28, EIA_232D/V.28, RS_423, -422, - 485. Эти стандарты регламентируют обмен данными в последовательном канале на физическом уровне. Они учитывают особенности линии связи, рекомендуют оптимальные схемы соединения, оптимальные характеристики приёмников и передатчиков. Принципиальное различие перечисленных интерфейсов состоит в используемом типе линий связи. В этом отношении интерфейсы можно разделить на однопроводной, несимметричный, дифференциальный и симметричный дифференциальный.

К стандартам, описывающим однопроводной интерфейс, относятся EIA RS_232C, EIA_232D, аналогичные европейские спецификации CCITT V.24, V28 и рекомендация ISO 2110, а также российские ГОСТ 18145-81, 23675-79.

Первоначально интерес RS_232 был разработан для сопряжения терминалов с модемами. Сейчас этим интерфейсом комплектуется большинство популярных компьютеров для связи с внешними устройствами, в том числе и персональные компьютеры IBM PC. Поскольку ядром любой современной измерительной системы служит компьютер, использование штатного машинного интерфейса - наиболее простой и дешёвый способ организации связи в рассредоточенной системе.

1.4.2 Основы асинхронной последовательной связи

Говоря о передаче данных, мы интересуемся передачей байтов данных от одного устройства к другому, например, от персонального компьютера к модему или к последовательному принтеру. Если мы имеем восемь линий между двумя устройствами, то мы можем назначить каждой линии бит и послать сразу один байт данных. Это будет параллельная передача. Таким образом работает параллельный порт персонального компьютера, кроме того, в дополнение к восьми линиям данных имеются другие сигнальные линии, оказывающие помощь в передаче данных.

С другой стороны, если мы имеем одну линию для передачи сигналов, то необходимо посылать каждый байт данных последовательно, по одному биту. Более того, мы может посылать данные синхронно, таким образом, что каждый байт посылается в ранее определенное время, или асинхронно со скоростью, которую предварительно определять необязательно.

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

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

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

В асинхронной связи изменение условия состояния линии с MARK на SPACE означает начало символа). Это называется стартовым битом. За стартовым битом следует комбинация битов, представляющая символ, и затем бит контроля четности. Наконец, линия переходит в состояние ожидания MARK, которая представляет собой стоповый бит и означает конец текущего символа. Число битов, используемых для представления символа, называется длиной слова и обычно бывает равно семи или восьми. Контрольный бит используется для выполнения элементарной проверки на наличие ошибки.

Рис. 1.4. Представление в асинхронной последовательной связи формата одиночного символа. A_длительность 1 бита; B-MARK или 1; C-SPACE или 0

Как передатчик узнают о длительности каждого бита? Действительно, и передатчик, и приемник должны знать его длительность или детектирование битов будет невозможно. Длительность каждого бита определяется генераторами тактовых импульсов приемника и передатчика. Отметим, однако, что генераторы в приемнике и передатчике должны иметь одну и ту же частоту, но не требуется, чтобы они были синхронизированы. Выбор частоты генератора зависит от скорости передачи в бодах, которая означает число изменений состояния линии каждую секунду. Номинально тактовая частота «16_кратная скорость передачи в бодах» означает, что линия проверяется достаточно часто для надежного распознавания стартового бита.

Существует одно обычное состояние линии, которое иногда используется для привлечения внимания приемника. Нормальным состоянием линии является MARK и начало символа определяется переходом SPACE. Если линия находится в состоянии SPACE в течение периода времени большем, чем время, которое она затратила бы на получение всех битов символа, тогда мы говорим, что наступило состояние BREAK. В кодах ASCII отсутствует представление BREAK - это означает, что линия «умерла» на непродолжительный промежуток времени, который составляет BREAK.

Ранее мы упоминали, что бит контроля четности полезен для обнаружения ошибок. Например, если выбрана проверка на четность, этот бит устанавливается таким образом, что общее число единиц в текущем слове является четным. В приемнике четность вычисляется заново и сравнивается с битом контроля четности. Если они не равны, то приемник сообщает, что имеет место ошибка четности. Главный недостаток обнаружения ошибки посредством проверки на четность заключается в том, что можно только обнаружить ошибки, которые влияют на один единственный бит. Например, битовая комбинация 0100 0001 0, переданная восемью битами с проверкой на четность, может измениться на 0100 01110, однако приемник не обнаружит ошибку, так как проверка на четность выполняется.

В дополнение к квитированию установления связи посредством аппаратных сигналов RTS/CTS, для достижения управления потоком с использованием программного обеспечения применяются специальные управляющие символы ASCII. Управлять потоком необходимо ввиду того, что иногда либо передатчик либо приемник не могут поддерживать скорость передачи и они должны иметь возможность информировать другую сторону о необходимости остановки на время, требуемое для того, чтобы отставшая сторона смогла догнать другую.

Предположим, что приемник имеет буфер для хранения поступающих символов. Как только буфер после заполнения закрывается, приемник может послать символ XOFF передатчику, сигнализируя, что передача должна быть приостановлена. Конечно, передатчик должен понять значение XOFF и прекратить передачу символов. Затем, когда приемник обработает символы и буфер освободится, тогда посылается символ XON, показывающий, что передача может быть продолжена. Эта схема управления потоком широко применяется ввиду ее простоты. Большинство связных программ предоставляют возможность дуплексной связи с управлением потоком, основанном на применении символов XON/XOFF.

1.5 Общие методы ввода / вывода через коммуникационный порт

Существует два общих метода ввода / вывода в любой вычислительной системе: упорядоченный и управляемый прерываниями. Упорядоченность относится к повторяющейся проверке состояния регистра устройства ввода / вывода для инициализации требуемой транзакции. В упорядоченном вводе / выводе программа, запрашивающая символ ввода, многократно считывает состояние регистра в устройстве ввода / вывода до тех пор, пока оно не покажет, что символ доступен для ввода. Когда состояние указывает, что имеется готовый для работы символ, программа считывает его из соответствующего регистра устройства ввода / вывода. Сходная последовательность «ждать, до тех пор пока не готов, затем писать» используется при выведении символов на устройство ввода / вывода. Таким образом, дальнейшее выполнение программы приостанавливается до завершения выполнения операции ввода / вывода.

Большой проблемой для упорядоченного ввода / вывода через коммуникационный порт является то, что при скорости передачи выше 300 бод программе трудно что-либо сделать с получаемым символом кроме как отображать его на экране. Рассмотрим следующий пример. Предположим, что мы читаем символы со скоростью 300 бод и имеем следующие связные параметры: длина слова 7 бит, проверка на четность и один стоповый бит, который вместе со стартовым битом, добавляет до 10 бит на символ. Ожидается получать около 30 символов каждую секунду. После чтения символа программа имеет около 1/30 секунды для выполнения других операций. Чтобы не потерять какие-либо символы в это время следует снова начать упорядочение порта. Что произойдет, когда скорость возрастет до 9600 бод? Временной интервал между символами слишком мал для выведения символа на экран дисплея, не позволяет интерпретировать специальные символы и эмулировать терминал.

В подходе, основанном на управлении прерываниями, программа предоставляет возможность прерываниям устройства ввода / вывода поступать непосредственно на центральный процессор, который продолжает выполнять свою работу, не связываясь с устройством. Когда устройство готово к вводу / выводу, оно сигнализирует об этом центральному процессору посредством аппаратуры. Получив этот сигнал, центральный процессор сохраняет свое текущее состояние и вызывает подпрограмму обслуживания прерываний, адрес которой хранится в таблице векторов прерываний. Эта подпрограмма выполняет операцию ввода / вывода, затем восстанавливает состояние машины и возвращается в прерванную программу. Также стоит учитывать регистр символов, поступающих в коммуникационный порт персонального компьютера. Организовав где-нибудь некоторые ячейки памяти, можно использовать простую подпрограмму обработки прерываний, которая быстро считывает символ из коммуникационного порта и сохраняет его в следующей доступной ячейке памяти в буфере. Символы не будут утеряны в процессе считывания и сохранения символа драйвером прерываний перед поступлением следующего символа. Эта несложная задача достаточно проста для выполнения в короткие временные интервалы между поступающими символами при скорости передачи 9600 бод. Прелесть этого метода заключается в том, что время обработки главной программой символов, хранящихся в буфере, не имеет значения. Конечно, существует риск переполнения буфера, но эта проблема может быть решена простым увеличением его размера. Если этот способ не очень хорош, то для избежания переполнения буфера можно использовать управление потоком с помощью XON/XOFF.

Из этих рассуждений становится очевидно, что управляемая прерываниями буферная связь с использованием управления потоком с помощью XON/XOFF, предпочтительнее упорядоченной связи.

1.5.1 Последовательный порт с точки зрения программиста

Скорость передачи в бодах определяется как 16_битовый делитель тактовой частоты, используемой для последовательного адаптера. Значение делителя вычисляется по формуле

1,843,200

делитель = -------------------------------

16 Х скорость передачи в бодах

Чтобы установить скорость передачи в бодах, Вы должны проделать следующее:

Установить в 1 наиболее значимый бит регистра управления линией.

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

Установить DLAB в 0 для обеспечения нормальной работы универсального асинхронного приемопередатчика.

Применяя этот подход, можно установить любое значение скорости передачи в бодах. Максимально возможной скоростью передачи является 1/16 тактовой частоты, или 115,200 бод. Этот предел вытекает из того, что делитель не может быть меньше единицы.

1.6 Информационный обмен контроллер - ЭВМ с использованием интерфейса RS_232

Для связи МК51 с интерфейсом RS_232 можно использовать самый подходящий для этого вариант - последовательный порт.

Последовательный порт микроЭВМ семейства МК51 может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве универсального асинхронного приемопередатчика с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения. Последовательный порт может принимать очередной байт, даже если уже принятый до этого байт не был прочитан из регистра приёмника. Однако если до окончания приёма, находящийся в регистре приёмника байт не будет прочитан то принятый байт теряется. Программный доступ к регистрам приёмника и передатчика осуществляется обращением к регистру специальных функций SBUF. При записи в SBUF байт загружается в регистр передатчика, а при чтении SBUF байт читается из регистра приёмника.

Приём и выдача байта данных начинается с младшего разряда и заканчивается старшим разрядом. Для разрешения приёма необходимо установить 1 в разряде REN регистра управления SCON.

Последовательный порт может быть запрограммирован на один из четырёх режимов приёма / передачи путём программирования разрядов SM0 и SM1 регистра SCON. Во всех четырёх режимах передача инициируется любой командой, которая использует SBUF в качестве регистра назначения.

Режим 0. В этом режиме информация и передаётся и принимается через внешний вывод входа приёмника. Принимаются или передаются 8 бит данных. Через внешний вывод выхода передатчика выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора.

Режим 1. В этом режиме передаются через TXD или принимаются из RXD 10 бит информации: старт бит, 8 бит данных и стоп-бит. Скорость приёма / передачи - величина переменная и задаётся таймером.

Режим 2. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит может принимать значение 0 или 1, или, например, для повышения достоверности передачи путём контроля по чётности в него может быть помещено значение признака паритета из слова состояния программы. Частота приёма / передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.

Режим 3. Режим 3 совпадает с режимом 2 во всех деталях, за исключением частоты приёма / передачи, которая является величиной переменной и задаётся таймером.

Передача начинается в фазе S1P1 машинного цикла, следующего за ближайшим после ЗАПИСЬ В SBUF переполнением делителя на 16 в цепи сигнала СИНХР Тх. Период сигнала СИНХР Тх определяет время, в течение которого выдаваемый бит присутствует на выходе TxD. Внутренние сигналы микроЭВМ семейства МК51 ПОСЫЛКА, ДАННЫЕ и СДВИГ по функциональному назначению и формированию идентичны во всех режимах. На выход TxD выдается девять бит данных: D0_D7 и TB8. После первого импульса СДВИГ в освободившийся девятый разряд регистра сдвига передатчика заноситься 1. Всего формируется 9 импульсов СДВИГ, в результате чего все биты регистра сдвига передатчика последовательно выдаются на выход TxD. По окончании выдачи всех бит посылки блок управления передачей устанавливает флаг прерывания передатчика TI и снимает сигналы ПОСЫЛКА и ДАННЫЕ.

Приём начинается при обнаружении перехода сигнала на входе RxD из 1 в 0. Для отслеживания такого перехода вход RxD аппаратно опрашивается с частотой f1. Когда переход обнаружен, немедленно сбрасывается счетчик делитель на 16 в цепи сигнала СИНХР Rx, в результате чего происходит совмещение моментов переполнения этого счётчика делителя с границами смены битов принимаемой посылки на входе RxD. Шестнадцать состояний счётчика-делителя делят время, в течение которого каждый бит принимаемой посылки присутствует на входе RxD, на 16 фаз, с 1 по 16 для каждого бита. В фазах 7, 8 и 9 специальное устройство ОМЭВМ, бит-детектор, считывает с входа RxD 3 значения принимаемого бита, по мажоритарному принципу «2 из 3» выбирает из них одно и подаёт его на вход регистра сдвига приёмника. Блок управления приёмом при этом формирует внутренний импульс МИКРОЭВМ СЕМЕЙСТВА МК51 СДВИГ, в результате чего содержимое регистра сдвига приёмника сдвигается на один разряд и принятый бит заносится в регистр сдвига приёмника. После 10 импульса СДВИГ блок управления приёмом загружает биты D0_D7 из регистра сдвига приёмника в SBUF, переписывает 9 разряд регистра сдвига приемника в бит RB8 регистра SCON и устанавливает флаг прерывания приёмника RI в регистре SCON. Сигнал загрузки SBUF, RB8 и установки RI вырабатывается блоком управления приёмом тогда и только тогда, когда в момент генерации последнего импульса СДВИГ выполняются следующие условия: RI=0 и либо SM2=0, либо принятый 9 бит данных равен 0.

Если хотя бы одно из этих условий не выполняется, принятая посылка безвозвратно теряется, а флаг RI не устанавливается. Если оба приведённых условия выполнены, принятый 9 бит данных поступает в RB8, биты D0_D7 записываются в SBUF и устанавливается флаг RI. Независимо от выполнения приведённых выше условий последовательный порт вновь начинает отслеживание перехода сигнала из 1 в 0 на входе RxD. Значение принятого стоп-бита не влияет на SBUF, RB8 или RI.

Обмен между контроллером и ЭВМ производится в режиме полудуплекса, т.е. ЭВМ посылает байт, а контроллер отвечает. С ЭВМ по каналу RS_232 приходит байт с установленным девятым битом, это означает что необходимо начать преобразование входного сигнала. Второй и последующий байты посылаемые ЭВМ приводят к выталкиванию двух оцифрованных значений побайтно, старшими байтами вперёд, т.е. если первое слово обозначить H0L0, а второе H1L1 то они будут переданы так: H0, L0, H1, L1. Затем контроллер передаёт контрольную сумму, которая подсчитывается по формуле: CRC = S + H0 + L0 + H1 + L1. Она служит для контроля за правильностью передачи данных. После передачи контрольной суммы контроллер переходит в исходное состояние в котором он может принимать только байты с девятым битом равным единице.

1.7 Создание программы управления автоматизированным комплексом многоканальной связи

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

Простота алгоритма в реализации необходима для удобства его понимания и облегчения возможности усовершенствования, кроме того нельзя забывать, что чем алгоритм сложнее в реализации, тем вероятнее появление в нем ошибок, чего необходимо избежать. Под быстротой алгоритма понимается способность его к завершению за достаточно малое время, чем это время меньше - тем лучше. Надежность алгоритма требует отсутствие «лишних» решений - решений, которые являются некорректными. Поэтому, при разработке программного обеспечения должны быть соблюдены следующие основные критерии:

Надежность;

Простота реализации;

Точность;

Скорость работы.

1.7.1 Структуры данных

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

1.7.2 Составляющие программы

Программа управления автоматизированным комплексом многоканальной связи состоит из трех частей: основная программа, подпрограмма перезаписи карты памяти части битов внутренних регистров CR1, CR2, TSR и PSR линейных интерфейсов, которая выполняется с приходом прерывания от любого линейного интерфейса и подпрограмма связи с внешней ПЭВМ через последовательный порт, которая выполняется, когда приходит прерывание от последовательного порта.

Система прерываний для микроконтроллера АТ89С51 организована следующим образом. При приходе прерывания от последовательного порта, выполняется специальная подпрограмма обработки этого прерывания. Как она работает. Вначале производится проверка, и если приходит прерывание от передатчика, то сбросить его и выйти. Если нет, то производится проверка полученного байта, если пришёл байт с установленным 9 битом то выполняется инициализация процедуры чтения данных из памяти, затем подсчёт контрольной суммы, передача блока данных на ЭВМ и завершение подпрограммы. Если пришел байт без установленного 9 бита, то если переданы все байты - передаётся контрольная сумма, а если нет - передаётся байт и подсчитывается контрольная сумма.

В начале основной программы происходит назначение векторов прерываний от линейных интерфейсов и последовательного порта. Далее идут два блока инициализации: области памяти ОЗУ данных с 40Н по 7FН и самих линейных интерфейсов. Команды инициализации последних CR2.RESET формируются в соответствии с таблицей адресов линейных интерфейсов и таблицей адресов внутренних регистров линейных интерфейсов.

Регистр

Bit

7

6

5

4

3

2

1

0

LI1

0

0

0

0

0

0

0

0

00Н

LI2

0

0

0

1

0

0

0

0

10H

LI3

0

0

1

0

0

0

0

0

20Н

LI4

0

0

1

1

0

0

0

0

30H

LI5

0

1

0

0

0

0

0

0

40Н

LI6

0

1

0

1

0

0

0

0

50H

LI7

0

1

1

0

0

0

0

0

60H

LI8

0

1

1

1

0

0

0

0

70H

LI9

1

0

0

0

0

0

0

0

80H

LI10

1

0

0

1

0

0

0

0

90H

LI11

1

0

1

0

0

0

0

0

A0H

LI12

1

0

1

1

0

0

0

0

В0Н

LI13

1

1

0

0

0

0

0

0

C0H

LI14

1

1

0

1

0

0

0

0

D0Н

LI15

1

1

1

0

0

0

0

0

E0H

LI16

1

1

1

1

0

0

0

0

F0H

Регистр

Bit

7

6

5

4

3

2

1

0

CR1

0

0

0

0

0

0

0

0

00H

CR2

0

0

0

0

0

0

1

0

02H

CR3

0

0

0

0

0

1

0

0

04H

CR4

0

0

0

0

1

1

1

0

0EH

ICR

0

0

0

0

0

1

1

0

06H

TSR

0

0

0

0

1

0

0

0

08H

PSR

0

0

0

0

1

0

1

0

0AH

ESR

0

0

0

0

1

1

0

0

0CH

Рис. 1.10. Адреса внутренних регистров линейных интерфейсов.

Затем производится запись в ОЗУ данных состояний части битов внутренних регистров линейных интерфейсов. Данные располагаются в заранее оговоренной техническим заданием области памяти 40Н - 7FН в заданном порядке. Распределение памяти ОЗУ данных процессора показано на рисунке 1.11. Нужные биты выбираются из внутренних регистров линейных интерфейсов, таблица которых приведены на рисунке 1.12. Например, для занесения бита AIS в 1_й бит ячейки памяти 40Н, его нужно считать из 2_го бита регистра PSR LI1. Порядок сохраняется для всей карты по возрастанию следующий: PSR, TSR, CR2, CR1.

Линейный интерфейс

Адрес регистра в ОЗУ

Bit

7

6

5

4

3

2

1

0

L1 1

40 Н

DFMO

AIS

LOS

41 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

42 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

43 Н

ES4

ES3

ES2

ES1

L1 2

44 H

DFMO

AIS

LOS

45 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

46 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

47 Н

ES4

ES3

ES2

ES1

L1 3

48 Н

DFMO

AIS

LOS

49 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

4A Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

4B Н

ES4

ES3

ES2

ES1

L1 4

4C Н

DFMO

AIS

LOS

4D Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

4E Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

4F Н

ES4

ES3

ES2

ES1

L1 5

50 Н

DFMO

AIS

LOS

51 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

52 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

53 Н

ES4

ES3

ES2

ES1

L1 6

54 Н

DFMO

AIS

LOS

55 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

56 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

57 Н

ES4

ES3

ES2

ES1

L1 7

58 Н

DFMO

AIS

LOS

59 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

5A Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

5B Н

ES4

ES3

ES2

ES1

L1 8

5C Н

DFMO

AIS

LOS

5D Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

5E Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

5F Н

ES4

ES3

ES2

ES1

L1 9

60 Н

DFMO

AIS

LOS

61 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

62 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

63 Н

ES4

ES3

ES2

ES1

L1 10

64 Н

DFMO

AIS

LOS

65 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

66 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

67 Н

ES4

ES3

ES2

ES1

L1 11

68 Н

DFMO

AIS

LOS

69 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

6A Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

6B Н

ES4

ES3

ES2

ES1

L1 12

6C Н

DFMO

AIS

LOS

6D Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

6E Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

6F Н

ES4

ES3

ES2

ES1

L1 13

70 Н

DFMO

AIS

LOS

71 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

72 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP

EALOOP

73 Н

ES4

ES3

ES2

ES1

L1 14

74 Н

DFMO

AIS

LOS

75 Н

FL

TQRSS

ESOVR

ESUNF

TDFMO

TAIS

TLOS

76 Н

ЕРАТ1

EPAT0

ETAOS

EQZMON

ERLOOP

ELLOOP


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.