 |
|
|
|
| Автор |
Сообщение |
AndryG Модератор
Зарегистрирован: 24.07.2006 Сообщения: 411 Откуда: Helios-3
|
|
| Вернуться к началу |
|
 |
lexand Знатный посетитель (>20)

Зарегистрирован: 30.11.2006 Сообщения: 24 Откуда: Украина, г. Белая Церковь
|
Добавлено: 01 Дек 2006, 22:44 Заголовок сообщения: |
|
|
Alexx
Кажись вы не правильно представляете себе коллизии.
Разные адреса не спасают. Коллизия это когда одновремено начинают говорить несколько устройств. ИМХО по проводам решать коллизии проще.
Вообще все таки советую почитать о CAN. У меня на сайте гдето в избранном куча ссылок по шине вкл. русскоязычные ресурсы.
Честное слово многие вопросы сами отпадут.
Представлю свои соображения (основываясь на работе шины CAN):
1. Сам CAN-контроллер следит за коллизиями.
2. Адресация устройств такая что замучаетесь дом устройствами обвешивать.
3. максимальная скорость передачи 1 МБит/с мне кажется более чем достаточно.
4. На самом деле опрашивать состояние ВСЕХ датчиков случай очень редкий. В шине CAN (далее просто шине) предусматривается отправка сообщений ВСЕМ, а воспринимает данное сообщение только тот кто его ожидает/может обработать. Для данного случая я ввел (уже на логическом уровне) подписку на сообщения (event message). К примеру ВЫКЛЮЧАТЕЛЬ подписывается у ТАЙМЕРА на событие достижение времени 22:00 и у датчика уличной освещенности, скажем 0,4. При достижение заданного времени и освещенности каждое из устройств отправит сообщение. Все их проигнорируют и только ВЫКЛЮЧАТЕЛЬ зажжет уличный фонарь после 22:00 при освещенности меньше 0,4.
5. За ошибками шины следит сам шинный контроллер.
6. Естественно более круты ошибки ложатся на плечи программера.
Еще пример
Есть регулятор мощности "A1","A2","A3" (далее регулятор). Чего он регулирует и какую мощность роли пока не играет.
Он может принимать команды:
1. Выключить
2. Установить мощность x% за время t
3. Понизить/повысить мощность на x%
4. Запрос статуса
Отсылает
1. Установленный уровень мощности
Есть выключатель "B1", "B2", "B3"
Принимает
1. Запрос статуса
Отсылает
1. Выключить
2. Установить мощность x% за время t
3. Понизить/повысить мощность на x%
4. Текущий статус
Панель сцен освещения "С1", "С2"
Принимает
1. Запрос статуса
2. Выбор сцены
3. Установку сцены
4. Программирование сцены
Отсылает
1. Выключить
2. Установить мощность x% за время t
3. Понизить/повысить мощность на x%
5. Запрос статуса
Теперь как это все работает:
регулятор А1 слушает только выключатель B1 и панель С1.
регулятор А2 слушает только выключатель B2 и панель С1.
регулятор А3 слушает только выключатель B3 и панель С2.
Если я подам команду из B1 включить свет в холле то откликнется только регулятор холла основного освещение
Если я подам команду из B2 включить подсветку полу, то соответственно...
Если я на С1 выберу сцену приглушенный общий свет с подсветкой пола на 40%. То послушаются только A1 и A2.
В шине нет ведущих и ведомых устройств. Если возникает коллизия то решается она достаточно просто стандартным для этого методом - передача сообщения через случайный таймаут. В принципе можно поставить ЛОГИЧЕСКИ ведущее устройство которое сможет опрашивать/настраивать устройства по расписанию - супервизор. Опрос многих устройств определяется либо личным запросом, либо широковещательным broadcast status message (читай на два предложение выше). Сообщение разбиваются по приоритетам из которых высший уровень могут получить критические ошибки (critical errors) или важные события (prior event).
Собственно события отправляют только те кто может это себе позволить:
1. Таймер/часы (по запросу и/или через интервалы)
2. Датчик движение/присутствия (всегда при изменении статуса)
3. термометр/барометр/.... или weathe control station
(по запросу и/или через интервалы)
4. Гипервизор
....
Программирование устройств осуществляется при проэктировании сети. В данном случае только создаются только списки групп соответствия КТО-КОГО-СЛУШАЕТ. Все равно из выключателя вы термометра не сделаете. MICROCHIP с ее простой ICSP очень для этого подходит. |
|
| Вернуться к началу |
|
 |
Krik99 Знатный посетитель (>20)

