100-ZiChip. Механизм работы устройства.

Автор: | 20.08.2013

Вот и подошли мы к самому интересному, так сказать, к самой сути – внутренней организации устройства ZiChip. Боюсь, по начальным статьям (Введение, Сеть) у читателей сложилось мнение что ZiChip – это протокол для создания сети устройств. Это не совсем так. На самом деле ZiChip – это, прежде всего, способ организации обработки входных сигналов МК и формирования выходных сигналов по задаваемым алгоритмам, плюс возможность, при формировании алгоритмов поведения, использовать данные с других устройств в сети.

Не удержусь от слоганов 🙂

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

Внутренняя структура устройства представляет собой некоторые слои-механизмы, посредством которых по входным данным формируются выходные.

Луковица ZiChip:

Подробней:

Устройство ZiChip должно соответствовать следующим требованиям:
— иметь различные варианты входов и выходов (не обязательно для каждого конкретного устройства, имеется в виду возможность как таковая);
— позволять настраивать алгоритмы поведения (реакция на выходах по состоянию входов/состояний);
— настройка алгоритмов должна производится без перепрошивки МК (алгоритмы записываются в EEPROM);
— иметь возможность пользоваться данными сформированными другими устройствами в сети (получение данных);
— иметь возможность пользоваться функционалом других устройств в сети (передача данных).


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

Сначала обычная реализация устройства.
Логика простая и на МК такое реализовать не составит никакого труда – 4 ножки на кнопки и концевики, пару ножек на двигатель – вот и вся схемка. Соответственно и программа на МК будет такой же незамысловатой.
Но если Вам понадобится что либо поменять в логике работы устройства (добавить индикацию, добавить лишний концевик и т.д.), естественно, Вам придется изменить программу и прошить МК заново. Но и это ерунда, пока Вы этим занимаетесь сами. Если для Вас это делали за деньги, то Вы поимеете новые затраты (а если еще и не сможете найти того кто Вам это делал, то новый человек будет делать устройство/программу с нуля). Кроме денег это еще и потерянное время. Но самое худшее Вы обречены на такие действия и в будущем.

Теперь как это должно выглядеть в ZiChip.
Есть какое-то базовое устройство ZiChip, имеющее с десяток цифровых входов, парочку аналоговых, цифровые выхода, выхода управления двигателем и т.д.
Устройство уже прошито. Теперь Вы вешаете на цифровые входа кнопки и концевики, пару выходов запускаете на двигатель. Запускаете программку на ПК и интерактивно все это настраиваете, буквально установкой галочек (при этом, прямо на ходу можно пробовать, как работает все устройство). Понадобился лишний концевик – прицепили его на свободную ножку – добавили лишнюю галочку – все. Закончились цифровые входа (или понадобилась другая периферия, например, управления с пульта, выносные кнопки и т.д.) – в сеть включаем еще одно (второе, третье) устройство и пользуемся его функционалом не ломая логики работы первого устройства.

Вам не нужно разбираться с кодом прошивки, Вам не нужно разбираться с тонкостями работы периферии, Вам нет надобности знать, как работает сеть!


Устройство ZiChip держится на 3 китах:
— Точки доступа, как универсальный механизм взаимодействия периферии/устройств;
— Независимые обработчики входных и формирователи выходных сигналов (работающие автономно и асинхронно);
— Обработчики событий (или «Микропрограммы», или «Действия») –настраиваемые пользователем модули для формирования логики работы устройства.

Точки доступа.
Точки доступа являются связующими (опорными) точками, через которые осуществляется связь различных частей устройства между собой, с модулями формирующими выходные сигналы, модулями получающими данные из вне, с сетью, компьютером — короче любое взаимодействие происходит только через точки доступа и никак иначе. В сети устройство «видится» тоже точками доступа.

Каждое устройство может иметь до 126 точек доступа (зависит от конкретного устройства и его назначения). Физически точка доступа — это ячейка памяти (переменная) в которой хранится информация от (или для) какого-то модуля устройства.
Для большего понимания несколько примеров. Если устройство принимает посылки ИК-пульта, то модуль приема ИК-посылок после принятия очередной посылки — просто сохраняет номер нажатой кнопки на пульте в своей точке доступа. Если устройство формирует, например, ШИМ- сигнал на конкретной ножке, внутренние модули оставляют в точке доступа для ШИМ значения нужного уровня, а модуль вывода уже формирует сигнал на ножке.


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

Формирователи сигнала работают еще проще. С конкретной точки доступа (у каждого формирователя своя точка) берутся данные и на основании этих данных формируется значение на выходе. Опять связка точка_доступа-формирователь-выход – постоянна. Пример: формирователь ШИМ постоянно удерживает на своей ножке МК скважность ШИМ соответствующую значению своей точки доступа.

Обработчики событий.
Действия или Микропрограммы — это своего рода правила реакции (алгоритмы поведения) устройства на различные воздействия. Микропрограммы в качестве аргументов (входных воздействий) берут одну или несколько точек доступа анализируют их и выдают в качестве результата значение для другой (или других) точек доступа.
Пример: Микропрограмма берет точку доступа клавиатуры и по значению в ней (например, нажатие определенной клавиши) изменяет другую точку доступа, например, подключенную к модулю формирования ШИМ. Нажата клавиша — ШИМ увеличивает скважность, нажата другая клавиша — ШИМ уменьшает скважность. В каждом конкретном устройстве будет определенный набор действий.


В следующей статье более подробней рассмотрим протокол общения устройств в сети.

(Visited 468 times, 1 visits today)

100-ZiChip. Механизм работы устройства.: 12 комментариев

  1. zorro

    Чем то похоже на arduino

  2. SVN

    Смогут обработчики сигналов входов, работать с шиной 1-Wire и с аналоговыми сигналами?

  3. ZiB

    @SVN
    Фактически пользователю доступно изменение только логики работы устройства (центральная зона) и подключение периферии. А вот наличие тех или иных модулей в устройстве возложено на авторов устройств 🙁

  4. GetChiper Автор записи

    zorro :

    Чем то похоже на arduino

    Да, похоже. Я даже скажу больше платы ардуино идеально подходят для ZiChip устройств, так как имеют встроенный преобразователь USB-UART и залитый загрузчик. В ардуино можно залить ZiChip прошивку, настроить устройство и работать с ним не имея программатора — все по одному USB-шнурку!
    Но все-же различия есть. Скетчи ардуино это все таки программы и они прошиваются во флеш контроллера, а устройства ZiChip имеют стационарную прошивку (конечно, разные устройства будут иметь свою) а происходит лиш настройка логики поведения готовых модулей прошивки. Все настройки хранятся в EEPROM.

    SVN :

    Смогут обработчики сигналов входов, работать с шиной 1-Wire и с аналоговыми сигналами?

    Они будут работать со всем что будет запрограммировано в каждое конкретное устройство (определенный набор модулей) — ограничений нет. На данный момент с аналоговыми сигналами базовое устройство уже работает — 1-Wire сделаем со временем.

    ZiB :

    @SVN
    Фактически пользователю доступно изменение только логики работы устройства (центральная зона) и подключение периферии. А вот наличие тех или иных модулей в устройстве возложено на авторов устройств :(

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

  5. sliku

    неплохой конструктор должен получиться. есть к этому проекту несколько вопросов:
    1. линейка устройств будет расширяться только стараниями авторов или будет предусмотрен стандартный подход интеграции новых устройств в состав проекта?
    2. удаленный контроль за работой уже готовой системы планируется? и если да, то каким образом? приходят на ум такие вещи как SMS команды, GSM-канал и вебинтерфейс.

  6. GetChiper Автор записи

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

    Очень много внимания было уделено программе настройщику (ZiChip tuner) для того чтобы ее можно было использовать для вновь созданных устройств не переписывая ее. То есть, создали Вы новое устройство и для того чтобы тюнер начал с ним работать не нужно просить Дениса или меня добавить поддержку этого устройства в программу — Вы сами это делаете прописывая Ваше устройства в специальных ini-файлах (делается это просто — везде есть комментарии и пояснения)

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

    Мне, например, (когда эту систему доведу до презентабельного состояния) хочется приделать ей Blutooth модуль типа HC-0Х. Денису больше хочется WiFi. Вот так понемногу система будет расти.

  7. sliku

    мой вопрос возник не на пустом месте.
    у меня есть «любимое» устройство, которое я давно и понемногу «пилю» в свободное время. и недавно задался вопросом выведения части задач на удаленную периферию, плюс появился интерес удаленного контроля.
    сейчас жду Blutooth модуль типа HC-05 для опытов. по WiFi показалось сложно и дорого, что касается Ethernet, не сочтите за рекламу, нашел для старта интересный преобразователь Ethernet — RS232 http://vkmodule.com.ua/Converter/Converter1.html, он позволяет получить виртуальный СОМ порт на компьютере, или вообще собрать RS232 — Ethernet — RS232. кажется мне, что для ZiChip пойдет вообще без переделки (ну разве что найти TTL уровни на плате).
    по первому вопросу: ИМХО проще всего было бы организовать взаимодействия новых устройств с ZiChip сетью через полностью автономные прерывания сетевого обмена и переменные в области памяти часть которых объявлены как переменные для отправки, часть — как получаемые из вне. такие себе виртуальные порты ввода/вывода. подобный подход позволит безболезненно и легко интегрировать большое количество готовых устройств. что Вы по этому поводу думаете? Или я «бегу впереди паровоза»?

  8. ZiB

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

  9. WZV

    Очень мало информации по настройщику ZiChip tuner. Не могу понять, как составлять сценарии.

  10. GetChiper Автор записи

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

  11. kosmogon

    Приветствую. Интересно. Похоже на новый программно аппаратный язык. Присутствие АРМа очень интересно. ZiChip tuner Я наверное бегу впереди паровоза. Хотелось бы глянуть. Но скорее всего еще сыроват и в доработке. И рановато выставлять на всеобщее обозрение. Ждем.
    Будет ли возможность вставлять свои программы как подпрограммы? На каком языке пишется ZiChip tuner? В общем ждем.

  12. GetChiper Автор записи

    Хотя все еще и в работе, но уже можно глянуть.
    Здесь http://zichip.net/

    ZiChip, не является языком программирования (хотя, сходу, глядя на построение алгоритма, он здорово напоминает построение программы на Бейсике). ZiChip — это инструмент настройки ГОТОВОГО устройства под свои нужны, плюс возможность соединять разные устройства в один проект. Соответственно, какой то свой функционал в устройство средствами ZiChip не добавишь.

    Тюнер написан HiAsme — это, фактически, Делфи.

Добавить комментарий