Системотехническое проектирование



Nbsp;   Лист Разраб.     Изм. Проверил     Н.Контроль    Утв.      № докум. Шило Н.М.  Журавский В.И.    Мониг Г.М.  Дереченник С.С.       Дата ата                Подп.           Лит Листов 73 Лист 4 Д       ПЭ-4     Кафедра ЭВМиС Разработка системы удаленного контроля приборов “АЛКОНТ”. Пояснительная записка БрГТУ.07823 - 12 81 00   Содержание Введение 6 1 Системотехническое проектирование 7 1.1 Выбор языка программирования 7 1.2 Описание платформы TINI 13 2 Разработка алгоритма программы 36 3 Проектирование программных модулей 39 4 Тестирование работоспособности системы 40 5 Расчёт экономических показателей 44 5.1 Введение 44 5.2 Краткая характеристика разрабатываемого программного средства 44 5.3 Расчёт общей трудоёмкости разработки 44 5.4 Определение уточнённой трудоёмкости разработки 46 5.5 Определение эффективного фонда времени 48 5.6 Определение численности разработчиков 48 5.7 Определение заработной платы разработчиков 49 5.8 Определение дополнительной заработной платы 50 5.9 Определение себестоимости 51 5.10 Определение отпускной цены 53 6 Охрана труда и экологическая безопасность 54 7 Энерго– и ресурсобережение 61 Заключение 68 Список использованных источников 69 Приложение А – Текст программы БрГТУ.07823 – 12 12 00

Введение

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

Для миллионов простых людей компьютер является прежде всего источником самых разнообразных развлечений, начиная с прослушивания музыки и просмотра видео и заканчивая различными игровыми приложениями. Что же касается промышленности, многочисленных производств и предприятий, то с наступлением эры компьютеров у человечества появилась отличная возможность частично либо практически полностью исключить участие человека в производственной деятельности. Основные задачи, ранее выполняемые вручную, теперь выполняют компьютеры. Это позволяет экономить значительные человеческие ресурсы. На многочисленных производствах, где ранее требовалось участие не одной сотни человеческих рук, сейчас весь процесс производства автоматизирован и всю работу выполняют несколько компьютеризированных станков. Сейчас невозможно представить медицину, образование, машиностроение и многие другие виды деятельности человека без применения в них самой разнообразной электронной аппаратуры, способной облегчить или даже полностью заменить нелёгкий и кропотливый труд человека.

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

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

1) возможность быстрого получения информации практически с любого места земного шара;

2) так как система не привязана пространственно к исполнительным устройствам и датчикам, следовательно, появляется возможность создания распределенной системы мониторинга и управления;

3) отсутствует необходимость написания специального программного обеспечения  для управления системой можно использовать стандартный Internet–браузер.

Системотехническое проектирование

 

Выбор языка программирования

 

Целью дипломного проекта является разработка программного обеспечения для удаленного контроля приборов “АЛКОНТ”. Важным этапом является выбор языка программирования.

Преимущество языка Java для пользователей Internet и World Wide Wed заключается в появлении безопасных платформено–независимых приложений, которые могут использоваться в любом узле Internet. Программисты, создающие приложения на Java, пишут свой код всего один раз – им не приходится “переносить” свои приложения на все возможные программные и аппаратные платформы[1].

Многие рассматривают Java в первую очередь как средство создания аплетов для World Wide Wed. Термином “аплет” в Java обозначается мини–приложение, работающее внутри Wed–страницы. После того как аплет загружен на компьютер пользователя, он может выполнять определенные задачи и взаимодействовать с пользователем через браузер, не требуя ресурсов Web–сервера. Разумеется, некоторые аплеты могут взаимодействовать с сервером для решения своих внутренних задач.

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

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

Виртуальная машина Java(JVM). Программы на Java транслируются в байт–код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Достоинство подобного способа выполнения программ — в полной независимости байт–кода от операционной системы и оборудования, что позволяет выполнять Java–приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Работа Java c другими платформами изображена на рисунке 1.1.

 

Рисунок 1.1 – Подготовка приложения для работы на разных платформах

 

Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт–кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

– применение технологии трансляции байт–кода в машинный код непосредственно во время работы программы (JIT–технология) с возможностью сохранения версий класса в машинном коде;

– широкое использование платформенно–ориентированного кода (native–код) в стандартных библиотеках;

– аппаратные средства, обеспечивающие ускоренную обработку байт–кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

Многопоточность Java.Организация потоков в среде Java позволяет добиться прироста производительности практически во всех приложениях. Узнайте, как многопоточность становится стандартным средством программирования в среде Java, благодаря технологии Hyper–Threading и возможностям новых многоядерных процессоров Intel®[2].

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

В многопоточной версии проигрывателя один поток предназначался бы для считывания информации, второй – для обработки, а третий – для записи данных в видеобуфер, причем все они выполнялись бы параллельно, а обработка продолжалась бы даже во время чтения с диска – прирост производительности налицо! Можно привести еще много примеров, когда одновременное выполнение нескольких действий приводит к повышению производительности системы. Именно для увеличения производительности и реализована многопоточность в виртуальной машине Java(JVM).

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

Организация многопоточности Java. При запуске любой программы образуется, по крайней мере, один поток. В С/С++ и Java этот поток запускается при вызове метода main(). Для создания дополнительных потоков необходимо их запустить и назначить им определенные функции, после выполнения которых потоки автоматически будут завершены виртуальной машиной. В среде Java для создания потока и назначения им функций есть два способа. Первым из них является наследование от класса Thread (входящего в пакет java.lang) с последующим переопределением метода run() на функцию, которую вы хотите назначить для потока.

Таким образом, происходит наследование от класса Thread с запуском переопределенного метода run(). В среде Java для создания потока и назначения им функций есть два способа. Первым из них является наследование от класса Thread (входящего в пакет java.lang) с последующим переопределением метода run() на функцию, которую вы хотите назначить для потока. Пример кода на рисунке 1.2.

 

Рисунок 1.2 – Описание метода run()

Таким образом, происходит наследование от класса Thread с запуском переопределенного метода run(). Назначенная функция организует цикл, при котором на экран выводится строка, после чего программа останавливается на случайный интервал времени. После 10 итераций цикла на экран выводится слов “DONE!”, а поток завершается, так как функция закончила свое выполнение. Ниже приведен пример функции для создания потока, смотрите рисунок 1.3.

Таким образом, происходит наследование от класса Thread с запуском переопределенного метода run(). Назначенная функция организует цикл, при котором на экран выводится строка, после чего программа останавливается на случайный интервал времени. После 10 итераций цикла на экран выводится слов “DONE!”, а поток завершается, так как функция закончила свое выполнение. Ниже приведен пример функции для создания потока, смотрите рисунок 1.3.

 

Рисунок 1.3– Cоздание потока

 

Второй способ создания потока – использование класса с реализацией интерфейса Runnable (также из пакета java.lang). Этот интерфейс определит метод run(), который будет выполнять основную функцию потока, аналогично описанному выше первому способу.

Реализация многопоточности Java. Многопоточность, которую организуют для повышения производительности, значительно усложняет программный код, особенно если необходимо предусмотреть взаимодействие потоков. Важно разобраться с премудростями организации потоков, так как чем больше ядер в процессорах Intel®, тем больше потоков приходится предусматривать в программном коде. Недостаточная компетенция разработчика при организации многопоточности несомненно приведет к возникновению множества ошибок в программе, поэтому давайте перейдем к рассмотрению решений некоторых возможных сложностей. Ожидание завершения другого потока: предположим, нам нужно обработать целочисленный массив. Это можно делать последовательно, обрабатывая одно значение массива за другим, или, что более продуктивно, параллельно – созданием нескольких потоков, каждому из которых назначена определенная область массива. Допустим, чтобы перейти к следующей стадии обработки, нам необходимо дождаться завершения всех потоков. Для синхронизации взаимодействия потоков используется метод join(). При его задействовании запуск определенного потока произойдет после завершения другого. Таким образом, поток “В” будет ждать завершения потока “А”. При превышении времени ожидания, назначенного в методе join(), поток В займется обработкой других данных, если поток “А” еще не завершен. Итак, мы обсудили самую сложную задачу при организации многопоточности – проблему ожидания завершения потоков. Вернемся к ней позже.

Ожидание доступа к заблокированным объектам: предположим, мы занимаемся разработкой системы бронирования билетов для аэропорта. Чаще всего многопоточность в таких программах организована таким образом, что каждому подключенному к системе пользователю, а также всем кассирам назначены отдельные потоки (организация очень больших систем может отличаться от описанной). Если два пользователя одновременно попытаются забронировать одно и то же место, а в программе эта возможность не предусмотрена, произойдет следующее: один поток обратится к конкретному ресурсу одновременно с другим потоком. В результате оба пользователя решат, что они забронировали себе нужный билет на самолет.

Для того чтобы предотвратить изменение одних и тех же данных разными потоками, необходимо, чтобы один поток заблокировал доступ к ним для другого потока. Тогда при попытке второго потока изменить данные, ему придется ждать, пока первый поток не снимет свою блокировку. В нашем примере второй поток обнаружит, что данное место уже было зарезервировано, и выдаст соответствующее предупреждение пользователю. Ситуация, описанная выше, называется "состоянием гонки” (race condition), и ее последствия могут быть очень пагубными. Вот почему на время выполнения операций с данными одним потоком принято блокировать доступ к этим данным для других потоков.

В среде Java блокировку можно реализовать несколькими способами. Наиболее частым является использование ключевого слова “synchronized”. Метод, содержащий это ключевое слово, может выполняться только одним потоком, а после выполнения метода блокировка снимается.

 Исключительные ситуации в Java. Как мы видим, все исключения имеют общего предка – Throwable. Он имеет два важных подкласса – Exception и Error. Исключения (Exceptions) являются результатом возникших внутри программы проблем, которые в принципе решаемы и предсказуемы. Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует пытаться перехватить в приложении, написанном достаточно рационально (например ошибка OutOfMemoryError происходит в тех случаях, когда JVM не хватает памяти для выполнения программы). Кроме того, у Exception есть важный потомок – RuntimeException (исключение времени выполнения). Этот класс и его потомки представляют собой исключения, которые возникают во время “нормальной работы Java–машины” (примерами таких исключений являются попытки использования нулевых ссылок на объекты, деления на ноль или выход за границы массива).

В Java все исключения делятся на три типа: контролируемые исключения(checked), ошибки (Errors) и исключения времени выполнения (RuntimeExceptions) – последние два типа также объединяют в категорию неконтролируемых (unchecked) исключений. В чем различие? Все очень просто контролируемые исключения представляют собой те ошибки, которые могут быть обработаны в ходе выполнения программы, как вы уже догадались к этому типу относятся все потомки класса Exception (но не RuntimeException). Контролируемые исключения обязательны для обработки в коде программы, они должны быть обработаны либо включением в блок try–catch, либо объявлены в сигнатуре метода.

Неконтролируемые (unchecked) исключения не требуют обязательной обработки, поскольку представляют собой те ситуации, когда ошибка не зависит непосредственно от программиста (например произошёл сбой в аппаратном обеспечении), либо те, когда ошибку обрабатывать не имеет смысла, т.к. проще внести изменения в код – к ним относятся все потомки классов Error и RuntimeException, смотрите рисунок 1.4.

 

Рисунок 1.4 – Иерархия классов исключений

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

Но 100% безопасности не может обеспечить ни один язык программирования, ведь все предусмотреть невозможно. Первые дыры в Java были найдены экспертами по вопросам безопасности из Пристонского университета еще в версии Java 1.0. Можно сказать, что все новые ошибки находятся до сих пор, но от этого не застрахован ни один язык программирования.

Тем не менее, специалисты компании Sun делают все, чтобы своевременно устранить бреши в безопасности JDK. Так, компания опубликовала внутренние спецификации интерпретатора языка Java и привлекла к поиску ошибок независимых специалистов в области безопасного ПО.

Обнаруженные на данный момент ошибки очень немногочисленны.

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

– переполнение стека выполняемой программы, к которому приводили некоторые черви;

– повреждение участков памяти, которые находятся за пределами пространства, выделенного процессу;

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

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

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

В тоже время система безопасности в языке Java намного надежнее технологии ActiveX, поскольку она самостоятельно контролирует приложение с момента его запуска и не позволяет ему причинить ущерб.

 

Описание платформы TINI

 

Тенденция дистанционного управления через интернет. Плата TINI отлично справляется с задачей интеграции медленных однопроводных территориально рассредоточенных структур с такими производительными сетями как Industrial Internet и другими. Управляемые устройства могут настраиваться удаленно только за счет того, что микроконтроллеры, входящие в структуру TINI, напрямую подключаются через браузер к соответствующей Web–странице и не требуют дополнительного компьютера[3].

Сочетание одних технологий с другими – одна из главнейших тенденций современного рынка hi–tech: Персональный компьютер не существует в изоляции и не является чем–то обособленным – его возможности расширяются и дополняются множеством новых приложений. Конвергенция компьютерной отрасли и индустрии бытовой электроники открывает перед пользователями новые, небывалые перспективы: Philips и Intel по–разному видят конвергенцию двух отраслей. Если Крейг Баррет из Intel мыслит компьютер в качестве составной части домашних электронных систем, то топ–менеджеры Philips придерживаются иного мнения. “По мере того как бытовая техника будет умнеть, компьютеры должны постепенно исчезнуть. Не в прямом смысле – просто компьютеры станут “невидимыми”, их функции возьмет на себя бытовая электроника...”

