Добрый Самурай

Протокол Орион Болид

102 сообщения в этой теме

КЭС    911

какой микроконтроллер применен в пульте?

PIC18F6720 -в С2000М

Кстати, еще раз спасибо за таблицу CRC!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
nekto    1

При получении ответа от прибора (будь то ответ о сбросе или счетчик команд) пульт посылает прибору рандомный байт шифрования и они переходят на общение по старшему биту.

[ADDR][06h][00h][11h][RAND][RAND][CRC8] - пульт назначает байт шифрования

[ADDR][05h][12h][RAND][RAND][CRC8] - прибор принимает и подтверждает

[ADDR+80h][06h][RAND xor XXX][???][XXX][ANY][CRC8] - закодированная посылка, где XXX - некое число. В кодировании посылки участвует RAND

[ADDR+80h][05h][???][???][XXX][CRC8] - ответ на запрос, где XXX - проверочное число из запроса.

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

Изменено пользователем nekto

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ребята!

Есть у кого-то какое-нибудь описание протокола прибора Сигнал-10?

Начинаю разбираться, не хотелось бы делать все с нуля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ferrum    14

Не, с 10кой не заморачивался. А что нужно от протокола? Управление ШС и реле везде аналогично если че

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

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

СП-1.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

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

СП-1.rar

Приветствую, какие изменения/новшества в программе , да и что она вообще делает/должна делать )) описание есть?

Судя по "описанию" - не совсем понятно, что вы хотите сваять... Есть цель? Эмулятор? Или что-то еще?

Изменено пользователем nekto

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

Да, это эмулятор С2000 СП-1. Об изменениях: основное-это таблица CRC, любезно тобой, nekto, предоставленная. За что не поленюсь еще раз "спасибку" нажать. :) При этом я не отказался от обработки принятых посылок посредством операции "XOR", что видно в окне при принятии команд от контроллера С2000. Программа может как только слушать запросы и ответы, если выбран адрес существующего прибора, так и эмулировать СП1, о чем я написал в сопроводительном текстовике. Во избежание обвинений в вирусописательстве приложил исходник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
nekto    1

Программа может как только слушать запросы и ответы, если выбран адрес существующего прибора, так и эмулировать СП1

Для "слушанья" существуют сниферы портов, не изобретайте велосипед. Я делал генератор команд - на ночь оставлял, утром смотрел на какие команды реагирует прибор, а какие отбрасывает.

Эмулятор СП1 интересен лишь в обработке реакций пульта С2000 посредством ПК. Если вы двигаетесь в этом направлении, то лучше уж делать эмулятор С2000-КДЛ, в котором можно 127 зон интерпретировать как реле С2000-СП2. Понимаю, что это сложнее, но и полезнее получить 127 реле на одном адресе, чем 4 реле (в СП1). Ну а потом можно и расширить мощь эмулятора, добавив обработку АУ (С2000-АР1) и ТМ-коды ключей доступа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

Про С2000-КДЛ не знал, да и вообще с болидом познакомился "по нужде": на работе с чьей-то легкой руки сделали сигнализацию (не охранную, а так, сборная солянка с сухих контактов разного оборудования) на куче "эспэшек", я в свою очередь, их сухие контакты вывел посредством PIC+ИД3 на компьютер, чем и довольствовались до недавнего времени. На сегодняшний день мной уже написан эмулятор этой кучи "эспэшек" (одновременно являющийся сервером для передачи инфы клиентам), все работает, пробовал перезапускать контроллер С2000 - обмен возобновляется (чего не было в предыдущем эмуляторе). Выкладывать его не вижу смысла. Заеду на вахту, если все ОК-освобожу стену от этих коробок.

Для "слушанья" существуют сниферы портов,

Да, но что в них видно?-набор цифр. В предложенной мной прожке показываются пакеты, прошедшие проверку CRC, что облегчает понимание, имхо. Программа является "сухим остатком" от рабочего эмулятора и выложена с просьбой проверить ее в действии, у кого есть такая возможность, чтобы понять правильность выбора направления мысли :)

