Авторизация


...

Кто на сайте?

Сейчас 119 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 22985
-Материалы : 209

Пользователь сайта продает...

   AV-S2G4B

Пользователь сайта покупает...

Подключение ENC28J60 + PIC к локальной сети ЧАСТЬ III

Автор: Николай Викторов Просмотров: 4310

 

 

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

     Сам по себе UDP протокол , является не надежным , он отправляет сообщения без подтверждения  и что оно дошло до адресата нет ни какой гарантии.  Но это во первых не всегда и нужно , во вторых не требует предварительного соединения , а в третьих можно реализовать обмен программно , как и сделано   в этом устройстве. При получении UDP пакета микроконтроллер в ответ передает  сообщение о не правильном запросе (команда с ошибкой ) или сообщит состояние  порта «D» , при условии правильно указанного пароля , который вводится перед каждой командой . Если пароль введен не правильно от устройства не придет ни какого ответа, т.к. он посчитает этот пакет «ложным».

Протокол описывать нет смысла в интернете достаточно информации , начнем с программное реализации.

   В этом примере реализован UDP server (он отвечает на запросы) . Хочу напомнить , что каждый принятый пакет в конечном итоге располагается в ОЗУ микроконтроллера , начиная с адреса 0200h . При получении пакета от ПК микроконтроллер анализирует что за протокол , если это UDP то переходим к его обработке.

 

alt

 

 

          Не каждый протокол UDP обрабатывается , а только тот , который приходит на определенный порт . Еще иногда говорят: «Программа слушает такой то порт» … Здесь так же , мы будем «слушать» только порт  1422 . Выбрал просто так  , при желании можно поменять на любой другой. Ниже как это реализовано:

 

alt

           Теперь  нам  стало  понятно   что это пакет ,  предназначенный для нас  , но перед тем как его обрабатывать необходимо проверить его на ошибки .Для этого нужно подсчитать контрольную сумму  пакета и в случае совпадения с контрольной суммой указанной в самом пакете переходим к обработке .        ( ПП       call       Prov_paketa ; )  Для начала проверяем пароль , я указал 1234 .(соответственно можно изменить на любой 4-ч значный).

 

alt

 

 

            При любом не правильном значении поднимаем флаг Flag_ch,1 сигнализирующий о не правильности пароля . При выходе из ПП  пакет «сбрасывается»  и дальше не обрабатывается  , ответ на ПК не приходит. Если пароль правильный переходим к анализу  полученной команды. Алгоритм  «расшифровки» команды такой же , только проверяем не все слова,  а всего два знака  в слове выключить и включить проверяем на соответствие вторые знаки , следующий  знак в команде это номер нагрузки  №2.  Вот так выглядит команда на включение 2-й нагрузки -1234 включить №2 , после получения  которой мы формируем один из двух ответов. Если  команда  расшифрована и выполнена , то ПК получит следующий вот такой ответ :

 

alt

 

 

          Можно просто ввести пароль и отправить сообщение (в нашем случае 1234)  , в ответ получим то же такое сообщение , что дает нам возможность проверки состояние  порта.  Если команда  передана не правильно (с ошибкой ) то она не будет выполнена , если  не верно указан пароль получим  ответ :  « Не правильный запрос» . Как формируется сам ответ можно посмотреть в программе , ни чего сложного нет , остановимся на том , как собрать все это в пакет UDP и отправить на ПК.  Вот так выглядит UDP пакет , выделенная область это наш текстовый ответ о состоянии порта.

 

alt

 

 

     Пакет  ограничен 255 байтами  - это достаточно для ответа, (можно увеличить , доработав немного программный код) . Ответ записываем в ОЗУ начиная с адреса 0x022E, по окончании записи для расчета длины пакета считывается адрес последнего записанного знака из регистра FSR0L . На основании полученных данных рассчитываются  количество байт для расчета контрольной суммы, количество байт для отправки , записи длины IP пакета и длины самого UDP пакета.  Данные длины записываются в пакет , рассчитывается контрольная сумма  и отправляем пакет адресату.  При необходимости изменения текстовых сообщений (ответов ) следует учитывать ограничение  - не более 210 знаков . После выполнения команды состояние порта записывается в EEPROM , что дает возможность запоминать состояние включенных / выключенных нагрузок при пропадании питания. При повторении конструкции необходимо указать IP адрес из диапазона вашей сети . По умалчиванию прописан 192.168.1.4

  В следующей статье мы рассмотрим реализацию на asm протокола TCP и будем  управлять этими же нагрузками по WEB интерфейсу  при помощи стандартного браузера.

Ссылки:

Задать вопросы можно на форуме.

Скачать программу, прошивку, проект MPLAB asm.   

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

Случайные статьи....

Prev Next

Блок управления печи с увлажнением

06-04-2011 Александр Милевский

Блок управления печи с увлажнением

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

Мониторинг и удаленное управление оборудованием через Ethernet - NetCo…

11-01-2015 Николай Викторов

Мониторинг и удаленное управление оборудованием через Ethernet - NetComMK RL1

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

CLRF

02-02-2012 Super User

CLRF Очистка регистра f Синтаксис: [label] CLRF f,a Операнды: 0 <= f <= 255 a Е [0,1] Операция: 00h->f 1-> Z Изменяет флаги: Z Код: 0110 101a ffff ffff Описание: Команда обнуляет содержимое выбранного регистра. Значение бита доступа к памяти a обрабатывается стандартным образом (по умолчанию a=1) Слов: 1 Циклов: 1 Пример: ...

Спидометр-одометр + вольтметр

01-10-2011 Super User

Спидометр-одометр + вольтметр

  КОНКУРС  В данной статье представлено устройство, которое установлено в приборную панель автомобиля и отчасти заменяет бортовой компьютер. Начну с  предыстории.Поставил я как-то в машину торпедо от иномарки и понял, что спидометр ужасно не совпадает с реальными показателями скорости. Решено было поставить бортовой...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru