Pull to refresh
17
0
Фролов Дмитрий @FDA847

Схемотехник

Send message
Один контроллер в серии обошёлся в 7500 руб. Разработка серверного ПО стоила примерно 5% от цены всей партии. Вся разработка заняла три месяца.
Код пишется на Си в любом случае. Поэтому битность процессора тут ни при чём. Да и себестоимость надо правильно считать. Она определяется не одним только микроконтроллером.

Во-первых, это 8-битный микроконтроллер. Во-вторых, реализация алгоритмов управления в подобных задачах вообще никак не зависит от битности.

Для этого и составляется чёткое ТЗ перед началом разработки. Исходя из этого выбирается элементная база. Но и оставшейся 30% программной памяти хватит на реализацию очень большого куска логики при необходимости. Это же микроконтроллер. Тут всё байтами измеряется.

Автомат с характеристикой C. При жестком КЗ он срабатывает за время не более 20 мс. Наше устройство усредняет показания за 200 мс, поэтому автомат при КЗ всегда сработает первым.

Ставить спец. микросхему для измерения параметров сети в данном случае это как из пушки по воробьям стрелять. Расчёт RMS делается в два десятка строчек кода на Си. Вся прошивка, включая стек TCP/IP и Web-интерфейс для настроек занимает около 40 кБ памяти микроконтроллера. Токовые трансформаторы можно покупать готовые, а можно намотать самому. Микротрансформатор для измерения напряжения также можно использовать любой (выходное напряжение большого значения не имеет). Всё это всегда доступно со складов поставщиков и стоит недорого.
По поводу переключения. Оно происходит дважды в день, поэтому усложнять схему без необходимости не стоит. Тут важнее надёжность, т.к. кабель выходит на улицу и там он может подвергаться внешним воздействиям. Линия питания для ЭНР в щитке защищена УЗО и обычными автоматами. Даже при жёстком КЗ ничего не выйдет из строя.
Реальность показывает, что ещё как нужен.
Да, мы тоже как-то делали такие «гибридные» реле. Но там свои тонкости. Для симисторов или готовых твердотельных реле надо дополнительно снабберную цепь ставить. В общем опять приходим к тому, что не универсально получается. Нужно знать какая будет нагрузка. Поэтому самое дубовое это реле и контактор, взятые с запасом по току.
Может помочь. Проблема в нашем случае в том, что точек установки устройств очень много, и они в разных городах. Нет возможности везде проверить условия. В нашем городе было три точки, мы их обследовали как смогли. В результате решили просто заложить реле с запасом, да ещё и контакторы на более мощную нагрузку. Некоторые устройства, кстати, работают уже непрерывно два года. Эту статьи я пишу уже исходя из некоторого опыта их эксплуатации.
Немного неверно мысль я сформулировал. На выходе стоит резисторный делитель. Его нагружаем трансформатором (у нас он выдаёт номинально 12В). А уже напряжение с делителя измеряем микроконтроллером. Реальная схема, правда, чуть посложнее, т.к. измеряем мы RMS. В следующей части статьи я приведу саму схему. Будет намного понятнее. Но суть в том, что мы делаем индивидуальную калибровку, поэтому абсолютное значение сопротивления резисторов нам не сильно важно (в определённых пределах).
На счёт пускового тока немного не соглашусь. Мы пробовали как-то ставить вот такой
модуль защиты контактов.
Он как раз для ёмкостных нагрузок предназначен. Так вот не особо он помогает. Реле типа TRD-5VDC залипают после сотни включений/выключений.
При этом, в случае коммутации нагрузок типа кондиционера, проблем нет никаких даже без всяких доп. модулей. После этого мы и занялись вопросом изучения косинуса фи :-)
Могу рассказать свой пример. Я использовал тип uint24_t один раз в жизни. Делали очень простой контроллер для СКУД. Важна была цена, поэтому заложили очень простой микроконтроллер с минимальным объёмом памяти. При этом, чтобы обеспечить поддержку большего числа пользователей, для хранения кодов карт доступа использовали поле размеров в 24 бита. Карты были Em-Marine. В результате на 1000 пользователях экономия аж целый килобайт оказалась, но для контроллера это много :-)
Да, это верно. Спецификация Modbus подразумевает передачу слэйвом кода ошибки.
А, тогда я неправильно понял. В этом случае да, слэйв обязан выдать ответ с ошибкой.
В документации вот такое значение приведено:

В табличке мы его немного округлили.
Реально, мы сталкивались с тем, что у реле типа TRD-5VDC (и различных аналогов) контакты «залипали» при нагрузке даже в 150 Вт, когда этой нагрузкой были AC-DC преобразователи.
Забавно, что встроенный ККМ сильно дело не меняет.
Её отмели сразу из-за того, что очень длинные провода идут к рекламным конструкциям. Обычно около 50 м. Да и сам характер нагрузки очень разный. Изготовители рекламных конструкций используют различные типы источников питания и светящихся элементов. Поэтому и решили заложить реле. Кроме того, переключение происходит два раза в день, поэтому за ресурс мы не переживали.
При неправильном адресе slave не должен ничего отвечать. Ведь таких устройств на шине может быть много, для каждого из них чужой адрес будет «неправильным». В этом случае получится коллизия на шине.
На счёт int8_t, int16_t, int32_t абсолютно верно. Всё таки заявляется, что код может использоваться и на встраиваемых системах. Тут чёткость должна быть.
А вот на счёт табличного расчёта CRC не соглашусь. Скорость в таких вещах не так важна. Тут же всё упирается в канал связи, а там обычно не более 115200 бит/сек.
Зато обычный метод расчёта сильно экономит память, а для микроконтроллеров это важно, её там не особо много.
Отлично всё расписано! И спасибо за образец!
Вы совершенно правы! При регистрации в Роспатенте чётко различаются автор и правообладатель. Автор — работник (физ. лицо), правообладатель — работодатель (юр. лицо). Мы регистрировали несколько программ и БД в Роспатенте. Это одна из самых простых процедур. Если соблюсти все формальные правила (а их так не так уж и много, да и все нужные формы для заполнения на сайте есть), то регистрация проходит довольно быстро.

Information

Rating
Does not participate
Location
Рязань, Рязанская обл., Россия
Date of birth
Registered
Activity