Изменено пользователем КЭС

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
loom    0

Всем здравствуйте!

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

Хочу поделиться и своей недавней находкой. У Болид есть продукт Модуль управления ИСО «Орион». Он содержит немного документации и исходников, которые могут быть полезны. Хотя бы в плане кодов некоторых команд, ответов и инициатив, и описания их полей.

Если ещё не обращали внимания - рекомендую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброго времени суток!

Внесу свои 5 копеек, по поводу обмена пульта с прибором. (Ориона в наличии нет, поэтому об обмене там ничего не скажу).

Как написал выше уважаемый nekto, после получении ответа от прибора пульт посылает прибору байт шифрования.

Прибор подтверждает его, и они переходят на общение с адресами [ADDR+80h].

[ADDR][06h][00h][11h][RAND][RAND][CRC8] - пульт назначает байт шифрования

[ADDR][05h][12h][RAND][RAND][CRC8] - прибор принимает и подтверждает

Далее в каждой команде пульт генерирует новый байт, назовем его KEY и общение происходит так(имхо):

[ADDR+80h][06h][RAND xor KEY][b1 xor KEY][b2 xor KEY][b3 xor KEY][CRC8] - запрос пульта, здесь KEY- сгенерированный ключ, B1, B2, B3 - байты самой команды

[ADDR+80h][05h][(B1+1) xor KEY][b2 xor KEY][b3 xor KEY][CRC8] - ответ прибора .

Надеюсь понятно написал.

Но как здесь писали ранее управлять приборами можно и без шифрования.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Немного некорректно написал про ответ прибора

[ADDR+80h][05h][(B1+1) xor KEY][b2 xor KEY][b3 xor KEY][CRC8] - ответ прибора .

Это частный случай ответа на постановку/снятие, включение/выключение.

Ответ может быть любой длины.

[ADDR+80h][05h][b4 xor KEY][b5 xor KEY][b6 xor KEY][CRC8] - ответ прибора, B4, B5, B6 байты ответа.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
iGraphicsS    0

Привожу листинг между С2000М и С2000-4.

01 06 00 01 00 F9 FC начало опроса

01 0B 0C 03 0E 00 00 02 00 01 00 3E

02 06 00 01 00 F9 B1

03 06 00 01 00 F9 86

04 06 00 01 00 F9 03

05 06 00 01 00 F9 34

06 06 00 01 00 F9 6D

07 06 00 01 00 F9 5A

08 06 00 01 00 F9 7E

09 06 00 01 00 F9 49

0A 06 00 01 00 F9 10 нашелся прибор с адресом 10

0A 05 02 01 00 B7

0A 06 00 11 5C 5C F0 переход на шифрацию из поста выше

0A 05 12 5C 5C 7B

8A 06 9F C2 C3 3A FF

8A 05 C1 C1 C3 57

8A 06 F3 B8 AF AC 23

8A 05 A5 AB AF 17

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

П. С. Хочу сделать извещатель для с2000-м по интерфейсу 485 и протоколу орион(про). К стате, в чем принципиальная разница их версий?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как написал выше KEY генерируется пультом при каждом запросе (после перехода на шифрование)

В Вашем случае:

0A 06 00 11 5C 5C F0 переход на шифрацию из поста выше

0A 05 12 5C 5C 7B

байт шифрования 5С

8A 06 9F C2 C3 3A FF

8A 05 C1 C1 C3 57

KEY = C3 (9F xor 5C)

получаем команду

8A 06 9F 01 00 А9 [CRC] - команда пульта (опрос прибора)

8A 05 02 02 00 [CRC] - ответ прибора

далее аналогично:

KEY = AF

8A 06 F3 17 0 03 [CRC] - команда пульта (сброс тревог насколько помню)

8A 05 0A 04 0 17 [CRC] - ответ прибора непонятен, должен быть 0x18 вместо 0x0А

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
iGraphicsS    0

А может ли прибор не переходить на шифрацию (ТО есть с200м работает например сигналом20П без перехода на шифрацию)? Например не отвечать на команду "переход на шифрацию"?