Зарегистрирован: 15.12.2006 Сообщения: 26 Откуда: Одеская обл. г.Котовск
|
Добавлено: 20 Дек 2006, 17:16 Заголовок сообщения: |
|
|
Давайте придумаем схему возмём за основу ATmega8.Напишем все вместе програму на Си.Какуюта простенькую програму напишем(хотябы без ЖКИ).  |
|
| Вернуться к началу |
|
 |
AndryG Модератор
Зарегистрирован: 24.07.2006 Сообщения: 411 Откуда: Helios-3
|
Добавлено: 20 Дек 2006, 17:38 Заголовок сообщения: |
|
|
lexand
продолжите, пжлст, описание работы для таких сцен...
утром время вставать. включается телек и плавненько громкость поднимаем до опред. уровня ... если нет света или телек накрылся (нет звука от него), то включить мелодию будильника ... можно и не будильник, а звонок дверной.
Вот только не хочу я чтобы вместе с телеком и звонок верещать начинал.
Простой пример, но он, как мне кажется, показывает минус распределенной системы -- нет разделения во времени и доп. событиям.
Krik99
Никто не против .. давайте! Вот только для начала нужно определится с типом и стандартом работы сети, а это задача не из простых. Если будет протокол, то разрабатывать устройства сможет каждый  _________________ AndryG |
|
| Вернуться к началу |
|
 |
lexand Знатный посетитель (>20)

Зарегистрирован: 30.11.2006 Сообщения: 24 Откуда: Украина, г. Белая Церковь
|
Добавлено: 20 Дек 2006, 22:37 Заголовок сообщения: |
|
|
AndryG
Добавляете модуль который взаимодействует с ТВ по ИК, а далее все как и описал...
Если нет света Можно я отвечать не буду?
А в остальном...
Каждое событие есть тригер которое переключает состояние опр. устройства.
Исходя из указаныых требований/событий, одно из них как минимум должно быть переключающим.
Мол если произошло событие A - вкл. телик, если непроизошло - вкл. будильник.
Тоесть события которые разрешают включиться ТВ и будильнику
A1. есть электричество
A2. настало нужное время (сюда все, в т.ч. и проверка по дням недели, выходные празнднечные,...)
Переключающее событие
B1. ТВ исправен (только как вы будете это проверять)
В логике
TV=A1&A2&B1
RING=A1&A2&(!B1) |
|
| Вернуться к началу |
|
 |
AndryG Модератор
Зарегистрирован: 24.07.2006 Сообщения: 411 Откуда: Helios-3
|
Добавлено: 21 Дек 2006, 11:27 Заголовок сообщения: |
|
|
lexand
| Цитата: |
В логике
TV=A1&A2&B1
RING=A1&A2&(!B1)
|
Получается, что конечные устройства должны обладать неким "разумом", дабы понимать подобные штуки... не проще снабдить немного более продвинутым разумом одно устройство, а остальные пусть остаются "туповатыми" - только принимают примитивные команды и исполняют их.
Я уже остановился в выборе - будет один умный блок, который будет управлять остальными. Работать он должен на основе своего сриптового языка. Сейчас задача стоит описать простой и достаточный язык для управления системой.
Krik99
А как вы можете определится с испольняющими устройствами? Откуда мы знаем что коу нужно? Дабы система была гибкая и расширяемая она должна представлять собой конструктор...
представьте себе плоский стол - это основа. На эту основу мы можем ставить различные предметы ... они могут быть разной формы и назначения .. одно условие - одна грань должна быть плоской, дабы не упасть. Так и у нас ... главное определится с формой нашего "стола-фундамента" - сетевым протоколом, дабы потом любое устройство, которое поддерживает этот протокол могло нормально работать в компании с остальными. _________________ AndryG |
|
| Вернуться к началу |
|
 |
Krik99 Знатный посетитель (>20)

Зарегистрирован: 15.12.2006 Сообщения: 26 Откуда: Одеская обл. г.Котовск
|
Добавлено: 21 Дек 2006, 19:02 Заголовок сообщения: |
|
|
А почему надо самим придумывать интерфейс,почему не взять готовый.Например I2C, RS232.Конечно если вас устраевает, то я могу попробывать написать програму для связи по 4 проводам.
1.data out
2.data in
3.test
4.gnd  |
|
| Вернуться к началу |
|
 |
lexand Знатный посетитель (>20)

