Глава 5. Проект ”Умный дом”. Разработка программы контроллера водоснабжения.

Система Умный дом

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

Предыдущая глава     Список статей     Следующая глава

Будем ”оживлять” разработанный в предыдущей главе контроллер водоснабжения. Я уделю внимание не последовательности создания программы, а решению системных вопросов.

 

Прежде всего, необходимо осознать, что мы собираемся делать.

 

Формализованная постановка задачи.

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

Функциональная схема

К контроллеру мы подключили 7 датчиков с аналоговым выходом:

  • датчик давления воды;
  • датчик протечки;
  • стандартный охранный шлейф;
  • напряжение питания контроллера;
  • датчик тока двигателя крана;
  • 2 резервных датчика.

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

  • Можно передавать на центральный контроллер считанные коды АЦП, и в нем же хранить коэффициенты для каждого параметра. Вариант хорош тем, что передается минимум информации. Для каждого канала всего 2 байта. Но при установке или замене локального контроллера необходимо задавать коэффициенты в центральном. Система получается сложной в настройке, не универсальной.  К тому же мы еще в первой главе решили, что контроллеры должны работать в автономном режиме.
  • Другой вариант – передавать с локального контроллера коды АЦП и коэффициенты к ним. Сэкономим вычислительные ресурсы, но увеличим число передаваемых данных.
  • В каком формате передавать коэффициенты? Самый экономичный вариант – дробные числа с фиксированной запятой. Но выходной формат данных получается разным для различных параметров. При вычислениях таким методом можно ”сломать голову”.  По просьбе одного любознательного человека я написал о таком способе небольшую статью  на форуме. Не знаю, дочитал ли кто-нибудь ее до конца, но уверен, что никто такой метод вычислений использовать не будет.
  • Остается формат с плавающей запятой. Самый неэкономичный, но самый удобный и универсальный. Думаю, ресурсов Arduio Nano должно хватить.

Итак, первая задача – необходимо:

  • считывать значения аналоговых входов;
  • производить цифровую фильтрацию кодов АЦП;
  • преобразовывать значения АЦП в формат с плавающей запятой и умножать на коэффициенты;
  • обеспечить чтение результата центральным контроллером;
  • реализовать операции для работы с коэффициентами:
    • запись и чтение в EEPROM;
    • контроль целостности данных.

Значения некоторых датчиков нам необходимы только для диагностики. Например, важно знать значение параметра “давление воды”. Но какое напряжение на выходе датчика протечки совершенно не интересно. Главное – случилась протечка или нет.

Т.е. некоторые параметры необходимо сравнивать с пороговыми значениями и формировать признаки в слове состояния. Также должны быть обеспечены функции работы с пороговыми значениями: загрузка и хранение в EEPROM, контроль целостности данных.

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

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

При обнаружении протечки необходимо закрывать кран.

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

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

 

Подготовка к разработке программы.

У меня нет собранного контроллера водоснабжения, нет многих датчиков, конечно, нет крана. Я не могу проверить работу устройства на реальном объекте. Это сделает Михаил.

Для отладки программы я собрал макет. С помощью него я проверил все функции без исключения.

Что необходимо для отладки?

  • Задавать напряжения на аналоговых каналах.
  • Кнопками имитировать дискретные датчики.
  • Светодиодами отображать состояние выходов.

Для этого я собрал простую схему.

Макет для тестирования устройства

Припаял ее к плате Ардуино из главы 3 и адаптеру RS-485 из главы 2.

Макет для тестирования устройства

Теперь можно разрабатывать программу.

 

Формат данных регистров хранения.

Обмен с центральным контроллером происходит по протоколу ModBus через регистры хранения. Поэтому все данные, которые мы хотим передать на центральный контроллер, мы должны разместить в регистрах хранения. Все, что нам надо получить от центрального контроллера мы должны считать из регистров хранения. Т.е. необходимо определить формат данных регистров хранения.