Суть проблемы. До недавнего времени при проектировании систем или устройств, управляемых из Интернета, разработчики сталкивалась с проблемой сопряжения быстродействующих компьютерных сетей и “медленных” сетей с распределенными параметрами, которые используются для связи и сбора информации из систем, встроенных в промышленное или бытовое оборудование. Для таких сетей быстродействие не является основным требованием, а на первый план выходят адаптивность, живучесть и открытость. Под адаптивностью понимают возможность настройки при изменении конфигурации сети. Живучесть предполагает способность выполнять установленные функции в условиях воздействия внешней среды и отказов компонентов системы. Открытость сети означает возможность её модернизации без нарушения функционирования. Наиболее приемлемой по функциональным возможностям и по ценовым характеристикам сетью для объединения встроенных систем является однопроводная сеть MicroLAN, разработанная фирмой Dallas Semiconductor. В качестве интерфейса между двумя типами сетей в этом случае выступает плата TINI (Tiny InterNet Interface), также разработанная специалистами Dallas Semiconductor.

 Что такое TINI. Можно ли, находясь в Москве в режиме реального времени проконтролировать технологический процесс, идущий в Могилеве, или – наоборот? – Очень даже можно! Позволит сделать это небольшая и недорогая плата TINI, разработанная специалистами Dallas Semiconductor, которая может напрямую управляться через соответствующую Web–страницу.

Плата TINI отлично справляется с задачей интеграции медленных однопроводных территориально рассредоточенных структур с такими производительными сетями как Industrial Internet и другими. Управляемые устройства могут настраиваться удаленно только за счет того, что микроконтроллеры, входящие в структуру TINI, напрямую подключаются через браузер к соответствующей Web–странице и не требуют дополнительного компьютера.

Платформа TINI объединяет мощный чипсет и оперативные средства Java, раскрывающие широкие возможности ввода–вывода микроконтроллеров Dallas. Программист, кодируя на Java, получает доступ к управлению вводом/выводом через API, включающем интерфейсы Ethernet, RS–232, I2C, 1–Wire, CAN и параллельную шину. Применяя API, программисты просто описывают необходимые функции и могут не заботиться о сопряжении с периферийной аппаратурой на низком уровне.

TINI может использоваться в промышленном контроле и управлении, измерительных системах, бытовых приборах, образовании и любительском конструировании. Причем, если вначале предполагалось использование в коммерческих и промышленных целях, то сейчас есть много примеров бытовых и любительских устройств, например в журнале Hard and Soft № 7/2001 есть заметка о тостере, выжигающем изображение солнца или тучи, в зависимости от того, какой прогноз погоды был получен TINI, дозвонившейся до местной метеостанции.

TINI представляет собой стандартный 72–контактный SIMM–модуль с размером платы (102,9x31,8)мм. На модуле установлен TINI–чипсет, основой которого является микроконтроллер DS80C390. TINI–чипсет изображен на рисунке 1.5. Этот микроконтроллер имеет следующие особенности:

– набор команд, совместимый с 8051;

– машинный цикл 4 такта;

– 4кБ встроенной SRAM могут использоваться как память программ/данных/стек;

– адресуется до 4МБ внешней памяти ;

– два встроенных CAN 2.0B контроллера;

– два встроенных UART.

 

Рисунок 1.5 – TINI–чипсет

 

Микроконтроллер на плате TINI работает с тактовой частотой 18 МГц. К одному из UART подключена микросхема преобразователей уровней DS232A, благодаря чему TINI имеет RS–232–совместимый порт. Второй последовательный порт микроконтроллера используется для реализации 1–Wire–интерфейса посредством микросхемы DS2480. На плате может быть установлена одна или две микросхемы SRAM с организацией 512кБx8 (в корпусах TSOP–32).

Для обеспечения энергонезависимого хранения данных использован контроллер DS1321, который в случае пропадания основного питания запрещает обращения к памяти и переводит память на питание от 3–х вольтовой литиевой батарейки CR1632, которая тоже установлена на плате.

В качестве часов реального времени применена микросхема DS1315. Она использует ту же литиевую батарейку для резервного питания. Кроме SRAM TINI имеет микросхему FLASH ROM типа AM29F040B объемом 512кБ с возможностью перепрограммирования в системе.

В дополнение ко всему этому на плате установлена микросхема контроллера Ethernet типа SMC91C94, имеющая 100–выводной корпус QFP. Тактируется она от собственного генератора, который имеет отдельный кварцевый резонатор, работающий на частоте 20 МГц. На 72–контактном разъеме TINI в полном объеме присутствуют шины микроконтроллера, что позволяет подключать внешнюю память и различные периферийные устройства.

Плата TINI предназначена для установки в другие устройства, поэтому она не имеет собственного стабилизатора напряжения питания. Вместо этого она требует стабилизированного напряжения питания 5В, ток потребления – не более 250 мА.

Для того, чтобы начать работать с TINI, нужна еще одна плата, которая называется TINI SOCKET (панелька для TINI), смотрите рисунок 1.6. Конструктивно TINI SOCKET представляет собой стандартную плату Eurocard размером (100x160)мм.

 

Рисунок 1.6 – плата TINI SOCET

 

Существуют различные варианты TINI SOCKET. В основном эта плата содержит разъемы: собственно 72–контактную SIMM–панельку для TINI, разъем RJ45 (Ethernet), RJ11 (1–Wire), D–SUB–9 (RS–232), панельку для i–Button и разъем питания. TINI SOCKET вариант Е10 содержит все необходимые разъемы, а также посадочные места для микросхем расширения памяти, сдвоенного UARTa, интерфейса CAN и другие.

На плате собран выпрямитель и импульсный стабилизатор на микросхеме LT1376, который допускает подключение на вход переменного напряжения от 9 до 18В, или постоянного от 9 до 25В.

Дополнительно на плате установлена микросхема EEPROM, подключенная по внутренней 1–Wire–шине. Эта микросхема предназначена для хранения Ethernet MAC–адреса.

Плата имеет возможность расширения, для чего имеются места для установки дополнительных элементов. А это дополнительная 72–контактная SIMM–панелька для расширения памяти (или системы в целом), дополнительная 512кБ FLASH ROM, сдвоенный UART PC16552D плюс микросхемы преобразователей уровней, интерфейс CAN на микросхеме PCA82C250.

 Работа с платформой TINI. Перед разработчиками достаточно часто встает задача удаленного управления разнообразным оборудованием и (или) съёмом показаний измерительных систем или датчиков. Одним из способов решения её может быть использование глобальной сети Интернет. Для облегчения и удешевления процесса разработки интерфейса подключения к сети фирмой Dallas Semiconductor создана платформа TINI. Аббревиатура TINI расшифровывается как Tiny InterNet Interface – очень маленький (крошечный) интерфейс для Интернет, изображена на рисунок 1.7. Аналогичные решения предлагаются и другими производителями, например Atmel, HP, Microchip, Zilog. Можно отметить следующие преимущества TINI:

– мощный чипсет, в основе которого турбо вариант 8051 – самого популярного микроконтроллера;

– поддержка развитого ввода–вывода;

– небольшие размеры;

