Строительство »

РадіоКот :: Управління макетом залізниці. Диспетчерський пульт на основі DCC.

>>>


Управління макетом залізниці. Диспетчерський пульт на основі DCC.

Управління макетом залізниці. Диспетчерський пульт на основі DCC.

Представлений в статті диспетчерський пульт дозволяє автоматизувати управління такими пристроями на макеті залізниці як світлофори та стрілки, а також відображати стан зайнятості колій та положення стрілок. Для передачі команд управління на стрілки і світлофори використовується добре відомий в ЖД-моделизме протокол DCC (Digital Command Control). Перевагою цього протоколу є те, що для харчування і управління всіма пристроями використовується всього 2 дроти. Отже, що ж вміє цей пульт:

  • Управляти 32-ма пристроями по протоколу DCC. Це може бути 32 світлофора або 128 стрілок (32 стрілочних декодера на 4 стрілки) або 256 будь-яких пристроїв з функцією вкл-викл або будь-які комбінації цих пристроїв
  • Зчитувати дані з 64 датчиків. Це можуть бути датчики зайнятості колії, датчики положення стрілок або будь-які інші датчики
  • Опитувати 64 кнопки і управляти роботою 64 груп індикаторів на пульті управління
  • Можлива робота як в автономному режимі (після настройки через програму-конфігуратор), так і з підключенням до комп'ютера через COM порт або USB
  • Відключення навантаження при виникненні КЗ

Чого не вміє:

  • управляти локомотивами
  • Налаштовуватися без комп'ютера

Опис роботи пульта

Пристрій по суті являє собою ПЛК (програмований логічний контролер). У процесі роботи контролер опитує датчики зворотного зв'язку (ОС) і кнопки пульта, обчислює значення всіх функцій, в яких вони беруть участь, і на основі значень цих функцій управляє індикацією на пульті або посилає команди на шину DCC. Так само в процесі роботи можливе підключення комп'ютера, в цьому випадку в вільні проміжки часу контролер займається і обробкою команд, поданих з комп'ютера (ручне управління індикацією і пристроями DCC, запис конфігураційної інформації).

Тепер розглянемо типову схему макета і вкажемо на ній положення нашого пульта.

На схемі наведена мінімальна конфігурація, яка дозволяє нормально керувати макетом. У неї сходить:

  • сам пульт
  • світлофорний декодер, який керує роботою одного або декількох світлофорів
  • стрілочний декодер, керуючий роботою стрілок
  • два типи модулів зворотного зв'язку, з струмовими входами для визначення зайнятості колії і зі звичайними входами для визначення положення стрілок
  • комп'ютер, потрібен як мінімум 1 раз, для настройки пульта
  • додатковий блок живлення для декодерів, якщо потужності драйвера вбудованого в пульт недостатньо.

схемотехніка

Схема пульта складається з двох модулів, модуля управління (в ЖД-моделизме він зазвичай називається командної станцією) і модуля введення-виведення, з'єднаних між собою шлейфом.

Розглянемо для початку модуль вводу-виводу.

В якості керуючого пристрою використовується контролер Tiny2313, він має 2 SPI порту, один з яких повністю програмний і використовується для зв'язку з модулем управління. Другий порт, на основі USI, служить для сканування матриць кнопок і індикаторів. До цього порту підключені 2 регістра 74HC595, один з яких відповідає за комутацію рядків індикаторів, а другий за комутацію стовпців індикаторів і кнопок. Зчитування рядків кнопок здійснюється залишилися 8-бітовим портом контролера. Для індикації процесу опитування контролера модулем управління передбачений світлодіод.

У модулі присутні 2 макетних поля з контактами по 8 рядків і 8 стовпців для підключення кнопок і індикаторів. Таким чином можливо підключити 64 кнопки і 64 індикатора).

Індикатори підключені через ключі (через PNP транзистори на +5 В і через збірку ULN2003 + 1 NPN транзистор на землю), тому кількість і тип індикаторів в кожній з 64 груп повністю залежать від допустимих струмів цих ключів. Модуль не має свого джерела живлення, воно здійснюється через 7 контактний роз'єм від модуля управління, тому сумарний споживаний індикаторами ток залежить від потужності стабілізатора в розподільній скриньці.

Переходимо до найголовнішого - модулю управління.

Переходимо до найголовнішого - модулю управління