Назначение первых 6 регистров мы определили  для всех локальных контроллеров в главе 3. Они останутся без изменений. Я добавил к ним новые данные и получился полный формат регистров устройства.

Регистр 0. Идентификационная информация.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2 1 0 4 3 2 1 0 7 6 5 4 3 2 1 0
Резерв Версия ПО Тип  контроллера

Регистр 1. Идентификационная информация.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Заводской номер

Регистр 2. Идентификационная информация.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
десятки единицы десятки единицы
Год Месяц
Дата  выпуска устройства

Регистр 3. Состояние локального контроллера.

Бит Назначение
0 Кнопка ОТКРЫТЬ
1 Кнопка ЗАКРЫТЬ
2 Датчик крайнего положения крана ОТКРЫТ
3 Датчик крайнего положения крана ЗАКРЫТ
4 Управляющий выход ОТКРЫВАТЬ
5 Управляющий выход ЗАКРЫВАТЬ
6 Счетчик РАСХОД ВОДЫ
7 Признак ТОК КРАНА БОЛЬШЕ НОРМЫ
8 Признак ТОК КРАНА В НОРМЕ
9 Признак ОШИБКА УПРАВЛЕНИЯ КРАНОМ
10 Признак ТРЕВОГА (для охранного шлейфа)
11 Признак ПРОТЕЧКА
12 Резерв
13 Резерв
14 Признак ошибки защищенной области EEPROM
15 Признак фатальной ошибки

Все признаки имеют активное состояние 1. Т.е. если написано, к примеру, ОТКРЫТ, то значит при открытом кране в соответствующем бите будет 1.

Регистр 4. Доступ к EEPROM

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Данное 1 Данное 0

Регистр 5. Доступ к EEPROM.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
признаки 11 10 9 8 7 6 5 4 3 2 1 0
- слово запись чтение Адрес EEPROM

Регистр 6. Регистр команд.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Свободны C O
  • O – открыть кран (10 = 1);
  • C – закрыть кран (10 = 2).

Регистр используется для управления краном. Если в него загрузить 1, то кран будет открываться, если 2 – закрываться.

Регистр 7. Копия регистра состояния (регистра 3). Регистр полностью повторяет данные регистра 7.

Регистры 8 – 25. Измеренные данные.

Регистр Количество регистров Тип данных Назначение
8 2 float Давление
10 2 float Расход воды
12 2 float Напряжение питания
14 2 float Резерв 1
16 2 float Резерв 2
18 2 float Ток двигателя
20 2 float Напряжение датчика протечки
22 2 float Напряжение охранного шлейфа
24 2 long Число импульсов расхода воды

Данные формируются в виде: код АЦП умножить на соответствующий коэффициент. Поэтому, в каких единицах физической величины параметр будет считываться из устройства, зависит от его коэффициента.

Чтобы уменьшить время обмена по сети, я расположил подряд данные, которые необходимо считывать в рабочем режиме. Для этого слово состояния (регистр 3) копируется в регистр 7.

Предполагается, что в рабочем режиме в цикле будут считываться регистры 7 -11. В регистре состояния содержится вся информация о работе устройства. Также постоянно необходимо считывать параметры давление и расход воды. Все остальные регистры необходимы для диагностики, коррекции данных EEPROM и исправления ошибок.

 

Формат данных EEPROM области общего назначения, коэффициенты.

Формат данных защищенной области EEPROM мы определили в главе 3. Теперь надо добавить данные контроллера водоснабжения.

Для работы устройства необходимо много разных коэффициентов, которые будут храниться в EEPROM.

Для хранения коэффициентов будут использоваться 2 формата:

  • С плавающей запятой. Требует 6 байтов:
    • 0…3 – данное в формате float.
    • 4 – контрольный код. Сумма байтов 0…3 и исключающее ИЛИ с кодом 0xe5.
    • 5 – байт свободен.
  • С фиксированной запятой 16 разрядов. Занимает 4 байта:
    • 0 … 1 – данное в формате int.
    • 2 … 3 – контрольный код. Данное 0…1 и исключающее ИЛИ с кодом 0xa3e5.
