avatar_clawham

Разработка народной BMS на BQ77PL900

Автор clawham, 04 Март 2014 в 00:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

acyd

Софт -  терминал, для обменом данными через компорт. Блютуз считай компорт. Терминалы есть почти под любую операционку\ железо.
Фактически выглядит как окошко с командной строкой - ты ему печатаешь команды, оно выдает всевозможный текст и даже возможно текстовые рисунки/графики (называется ascii или псевдографика). Как в старых хакерских фильмах  B-)

Хотя [user]clawham[/user], вроде сделал софтинку под окошки.

clawham

#127
Написать то написал. Но это пока только монитор и только под мобильные окошки PocketPC с VGA экраном.


https://cloud.mail.ru/public/14082c1e8f76/2014-06-14

На картинках только что собранная новая батарея 15 ячеек последовательно. И таких гирлянды две. потому ячеек итого - 30 штук. 2 сдвоенные платы смартбмс, один блютуз.
Программа пишет текстовый лог который потом можно посмотреть на большом компьютере в виде графика.
Каждый час начинается новый файл.

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

typedef struct
{

unsigned         char MAC;                      // Адрес платки 
     
unsigned         int BattFullCycleCount;        // кол-во полных циклов батареи - от отсечки по превышению до отсечки по переразряду
unsigned         int BattHalfCycleCount;        // кол-во неполных циклов батареи - от разряда больше 1 минуты до отсечки по перезаряду

unsigned long    int TotalDSGWh;                // Общее кол-во ваттчасов разряда
unsigned long    int TotalCHGWh;                // Общее кол-во ваттчасов заряда

unsigned         int BalanceStart;              // Напруга начала балансировки
unsigned         int BalanceDelta;              // максимальный разбег балансира в милливольтах
unsigned         int BalanceMin;                // Начальное значение минимальной ячейки
                                           
unsigned         int UpperLimit;                // Верхняя отсечка
unsigned         int UpperDelta;                // на сколько должно снизиться напряжение от отсечки для снятия ошибки

unsigned         int LowerLimit;                // Нижняя отсечка
unsigned         int LowerDelta;                // Насколько должно подняться напряжение для снятия ошибки
unsigned         int LowerTimeReset;            // Задержка снятия ошибки

unsigned long    int CHGCurrLim;                // Ошибка по перетоку зарядки
unsigned long    int DSGCurrLim;                // Ошибка по перетоку разрядки
unsigned         int CurTimeReset;              // Время сброса ошибки по току

unsigned         int ShountResist;              // 1000 - 1 миллиоммный резистор
unsigned         int IGainLO;                   // Коэфф усиления тока Маленький
unsigned         int IGainHI;                   // Коэфф усиления тока Большой
unsigned         int IPosOffLO;                 // Позитивный оффсет 1
unsigned         int IPosOffHI;                 // Позитивный оффсет 2
unsigned         int INegOffLO;                 // Отрицательный оффсет 1
unsigned         int INegOffHI;                 // Отрицательный оффсет 2
unsigned         int IPosCutoff;                // Неучитываемый позитивный ток
unsigned         int INegCutoff;                // Неучитываемый отрицательный ток

unsigned         int VCELL_Offset[10];          // офсет напруги замеренной ячейки,     нуль    = 32768
unsigned         int VCELL_Ku[10];              // множитель напруги замеренной ячейки, единица = 10000

unsigned         int MinVBatt;                  // минимальное и максимальное напряжение ячейки
unsigned         int MaxVBatt;

unsigned         char SpeedoType;               // тип спидометра 1-НЧ 2-ВЧ
unsigned long    int SpeedoPKm;                 // Кол-во импульсов спидометра на километр
unsigned long    int Speedo_M_H_Hz;             // Скорость соответствующая 1 герцу метров в час

unsigned         int CellMeasureInterv;         // Базовая задержка измерения ячейки
unsigned         int CellMeasureBalOff;         // Время после отключения баланса до замера ячеек
unsigned         int CellDivider;               // Делитель дельты новоизмеренного и старого напряжения
unsigned         int CalibUpdInterv;            // Частота обновления калибровок
unsigned         int TemperatureUpdInterv;      // Задержка на очередное измерение температуры
unsigned         int TemperatureMeasureInterv;  // Задержка на измерение температуры датчиком

unsigned         int IntTempOff;                // Офсет внутреннего датчика

unsigned        char CRC;                       // CRC
} CONF;