– доступность как отдельных микросхем чипсета, так и готового модуля (TINI–board), для быстрого начала работы над собственным проектом;

– для создания приложений используется Java – мощный платформо–независимый язык программирования. Возможности чипсета реализуются через дополнительные, специфичные для TINI классы;

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

 

Рисунок 1.7 – плата TINI board

 

Аппаратное обеспечение TINI. Конструктивно TINI board выполнена в виде стандартного 72–контактного SIMM–модуля, на котором расположены:

1) DS80C390, программно совместимый с 8051 микроконтроллер, основные отличия которого:

– 4–тактный машинный цикл:

– 40 МГц максимальная тактовая частота;

– 16/32 битный математический сопроцессор;

– 256 + 4096 Б встроенного ОЗУ;

– возможность адресовать до 4–х МБ внешней памяти;

– 2 встроенных контроллера шины CAN 2.0B ;

– 2 последовательных порта;

– сторожевой таймер.

2) 512 кБ флэш–памяти;

3) 512 кБ или 1 МБ статического ОЗУ;

4) Контроллер энергонезависимой памяти с литиевой батарейкой;

5) Контроллер 10Base–T Ethernet;

6) Драйвер RS–232;

7) 2 интерфейса однопроводной шины 1–Ware;

8) Часы–календарь реального времени.

Схема электрическая структурная приведена в приложении БрГТУ.07823.012 Э1.

Микроконтроллер относится к семейству High Speed микроконтроллеров фирмы Dallas Semiconductor, которые при одинаковой тактовой частоте работают в 2,5 – 3 раза быстрее, чем оригинальный 8051. Частота кварцевого резонатора равна 18,432МГц, внутри микроконтроллера производится удвоение тактовой частоты, то есть он работает на частоте 36,864МГц. Длительность одно–цикловых команд составляет 108,5нс.

Память TINI board разделена на 3 сегмента:

– сегмент кода размером 1МБ;

– сегмент данных размером 2МБ;

– сегмент периферии размером 1МБ.

Если не используются внешние декодирующие схемы, то флэш–память объемом  512 кБ занимает всё адресное пространство сегмента кода. В нём располагаются:

– начальный загрузчик;

– операционная система;

– Java API;

– первая Java программа, запускаемая операционной системой (обычно это slush, оболочка операционной системы, однако вместо нее можно поместить любое приложение, размер которого не превышает 64 кБ).

В адресном пространстве сегмента данных находится ОЗУ. Его объём, в зависимости от модификации TINI board равен 512кБ или 1МБ. В ОЗУ располагается файловая система TINI и так называемая «куча». При отключении основного источника тока, контроллер энергонезависимой памяти подключает микросхемы ОЗУ к литиевой батарейке. Она позволяет сохранить содержимое ОЗУ неизменным в течение 10 лет. Периферийный сегмент используют контроллер Ethernet и часы–календарь реального времени (RTC, Real–Time Clock). В свободное адресное пространство этого сегмента (около 928 кБ) можно добавлять другие периферийные устройства.

TINI поддерживает два интерфейса фирменной однопроводной сети 1–Wire. Один из них реализован на выходе порта ввода–вывода микроконтроллера с открытым истоком, и считается внутренним, другой использует специальную микросхему формирователь сигналов 1–Wire, может работать на большие расстояния, и считается внешним. Эта микросхема (DS2480S) подключается ко второму последовательному порту микроконтроллера. Первый последовательный порт имеет преобразователь уровней (драйвер) RS232. Выводы второго последовательного порта могут использоваться также для организации второго интерфейса CAN, два аппаратных контроллера которого встроены в DS80C390. Системное время и дата поддерживаются микросхемой RTC DS1315, которая для обеспечения энергонезависимости, также подключена к литиевой батарейке. Основные микросхемы чипсета TINI board перечислены в таблице 1.1. В минимальную систему могут входить только три из них – микроконтроллер, ОЗУ и флэш–память.

 

Таблица 1.1 – Чипсет TINI.

Наименование Назначение Производитель Примечание
DS80C390–FNR Микроконтроллер Dallas Semiconductor  
AM29F040B–55EC Флэш–память Advanced Micro–Devices Могут использоваться другие типы и производители.
HY628400ALLT2–55 ОЗУ Hyundai Одна или две микросхемы с организацией 512кБx8, могут использоваться другие типы и производители.
LAN91C96 Контроллер Ethernet Standard MicroSystems Corporation  
PM–1006 Изолирующий трансформатор 10/100BASE–T Premier Magnetics, Inc.  
DS1315EN–5 Часы–календарь реального времени Dallas Semiconductor  
DS1321E Контроллер энерго–независимой памяти Dallas Semiconductor  
DS2433S EEPROM с интерфейсом 1–Wire Dallas Semiconductor     Подключено к внутреннему однопроводному интерфейсу, служит для сохранения сетевых установок.
DS2480S Преобразователь последовательного интерфейса в 1–Wire Dallas Semiconductor Формирователь сигналов.

    Продолжение таблицы 1.1

Наименование Назначение Производитель Примечание
DS2502P–UNW Add–Only ПЗУ с интерфейсом 1–Wire Dallas Semiconductor Подключено к внутреннему однопроводному интерфейсу, содержит идентифицирующую информацию TINI.
DS232AE–N Драйвер RS–232 Dallas Semiconductor  

Программное обеспечение TINI. Второй, может быть даже более важной, составной частью платформы TINI является фирменное программное обеспечение. Для TINI реализованы виртуальная Java–машина и библиотека классов для выполнения базовых операций. Разработчик приложения обращается к библиотеке используя API (Application Programming Interface, интерфейс прикладного программирования). TINI API содержат описания большинства классов из следующих базовых пакетов Java:

– java.lang;
– java.io;
– java.net;
– java.util.

Для реализации специфичных для TINI функций создан пакет com.dalsemi, который содержит следующие субпакеты:

– com.dalsemi.system;
– com.dalsemi.tininet;
– com.dalsemi.shell;
– com.dalsemi.comm;
– com.dalsemi.onewire.

Классы из этого пакета обеспечивают доступ к аппаратному обеспечению TINI, поддержку сетевых протоколов, реализующих TELNET и FTP серверы. Класс com.dalsemi.comm в основном предназначен для реализации связи с TINI при конфигурировании ее через последовательный порт. Для использования последовательных коммуникаций в приложениях предназначен пакет javax.comm фирмы Sun, он также реализован на TINI. Не все классы, определенные в TINI API встроены в среду периода выполнения. Это сделано для экономии места во флэш–памяти. Классы, не включенные в среду периода выполнения, могут быть включены в приложение при его построении. Для доступа к оборудованию на низком уровне или написанию критичных по времени участков программы программист может использовать собственные методы, то есть реализовывать некоторые процедуры на языке ассемблера. Поддержка собственных методов реализована в TINI JVM, а компилятор с ассемблера включен в пакет фирменного программного обеспечения.

В основании среды периода выполнения лежит операционная система. Она состоит из трех основных компонент:

– планировщики процессов и потоков;

– подсистема управления памятью;

– подсистема управления вводом–выводом.

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

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

Подсистема ввода–вывода разделена на два компонента: стек TCP/IP и менеджер ввода–вывода для остальных устройств. Стек TCP/IP обеспечивает большинство возможностей больших систем и поддерживает множество сетевых интерфейсов, включая Ethernet и PPP (Point–to–Point Protocol). Менеджер ввода–вывода предназначен для управления интерфейсами CAN, 1–Wire, параллельной шиной и отдельными выводами портов микроконтроллера.

Начало работы с TINI. Аппаратное обеспечение, необходимое для начала работы с платформой TINI:

1) DSTINI1–512  – соответственно TINI с 512 кБ ОЗУ (или 1 МБ);

2) Кросс–плата, на которой должны быть, как минимум, следующие разъемы: 72–пиновый SIMM–коннектор для установки TINI, DB9F и RJ45 для подключения к последовательному порту RS232 и сети Ethernet соответственно, и разъем для подачи питания на TINI, изображена на рисунке 1.8. Можно использовать DSTINIS–005 (E10 socket board) от Dallas Semiconductor, или изготовить ее самостоятельно, в этом случае необходимо обязательно соединить выводы 12 (выход CE0/ микроконтроллера) и 45 (вход выбора кристалла флэш–памяти) TINI, а также подать +5В на вывод 9 (вход Vpp TINI board).

3) Стабилизированный источник питания с выходным напряжением +5В (+ 5%) и током нагрузки не менее 300 мА.

4) Модемный (“прямой”) кабель RS232.

5) Патч–корд Ethernet 10Base –T.

 

Рисунок 1.8 – Кросс–плата

Описание HTTP протокола. HTTP – это протокол прикладного уровня, разработанный для обмена гипертекстовой информацией в сети Internet[4].

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

Программа–клиент после установления соединения посылает серверу запрос, который содержит следующие поля:

– метод запроса – содержит идентификатор метода обращения к HTTP–серверу. Наиболее распространенными методами являются “GET” и “POST”. Иногда также используются методы “HEAD”, “DELETE”, “PUT”;

– метод “GET” запрашивает информацию о ресурсе, расположенном по заданному URI. Как правило, запрашиваемая информация представляет собой HTML, TXT или другой текстовый файл. Если ресурсу URI для работы необходимы параметры, они должны быть указаны в URI ресурса;

– метод “POST”, как правило, используется для передачи клиентом на сервер данных, которые должны быть обработаны ресурсом, указанным в URI. Метод “POST” передает параметры ресурсу URI в теле сообщения, поэтому при его использовании не требуется соблюдать никаких ограничений на длину передаваемой строки параметров. Ответы на запросы методом POST, как правило, не кэшируются;

– URI – универсальный идентификатор ресурса сервера. URI определяет способ записи (кодирования) адресов различных информационных ресурсов при обращении к ним из страниц WWW.

Версия протокола – версия HTTP–протокола, который клиент предполагает использовать.

Содержание запроса, также могут использоваться заголовки запроса:

1) общий заголовок “General Header” – может использоваться как в запросе, так и в ответе сервера. Он появляется только тогда, когда передается тело сообщения (не пуст параметр “Entity–Body”), т.е. либо когда клиент передает запрос методом “POST” с параметрами, либо когда сервер отвечает передачей сообщения:

– поле “Date», содержит время построения сообщения;

– поле “Pragma”, используется для установки специальных директив участникам соединения.

2) заголовок запроса “Request–Header” появляется только в запросах клиен­тов. Он позволяет клиентам отправлять на сервер дополнительную информацию о себе:

– “Authorization”, содержит информацию для аутентификации пользователя;

– “From”, может содержать Internet–адрес пользователя;

   –“If–Modified–Since”, используется при работе методом “GET”. Если запрашиваемый ресурс не изменялся с момента, указанного в этом параметре, данный ресурс не возвращается, по запросу возвращается только заголовок сообщения ответа и соответствующий код возврата;

– “Referer”, содержит URI предшествующего ресурса;

– “User–Agent”, содержит информацию о программном обеспечении клиента.

Заголовок передаваемого сообщения “Entity–Header”. Содержит информацию о структуре и формате тела запроса, или, если тело сообщения отсутствует, информацию о запрашиваемом ресурсе. Может появляться как в запросе клиента, так и ответе сервера. Включает следующие поля:

– “Allow”, содержит список методов, поддерживаемых ресурсом. Это поле носит исключительно информационный характер;

– “Content–Encoding”, содержит идентификатор типа дополнительной кодировки ресурса (т.е. для использования этого ресурса он должен быть раскодирован указанным алгоритмом);

– “Content–Length”, определяет длину тела сообщения.

– “Content–Type”, содержит тип ресурса и наименование таблицы кодировки представляемых данных (us–ascii, iso8580–l, windows–1251, koi8–r и др., в соответствии со спецификацией MIME);

– “Expires”, содержит дату окончания срока действия ресурса. Это поле, например, может использоваться в механизмах кэширования, как параметр запрета кэширования устаревших ресурсов. Это поле может также информировать пользователя о том, что, например, информация, предоставляемая данным ресурсом, устарела;

– “Last–Modified”, содержит дату и время последнего изменения ресурса.

Каждая строка заголовка заканчивается символами <CRLF>. Если запрос содержит сообщение, оно располагается после пустой строки, которая отделяет заголовки от тела запроса. После получения запроса, сервер обрабатывает его и отправляет результат обработки клиенту. Ответ состоит из следующих частей:

– версия поддерживаемого протокола – идентификатор версии HTTP–протокола, которую поддерживает сервер;

– код обработки запроса или код ошибки;

– заголовки.

Помимо заголовков “General Header” и “Entity–Header”, описанных ранее, в ответе содержится специальный заголовок “Response–Header”, который позволяет передавать дополнительную информацию обработки запроса, которую нельзя поместить в строку статуса и содержит следующие поля:

– “Location”, содержит полный URI ресурса, который отвечает на отправленный запрос. Это поле — своеобразный переключатель, который перенаправляет запрос на другой сервер;

– “Server”, содержит спецификацию программного обеспечения WWW–сервера, отвечающего на запрос;

– “WWW–Authenticate”, содержит параметры аутентификации;

– возвращаемая по запросу информация.

Информация тела сообщений, как клиента, так и сервера должна быть представлена в MIME–формате.

Интерфейс 1–Wire. Однопроводной интерфейс 1–Wire , разработан в конце 90–х годов фирмой Dallas Semiconductor Corporation, представляет собой информационную сеть, использующую для осуществления цифровой связи одну линию данных и один возвратный (или земляной) провод. Таким образом, в качестве среды для передачи информации по однопроводной линии могут быть использованы кабели, содержащие неэкранированную витую пару или обычный телефонный провод[5].

Основой архитектуры 1–Wire–сетей, является топология общей шины, когда каждое из устройств подключено непосредственно к единой магистрали, без каких–либо каскадных соединений или ветвлений. При этом в качестве базовой используется структура сети с одним ведущим (мастером) и многочисленными ведомыми устройствами, смотрите рисунок 1.9.

 

 

Рисунок 1.9 – Схема организации сетей 1–Wire

 

Конфигурация любой 1–Wire–сети может произвольно меняться в процессе ее работы, не создавая помех дальнейшей эксплуатации и работоспособности всей системы в целом, если при этих изменениях соблюдаются основные принципы организации однопроводной шины. Эта возможность достигается благодаря присутствию в протоколе 1–Wire–интерфейса специальной команды поиска ведомых устройств (поиск ПЗУ), которая позволяет быстро определить новых участников информационного обмена. Стандартная скорость отработки такой команды составляет ~75 узлов сети в секунду.

Все однопроводные устройства имеют свой уникальный 64–битный адрес, состоящий из трех частей:

1) код семейства – определяет тип устройства и выполняемые им функции;

2) ID устройства – идентификационный номер, гарантирующий уникальность адреса;

3) CRC – контрольная сумма, обеспечивающая целостность ID устройства и семейства.

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

Мастер генерирует одну из 5 команд:

1) поиск ПЗУ(F0H);

2) чтение ПЗУ(33H);

3) совпадение ПЗУ(55H);

4) пропуск ПЗУ(CCH);

5) условный поиск(ECH).

Стандартная скорость работы 1–Wire–сети – 15,4кбит/сек., выбранная с учетом быстродействия наиболее широко распространенных типов микроконтроллеров, обеспечивает максимальную надежность передачи данных на большие расстояния. Это значение скорости обмена может быть уменьшено до любого возможного значения благодаря введению принудительной задержки между передачей в линию отдельных битов данных. Или увеличено за счет перехода на специальный ускоренный режим обмена (скорость Overdrive – до 125кбит/сек), который допускается для отдельных типов однопроводных компонентов на непротяженной, качественной, не перегруженной другими приборами линии связи.

При реализации однопроводного интерфейса используются стандартные КМОП/ТТЛ логические уровни сигналов, а питание большинства однопроводных компонентов может осуществляться от внешнего источника с рабочим напряжением в диапазоне от 2,8 до 6,0В. Альтернативой применению внешнего питания служит, так называемый, механизм "паразитного" питания, действие которого заключается в использовании каждым из ведомых компонентов 1–Wire–линии электрической энергии импульсов, передаваемых по шине данных, которая аккумулируется специальной, встроенной в прибор емкостью. Кроме того, отдельные компоненты однопроводных сетей могут использовать режим питания по шине данных, когда энергия к приемнику поступает непосредственно от мастера по линии связи, при этом обмен информацией в сети принудительно прекращается.

Фирмой Dallas Semiconductor Corporation выпускаются отдельные виды адаптеров, которые позволяют наделить любой персональный компьютер возможностью обслуживать 1–Wire–сеть в качестве ведущего. К ним относятся адаптеры:

– DS1410E – для параллельного порта;

– DS9097E и DS9097U – для COM–порта;

– DS9490R для – USB–порта.

Часто в качестве ведущего однопроводной шины выступает не компьютер, а простейший универсальный микроконтроллер. Для организации его сопряжения с сетью 1–Wire используются различные программно–аппаратные методы. От простейшего, когда управляющая программа контроллера полностью реализует протокол 1–Wire–интерфейса на одном из своих функциональных двунаправленных выводов, связанных с однопроводной линией, до вариантов, позволяющих высвободить значительные ресурсы контроллера, благодаря использованию специализированных микросхем сопряжения с сетью 1–Wire. Такие микросхемы подключаются к процессору, играющему роль ведущего однопроводной шины, через периферийные узлы ввода–вывода, входящие в состав любого универсального микроконтроллера.

Ведомые однопроводные компоненты, содержащие 1–Wire–интерфейс, выпускаются в двух различных видах. Либо в корпусах MicroCAN, похожих внешне на дисковый металлический аккумулятор, либо в обычных корпусах для монтажа на печатную плату.

Протокол интерфейса 1–Wire обеспечивает возможность работы с множеством устройств, подключенных параллельно к линии данных. Команды интерфейса позволяют определить ID всех приборов, подключенных в данный момент к линии и затем работать с конкретным прибором, переведя остальные в режим ожидания. Управление линией данных и выдачу команд производит ведущее устройство, в качестве которого может использоваться любой микроконтроллер или персональный компьютер. Для обеспечения целостности данных используется вычисление контрольных кодов, а также аппаратный промежуточный буфер в ОЗУ приборов. Данные сначала записываются в этот буфер, затем ведущий проверяет их правильность, и только после этого выдает команду ведомому устройству — скопировать их из буфера в основную память.

Master генерирует следующие сигналы:

– reset;

– запись “0”;

– запись “1”;

– чтение данных.

При переходе шины в активное низкое состояние, Master передает сигнал “reset” за минимальное время 480мкс (48 мкс – при ускоренном режиме). После освобождает шину и переходит в режим приема. Шина переходит в высокое состояние. Устройства ожидают 15–60мкс (2–6мкс) и передают сигнал присутствия в течение 60–240 мкс (8–24 мкс) в то время, когда шина переходит в низкое состояние. Этот процесс называется инициализацией, смотрите рисунок 1.10.

 

Рисунок 1.10 – Временная диаграмма процесса инициализации

 

По спаду линии данных происходит синхронизация мастера и ведомых устройств.

Читаемые и записываемые данные – временные слоты. Все временные слоты Master инициирует минимум за 1 мкс при переходе шины в низкое состояние.

В однопроводной системе значения логического “0” и логической “1” представлены импульсами различной длительности. Это объясняет форму временной диаграммы записи “1”/“0”, необходимых для записи команд или данных в приборы. Продолжительность низкого уровня импульса передачи “1” должна быть короче 15 мкс; для передачи “0” продолжительность низкого уровня импульса должна быть, по крайней мере, 60 мкс, чтобы гарантировать правильность записи в самом плохом случае. В конце активной части каждого временного интервала требуется время восстановления TRec, длительностью минимум 1 мкс, чтобы приготовиться к следующему биту. Временная диаграмма изображена на рисунке 1.11.

 

Рисунок 1.11 – Временная диаграмма записи “0”/“1”

Команды и данные передаются в приборы MicroCan, путем комбинации последовательности циклов записи 0 и записи 1. Для чтения данных, ведущий шины должен генерировать последовательность циклов чтения, чтобы определить начало передачи каждого бита. Используя в качестве стартового условия переход от высокого уровня к низкому, ведомый прибор посылает один бит адресуемой информации. Если бит данных равен 1, прибор не предпринимает никаких действий на шине, оставляя импульс неизменным. Если бит данных равен 0, прибор MicroCan сохраняет низкий уровень на шине данных в течение интервала времени, составляющего 15 мкс, временная диаграмма чтения изображена на рисунке 1.12. В этом временном интервале данные верны для чтения ведущим. Продолжительность низкого уровня импульса, посланного ведущим должна составлять минимум 1 мкс и быть как можно короче, чтобы максимум времени остался для измерения ведущим уровня ответного сигнала. Чтобы компенсировать емкость кабеля однопроводной шины, ведущий должен детектировать состояние шины как можно ближе к 15 мкс после фронта синхронизации.

 