Адрес Число байтов Тип Назначение
32 6 float Коэффициент датчика давления
38 6 float Коэффициент датчика протечки
44 6 float Коэффициент охранного шлейфа
50 6 float Коэффициент напряжения питания
56 6 float Коэффициент датчика тока двигателя
62 6 float Коэффициент резерв 1
68 6 float Коэффициент резерв 2
74 6 float Ток двигателя больше нормы
80 6 float Ток двигателя в норме
86 4 int Время срабатывания защиты двигателя (* 0,5 мс)
90 4 int Время на операцию с краном (* 0,5 мс)
94 6 float Минимальное напряжение охранного шлейфа
100 6 float Максимальное напряжение охранного шлейфа
106 6 float Порог напряжения датчика протечки
112 6 float Коэффициент датчика расхода воды

Коэффициенты для аналоговых входов (первые 7) должны учитывать все:

  • дискретность АЦП (5 В / 1024);
  • параметр усреднения (20);
  • коэффициенты датчиков;
  • перевод в физические параметры;
  • если необходимо, калибровку конкретных измерительных входов.

Например, если необходимо установить коэффициент для измерения в диапазоне 0 … 5 В, он вычисляется так:

K = 5 В / 1024 / 20 = 0.00024414062.

При нарушении контрольного кода любого параметра EEPROM:

  • в регистре состояния устанавливается бит ФАТАЛЬНАЯ ОШИБКА;
  • мигает светодиод ОШИБКА;
  • в качестве параметра используется резервный параметр, заданный в программе.

Т.е. если какой-либо параметр ”залетит”, то контроллер будет работать с резервным параметром, но при этом сигнализировать о необходимости исправить ошибку.

 

Алгоритм управления краном.

Это самый сложный блок управления. Поэтому расскажу о нем подробнее.

Операция ОТКРЫТЬ или ЗАКРЫТЬ кран инициируется загрузкой команды (1 или 2 соответственно) в регистр команд (регистр 6).

После того, как команда будет выполнена или прекращена из-за невозможности выполнить, регистр команд сбрасывается в 0. Т.е. о завершении выполнения команды можно судить по нулевому значению регистра команд.

Команда может быть сформирована:

  • центральным контроллером по сети;
  • кнопками ОТКРЫТЬ и ЗАКРЫТЬ;
  • программным блоком, закрывающим кран по обнаружению протечки.

По команде двигатель крана начинает вращаться в заданном направлении. Остановка происходит по:

  • срабатыванию соответствующего датчика крайнего положения;
  • остановке операции загрузкой в регистр команд нуля;
  • превышению тока двигателя в течение заданного времени;
  • истечению времени, отведенного на операцию.

Ошибочное завершение операции сигнализируется признаком в слове состояния.

При обнаружении протечки, кран закрывается. Команда открытия крана в этом случае запрещена и будет проигнорирована.

Светодиод КРАН сигнализирует состояние процесса.

Состояние крана Состояние светодиода
Открыт Светится
Закрыт Погашен
Остановлен не в крайнем положении Мигает, 250 мс светится, 250 мс погашен
Открывается Мигает, 400 мс светится, 100 мс погашен
Закрывается Мигает, 50 мс светится, 450 мс погашен

 

 

Программа контроллера водоснабжения.

Программу можно загрузить по ссылке:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

Она достаточно объемная, но все программные блоки подписаны, структурно  выделены. Разобраться не трудно.

За основу была взята программа из главы 3.

В обработчик прерывания добавлен блок обработки АЦП.Он последовательно считывает и усредняет значения 8 каналов АЦП. АЦП работает в фоновом режиме под управлением библиотеки BackgroundADC.h (урок 65). По готовности данных формируется признак readyADC.

В основном цикле loop() по этому признаку происходит умножение кодов на коэффициенты и перегрузка результата в регистры хранения. Здесь же измеренные значения сравниваются с пороговыми параметрами.

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