Зарегистрирован: 30.11.2006 Сообщения: 24 Откуда: Украина, г. Белая Церковь
|
Добавлено: 21 Дек 2006, 22:43 Заголовок сообщения: |
|
|
AndryG
Это не разум а обыкновенная логика - элементарная.
Тем более если в оконечном устройстве будет все равно стоять MCU, то почему бы не возложить на него и эту часть задачи.
Вы судя по всему не читали о CAN. Зря! Физический уровень и сам CAN контроллер уже делают львиную долю работы.
БОЛЬШОЙ плюс распределенной системы в том, что если кирдык будет вашему центральному модулю....
Я не говорю что в моей системе его нет, но функции его смещены в сторону лишь настройки и контроля, в последнюю очередь - управления (как универсальный пульт). Управление/реакция возлагается на отдельные модули (такая модель в большей степени конструктор чем ваша). Целостность системы в конечном итоге зависит разве что от ПРОВОДОВ (в крайнем случае вы получите не связанные между собой, но абсолютно работоспособные сети, к примеру только в кухне и остальном доме).
А без логики Вам все равно ни куда не дется.
И с вашей системой говорить о гибкости. Возьмите даже самый тупой X10/S10. Тот же принцип - только возможности похуже.
Я не отговариваю вас от своего - каждый считает что, то что он выдумал, реализовать проще всего.
В конце концов даже если вы не хотите использовать CAN, вы можете хотябы в целях повышения своего уровня почитать о ней. Тем более что CAN это не только автомобильная шина. Ей еще комплектуются котлы для связи с датчиками температуры (это еще одна из причин моего выбора в пользу этой шины). Мосты CAN-DALI - тоже аргумент.
Хотя может вы выбрали просто простую систему и не хотите гемороя на этапе проектирования, не будет ли ЕГО потом в процессе эксплуатации?
[/b] |
|
| Вернуться к началу |
|
 |
Krik99 Знатный посетитель (>20)

Зарегистрирован: 15.12.2006 Сообщения: 26 Откуда: Одеская обл. г.Котовск
|
Добавлено: 22 Дек 2006, 16:26 Заголовок сообщения: |
|
|
Посмотрите вот на этой странице, различные исходники для разных интерфейсов и для rs232,и другие. http://pinokio3000.narod.ru/sourches/sourches.htm
Но я предлагаю так:
1.По проводу TEST определяеться название устройства.
2.По проводу DATA IN приходят данные в микроконтроллёр с датчиков (бывает 1 или 0)
3.По проводу DATA OUT приходят данные с микроконтроллёра в датчик.
4.Земля.
Возмём на пример.ИК датчик(0x10) и детектор движения(0x20).Сперва если надо передать контроллеру (ктото вошол в дверь), линия работает так передаёться имя устройства(например 0x10) по проводу TEST.После этого по проводу DATA IN приходит лог.0 задержка и через 200мс лог.1.
Через некоторое время срабатывает детектор движения(0x20).Начинаеться передача имени устройства (например 0x20) по проводу TEST. После этого по проводу DATA IN приходит лог.0 задержка и через 200мс лог.1.Аналогично и с силовыми устройствами, только немного иначе.Идёт передача имени устройства только на этот рас передаёт сам главный блок.И данные передаёт по проводу DATA OUT и устанавливаеться лог.0 (или лог.1).  |
|
| Вернуться к началу |
|
 |
lexand Знатный посетитель (>20)

Зарегистрирован: 30.11.2006 Сообщения: 24 Откуда: Украина, г. Белая Церковь
|
Добавлено: 22 Дек 2006, 22:59 Заголовок сообщения: |
|
|
Продолжим...
FireWire (iLink) CAN, USB, Ethernet, LONWorks, EIB, PCI-Express, SATA,....
Знаете что общего между этими шинами?
Они все дифференциальные.
Krik99
К чему такое вступление?
А каким образом вы будете устранять помехи на своей шине. При сравнительно большой длине проводников?
На счет цены...
один MCU в пределах до 50 грн - как для меня это не дорого, учитывая то что я получу в замен (рассматриваю MCU Microchip), Больше то на плате практически ничего не быдет, а в процентном соотношении все остальное - НОЛЬ.
Язык - можно взять BASIC - он легче интерпретируется. В сети думаю можно нарыть кучу инфы по интерпретаторам (сам посматривал в эту в сторону). У меня есть книга по С где четко описывается теория интерпретаторов.
Можно обратить внимание на BASICStamp (помоему так называется - на сайте http://www.parallax.com/index.asp)
Кстати я еще в начале сказал о самопрограммировании (и ICSP в версии Microchip).
P.S.
Я не меньший любитель чем ВЫ, просто надоело делать то что тебе рано или поздно начнет раздражать - лучше сразу делать хорошо или не браться за это вообще...
P.P.S.
ИМХО |
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы можете просматривать вложения в этом форуме
|
|