Алгоритм понятен, но всё равно, как то не охота с ним заморачиваться. Да и памяти контроллера и времени для ещё дополнительных 100-200 строчек жалко, итак под CRC (огромное спасибо) выделено предостаточно.

Изменено пользователем iGraphicsS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

iGraphicsS, вы хотите сделать прибор, повторяющий один из кучи заводских, я правильно понял? Зачем?

Если надо на компьютер вывести, могу поделиться опытом эмулирования С2000-СП1. Кстати сказать, одна из попыток в #55-провальная, что выяснилось совсем недавно, когда мне в руки попал другой экземпляр контроллера. После "разбора полетов" стало ясно, что вся концепция ни к черту (а ведь работало, зараза!). Путь Michael_16ru оказался верным (за что ему огромное спасибо!), с одним замечанием: в посылках поиска клиента содержится байт (предпоследний), который я для себя назвал "ID",(он-то и оказался другим со сменой контроллера).

Если кому-то поможет, выкладываю очередную "поделку": это такой инструмент для разбора общения С2000 с С2000-СП1, с другими девайсами не проверял-нет необходимости.

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

Болид.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
iGraphicsS    0

Да, мне нужно устройство, повторяющее "Сигнал-20П". Концепция состоит из 2-х микроконтроллеров, общающихся между собой , то есть один контроллер, который и есть сам "оповещатель", является "эмуляций" памяти 24CXX, которую читает второй контроллер. Это уже готово и работает, осталось подружить второй МК с "Орионом". Выбор Сигнала 20 выпал, потому что в его командах и ответах заложено 20 шлейфов, что более чем достаточно. Второй МК по сути будет являться переходником от шины между МК и RS-485. Думаю достаточно кратко и ясно объяснил.

Вопрос "Зачем мне это надо" я оставлю открытым. (прям как с "Сколково". Построим, не говорим что там делают, пусть бояться)

Про ID могу сказать следующее, это нужно для того, чтобы злоумышленник не подменил просто напросто пульт (например 2000М).

Вот листинг между Сигнал20 и uprog. Красным выделил байт, который постоянно меняется, при каждом новой опросе. Что это может быть, и для чего может быть использован компом? И почему комп 2 раза подряд выдает запрос и не ждет ответа между ними?

По поводу вашей программы из 55 поста. Я не умею (не хочу пока), программировать на ПК, это делают другие люди. Ваша программа, как я понял, нечто похожее на монитор COM порта, с дешифрацией данных + когда запускаей через RS232 - RS485 орион, монитор начинает видеть, что ваша программа откликается. То есть ПК становиться прибором "Болид"?

Новую попробую, но уже не сегодня. Спасибо.

Запрос

7F 06 00 01 00 00 8B

01 06 00 01 00 00 00

Ответ

01 05 04 03 10 1A

Запрос

01 06 00 03 00 01 11

01 06 00 0D 00 00 BB

Ответ

01 06 00 02 CD 00 D9

Запрос(Повторный)

01 06 00 01 00 00 00 .

Ответ

01 05 04 03 13 F8 ;уже другие циферки

Запрос

01 06 00 03 00 01 11

01 06 00 0D 00 00 BB

Ответ

01 06 00 02 CD 00 D9 ;здесь всё по прежнему

Изменено пользователем iGraphicsS

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iGraphicsS, разобраться с запросами было бы легче, если Вы привязали команды из uprog к ответам прибора.

Могу предположить что выделенные Вами цветом ответы - это сообщения прибора на тревогу 16 шлейфа (первое выделение)

и 19 шлейфа.

При первом ответе на опрос прибора

прибор сообщает тип прибора, версию.

в дальнейщем диалоге на команду опрос прибора - 0x01

Прибор отвечает 0x02 (если ничего не изменилось в состоянии)

если произошли изменения прибор отвечает 0x04 далее сообщение что произошло ( у Вас это 0x03 - тревога проникновения) и для этого сообщения номер шлейфа.

соответсвенно для других сообщений параметры другие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
iGraphicsS    0