Рисунок 1.12 – Временная диаграмма чтения “0”/“1”

Интерфейс Ethernet. Система Ethernet состоит из трех основных элементов:

1) физическая среда. Переносит сигналы Ethernet между компьютерами;

2) набор общих правил управления доступом. Внедрялся в каждый интерфейс Ethernet, чтобы компьютеры могли получать доступ в сеть;

3) фрейм Ethernet. Состоит из стандартизированного набора битов. Переносит данные по системе.

Каждый, оборудованный Ethernet, компьютер, также известный как станция, работает независимо от всех других станций в сети, т.е. нет никакого центрального контроллера. Все станции присоединялись к Ethernet и были связаны с общедоступной системой передачи сигналов, также названной средой. Сигналы Ethernet передаются последовательно, один бит по общедоступному каналу к каждой подключенной станции. Перед отправкой данных станция сначала “слушает” канал, и, когда он пуст, передает данные в виде фрейма Ethernet или пакета (Точный термин, как определено в стандарте Ethernet – “фрейм”, но термин “пакет” также часто используется)[6].

После каждой передачи фрейма, все станции в сети должны бороться одинаково для следующей возможности передачи фрейма. Это гарантирует, что доступ к сетевому каналу справедлив, и что никакая отдельная станция не может блокировать другие станции. Доступ к каналу определяет medium access control (MAC) механизм, внедренный в интерфейс Ethernet, расположенный в каждой станции. MAC основан на системе, которая называется Carrier Sense Multiple Access with Collision Detection (CSMA/CD), протокол множественного доступа с опросом несущей и разрешением конфликтов.

Функции протокола CSMA/CD напоминают ужин в темной комнате. Каждый за столом должен дождаться тишины чтобы заговорить (Carrier Sense). Как только наступает тишина, каждый имеет равный шанс сказать что–либо (Коллективный доступ). Если два человека начинают говорить в тот же самый момент, они сразу прекращают говорить (Коллизия).

В переводе на Ethernet термины это звучит так: каждый интерфейс должен ждать того, чтобы на канале не было сигнала, тогда интерфейс может начинать передачу. Если какой–либо интерфейс передает сигнал в канал, называют несущей. Перед попыткой передать что–либо все другие интерфейсы должны ждать, пока несущая не прекратится, и этот процесс называют Carrier Sense.

Шансы послать фреймы в сеть у всех интерфейсов Ethernet равны. Никто не получает более высокий приоритет. Это и есть то, что называется Коллективным доступом. С тех пор как сигналы получают конечное время, чтобы путешествовать с одного конца системы Ethernet к другому, первые биты переданного фрейма не достигают всех частей сети одновременно. Поэтому возможно, что два интерфейса обнаружат, что канал пуст и начнут передавать в сеть пакеты одновременно. Это и есть коллизии, передача останавливается и пакеты заново начинают передаваться. Протокол CSMA/CD разработан, чтобы обеспечить равноправный доступ к общедоступному ресурсу. А суть в том, что коллизии являются абсолютно норма чтобы определить, какая станция следующей будет использовать канал Ethernet.

Если одновременно больше чем одна станция передает пакеты в канал Ethernet, то сигналы, как говорят, сталкиваются. Станции “узнают” об этом случае, и переупорядочивают передачу, используя предназначенный специально для этого алгоритм возврата. Как часть этого алгоритма каждая станция выбирает случайный интервал времени, чтобы наметить повторную передачу фрейма, которая препятствует другим станциям делать попытки передачи.

Не очень удачно, что для обозначения такого явления было выбрано слово “коллизия”. Если бы это назвали как–то по другому, например: “стохастическая арбитражная случайность” (SAE), тогда никто бы не волновался о возникновении SAE на Ethernet. Однако, слово “коллизия” подобно чему–то очень плохому, и многие думают, что коллизии – индикация сбоев в сети.

А суть в том, что коллизии являются абсолютно нормальными событиями в Ethernet, и просто указывают, что протокол CSMA/CD функционирует как нужно. Т.к. со временем всё больше компьютеров становится в сети, соответственно увеличивается и уровень трафика, поэтому происходит больше столкновений.

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

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

Повторные столкновения для данной попытки передачи пакета указывают на то, что сеть занята. Расширяющийся процесс возврата, формально известный как  “truncated binary exponential backoff (дословно: обрезанная двойная экспоненциальная задержка)” является свойством Ethernet MAC, который обеспечивает автоматический метод корректировки трафика в сети. Только после того, как произойдут 16 последовательных столкновений для данной попытки передачи, интерфейс наконец начнёт отказываться от пакета Ethernet. Это может случиться, только если канал Ethernet перегружен в течение довольно длительного периода времени, или каким–либо способом нарушен.

Ethernet система, вместе с другими технологиями локальной сети, обеспечивает наилучший способ доставки данных. Чтобы сделать эту технологию более доступной и приблизить стоимость локальной сети к разумному уровню, никакая гарантия надежной поставки данных не сделана. Даже при тщательно спроектированном канале передачи ошибочных битов в LAN ошибки всё ещё будут иметь место.

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

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

Основа системы Ethernet – фрейм Ethernet, который используется для обмена данными между компьютерами. Фрейм состоит из набора битов, организованных из нескольких полей. Эти поля включают адресные поля, изменяющееся поле размера которое может содержать от 46 до 1500Б данных и поле проверки ошибок, которое проверяет целостность битов во фрейме, чтобы удостовериться, что фрейм прибыл неповрежденным.

Первые два поля во фрейме несут 48 битные адреса, которые называются пунктом назначения и пунктом отправки (source & destination addresses). IEEE управляет назначением этих адресов, назначая часть поля адреса. IEEE делает это при помощи 24–х битных идентификаторов, названных "Organizationally Unique Identifiers (OUIs)" (дословно: Организационные Уникальные идентификаторы), так как уникальный идентификатор на 24 бита назначен на каждую организацию, которая желает формировать интерфейсы Ethernet. Организация, в свою очередь, создает адреса на          48 битов, используя назначенный OUI как первые 24 бита адреса. Этот адрес на 48 битов также известен как физический адрес, аппаратный адрес, или MAC адрес.

Уникальный адрес на 48 бит обычно назначается каждому Ethernet интерфейсу при изготовлении. Он значительно упрощает функционирование сети. С одной стороны, предписанные адреса препятствуют Вам управлять адресами для различных групп, использующих сеть. И если Вы когда–либо пробовали заставить различные группы сотрудничать и добровольно повиноваться тому же самому набору правил, то Вы можете представить какое это преимущество.

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

