понедельник, 27 сентября 2021 г.

Зарядка двух (или более) батарей, двумя DC генераторами

Суть проблемы:

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

Пути решения:

1.       Использование только одного генератора одновременно.

2.       Использование внешнего регулятора напряжения для обоих генераторов.

3.       Использование одного генератора для зарядки стартовой батареи и другого генератора для зарядки сервисной батареи.

 

Преимущества и недостатки способов, описанных выше:

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

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

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

Вешение данной проблемы возможно при использовании ПЛК и контактора.

Алгоритм работы ПЛК должен быть следующим:

1.       Определение работоспособности генераторов.

2.       При работе двух генераторов, батареи разъединяются и каждый генератор заряжает свою батарею.

3.       При работоспособности любого одного генератора, батареи объединяются для заряда от одного источника.

4.       При неработоспособности обоих генераторов и выключенном внешнем зарядном устройстве, батареи разъединяются для предотвращения разряда стартовой батареи.

 

При этом зарядное устройство от сети переменного тока должно быть двухканальное, либо возможно использование изолятора (лучше FET) для раздельной зарядки батарей.

 

Диаграмма работы реле изображена на рис. 1

 

Черновая схема с использованием электромагнитных реле на рис. 2


 

 

 

вторник, 31 июля 2018 г.

Поработал с E-Plex ELogic

На многих вся электрика управляется через E-Plex шину.
Теперь есть опыт

среда, 17 мая 2017 г.

Ericsson FSU-995

Вот такой злой аппарат.

вторник, 2 мая 2017 г.

GigE Vison как мы занялись скоростной съемкой

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

Пока анонс:

пятница, 25 декабря 2015 г.

RTOS и режим SSX

Существует модель выполнения процесса SSX (Single shot execution).
Идея ее проста - процесс представляет из себя функцию, из которой обязан выйти по истечении короткого времени.
Никаких while недопускается (почти).
Для реализации такой концепции, необходимо особым образом реализовывать потоки, но оно того стоит, так как экономится память, процессорное время и код становится намного проще.
Давайте сначала представим данную модель на очень примитивном примере, а затем будем ее совершенствовать.
Пример будет такой, у нас есть основной поток, или как его принято называть super loop.
В нем мы будем проверять нашажие кнопки, и включать красный светодиод.
И еще один поток, мигающий светодиодом.
Кроме потоков нам нужен планировшик, он должен запускать потоки, останавливать и так далее.
К планировщику нужен таймер.
Перед началом работы, запускам таймер, который должен генерировате прерывание раз  в какойто квант времени.

В обработчике прерывания от таймера прячется планировщик:

OnTimer1OVF()
{
  IF(Флаг_выполнения_потока)
  {
      //Сейчас мы не можем обрабатывать другие потоки
  }
  ELSE
  {
      FOR(i=0, i < Количество_потоков, i++)
      {
            IF(потоки[i].зазор >= потоки[i].период)
           {
            //Время с момента завершения предыдущего вызова потока, превысило или равно,                        желаемуму периоду выполнения потока, можно вызывать снова.
                Флаг_выполнения_потока = 1;              
                потоки[i].зазор = 0;
                потоки[i].shot();
                return();
           }
      }
  }
}
Завтра допишу!