Это ответ прибора на поиск приборов через Uprog. При каждом новом поиске это число инкрементируется... Вот в чем вопрос был. Ну да ладно. Буду значит в "ручном режиме" при помощь стопки А4 и ручки разгадывать, чего очень не хотелось.

За основные тезисы огромное спасибо!!!, сэкономил кучу времени. Осталось дело за малым, ну или как сказать. После нового года приведу то что получилось, может кто ещё дополнит. Просто мне именно реле вообще не интересуют, а передачу состояний шлейфов не сильно интересно. Надо именно "глубокие" алгоритмы, чтобы через болидовское ПО можно было настроить устройство, и в составе системы работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ZOBUS    0

Если ещё актуально:

сегодня написал OPC для Сигнал20 при помощи U-CON(User-Configurable) Driver, всё прекрасно работает (тянет и в InTouch, и в Cimplicity), если кому интересно вышлю на почту бесплатно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Virtuoso    0

Здравствуйте. Если кто жив ещё, прошу помочь с вопросами.

Слушаю опрос UProg-а,и при нахождении прибора не все пакеты и не всё в них ясно.

1) По поиску С2000-СП1 отвечает "12, 203, 0, 2, 192, 0, 0, 1, 1, 0" (это только тело), а С2000-2 - "12, 203, 0, 22, 47, 21, 5, 8, 14".

В обоих пакетах что такое "12, 203"? И в СП1 что такое "2, 192, 0, 0, 1, 1, 0"?

2) Затем, когда спрашивается версия, UProg шлёт пакет "адр, 6, 0, 0, 0, вродеCRC".

Так вот непонятно, во-первых, зачем этот пакет... но это ладно. А во-вторых, Где здесь, как он говорит, 6 байт? и как вычислить CRC, если это он? С помощью той же техники, что и при вычислении в остальных пакетах, описанной выше в теме, не получается у меня никакими подгонами под ответ)

3) СП1 на это отечает "0, 3, 156, 0", а С2000-2 "0, 16, 121, 0". 3й байт - версия. Я так предполагаю, 2-й - тип прибора? Если это так, у кого-нибудь есть коды всех приборов?

И на всякий случай, не подскажете как таки прописать в С2000-2 дату/время? При программировании не меняется...

Изменено пользователем Virtuoso

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
AURodionov    0

Живые есть, результатов нет.

Сам копаюсь с кдл ,пока не удалось даже взять шлейф .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

у кого-нибудь есть коды всех приборов?

Вот то, что я определил опытным путем, подставляя в ответ UProg-у:

; 0- C2000, 1- Сигнал-20, 2- Сигнал-20П 3- С2000-СП1, 4- С2000-4, 5- пусто (резерв?), 6- пусто (резерв?), 7- С2000-К

; 8- С2000-ИТ, 9- С2000-КДЛ, 10- С2000-БИ, 11- Сигнал-20 сер.02, 12- пусто (резерв?), 13- С2000-КС, 14- С2000-АСПТ, 15- С2000-КПБ

; 16- С2000-2, 17- пусто (резерв?), 18- пусто (резерв?), 19- УО-Орион, 20- Рупор, 21- пусто (резерв?), 22- С2000-ПТ, 23- пусто (резерв?)

; 24- УО-4С, 25- Поток-3Н, 26- Сигнал-20М, 27- пусто (резерв?), 28- С2000-БИ исп.01, 29- С2000-Ethernet, 30- Рупор исп.01, 31- С2000-ADEM

; 32- пусто (резерв?), 33- РИП-12 RS, 34- Сигнал-10, 35- пусто (резерв?), 36- С2000-ПП, 37- УО-4К, 38- РИП-12 RS 2А 7АЧ, 39- РИП-24-7П1-Р-RS

; 40- пусто (резерв?), 41- С2000-КДЛ-2И, 42- пусто (резерв?), 43- пусто (резерв?), 44- С2000-БКИ, 45- пусто (резерв?), 46- пусто (резерв?), 47- пусто (резерв?)