1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

clawham

#128
Для тех кто получил комплект модулей прикладываю блок-схему соединения всего этого добра

Спойлер



и версия без умощнителя балансировки
Спойлер


1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

kag46

Салют!  :hello:
Вроде все компоненты на руках, exept bluetooth платы, сам модуль в пути, но не весь обвес для него взял - можно ли будет через usb - uart временно с платкой общаться?
Для самих плат тоже все вроде готово - решил с помощью фоторезиста делать - с лут постоянно отваливались дорожки еще до травления - мб в принтере или тонере дело, а может в утюге с руками  :bn:
опять же - когда получил детальки - не ожидал, что они будут настолько маленькие - хочу спросить совета как лучше микросхемки припаять, при этом не перегрев их - на сколько понял с ними могут быть проблемы (поэтому взял 14 328 мег :-) ). Для этих целей есть паяльная станция LuKey 702 с феном, так понял лучше новые нормальные жала для нее взять - только увидел что их просто море разных вариаций - посоветуйте плз какие будут наиболее удобны для изготовления этих платок. :ah:
Варю продаю кашу из Топпера:
magic pie 3 + markII от e4bike, самопальная батарея из lipo пакетов 14-15Ah, пока 13S1P->17S1P, up to tbd км/ч. Смотри восточный базар.

Следи за собой, будь осторожен.

clawham

#130
Я паяю паяльником ЭПСН-25
Жало затачиваю овалом но боковые грани подтачиваю под прямым углом к плоскости овала...получается форма зализанной шлицевой отвертки.

как паять? мега например не боится вообще ничего :))) накидываеш флюса , ложиш микруху, выставляеш ноги(я с обратной стороны платы фонарик на 700 люмен ставлю - четко видно на просвет что нога не попадает на площадку)и паяю сначала легооонечко первую ногу, потом уже посильнее прижав пинцетом - диаметрально противоположную, потом сильно придавив пинцетом снова прогреваю первую ну а остальные просто провожу паяльником. главное много припоя не брать иначе сопля между ног получится и избавиться от неё иногда по 10 минут тыкаешся зубочисткой.

бкю аналогично. у неё ноги длинные и потому проводить паяльником сложнее...я возюкаю вдоль дорожек до упора в ногу и назад на 2-3 мм ....такие зигзаги получаются.

Вместо блютуз модуля пойдёт обычный USB-uart без проблем вообще. Нужно только ноги RX TX замкнуть 100 омным резистором. Линия подключается минусом к земле преобразователя а плюсом к RX входу. линия оптоизолирована так что особо бояться нечего. При ошибках передачи/приёма - надо уменьшать резистор. вплоть до его полного отсутствия. некоторые usb-uart уже имеют резистор омм 50 :)

Можно и в обычный ком-порт аппаратный но нужна мах232 и 5 кондериков по 1-10 микрофарад и +5 вольт питания.

По поводу ЛУТа. У меня утюгом тож ничего не получается вообще. криворук блин. А вот когда взял старый дохленький ламинатор!!! процесс пошел на ура. Скорее всего у Вас мало температуры и вы просто не прогрели тонер.
Я свою заготовку мою. Потом тру наждачкой строительной не самой мелкой вдоль, потом разворачиваю на 90 и снова тру. получаются клеточки(есл ина свет присмотреться)
Потом просто накладываю распечатанный шаблон (печатаю на каталоге AVON) и в ламинатор. раз 5-6 проганяю и оставляю на столе остывать. Пока остывает иду ставлю водяную баню бутылке с хлорным железом. вода примерно 80 градусов. Пока ХЖ греется - беру остывшую платку и в воду на 5 минут. Потом достаю и под краном смело пальцем счищаю бумагу. потом круговыми движениями кончиком пальца прохожусь по тонким местам. Потом иду за стол и закрываю скотчем обратную сторону. и дальше в ХЖ. 5 минут и готово.
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