Модуль управління, або як було написано вище - командна станція, складається з керуючого контролера і драйвера. Крім цього, для зв'язку з комп'ютером використовується мікросхема перетворювач USB-UART FT232RL, а для зв'язку з модулями ОС - MAX487. Якщо комп'ютер має справжній COM-порт, то замість мікросхеми FT232 можна використовувати більш дешеву і розповсюджену MAX232 або її аналоги з відповідною обв'язкою.

У розподільній скриньці використовується контролер ATMega8 з кварцовим резонатором на 16МГц.

Для опитування модулів зворотного зв'язку використовується інтерфейс RS485. Всі модулі підключаються в паралель до 4 провідної лінії (RS-A, RS-B, + V, GND). Кожен обмін даними між контролером і модулями ОС супроводжується індикацією на платі. Можна підключити 8 модулів, опитування відбувається по черзі з інтервалом приблизно пів секунди (для 8 адрес, адреса опитується кожні 50 мс).

Окремий модуль для опитування кнопок і індикації розроблений з метою розвантажити основний контролер і заощадити його висновки. Входи Reset контролерів об'єднані через міжплатний роз'єм, це зроблено для того, щоб контролер модуля індикації не заважав програмування основного контролера.

Контролер формує сигнали для управління шиною DCC. Це протифазні сигнали DCC і nDCC і сигнал включення драйвера DCC_EN. Вони надходять на драйвер L298, який і формує на виході сигнал DCC.

Драйвер має 4 виходи, що дозволяє використовувати або 2 окремих шини DCC, або одну, але з більшим струмом, для чого передбачено 2 джампера (J1-J2), які запараллелівают виходи драйвера.

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

Для зв'язку з комп'ютером використовується перетворювач інтерфейсу FT232RL, так як UART контролера задіяний для опитування модулів зворотного зв'язку, то зв'язок з комп'ютером відбувається під час простою UART за запитом від комп'ютера. Запит і дозвіл на обмін інформацією відбуваються по лініях DTR і DSR, для розв'язки ліній RXD від MAX487 і FT232 використовується буфер на мікросхемі 74HC1G125. Це мікросхема містить всього один елемент в корпусі. Можна використовувати і звичайну 74HC125 з декількома елементами в ДІП або СОІК корпусі, хоча це збільшить габарити плати.

На платі присутні 4 світлодіода. Світлодіод PWR відображає наявність живлення 5В. Світлодіод USB_LED світиться під час обміну інформацією між ПК і пультом. RS485_LED світиться під час опитування модулів ОС. Світлодіод ERR горить при виникненні будь-якої програмної або апаратної помилки, наприклад КЗ.

Живиться пристрій від 14-18В через стабілізатор 7805. Потужність блоку живлення слід вибирати з урахуванням підключається по шині DCC навантаження. Сам же драйвер L298 видає до 2А на канал. Якщо навантаження перевищує це значення, то слід використовувати додатковий блок живлення, а в платах декодера прибрати відповідні перемички і зробити гальванічну розв'язку шини DCC від цього БП (див. Опис декодерів нижче).

Напруга живлення знизу обмежується напругою спрацьовування стрілочних приводів макета. Частина напруги (від 2 до 5В, в залежності від навантаження) падає на драйвері L298, і ще 0,5-1В на доданих мостах декодерів. Якщо ж для харчування декодерів використовується окремий блок живлення, то напруга живлення пульта можна знизити до 10-12В.

Тепер опишемо пристрої, які розташовуються безпосередньо на макеті (а точніше під ним).

Модуль зворотного зв'язку

Модуль зворотного зв'язку служить для визначення зайнятості блок ділянок або положення стрілочних переводів.

Модуль зворотного зв'язку служить для визначення зайнятості блок ділянок або положення стрілочних переводів