; 48- пусто (резерв?), 49- пусто (резерв?), 50- пусто (резерв?), 51- пусто (резерв?), 52- пусто (резерв?), 53- пусто (резерв?), 54- пусто (резерв?), 55- пусто (резерв?),

; 56- пусто (резерв?), 57- пусто (резерв?),

Версия прибора передается в двух байтах

Формат ответа (вырезка из моего кода #66):

ver1=57 ; версия прибора младший разряд | Пример: нужно сделать версию "123,45". Переводим в HEX (калькулятором), получаем "$3039",

ver2=48 ; версия прибора старший разряд | $30=48 dec ; $39=57 dec

otv.s=Str(adr)+"|6|0|"+Str(typedevice)+"|"+Str(ver1)+"|"+Str(ver2)+"|"

otvet.s=otv.s+Str(calculateCRC(otv.s))+"|"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Virtuoso    0

Спасибо)

Как я, балбес, сам не догадался отвечать самому UProg-у...

Но вопрос с пакетами ответов приборов остался открытым..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
КЭС    911

Но вопрос с пакетами ответов приборов остался открытым..

Покажите полные пакеты, начиная с адреса и заканчивая CRC, а то из этого:

1) По поиску С2000-СП1 отвечает "12, 203, 0, 2, 192, 0, 0, 1, 1, 0" (это только тело), а С2000-2 - "12, 203, 0, 22, 47, 21, 5, 8, 14".

не ясно, т.к. длины пакетов различны.

И еще: какова конечная цель ваших изысканий?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • А Вас не удивляет, что, как Вы изволили выразиться, "отсутствие знаний" не мешает мне успешно писать код в свои изделия, а изделия затем успешно внедрять в серийное производство? Вы не ответили мне на простой вопрос: каким боком терминология стандарта влияет на написание кода для ДМА? Что такого критически важного содержится в определении выражения как части другого выражения? Зато Ваше стерильное непонимание сути понятия "логического выражения" - это весьма существенно. Вы совершенно формально принимаете соглашения языка, не пытаясь разобраться в сути. И при этом вообще не слышите собеседника, априори полагая, что  собеседником является ничего не знающий "школоло". Именно это гомерически смешно. Также гомерически смешны Ваши сентенции относительно ДМА. ДМА не требует никаких вычислений, кроме простых присвоений значений управляющим регистрам контроллера ДМА, а так же тривиальных действий в обработчике прерываний по ДМА. Все что связано с использованием этого аппаратного инструмента никакого отношения к Си не имеет ВООБЩЕ. Проблема в том, что Вы ни разу не радист. Вы - программист. Именно поэтому активно применяете чужие библиотеки.  А мне это совершенно не требуется.  
    • транзистор Т1 выпаял: проверил, живой плату промыл - сушится обогревателем . Вечером припаяю назад Т1 + припаяю резисторы и сделаю фото
    • Это не хрень. Это - нормальное положение дел. ))  Транзисторы , они ведь не одинаковые. Токи утечки разные (в основном обратный ток коллектора) , разные и коэфициенты усиления по току ( h21э ). По этому без нагрузки , на выходах  и между ними , может быть что угодно.  На это даже заморачиваться особо не стоит. Лучше провести эксперимент. Между выходами  поставить два последовательно соединённых резистора. Скажем по одному килоому каждый. После этого померить напряжение между выходами. Оно должно стать практически нулевым.  Потом к средней точке резисторов подпаять проводок. А другой конец провода подключить к массе. При этом на обоих выходах должно стать примерно нулевое напряжение. Перекинув провод на плюс питания убеждаемся , что на обоих выходах стало практически напряжение питания. Если всё так , то то всё ОК. Но поставить резисторы между базой и эмиттером 4-х силовых  транзисторов всё же надо.   
    • В 90% случаев, такой БП используют для контактной сварки. В Вашем случае намного реальнее перемотать трансформатор от микроволновки. Уж по скорости и надёжности - это самый верный вариант. Для чего планируется использовать схему?   
    • Прорекламировали автора - аж захотелось почитать. Пошел в гугл за книжками...