Night-Prizrak

Доброго времени суток!
Давно слежу за темой с огромным интересом и не менее огромным удовольствием от проделанной работы! Отличная разработка и великолепная подача материала! Спасибо!
Но поскольку "чукча читатель" то и пишу не из праздного интереса. Есть вопросик.
Насколько я понял в устройстве уже существует амперметр и спидометр. А не составит Вам труда ввести еще 1 вычисление в программу? Текущий и прогнозируемый (на 100км) расход в АЧ и/или ВтЧ?
И второе. Есть ли возможность сделать дисплей к девайсу? Поскольку проект и по финансам и что главное по возможностям уже переплюнул обычную БМС - былобы классно сделать его чем то типа борткомпа в топливной сфере - ЖК дисплей со спидометром, расходомером, показаниями ячеек (может что то еще, но эти три вида данных имхо самые важные)
Сорри за возможные ошибки, пишу с мобилки

clawham

По обоим пунктам конечно же однозначное ДА!

Мало того дисплей УЖЕ ЕСТЬ! Покупаете на барахолке или новый Fujitsu-Siemens PocketLOOX 718 720? заливаете мой образ в него и получаете логгирование, рисунки баночного разбега, побаночное напряжение, и кучу всего всякого разного статичтического. Имея 720 мегагерц на борту и 128 метров памяти я могу делать там все что моей душе угодно!

Впринципе расчет текущего и прогнозируемого расхода я хотел закинуть в атмегу но у меня уже 328 мега за 79% заполнена. а ещё планируется загрузчик. это ещё 2-4 килобайта(из 32-х) потому по сути места уже нет. И кроме того первая платка итак уже на 7 миллиампер кушает больше ибо только она занимается расчетом тока ваттов и расходов ваттчасов и амперчасов, считает скорость и пробег текущий общий и поцикловый, при наличии термодатчиков ещё и с них информацию считывает. Получается что первая платка почти никогда не засыпает в эконом режим. Потому закидывание туда ещё тонны вычислений с плавающей точкой не считаю нужным. Выводить то эти данные всеравно должен другой микроконтроллер или тот же лукс на винде. а там уже считай засчитайся. Потому концепция пока вот такая. На текущий момент есть много недоделок в расчетах расходов и токов, в алгоритме подсчета циклов. все нужно проверять мониторить и отлаживать.

Но проект жив! Будет развиваться, доделываться, баги исправляться. И в итоге конечно получится чтото типа борткомпьютера заведующего основным показателем - сколько ещё можно проехать.
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

Night-Prizrak

#133
У меня есть HP hx4700, который я могу пустить для этого дела ) хорошая машинка, хоть и явно устаревшая. Но про дисплей именно ЖК я спросил не просто так. Я имел ввиду обычный ЧБ дисплей, работающий на отраженном свете. Единственный дисплей, который не выцветает на солнце.
Ну и попутно вопрос. Будет ли работать Ваше ПО только на Луке, или на любой 2003 ОСи? Как будет себя чувствовать на ВЖА разрешении?

PS. Касаемо ЛУТа.
Категорически советую вместо глянца "авон" попробовать печать на фотобумаге (такая бумага на которой струйниками фотки печатают. Имеет характерную "липкую" на ощупь поверхность.) - совершенно иной уровень удобства работы м качества получаемого результата.
PS2. Для идеального прилипания тонера к плате плата должна быть очищенной от окислов и максимально ровной (без царапин от наждачки), в идеале отполирована. После обезжирена ацетоном, высушена на воздухе, и распечатку нужно приложить так, чтоб не оставить отпечатков пальцев ни на листе, ни на плате - тогда оттиск тонера хрен чем от платы отдерёшь, кусками не отпадает, сидит мощно и ровно )
Тонкости премудростей почерпнул отсюда http://easyelectronics.ru/izgotovlenie-pechatnoj-platy-ot-i-do-video-urok.html