Блок управления краном реализует алгоритм, описанный в предыдущем разделе.

Блок обработки протечки закрывает кран, блокирует возможность его открытия, управляет светодиодом ПРОТЕЧКА.

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

 

Проверка работы устройства.

Проверять будем одновременно и аппаратную часть контроллера, и работу программы.

Я написал программу диагностики контроллера водоснабжения. Загрузить можно по ссылке:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

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

Я приведу мою тестовую последовательность, заодно еще раз все проверю.

Включаем контроллер, запускаем программу DiagnWater_5_1.exe.

Монитор

Проверяем данные в верхней левой панели.

Устанавливаем правильный адрес контроллера. По умолчанию задан резервный адрес 193. Даже с неправильным сетевым адресом обмен должен идти. Но лучше установить адрес, тип, заводской номер, дату выпуска контроллера. Об этом написано в главе 3.

Проверяем, что обмен происходит без ошибок. У меня ни единой.

Тестируем работу аналоговых входов. Если вы загрузили программу в плату Ардуино в первый раз, то контрольные коды параметров в EEPROM будут неверными. Да и сами данные будут неверными. Устройство перейдет на использование резервных коэффициентов, замигает светодиод ошибка.

Необходимо перейти в окно редактирования EEPROM и задать коэффициенты для аналоговых входов (7 первых) равными 0.00024414062.

Редактирование EEPROM

Тем самым мы для всех каналов установим диапазон измерения 0 … 5 В. Закрываем окно редактирования.

По очереди, вращая переменные резисторы, убеждаемся, что измеряемые напряжения соответствуют реальным. Устанавливаем для каждого канала разные значения, например, 1 В, 2 В, 3 В, 4 В, 4,5 В.

Основное окно

У меня грубые переменные резисторы, точно установить не смог.

Проверяем правильную работу коэффициентов. В окне редактирования EEPROM устанавливаем следующие коэффициенты.

Редактирjвание EEPROM

Возвращаемся в основное окно и видим, что значение первого канала стало в 10 раз больше, второго в 100 раз и т.д. Коэффициенты соответствуют своим каналам.

Основное окно

Возвращаем коэффициенты к прежним значениям.

В правой верхней панели проверяем дискретные входы. По очереди нажимаем кнопки, эмулирующие датчики, и видим, что красным цветом загораются соответствующие кружки в окне программы. Выходы ОТКРЫТЬ и ЗАКРЫТЬ пока игнорируем.

Проверяем блок управления краном.

Задаем параметры для крана (вторая сверху панель).

Редактирование EEPROM

Не забываем закрыть окно. При открытом окне редактирования EEPROM, работа основной программы останавливается.

Проверяем работу признаков тока крана. Вращаем переменный резистор канала ТОК:

  • при значении меньше 2 В, активен признак I<min;
  • от 2 до 4 В активен признак I>min;
  • свыше 4 В активны признаки I>min и I>max.

Устанавливаем напряжение канала ТОК меньше 2 В, признак I<min. На канале ПРОТЕЧКА задаем напряжение близкое к 0.

Проверяем выполнение команд крана.

Давим кнопку ОТКРЫТЬ в окне программы. Загораются признаки открыть команды и управления, а также соответствующий светодиод на макете.

Монитор

Нажимаем датчик ОТКРЫТО. Признаки гаснут. В окне программы это может происходить с задержкой, а на макете светодиод должен гаснуть мгновенно.

Тоже самое проверяем с реальной кнопкой ОТКРЫТЬ на макете.

Проверяем остановку операции по времени. Нажимаем кнопку ОТКРЫТЬ. Ждем. Через 10 секунд все выключается. Горит признак ОШИБКА в окне программы.

Проверяем принудительную остановку операции. Нажимаем кнопку ОТКРЫТЬ, загораются признаки. Нажимаем кнопку СТОП. Все выключается.

Проверяем защиту по току. На входе канала ТОК устанавливаем напряжение больше 4 В,  признак I>max. Нажимаем кнопку открыть. Через 3 секунды все выключается с признаком ошибки.