Групповой адрес позволяет одному Ethernet фрейму быть полученным группой станций. Сетевое программное обеспечение может установить Ethernet интерфейс станции для того, чтобы «слушать» определенные групповые адреса. Это позволяет назначить набору станций определенный групповой адрес. Один пакет, посланный групповому адресу, будет получен всеми станциями в той группе.

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

Компьютеры в Ethernet могут посылать данные программы друг другу, используя программное обеспечение протокола высокого уровня, вроде комплекта протоколов TCP/IP, используемого во всемирной сети Internet. Пакеты протокола высокого уровня перемещаются между компьютерами в поле данных Ethernet фреймов. Чтобы передавать данные между компьютерами система протоколов высокого уровня переносит данные прикладной программы и данные о Ethernet системе независимо друг от друга.

Протоколы высокого уровня имеют свою систему адресов, например 32–разрядный адрес, используемый в текущей версии IP. Сетевое программное обеспечение данной станции “знает” о ее 32–разрядном адресе IP и может читать 48 битный адрес Ethernet её сетевого интерфейса, но оно не знает, каковы могут быть адреса других станций в сети. Для того, чтобы сеть работала, должен быть какой–то способ обнаружения адресов других компьютеров в сети. В нескольких протоколах высокого уровня, включая TCP/IP, используется еще один протокол высокого уровня, названный Address Resolution Protocol (ARP) (протокол определения адресов).

Действие протокола определения адресов является прямым. Например, есть станция “A” с IP адресом 192.0.2.1, которая хочет отправить данные по каналу Ethernet к другой станции – “B” с IP адресом 192.0.2.2. Станция “A” посылает пакет широковещательному адресу, содержащему запрос ARP. Запрос ARP в основном говорит, “Существует ли станция на этом канале с IP адресом 192.0.2.2, пожалуйста скажите мне, каков адрес его интерфейса?”

Так как ARP запрос посылают в широковещательном фрейме, то каждый Ethernet интерфейс в сети читает это. И только станция “B” с адресом IP 192.0.2.2, ответит на такой запрос, посылая назад к “A” пакет, содержащий адрес Ethernet станции “B”. Теперь у станции “A” есть Ethernet адрес, к которому нужно отправить данные предназначенные для станции “B”.

Данная система Ethernet может нести несколько различных видов данных протокола высокого уровня. Например, один Ethernet может нести данные между компьютерами в форме протоколов TCP/IP так же как Novell или AppleTalk протоколов. Ethernet – просто система, которая переносит пакеты данных между компьютерами; ей всё равно что в пакетах.

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

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

Понятие “дерева” – только формальное название для систем подобных этой, а типичный дизайн сети фактически заканчивается более сложной конкатенацией сегментов. В сегментах сети, которые используют носители, поддерживающие множественные подключения (например: коаксиал), Вы можете установить повторитель и связаться через него с другим сегментом в любом отрезке данного сегмента. Другие типы сегментов, известные как связные сегменты, могут иметь только одно подключение в каждый конец. Это описано более подробно в индивидуальных главах.

“Non–rooted” (без корневые) означает что сеть может развиваться в любом направлении, т.е. она не завязана на чём–то одном. Наиболее важно то, что сегменты не должны быть закольцованы в противном случае сеть будет работать некорректно.

Рисунок 1.13 показывает несколько сегментов, связанных с помощью повторителей (R) и подключённых к ним станциями. Сигнал, посланный с любой станции, путешествует по сегменту той станции и повторяется во все другие сегменты. Таким образом этот сигнал слышат все станции.


Рисунок 1.13 – Связь сегментов сети

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

Чтобы работать должным образом, все интерфейсы Ethernet должны быть способны к ответу на сигналы друг друга в пределах указанного времени. Синхронизация сигнала основана на времени, которое требуется ему чтобы добраться до конца системы и назад. Это время называют “Round Trip Timing” (Время путешествия туда и обратно). Максимальное Round Trip Timing сигналов на общедоступном канале Ethernet строго ограничено для того, чтобы гарантировать, что каждый интерфейс может слышать все сигналы в пределах указанного времени, обеспеченного в системе управления доступом среды Ethernet.

Чем дольше сегмент, тем больше времени требуется для путешествия сигнала по нему. Цель конфигурации состоит в том, чтобы удостовериться, что Round Trip Timing выполнено, независимо от того какая комбинация сегментов используется в системе. Конфигурирование обеспечивает правила для того, чтобы объединить сегменты с повторителями так, чтобы была достигнута правильная синхронизация сигнала. Если не соблюдены спецификации для индивидуальных длин сегментов и правил конфигурации, то компьютеры не смогут слышать сигналы друг друга.

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

Ethernet был разработан таким образом, чтобы быть легко расширяемым. Для того, чтобы расширять системы Ethernet, существуют устройства, которые обеспечивают множественные порты Ethernet. Эти устройства известны как концентраторы, так как они обеспечивают центральную часть, или концентратор, системы носителей.
Есть два главных вида концентраторов: концентраторы–повторители и коммутирующие концентраторы. Каждый порт концентратора–повторителя связывает индивидуальные сегменты Ethernet вместе, чтобы создать большую сеть, которая работает как одна. Полный набор сегментов и повторителей в LAN должен соответствовать round trip timing спецификации. Второй вид концентратора обеспечивает коммутацию на пакетном уровне, основанную на соединении портов.

Каждый порт коммутирующего концентратора пакета обеспечивает подключение к сети, которая работает как отдельная. В отличие от концентратора–повторителя, чьи индивидуальные порты соединяют сегменты, чтобы создать одну большую сеть, коммутирующий концентратор позволяет делить набор систем носителей Ethernet в множественные LAN, которые связаны вместе посредством пакетной коммутации в концентраторе. Правила Round trip timing для каждой LAN перестают действовать в порту коммутирующего концентратора. Это позволяет Вам связывать большое количество индивидуальных LAN вместе.

Такая сеть может состоять или из просто одного кабельного сегмента, связывающего некоторое количество компьютеров, или из концентратора–повторителя, связывающего несколько таких сегментов вместе. Большие сети могут быть соединены вместе, используя коммутирующие концентраторы пакета, чтобы сформировать ещё большую. В то время как сеть может поддерживать от нескольких компьютеров до десятков, полная система LAN Ethernet, связанная пакетными коммутаторами может поддержать много сотен или тысячи машин.

Формат кадра представлен на рисунке 1.14.

 

Рисунок 1.14 – Формат кадра

Тем не менее, сети на основе Ethernet, фактически, очень быстро вытеснили все ранее использовавшиеся технологии и остаются основой для построения локальных сетей и по сей день. Естественно, что требования к скорости передачи и развитие самой технологии привели к тому, что в настоящее время большинство современных устройств способны производить обмен пакетами на скорости до 1000 Мбит/с (Gigabit Ethernet) по стандарту IEEE 802.3z.

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

 

 


Дата добавления: 2018-02-18; просмотров: 1394; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!