clawham

Моя программа написана на .net 2.5 и потому может работать и на большом компьютере если подсунуть одну dll которая есть только в покет 2003. И да. она написана изначально только под 640х480. wm2005 идут лесом.

По поводу вашей ХП - отчичнейший кирпич! Конкурент луксу в свое время. Но у моего лукса на сонце экран не выцветает! чем ярче в него светиш тем четче он показываает. так же как и на нокии n82 n90 и прочих. Это те самые трансфлективные экраны. Лукс на сонце вообще не требует подсветки. и цвета различимы.

а НР помоему более цветастый но молейшее сонце и пипец. :)

а по поводу того что вы говорите ....ну....хмм...впринципе-то....никто не запрещает но сейчас у меня это на последнем месте стоит. Еще одно устройство с нуля я не потяну. сначала разобраться с прошивкой по воздуху, потом допилить прогу на луксе чтоб по менюхам лазить и все все все данные собирать оттуда. А потом уж извращаться. ито я не думаю что это будет чтото на 320х240. не вижу смысла...скорее всего примитивный спидометр для экрана нокии 1100 и там же примитивная гистограмка банок и разбегов. Почему? А потому что лукс стоит 200 грн в идеальном состоянии с двумя батареями! он на одной сутки работает в этом режиме. Я просто банально не вижу смысла в микроконтроллере когда тут такие удобства.
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

Night-Prizrak

Спасибо за развёрнутый ответ!
Нашел по местному Лук 720, куплю на след неделе, пощупаю его )
Если действительно дисплей на солнце не выцветает - то это просто клондайк для байкера! можно к нему жпс привинтить внешний БТ или в ЦФ слот.
Правда не уверен что можно одновременно по БТ каналу 2 устройства цеплять (БМС и ЖПС) или можно?

kag46

Интересно, на сколько сложное по для КПК в реализации - на сколько сложно будет сделать вариант для android/iOS. Нужны какие-то спец библиотеки или только сложность в реализации аналитики приходящих данных о состоянии банок?
Варю продаю кашу из Топпера:
magic pie 3 + markII от e4bike, самопальная батарея из lipo пакетов 14-15Ah, пока 13S1P->17S1P, up to tbd км/ч. Смотри восточный базар.

Следи за собой, будь осторожен.

clawham

никаких сложностей нет.
Пишите если сможете.
Насколько мне не изменяет память то bluetooth SPP Profile в андроиде нетивного нет...следовательно его нужно реализовывать на нетивном апи блютуз стека а это капец. Дальше проблемы с файловой системой...я пробывал и не мог добиться стабильного создания файла и его регулярный автофлушинг. постоянно конец лога терялся. Дальше прикол с процем. Если в wm2003 можно не глушить проц и он будет клоцать и дальше то в андроиде такого нет. надо целый тасклист составлять из идиотическиг мегаструктур на запуск своего процесса по таймеру. иначе приложение уйдёт в слип и ничего не будет делать пока выключен экран. В общем я решил что та неделя которую я потратил на андроид меня полностью убедила - гуано оно и в африке гуано. Писать под андроид я больше в жизни не буду пробовать. По крайней мере пока они хотябы эмулятор нормальный не сделают.

Кроме того расскажите мне программисты андроидщики механизм исключений? Ну вот как сделать так чтоб прога не падала по пустякам? в wm есть try catch внутри которого может происходить что угодно хоть деление на ноль. просто в кетч попадет сообщение об ошибке и все. делай дальше чо хош. а тут вышел за дверь вернулся блютузка потерялась и приложение кагбэ есть но оно фоновым процесом вылетело уже. хз . с меня хватило :)
Я уж tyt говорю что аже на планшете с 4 ядрами и 2 гб оперативки этот блядоандроид постоянно закрывает и выгружает мою прогу. многозадачности просто неть.

Код дешифратора обычной строки я думаю приводить не нужно?
Спойлер