Все тоже самое повторяем для кнопок ЗАКРЫТЬ в окне программы и на макете.

Проверяем индикацию работы крана в соответствии с таблицей.

Состояние крана Состояние светодиода
Открыт Светится
Закрыт Погашен
Остановлен не в крайнем положении Мигает, 250 мс светится, 250 мс погашен
Открывается Мигает, 400 мс светится, 100 мс погашен
Закрывается Мигает, 50 мс светится, 450 мс погашен

Нажимаем:

  • датчик ОТКРЫТО – светодиод постоянно светится;
  • датчик ЗАКРЫТО – светодиод погашен;
  • проверяем режимы ОТКРЫВАЕТСЯ, ЗАКРЫВАЕТСЯ и ОСТАНОВЛЕН.

Проверяем состояние ПРОТЕЧКА.

Параметр ПОРОГ ПРОТЕЧКИ устанавливаем 2,5 В. Меняя напряжение на входе канала ПРОТЕЧКА убеждаемся, что при превышении 2,5 В на панели АВАРИИ загорается признак ПРОТЕЧКА и мигает соответствующий светодиод макета.

В режиме протечки видим, что кран пытается закрыться и останавливается только по датчику ЗАКРЫТО.

Проверяем охранный шлейф. Устанавливаем пороги 1,06 и 3,6 В. Вращаем переменный резистор канала ОХРАНА. Убеждаемся, что признак ОХРАННЫЙ ШЛЕЙФ горит красным, если напряжение на входе меньше 1 В или больше 3,6 В.

Проверка счетчика расхода воды. Задаем коэффициент счетчика 0.001. Проверяем, что при каждом нажатии на кнопку макета – эмулятор счетчика, параметр РАСХОД ВОДЫ увеличивается на 0,001.

После записи последнего параметра EEPROM светодиод ОШИБКА должен перестать мигать.

Еще раз смотрим на статистику обмена. У меня ни единой ошибки.

Все эти коэффициенты и параметры отладочные. Для работы контроллера с реальными датчиками и краном необходимо задать правильные параметры. Мы с Михаилом их вычислим, проверим на реальном объекте, и я выложу всю информацию на сайте.

 

Программа верхнего уровня тестирования системы.

Новый контроллер я добавил в программу тестирования всей системы ”Умный дом”.

Программа диагностики системы Умный дом

Загрузить можно по ссылке:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

Не забудьте включить контроллер птичкой в левом верхнем углу.

Здесь только самые необходимые данные и кнопки для управления краном. Пользователю не нужна подробная информация о работе подсистемы водоснабжения. Напряжение питания я добавил, т.к. опасаюсь просадок питания на длинных линиях. Хочу постоянно контролировать этот параметр.

 

Михаил уже заканчивает сборку контроллера, и, надеюсь, на следующей неделе будут первые результаты работы с реальными объектами.

 

Предыдущая глава     Список статей     Следующая глава

0

Автор публикации

не в сети 4 дня

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

44 комментария на «Глава 5. Проект ”Умный дом”. Разработка программы контроллера водоснабжения.»

  1. Добрый день, Эдуард.
    Интересно было бы взглянуть на исходник «Программа верхнего уровня тестирования системы.»
    У Вас есть код на С# ?

    0
  2. Приветствую. По программам верхнего уровня инфопродукт на этом сайте ждать ? Мне только бы изменить названия окон.

    0
  3. Мне нужно четрех-канальный амперметр. Я из прошедших уроков сделал вольтметр, все работает отлично. Вот хочу сделать пересчет напряжения с датчиков тока и обозвать окна: ток …, ток…. и т.д. Этот проект тоже мне подходит для отопления дома, только в программе верхнего уровня хотелось переименовать окна по назначению. С Ардуино столкнулся первый раз, т.к. захелось видеть эл. величины на экране ПК (наверное от лени бегать к измерителей приборам), да и зависимости можно написать. А так занимаюсь давно электроникой . Вот пришлось перечитать все Ваши уроки с практическим применением.

    0
      • Так я же про него и пишу. Как мне изменить названия окон вольтметр на ток 1 , ток 2 и т.д. в программе верхнего уровня ? Я так понимаю нужен исходный файл ? Или подскажите мне как. Спасибо.

        0
        • Так, что сделать? Изменить надписи в программе из урока 65 на амперметр, а единицы измерения на А?
          Откройте тему на форуме сайта в разделе «Программы верхнего уровня Ардуино». Я подправлю программу и выложу там.

          0
  4. Здравствуйте!
    Внимательно читаю Ваш сайт — очень интересно наблюдать как вроде бы очевидные и элементарные вещи встают на «свои» места.
    Хочу заметить, пока Михаил не представил своё творение, что после этапов разработки и всяческих испытаний (АИ, ПРН, КИ и т.д) наступает этап Эксплуатации.
    Эксплуатировать всегда хочется без забот.

    0
      • Да, конечно, не спорю.
        Однако, на звонок с женским голосом и истерическими нотками: «Что делать?» — всегда должен быть ответ.

        0

  5. Эксплуатационникам всегда хочется иметь ЗиП на всё — это нормально.
    В вашей схеме надо иметь запасной контроллер на каждый локальный, ибо уникальные. Так же желательно рассмотреть инструкции замены. С точки зрения эксплуатационника идеальным является действие: выключил-вынул-воткнул-включил.

    0

  6. Вариант «прошить по месту» Локальный контроллер от Центрального был бы идеальный вариант.

    Только Uno на «кроватку» поставить.

    0
  7. А если ещё поставить датчик давления после фильтра (фильтр же должен быть) то можно контролировать загрязненность этого фильтра по разности давлений.

    0
  8. Приветствую. Не получается повторить этот урок. Я так понимаю: нужен локальный контроллер и центральный контроллер, куда информация сводиться ? Я хотел повторить этот урок, подключив платку Arduino (все по схеме вверху) через драйвер MAX485 к сети RS-485 — затем по двум проводам (RS485) к конвертеру RS485 — USB. Такое возможно ? Не могу разобраться. Спасибо.

    0
    • Здравствуйте!
      Так не получится. Соберите конвертер из главы 2. Тогда все будет работать.
      Дело в том, что при обмене данными с компьютером передается служебная информация для конвертера. Т.е. конвертер не просто преобразователь интерфейса, а логическое устройство со своим протоколом.

      0
      • Не совсем понял. Конвертер из главы 2, а программный код для ардуино и программу верхнего уровня от куда ? Мне нужно из этой главы программа верхнего уровня и функции (состояние и измерения) под свои нужды.

        0
        • На выходе конвертера интерфейс RS-485 и стандартный протокол ModBus. А между компьютером и конвертером свой протокол. Поэтому программы верхнего уровня можно использовать только с
          этим конвертером.

          0
          • Немного понятно. Можете сделать эту программу верхнего уровня с одной платой Arduino и обменом данных по интерфейсу RS-485 ? Мне подходят функции этого ПО пока только для электроотопления (потом буду просить править название строк. Если все получиться, буду здесь описанными способами все сводить со всех локальных контроллеров в сеть и вывод на ПК. Меня только интересует вывод на монитор ПК (не каких экранов), (как промышленная SCADA).

            0
          • Здравствуйте!
            Так это ПО работает с сетью RS-485, и ничего не мешает подключить только одну плату.

            0
  9. Что-то я вообще запутался. Как это сделать ? Я же писал: Не получается повторить этот урок. Я так понимаю: нужен локальный контроллер и центральный контроллер, куда информация сводиться ? Я хотел повторить этот урок, подключив платку Arduino (все по схеме вверху) через драйвер MAX485 к сети RS-485 — затем по двум проводам (RS485) к конвертеру RS485 — USB. Такое возможно ? Вы написали: Так не получится. Может сделайте урок как сделать или тему на форуме создать для этого ?

    0
      • Все как в главе 5. Из главы 2 делаете конвертер USB-RS-485. Подключаете к нему по сети RS-485 контроллер из главы 4. Из главы 5 берете резидентное программное обеспечение и программу верхнего уровня. Все должно работать.

        0
      • Сама программа работает (видно по светодиодам). а вывода на ПК нет. Как это исправить ?

        0
          • Какой вы записали в него. Об этом сказано в главе 3.
            Если адрес не записывали, то для контроллера водоснабжения он будет равен 193.

            0
        • Как это? Обмен в сети инициирует компьютер. Мигает светодиод ОБМЕН на локальном контроллере? Если да, то локальный контроллер получает правильный пакет и отвечает. Ошибки обмена компьютер отображает?

          0
          • 1. Светодиод ТХ мигает на контроллере когда установлена галка в окне «v 193 адрес EEPROM серая».
            2. Ошибки обмена пакетами считает.
            3. При нажатии на любую кнопку (загрузить, редактирование) в программе светодиод ТХ кратковременно мигает чаще.
            4. При замыкании PIN 5 — светодиод PIN 9 светиться несколько секунд и гаснет. Точно так PIN 6 и светодиод PIN 10(программа работает).
            Не индикации в программе верхнего уровня.

            0
  10. Здравствуйте Эдуард!
    Большое спасибо за интересные статьи.
    Я сейчас разрабатываю систему для квартиры.
    Долго выбирал между rs485 и can и остановился на последнем. Насколько я понял что can это тотже rs485 но с аппаратной реализацией протокола обмена, который позволяет реализовать распределенное управление. На мой взглядпри такой схеме можно реализовать более простое ПО в главном контроллере и разгрузить его( например реализация маршевых выключателей может быть реализовать без главного контроллера). Меня интересует физическая реализация самой шины. Можете дать совет по применению кабелей.

    0
    • Здравствуйте!
      Если используются драйверы RS-485, то требования к линии связи должны быть такими же, как для интерфейса RS-485. Минимум витая пара с общим проводом, лучше экранированная.

      0
  11. Здравствуйте Эдуард!
    Огромное спасибо за Ваши труды. Очень просто и доходчиво.
    Скажите, как можно (и можно ли вообще) подключиться к OPC серверу.
    Спасибо.
    Удачи!

    0
  12. Добрый день, Эдуард. Очень интересные уроки, буду повторять на базе своего умного дома. Как раз взялся за аппаратную часть. 485 интерфейс достаточно помехозащищенный, не даром же его используют в охранной и пожарной сигнализации, и выбор его в качестве аппаратной платформы обмена данными считаю очень удачным. Только вот поправочка одна: двигателей (кранов) обычно два-горячая и холодная вода, и концевиков соответственно тоже больше. Или вы планируете с Михаилом ставить по контроллеру на каждую «трубу»?

    0
  13. Добрый день, Спасибо за урок. Не могу понять смысл формулы, по которой вычисляется адрес устройства в конструкции:

    192 + (DEVICE_SORT & 0x3f).

    Получается, что для типов устройств от 1 до 63, адрес равен 192 + тип = аварийный адрес, а
    если тип устройства больше 63, то начинаем с нуля…

    0
    • Здравствуйте!
      По этой формуле вычисляется адрес, если он не задан правильно в EEPROM. Цитирую из главы 3.
      Если контрольный код сетевого адреса контроллера показывает, что параметр неверен, то мы вычисляем его по формуле:

      сетевой адрес = 192 + (код типа контроллера) & 0x3f

      Т.е. мы отводим область адресов 192 … 253 для ”залетевших” контроллеров. А адрес в этой области равен коду типа устройства. Если у нас испортятся адреса у контроллеров разных типов, то система будет работать. Центральный контроллер знает, где искать их. Если в системе ни один тип контроллера не используется дважды, то адреса из этой области могут быть базовыми, они никогда не пересекутся.

      0

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".