У схемі модуля використовується контролер ATtiny2313, мікросхема інтерфейсу MAX487, стабілізатор 7805, і пари діодних мостів з опторазвязкой на кожному вході (опціонально). Всього у модуля 8 пронумерованих входів. Вхід модуля може бути звичайним контактним, наприклад для визначення положення стрілки, або ж струмовим датчиком - для визначення зайнятості колії. У другому випадку датчик підключається в розрив між контрольованим ділянкою рейки і одним з живильних рейок проводів. Використовувані в струмовому датчику оптопари дозволяють детектувати тільки одну полярність напруги на рейках, тому в разі аналогового управління, потрібно використовувати інші (з подвійним, включеним зустрічно-паралельно світлодіодом), або дві окремі оптопари. Детекція струму відбувається наступним чином: коли на рейках з'являється локомотив або вагон з вбудованим в колісну пару резистором, в ланцюзі рейок з'являється струм, який створює падіння напруги на діодному мосту. Діоди моста підключені таким чином, що падіння напруги створюється на 2х послідовно включених діодів, цього достатньо для спрацьовування підключеної паралельно мосту оптопаре. Схема і плата розроблена одночасно для обох варіантів входів. У разі використання токового датчика не встановлюються пари резисторів R15-R30, при цьому блок-ділянки виходять гальванічно розв'язані між собою і модулем. У разі використання входу як контактного датчика, не встановлюються оптопари D1-D8, мости BR1-BR8 і резистори R3-R10 між ними. При цьому резистори R23-R30 є перемички 0Ом, що з'єднують перші входи датчиків між собою і землею. Як резисторів R15-R22 також використовуються перемички, але з метою захисту входів контролера можна використовувати резистори 1к.

Для ідентифікації модуля в системі служить мікроперемикач адреси. Адреси задаються двійковим кодом (0-викл, 1-вкл) в діапазоні 0-31. Модуль відповідає тільки на запит, в якому присутній його адресу. Два модуля з однаковими адресами будуть заважати один одному. Коректна робота модуля при опитуванні супроводжується миготінням світлодіода на його платі. Резистор R1 служить для узгодження лінії RS485 і ставиться на останньому модулі на шині. Для з'єднання можна використовувати виту пару, дві жили з якої використовувати для RS485, а решта розподілити між сигналами DCC і лініями «+ харчування» і «земля».

світлофорний декодер

світлофорний декодер

Це одне з тих пристроїв, яке нарівні з поїздами дозволяє "оживити" макет. Такі пристрої, що працюють по протоколу DCC випускають багато фірм і макетостроітелі знайомі з розробкою мікроконтролерних пристроїв. Зазвичай для настройки таких декодерів використовують різні варіанти прошивок або програмують внутрішні змінні за допомогою командного станції. Особливість цієї схеми декодера в можливості запам'ятати адресу і конфігурацію світлофора замиканням всього пари джамперів на платі декодера. Тобто щоб усвідомити адресу досить замкнути адресну перемичку AD (Address Detect) і послати з командної станції будь-яку команду на цю адресу (у разі диспетчерського пульта це можна зробити з програми конфігуратора). До декодера можна підключати кілька світлофорів, наприклад 3 п'ятизначних, 4 4х-значних, 5 3х-значних або 6 двозначних. Кожному з них буде автоматично присвоєно свою адресу (по порядку). Для визначення типу світлофора потрібно перед включенням замкнути перемичку SD (Signal Type Detect), при вдалому визначенні світлофор по черзі включить всі кольори першого в групі світлофора. Це можна зробити відразу після прошивки контролера, якщо заздалегідь відомо якими світлофорами буде управляти даний декодер.

Основою декодера є контролер ATTiny24. Вузол живлення містить перемички вибору джерела, діодний міст і стабілізатор типу 7805. Плата спроектована таким чином, щоб живити декодер можна було або від самої шини DCC або від окремого джерела. У другому випадку сигнал DCC буде розв'язаний оптопарою, а саме харчування буде братися з роз'ємів AC1 або AC2, резистор R12 встановлювати не потрібно. При харчуванні від шини DCC необхідно встановити перемички вибору харчування, оптопара і елементи R11-VD2 не встановлюються.

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

Перемички або паралельні їм резистори на виходах декодера ставляться в залежності від схеми світлофора і параметрів використовуваних в ньому світлодіодів, з урахуванням того, що використовується динамічна індикація

стрілочний декодер

стрілочний декодер

Це той пристрій, що визначає, куди поїде поїзд на розвилці. Як і у випадку зі світлофорним декодером, такі пристрої можна знайти у багатьох виробників, і як і в випадку із світлофорним декодером, адреса можна налаштувати просто замкнувши джампер (AD) і подавши команду на перемикання. Даний варіант призначений для управління стрілками з електромагнітами (соленойдамі), тому при подачі команди декодер видає на соленойд імпульс тривалістю 500 мс. Як правило, для переведення стрілки потрібен досить потужний імпульс, тому щоб не перевантажувати шину харчування (або шину DCC, якщо харчування береться від неї), використовується електролітичний конденсатор. На платі передбачений роз'єм для підключення зовнішнього конденсатора. Причому контролер (який як і в світлофорному декодере - ATTiny24) перевіряє заряд конденсатора і не видасть імпульс на привід стрілки, поки зарядка не закінчиться (виходи, які потрібно переключити, контролер при цьому буде пам'ятати). Це зроблено для більшої гарантії перемикання стрілки. Всього у декодера 8 виходів, це означає, що до нього можна підключити від однієї до чотирьох стрілок. Вхідна частина практично ідентична світлофорному декодера, за винятком використання LM1117 як стабілізатор (це зроблено для зручності розведення).

збірка

Розробка плат була проведена в САПР Proteus, файли проекту розміщені в кінці статті. Замість доріжок із зворотного боку можна використовувати перемички. У деяких місцях використані SMD-перемички типорозмірів 0805 і 1206. Плати практично повністю зібрані на SMD елементах з одного боку, при цьому вивідні деталі (індикатори, роз'єми, кварци) знаходяться з іншого боку. Найскладнішим може бути пайка мікросхем перетворювача USB-UART в корпусі SSOP28 і головного контролера пульта в корпусі TQFP32. Практично всі деталі можна знайти в більшості магазинів, за винятком хіба що мікросхеми 74HC1G125, замість неї можна застосувати повнорозмірну 74HC125, з відповідною переразводкой плати. Всі резистори і керамічні конденсатори розміру 0805, танталові конденсатори в ланцюгах 5В - тип А, в ланцюгах + 14В - тип С. Більшість з'єднань здійснюється клемами.

Плати пульта мають розмір 55х85мм.

Для підключення кнопок і індикаторів служить макетне поле на платі індикації (див. Рисунок плати). Конкретну позицію для підключення можна дізнатися у програмі-конфігураторі (меню проект-схема підключення кнопок / індикаторів). З'єднання плат пульта між собою 7 жильним шлейфом слід вести з урахуванням імен ліній (див. Схеми і складальні креслення вище)! Лінії DI-DO повинні бути з'єднані хрест-навхрест, інші лінії з'єднуються безпосередньо.

Плати модулів ОС і декодери розміром 60х60мм.

,

Для декодерів і модулів ОС корпусу не маються на увазі, тому що вони зазвичай кріпляться всередині макета. Корпус самого пульта залежить від розмірів передньої панелі, в разі маленької шляховий схеми можна використовувати корпусу від старої оргтехніки (як це зробив я) або знайти в продажу новий. Всі схеми і креслення плат в форматі пакета Proteus і прошивки модулів знаходяться в кінці статті. Конфігурації фьюз-бітів в модулях ОС і на модулі введення-виведення можна залишити заводськими, в декодерах - рекомендується включити BOD на 4.3В. У головному контролері - включити BOD на 2.7В, встановити джерелом тактирования зовнішній ВЧ-кварц і задати розмір boot секції в 128 слів (фьюз біти в анотації Atmel: 0x2F 0xD7).


У разі більш серйозного макета, швидше за все доведеться робити саморобний корпус з дерева або іншого доступного матеріалу, чого я на жаль не зробив, тому що сам макет поки не готовий, а для випробувань системи цього вистачає.

А ось як він виглядає всередині (плати відрізняються тому що це дослідний зразок): А ось як він виглядає всередині (плати відрізняються тому що це дослідний зразок):

А ось як він виглядає всередині (плати відрізняються тому що це дослідний зразок):

А цей бардак був тестовий макет (зліва можна спостерігати стрілочний декодер з батареєю конденсаторів, по середині 2 модуля зворотного зв'язку, а праворуч світлофорний декодер):

А цей бардак був тестовий макет (зліва можна спостерігати стрілочний декодер з батареєю конденсаторів, по середині 2 модуля зворотного зв'язку, а праворуч світлофорний декодер):

Налаштування


За суті, кроме джамперів для запаралелювання каналів в розподільній скріньці існує только один орган настройки, це настройка обмеження Струму КЗ. Для того, щоб его відрегулюваті, нужно підключіті всі декодери и почату обертаті змінний резистор (вліво або вправо, уточніті!), Поки НЕ состоится Відключення и не загориться індикатор ERR, после цього слід немного відкрутіті резистор в протилежних сторону, вімкнуті и Включити харчування пульта .
І так, все зібрано, и пов'язано, кроме індікаторів и кнопок самого пульта, що робити далі?
Для того, щоб налаштувати і запустити всю цю систему, я написав спеціальну програму.
Ось як вона виглядає:

Інтерфейс нехитрий, вся програма в основному складається з вікон зі списками різноманітних об'єктів з яких складається проект.

Розглянемо основні етапи роботи.
1) Для початку (навіть до збірки пульта, тому що цей пункт дозволяє визначити можливість використання цієї системи) потрібно намалювати на аркуші паперу схему шляхів і вид панелі пульта. На схемі потрібно пронумерувати всі світлофори і стрілки і дати їм імена. Номери (адреси) повинні бути більше 128 (це особливо протоколу DCC). У кожного світлофора повинен бути свою адресу. У стрілок може бути одна адреса на 4 штуки і номер виходу декодера, (наприклад: стрелка1 - адреса 129, виход1 - відхилення, виход2 - прямо; стрелка2 - адреса 129, виход3 - відхилення, виход4 - прямо; стрелка10 - адреса 140, виход7 - прямо, виход8 - відхилення і т.д.). Стрілки і світлофори має сенс групувати з метою зменшення довжини сполучних проводів.
Якщо у вас кількість адрес не перевищило 32, значить все в порядку, в іншому випадку у цієї системи не вистачить адресного простору і схему доведеться розбивати на 2 або використовувати інший пульт.
Наступним кроком розбиваємо макет на блок-ділянки, підписуємо назви всіх блок-ділянок та виходи перемикачів положення стрілок. Кожен блок-ділянку і вихід положення стрілки теж потрібно пронумерувати. Номери складаються з адреси (0-31) і біта, це як раз ті адреси, і номери входів модулів ОС. Як і декодери, лінії ОС можна групувати за адресами або типам датчика (стрілка або струмовий датчик). Якщо загальна кількість ліній ОС не перевищило 64, то можна працювати далі.
Коли всі пристрої на макеті іменовані і адресовані, можна переходити до самого пульта. На ньому так само потрібно намалювати все потрібні індикатори кнопки і підписати їх імена (щоб не плутати зі світлофорами і лініями ОС, можна використовувати префікси, наприклад і_ для індикаторів і К_ для кнопок). Адресація тут вже не потрібна, так як цим в автоматичному режимі займеться програма. Але загальна кількість кнопок і індикаторів має бути не більше ніж по 64 шт.
2) Перевіряємо зв'язок з пультом. Запустіть програму, з'єднайте пульт з комп'ютером і включите його. У разі підключення по USB, можливо буде потрібно установка драйверів FTDI. Після цього у вас з'явиться новий COM-порт, запам'ятайте його.
У програмі зайдіть в меню настройки - настройки зв'язку і виберіть там цей порт, якщо все в порядку, з'явиться повідомлення «відкриваю порт COMх. готово ». Тепер перевіримо зв'язок з контролером пульта. Натисніть «підключити» в тому ж вікні. Якщо все в порядку, з'явиться щось на зразок «Dispatcher Command Station V1.0». Розглянемо основні етапи роботи


Тепер можна задати адреси декодерів. У вікні настройки з'єднання потрібно поставити галку «пряме управління», ввести адресу, встановити перемичку на відповідному декодере і натиснути будь-яку кнопку F0-F7, при цьому пульт передасть команду до цієї адреси в шину DCC, а декодер з замкнутої перемичкою запам'ятає адресу як свій. Переставте перемичку на наступний декодер і програмуйте наступну адресу.
3) Тепер можна приступити безпосередньо до проекту. Пульт на цьому етапі можна відключити. Виберіть в меню файл - новий, і введіть ім'я проекту. Тепер приступимо до додавання пристроїв.
Першим в меню «об'єкти» йде список пристроїв DCC - це ті самі світлофорні і стрілочні декодери. Додайте в список новий пристрій, при цьому буде запропонований вибір ви намагаєтесь написати, світлофор або стрілочний декодер.
У разі вибору світлофорний декодер, то з'являється вікно властивостей світлофорного декодера, де можна ввести ім'я світлофора, адреса і тип, а так само задати логіку роботи, але про це пізніше.

Ім'я світлофора це те саме ім'я, яке ми дали йому на кресленні шляховий схеми, адреса це адреса на шині DCC, ну а тип визначається його функціональним призначенням. Під вікном вибору типу світлофора розташовується таблиця функцій. Залежно від типу, кожна з 8 функцій декодера може мати різний ім'я або взагалі його не мати. Функції як би відповідають кольорам світлофора, але кожна з них буде нести відповідальність за горіння або миготіння одночасно декількох квітів. Такі функції називають Критеріями. Наприклад для маневрового світлофора існує 2 аспекти: синій і білий, а для прохідного можуть бути червоний, жовтий, зелений і жовтий + зелений.

При додаванні стрілочного декодера вікно властивостей має трохи інший вигляд, наприклад там немає вибору типу і можна написати будь-які назви функцій. Так як стрілочний декодер може управляти 8ю виходами, кожну з функцій можна назвати тим, чим вона і управляє на макеті, тобто таким ім'ям, яке їй дано на кресленні.

Так як стрілочний декодер може управляти 8ю виходами, кожну з функцій можна назвати тим, чим вона і управляє на макеті, тобто  таким ім'ям, яке їй дано на кресленні

Припустимо, що всі декодери ми додали, тепер можна поки цей список закрити. Не забуваємо зберегти те, що зробили. Сам проект зберігається з розширенням .dcs (особливо допитливі можуть відкрити його будь-яким текстовим редактором, структура дуже проста, але редагувати його не раджу, можна все зіпсувати і доведеться починати спочатку).
Переходимо до наступного списку - зворотні зв'язки.
Тут можна додати все лінії зворотного зв'язку, які є на кресленні. У властивостях потрібно ввести ім'я лінії, адреса модуля і біт. Біт це той самий номер входу в модулі ОС, до якого підключається лінія зворотного зв'язку, а адреса це адреса модуля на шині RS485.

Біт це той самий номер входу в модулі ОС, до якого підключається лінія зворотного зв'язку, а адреса це адреса модуля на шині RS485

Наступний список - список кнопок. Це кнопки, які знаходяться на пульті і управляють перемиканням стрілок, відкриттям або закриттям світлофорів ну або будь-якими іншими подіями. При додаванні або редагуванні кнопки можна змінювати тільки її ім'я, а ID призначається автоматично. Додайте до списку стільки кнопок, скільки вам потрібно на пульті (до 64 штук).

Далі йде список індикаторів. Це все ті світлодіоди на пульті, які відображають значення світлофорів, зайнятість шляху і положення стрілок. Всі індикатори діляться на 2 групи. Поодинокі - це індикатори які працюють незалежно від інших і горять лише тоді, коли відповідає за них функція приймає значення «1», наприклад це індикатори зайнятості колії і індикатори положення стрілки. Як тільки поїзд залишає блок-ділянку, або стрілка переводиться в інше положення, на це реагує модуль зворотного зв'язку. Контролер опитує модуль, обчислює функцію для індикатора і відповідно до її значенням запалює або гасить індикатор.
Групові індикатори працюють за іншим принципом. Справа в тому, що світлофори перемикають колір (точніше, як ми говорили вище - аспект) по команді. А команда для певного аспекту формується як тільки відповідна функція переключається в «1». Якщо вона переключиться назад в «0», то ніяка команда сформована не буде і світлофор продовжить горіти тими ж квітами. Для одиночних індикаторів такий підхід не годиться. Групові індикатори як і світлофорні декодери працюють за принципом перемикача. Якщо для будь-якого індикатора функція набуде значення «1», то він займеться сам, і при цьому відключаться всі інші індикатори його групи.
Групувати можна від 2 до 8 індикаторів. Всього на пульті можна розмістити максимум 64 індикатора, однак на реальній панелі пульта можна використовувати різні варіанти паралельного і послідовного включення кількох світлодіодів для однієї контактної пари.

Останній список служить лише для інформаційної мети, в ньому міститься коротка інформація про всі задіяних в проекті функціях. Навіть в порожньому проекті можуть бути задані деякі функції, наприклад це вбудовані в прошивку пульта сигнали для миготіння індикаторів (меандр низької частоти). Просте логічне множення функції на такий сигнал змусить відповідний індикатор блимати.
Якщо всі складові частини макета і пульта описані, можна приступати до найважливішої частини.
3) Програмування функцій.
Що ж таке функція в даній програмі? Справа в тому, що пульт нічого не знає про те, як розташовані світлофори, стрілки і датчики зворотного зв'язку, він (поки ще) не знає якими кнопками управляються стрілки, він нічого не знає про правила світлофорної сигналізації (тим більше він не знає в якій країні знаходиться, але ж правила в різних країнах відрізняються). А може це і не макет зовсім? Але йому цього знати і не потрібно! Все що йому потрібно знати - це як реагувати на певні поєднання вхідних сигналів (від ліній ОС і кнопок). Ось для цього і потрібні функції. У процесі роботи контролер пульта по черзі обчислює кожну функцію, і якщо це одна з 256 функцій, які стосуються декодерів (тобто 32 декодера, по 8 функцій на кожен = 256 шт.), То в разі, коли вона стає «1» , пульт посилає в шину DCC команду на включення цієї функції, а якщо це одна з 64 функцій індикаторів - включає або вимикає індикатор.
Тепер про те, як ставити ці самі функції. Спочатку для DCC декодерів. Повернемося до їх списку. Відкриваємо (2жди клацнувши в списку) властивості декодера. Навпаки назви кожної функції (аспекту якщо це світлофор або виходу якщо це стрілочний декодер) знаходиться кнопочка Set ... і далі кілька прокреслень, це означає що дана функція не задана. Щоб її поставити, тиснемо кнопку Set ... З'являється вікно завдання функції.

Зверху відображається її внутрішнє ім'я, яке складається з імені декодера і імені конкретної функції. Нижче знаходиться напис Fx і стовпець з кнопками і іменами доданків. Якщо функція не задана, то кнопок всього 2 - «=» і «END». Кнопки задають операцію зі складовими, що знаходяться праворуч від них. Операції бувають такі: NOT - логічне заперечення, тільки для першого доданка, AND - логічне множення, OR - логічне додавання, AND NOT - множення з інвертованим складовою і OR NOT - складання з інвертованим складовою. Перемикаються вони циклічно, через ще одне значення - «END», яке означає, що більше доданків не потрібно. Самі складові задаються натисканням на їх назву праворуч від кнопки (якщо доданок ще не задано, то там буде напис «Set ...». При цьому з'являється вікно вибору доданка в одному з 3х списків. Це або одна з ліній зворотного зв'язку, або кнопка, або вже певні (вбудовані) функції.

Функція вибирається або клацанням і натисканням на ОК, або подвійним клацанням, після чого це вікно зникає, а нове доданок з'являється на своєму місці поруч з кнопкою операції. Якщо функція не потрібна, її можна зовсім видалити кнопкою «Очистити», якщо функція готова, можна натиснути внизу кнопку «Задати» - вікно зникне, а навпаки функції з'явиться її внутрішнє ім'я.
Розглянемо приклад завдання функції для простого 3х-значного світлофора.
Припустимо у нас є світлофор (светофор1, адреса 129), і 2 датчика зайнятості (ДЗ_1, Адреса1 біт0; ДЗ_2, Адреса1, біт1), підключені до блок-ділянок за цим світлофором (ДЗ_1 -бліжній з двох). Логіка такого світлофора наступна:
- якщо зайнятий наступний за світлофором блок-ділянку, то горить червоний;
- якщо наступний вільний, а за ним зайнятий, то горить жовтий;
- якщо вільні обидва блок-ділянки, то горить зелений.
Як тепер це задати? Додаємо в список ОС два наших ділянки і даємо їм імена (як є). Додаємо в список DCC світлофорний декодер, даємо йому ім'я, адреса і вибираємо тип - прохідний. У нього з'являються 4 аспекти. «Жовтий + зелений» розглядати не будемо для спрощення. Навпаки червоного тиснемо Set і задаємо просту функцію: Fx = ДЗ_1, тобто тиснемо Set навпаки кнопки «=» і вибираємо зі списку ОС наш датчик. Тиснемо задати, і переходимо до «жовтої», там вже потрібно по-перше задати перший оператор «= NOT», тому що перший блок ділянка має бути вільною і вибираємо знову ж ДЗ_1, далі перемикаємо другий оператор на «AND» ( «END» переміститься на наступний рядок), і вибираємо другий датчик. Тепер задаємо для зеленого: Fx = NOT ДЗ_1 AND NOT ДЗ_2. Ось і все, алгоритм роботи цього світлофора запрограмований.
Тепер що стосується заздалегідь заданих функцій. Вони потрібні для спрощення програмування і зниження навантаження на контролер. Наприклад, якщо ми хочемо на пульті продублювати показання нашого світлофора, ми можемо знову налаштувати установки через датчики і контролер їх звичайно знову прорахує, але можна просто використовувати самі готові функції (светофор1 # червоний, светофор1 # жовтий, светофор1 # зелений), та й контролер не буде їх вважати, а просто візьме готові значення. До речі, зворотне зробити не можна, тому що функції індикаторів через обмеження програми контролера використовувати в інших функціях неможливо, так що спочатку потрібно завжди ставити функції для декодерів!
Тепер переходимо до редактора панелі пульта. Вона знаходиться в самому низу меню «Проект». Тут можна розмістити всі необхідні органи управління і індикатори, а так само задати їм відповідності з проектними. Щоб задати відповідності, потрібно клацнути по об'єкту правою кнопкою, при цьому для індикатора можна буде вибрати ім'я індикатора з раніше створеного списку, а для кнопки відповідно ім'я кнопки. Різних індикаторів можна поставити 256 штук і будь-якого призначити будь-яку з 64 заданих імен. Кнопок ж має бути стільки, скільки задано в проекті (максимум 64).

Інформація про зовнішній вигляд пульта, зберігається в тому ж самому файлі dcs.
Коли все розставлено в програмі, то і на реальній панелі потрібно всі об'єкти з'єднати. Зробити це можна за допомогою меню «Схема підключення кнопок і індикаторів» того ж меню «Проект». У вікні відображається контактна матриця, розташована на модулі індикації. Кнопки підключаються до контактів KX-KY, світлодіоди до контактів IX-IY. При підключенні світлодіодів необхідно дотримуватись полярності і ставити струмообмежувальні резистори, втім, це буде відображено на схемі.

Тепер залишається тільки навести дані проекту в зрозумілий для контролера вид, і залити в нього. Для початку потрібно скомпілювати проект ( «Проект - компілювати), якщо все налаштовано вірно, помилок немає і кількість об'єктів не перевищує можливості контролера, то з'явиться зелений напис« Compilation Complete »і буде створено файл з ім'ям проекту і розширенням bin. Його можна використовувати як для прошивки програматором, так і з цієї програми, по інтерфейсу USB / COM через меню «Завантажити». При завантаженні ім'я файлу вибирати не потрібно, в контролер буде завантажений поточний проект. Завантаження займає деякий час (близько 30 сек), при цьому на платі повинен блимати світлодіод USB, а на екрані буде відображатися прогрес завантаження.
У програмі є ще один корисний пункт меню - перегляд пам'яті контролера. Він дозволяє проконтролювати працездатність датчиків ОС, кнопок і індикаторів пульта в реальному часі. Для читання пам'яті потрібно натиснути кнопку «Оновити» або поставити галку в пункті «автообновление». При цьому в осередках пам'яті, відповідальних за зберігання даних про лінії ОС (FB_ADR) або кнопках (KBRD_ADR) буде відображатися їх поточний стан. А клацання по осередках DISPL_ADR буде перемикати індикатори пульта.
Програма не вимагає установки, для запуску достатньо скопіювати в будь-яку папку всі файли програми і запустити виконуваний файл. Налаштування програми (активний когось порт і мову інтерфейсу) зберігаються в тій же папці. При запуску можлива поява помилки відкриття когось порту, це означає що в списку портів відбулися зміни (наприклад не підключений пульт або на нього не подано харчування), щоб підключити пульт в цьому випадку потрібно усунути несправність (включити харчування пульта) і перезапустити програму. Тестовий проект прикладений окремим архівом. А ось як він працює:


Більш докладний опис займе напевно занадто багато місця і вийде за рамки однієї статті, тому всі питання щодо даної системи можна задати у відповідній темі форуму.

Ну ось ніби і все. Бажаю удачі в збірці і налаштування!

PS: Прохання справжніх желедорожніков-професіоналів сильно не лаятися, якщо я щось наплутав в термінології або принципах роботи залізниць, для мене це всього лише хобі.

Деякі корисні посилання:

Вікі про DCC - https://ru.wikipedia.org/wiki/Digital_Command_Control

Сайт NMRA, там можна знайти стандарти, в тому числі по протоколу DCC - https://www.nmra.org/

Сайт FTDI, де можна знайти драйвер для FT232 - https://www.ftdichip.com/FTDrivers.htm


файли:
програма конфигуратор
прошивки
Схеми_і_плати (Proteus)
Схеми_і_сборочние_чертежі (PNG)
Тестовий проект (з відео)


Всі питання в Форум .



І так, все зібрано, и пов'язано, кроме індікаторів и кнопок самого пульта, що робити далі?
Що ж таке функція в даній програмі?
А може це і не макет зовсім?
Як тепер це задати?