Так я обрабатываю ком-порт
while (SerialReaderEnabled && (Timeout > 1) && serialPort1.BytesToRead < 1)
                {
                    Timeout--;
                    Thread.Sleep(10);
                }

                if (!SerialReaderEnabled)
                    return;

                if (Timeout == 1)
                {
                    // вышли по таймауту - ничего не присылали - будем слать заготовленное
                    while (ToSend.Count > 0)
                    {
                        try
                        {
                            str = ToSend.Dequeue();
                            serialPort1.WriteLine(str);
                        }
                        catch (Exception ex)
                        {
                            TextBox2Add(" Error writing port");
                        }
                        //Thread.Sleep(10);
                        //TextBox2Add(serialPort1.ReadLine());
                    }
                }
                else
                {
                    // есть что принимать - будем принимать
                    // читаем строку
                    str = " ";
                    try
                    {
                        str = serialPort1.ReadLine();
                    }
                    catch (Exception ex)
                    {
                        bool res = true;
                        try
                        {
                            str = serialPort1.ReadExisting();
                            res = false;
                        }
                        catch (Exception ex2)
                        {
                            TextBox2Add(" Error reading port");
                            throw ex2;
                        }
                        if (res)
                            serialPort1.Close();

                    }

                    // пишем в файл
                    sw.WriteLine(str);

                    // извлекаем данные из строк
                    ProcessString(str);

                    //печатаем строки
                    TextBox2Add(str);

                    if (MEasuresTotal > 1800)
                    {
                        //Exception ex = new Exception("Exceeds MAX measures per file");
                        //throw ex;
                        sw.Flush();
                        sw.Close();
                        serialPort1.Close();
                        return;

                    }


а так я декодирую строки

public int ProcessString(String s)
        {
            int result = 0;

            if (s.IndexOf("#1") >= 0)
            {
                // это строка от первой платы
                return PrcSubstr(s, 1);
            }

            if (s.IndexOf("#2") >= 0)
            {
                // это строка от второй платы
                return PrcSubstr(s, 2);
            }

            if (s.IndexOf("#3") >= 0)
            {
                // это строка от третей платы
                return PrcSubstr(s, 3);
            }

            if (s.IndexOf("#4") >= 0)
            {
                // это строка от четвертой платы
                return PrcSubstr(s, 4);
            }

            if (s.IndexOf("#5") >= 0)
            {
                // это строка от пятой платы
                return PrcSubstr(s, 5);
            }

            if (s.IndexOf("I:") >= 0)
            {
                // данные по току ваттам и миллиамперчасам
                //currmeasure++;
                VoltageChanged = true;
                MEasuresTotal++;
                return 1;
            }

            return result;
        }



вот так обрабатывается строка напряжений

public int PrcSubstr(String s, int PlatNum)
        {
            int result = 0;
            int cp = 0;
            s = s.Replace('.', ',');
            String Pl = "#" + PlatNum.ToString();
            cp = s.IndexOf(Pl);
            if (cp < 0)
                return 0;
            cp = cp + 4;
            float[] f = new float[10];
            for (int a = 0; a < 10; a++)
            {
                // перебираем ячейки
                f[a] = -1;
                try
                {
                    f[a] = float.Parse(s.Substring(cp, 5));
                }
                catch
                {
                }
                cp += 6;
                if (f[a] > -1)
                {
                    result++;
                }
            }
            if (result < 4)
                result = 0;
            else
            {
                for (Int16 a = 0; a < result; a++)
                {
                    Cells[a + (10 * (PlatNum - 1))] = f[a];
                }
            }
            return result;
        }


а так рисуется гистограммка с разбегом ячеек


using (Graphics g = Graphics.FromImage(b3))
                    {
                        int MaxWidth = b3.Width;
                        int MaxHeigh = b3.Height;
                        String str = "";
                        int xyoffset = 7;
                        int CurrX = xyoffset;
                        int CurrY = xyoffset;

                        Font ff = new Font("LCDMono2", 9F, FontStyle.Bold);

                        int Ymod = MaxHeigh / (MaxProgresses / 2);
                        int Xmod = (MaxWidth - (xyoffset * 2)) / 2;

                        g.Clear(Color.Black);

                        g.DrawLine(p1, CurrX, CurrY, CurrX, MaxHeigh - xyoffset);

                        for (a = 0; a < MaxProgresses; a++)
                        {
                            {
                                str = " P" + (1 + (a / 10)).ToString() +
                                      " C" + (a % 10).ToString() +
                                      "=    " + Cells[a].ToString("0.000") + " V";

                                // рисуем ячейки
                                t = Cells[a];
                                t = t - (min);
                                t = t / (max - min);
                                t = t * (Xmod-4);

                                if (t > 5)
                                {
                                    g.FillRectangle(b4, CurrX + (xyoffset / 2), CurrY + 2, Convert.ToInt32(t), Ymod - 4);
                                }
                                g.DrawString(str.Trim(), ff, br2, CurrX + (xyoffset), CurrY+2);
                                g.DrawLine(p1, CurrX, CurrY, MaxWidth - xyoffset, CurrY);

                                CurrY += Ymod;
                                if (CurrY >= (MaxHeigh - (Ymod)))
                                {
                                    CurrY = xyoffset;
                                    CurrX += Xmod;
                                    g.DrawLine(p1, CurrX, CurrY, CurrX, MaxHeigh - xyoffset);
                                    g.DrawLine(p1, CurrX, CurrY, MaxWidth - xyoffset, CurrY);
                                }
                            }
                        }
                        g.Dispose();
                    }
                    pictureBox3.Image = b3;


1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

JT

Здраствуйте.
Пока в ожидании BQ77PL900  уже распаял балансир и силовой размыкатель.
Походу есть пара вопросов
R18 и R20-R22, R25 зачем в паралель и номинал R18  100 ом?
И может ктото знает какую зарядку взять на литийполимер ориентировочно 16-20 банок?

clawham

В балансире три резюка спарралель и два таких блока последовательно - туда по 10-11 омм.

в силовом размыкателе это резисторы предзаряда конденсаторов. Туда предусмотрены места для СМД резисторов и их надо много ибо на один корпус мало пиково ватт дозволено, и паралельно ним можно выводной 1-5 ваттный впаять. Можно И чип И выводной. На них выделяется пиково до 100 ватт(смотря сколько напруга) потому их надо подбирать исходя из того что кондеры хотябы до 75% должны успеть зарядиться к моменту включения основных силовых полевиков(ориентировочно 1 - 1.2 секунды при 1 мегаомме и 10 vra и чистой плате). Для большинства контролеровдостаточно просто удвоить напряжение питания и это и будет искомый резистор(у управляющих биполярников пиковый ток 1 ампер так что сильно не увлекайтесь уменьшением).
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

kag46

Доброго времени суток!
Как опыт эксплуатации? выявились ли какие-нибудь недостатки?
Варю продаю кашу из Топпера:
magic pie 3 + markII от e4bike, самопальная батарея из lipo пакетов 14-15Ah, пока 13S1P->17S1P, up to tbd км/ч. Смотри восточный базар.

Следи за собой, будь осторожен.

kag46

[user]clawham[/user], подскажите пожалуйста,
Наконец то появилось время развести платы, благо с фоторезистом наконец получилось, и вот дело дошло до монтажа, начал с силового размыкателя и не пойму что монтировать - проблема в номиналах резисторов - в списке одни, на фото со стр6 другие, а в протеусе третьи - check sum failed.... Чему верить?
Заранее спасибо!
Варю продаю кашу из Топпера:
magic pie 3 + markII от e4bike, самопальная батарея из lipo пакетов 14-15Ah, пока 13S1P->17S1P, up to tbd км/ч. Смотри восточный базар.

Следи за собой, будь осторожен.

zap

Правильно я понял из даташита на BQ77PL900 что она не годится для лифера?
Если так, большая жаль. TI умудрились изгадить хорошую идею.
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

SolarRay

Цитата: zap от 15 Авг. 2014 в 02:01BQ77PL900 что она не годится для лифера?
Годится, но только под внешним управлением.