Jump to content

    

Сергей Борщ

Модераторы
  • Content Count

    9158
  • Joined

Posts posted by Сергей Борщ


  1. 2 часа назад, zaicev_ekb сказал:

    Куда копать уже не знаю

    В сторону обработки ошибок по приему, например. Биты данных во всех посылках совпадают, биты четности для приемника с отключенной проверкой четности должны вызывать ошибку приема стопового бита (framing error). В вышей программе эта ошибка, вероятно, не обрабатывается. А поскольку биты данных во всех форматах совпадают - посылка принимается правильно.

  2. 7 часов назад, варп сказал:

    Вы пишите - нельзя - почему "нельзя" ? Судя по картинке - можно...

    Потому что двигатель находится внутри конструкции (авиационного прибора), из которой торчит разъем на кабеле. Двигатель обычно находится в глубине конструкции и чтобы добраться до его контактов придется разобрать конструкцию почти до основания. Разбирать конструкцию чревато - можно или что-то сломать в процессе или не собрать обратно. А некоторые приборы вообще герметично запаяны.

    7 часов назад, варп сказал:

    Есть смутное подозрения, что здесь чисто последовательное соединение обмоток не используется...

    Я не знаю, откуда вы берете эти картинки, вот картинка из справочника Копылова по электрическим машинам:

    image.thumb.png.c312ce5f1ae9e9f3cffe0bffd8fa8dcc.png

    Но даже в этом справочнике нет той схемы, по которой эти двигатели включены в, наверное, половине авиационных приборов:

    image.thumb.png.8583730210ef27bd9ba32bc6875e97a9.png

    Так почему и мне нельзя использовать подключение "не по справочнику"?

    И, кстати, вспомнил, используется такое включение: 

    image.thumb.png.e079ca2488f4af07d730fa05484c7c4b.png

     

  3. 1 час назад, Егоров сказал:

    Но полвека назад радиоприемник с чувствительностью 1.5 мкВ умели делать с питанием от вибропреобразователя.

    Увы, наши годы бегут и "полвека назад" было, пожалуй, еще плюс лет 20-30 назад?

  4. 2 часа назад, варп сказал:

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

    Вот да, меня тоже это смутило, поэтому я и задал вопрос на форуме, где может кто-то изучал курс электрических машин. Ваша аналогия с реле заставила заглянуть в документацию на реле:

    image.thumb.png.1b8f9597b68516c4716d0f269c1a77c8.png

    как видно, одно и то же реле на разное рабочее напряжение имеет одинаковую подводимую мощность (не считая последней строки).  Если глянуть, для простоты прикидок, на реле с рабочим напряжением 3 и 6 В, то видно, что ток падает вдвое, напряжение растет вдвое, а сопротивление обмотки увеличивается вчетверо. понятно, что для укладки на тот же каркас вдвое большего количества витков потребовалась проволока вдвое меньшего сечения, отсюда и вчетверо бОльшее сопротивление, но количество ампер*витков осталось тем же.

    У меня же обе обмотки намотаны одинаковым проводом и, получается, логической ошибки нет: невозможно этим же поводом намотать бесконечное количество витков из-за ограничений на габариты обмотки и, следовательно, невозможно получить бесконечно маленькую мощность управления.  Минимально достижимая мощность (максимальный КПД) должна получится при максимальном заполнении магнитопровода обмотками. А если начать уменьшать диаметр провода чтобы еще больше увеличить количество витков - ток начнет спадать быстрее, чем расти число витков и для получения того же количества ампер*витков придется уже поднимать напряжение.

  5. 1 час назад, варп сказал:

    Первый раз слышу про этот двигатель...

    Вся авиация на нем летает.

    1 час назад, варп сказал:

    Обратите внимание на картинки...

    Эти картинки вообще непонятно откуда. Двигатель расчитан на питание обмоток возбуждения и управления напряжением 36 В частотой 400 Гц.

    1 час назад, варп сказал:

    То есть - равные моменты, потребуют РАВНЫХ мощностей управления ...

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

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

     

  6. 03.07.2020 в 00:32, Егоров сказал:

    Или лабораторный 5А ( фильтры на выходе приличные) источник с выставленным ограничением тока в 1А. 
     Проблема надумана.

    Да-да-да. Лабораторный источник, напряжение (по недосмотру) 12 В, ограничение тока при замкнутых выходных клеммах выставлено на 10 мА. Подключаем индикаторный smd светодиод с максимальным током по документации в 20 мА. Вспышка светодиода, щелчок реле в лабораторном источнике, сигнализирующий о переходе в режим стабилизации тока, светодиод тут же гаснет, источник переходит в режим стабилизации напряжения. Светодиод в мусорку. Проверено неоднократно.

  7. Имеем двухфазный индукционный двигатель ДиД-0.5, у него есть обмотка возбуждения (36 В 400 Гц) и две обмотки управления. Обычно обмотки управления включаются либо параллельно к выходу мостовой схемы управления, либо же конец одной обмотки и начало второй подключаются к источнику питания, а подачей напряжения управления частотой 400 Гц (со сдвигом по фазе на 90 градусов относительно возбуждения) на начало первой либо конец второй обмотки выбирается направление вращения, т.е. фактически для вращения в каждую сторону используется только одна обмотка управления. У меня схема управления имеет мостовой выход, а обмотки управления соединены последовательно с выводом от средней точки (соединение обмоток поменять на параллельное нельзя).

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

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

  8. 11 часов назад, Xenia сказал:

    Вроде бы у всех STM32 есть отдельное прерывание точно в середине буфера

    Выражение "на полпути" здесь было применено в переносном смысле. Мы-то с вами знаем, что половина не может быть большей или меньшей, но бОльшая половина народа этого не понимает :acute:

  9. 2 часа назад, Sergey_Aleksandrovi4 сказал:

    Неделю с этой бедой воюю, не знаю на что ещё грешить.

    Есть какие-то 16 или 32-битные переменные, которые изменяются прерываниях, а читаются в основном цикле? Если да, то обращение к ним в основном цикле должно происходить атомарно, т.е. при запрещенных прерываниях. В противном случае возможна ситуация, когда прерывание меняет переменную между чтениями ее байтов в основном цикле. Или наоборот - прерывание может обращаться к переменной между записями разных ее байтов в основном цикле.

  10. 41 минуту назад, Sergey_Aleksandrovi4 сказал:

    Посмотрел ассемблерный листинг, AtmelStudio (GCC) в прологе/эпилоге обработчика прерывания не сохраняет SREG.

    Покажите, как вы описали обработчик. У меня все сохраняется. Покажите сам обработчик - может у вас там только асм-вставка с некорректным описанием и компилятор не знает, что эта вставка портит SREG.

    41 минуту назад, Sergey_Aleksandrovi4 сказал:

    К тем, кто пользуется GCC. Есть какой-то общий шаблон для написания обработчиков прерываний? Может ключевые слова какие, настройки компилятора и т.п. Или пишете вручную

    ISR(TIMER0_OVF_vect)
    {
       //тут код
    }
    

     

  11. 1 час назад, compote сказал:

    Если в дескрипторе репорта нет Report ID, значит он нулевой-) Правильно?

    Значит его нет. Но если у вас несколько разных Report-ов, то нельзя сделать один без Report-id, а остальные с Report-id.

    1 час назад, compote сказал:

    Пусть у меня есть Report ID - 1 байт, данные 64 байта, итого 1 + 64, но на контроллер приходит только 64 байта, из которых первый Report ID, это не так? 

    Это так, но это не весь Report. Конечная точка может передать за раз не более 64 байтов. Более длинные пакеты передаются за несколько транзакций. Если в очередной транзакции принялось меньше 64 байтов (даже 0 байтов)  - это конец пакета. Поэтому пакет длиной 64 байта передается как одна транзакция длиной 64 байта и вторая длиной 0 байтов. 65 байтов передаются как 64+1. Как чтение таких пакетов реализовано в кубе - я не в курсе. Может он сам выделяет Report-id.

  12. 51 минуту назад, compote сказал:

    Чего его разбирать, в дескрипторе репорта указано, что нет Report ID, поэтому весь пакет отводится под данные, правильно?

    Как вы поймете, что его нет? 

     

    51 минуту назад, compote сказал:

    И непонятно, если есть Report ID отличный от нуля, с компа отправлять 65 байт или 64?

    Я не знаю, как еще объяснить. Вроде уже и английскую цитату привел, и русским языком написал. Читайте по губам:

    Если у вас может быть больше одного типа Report-ов, то Report-id передается всегда. Вне зависимости от его значения. Если Report только один - его Report-id можно не передавать, в этом случае он не указывается в дескрипторе.

    Если ваш Report имеет размер 64 байта и вам нужно передавать Report-id - вы передаете 65 байтов.

  13. 1 час назад, compote сказал:

    Скорее всего по дескриптору репорта. 

    Поставьте себя на место второй стороны. Вот пришел пакет. Как вы его будете разбирать? Как только вы осознаете, что вторая сторона никак не сможет различать такие посылки - вы поймете, что вы или прочитали какой-то ненадежный источник, или поняли его неправильно. В Device Class Definition for Human Interface Devices (HID) четко сказано:
     

    Цитата

    If no Report ID item tags are present in the Report descriptor, it can be assumed that only one Input, Output, and Feature report structure exists and together they represent all of the device’s data.

    ...

    If a device has multiple report structures, all data transfers start with a 1-byte identifier prefix that indicates which report structure applies to the transfer.

    Т.е. если ваше устройство имеет только один тип Report-а, то он не передается. И номер его совершенно ни при чем. Во всех остальных случаях ReportID передается.

  14. 10 минут назад, compote сказал:

    Немного почитал, пишут, что если Report_ID = 0, то все данные пакета отдаются под данные.  

    И как вторая сторона отличит этот пакет с первым байтом данных, равным 1 от другого, у которого в первом байте передается report_id = 1?

  15. Может кто-то подскажет,  а то что-то гугля выдает не то, что я хочу.

    Имеем сеть устройств (водяные счетчики), умеющих LoRaWAN 1.0.3 (реализация стека "из куба STM32"). Их задача только отсылать показания раз в час.  Обратной связи (подтверждений приема) нет -  если какая-то посылка или даже несколько пропадет -  не страшно. Они все прекрасно зарегистрировались через OTAA и все замечательно работает. Теперь предположим ситуацию, что сервер регистрации сгорел (физически) и сессионные ключи шифрования на нем безвозвратно утеряны. Ставим новый сервер с нуля. В спецификации 1.0.3 нет никаких намеков на rejoin-сообщения, есть только фраза "An end-device has to go through a new join
    procedure every time it has lost the session context information". Это если устройство потеряло session context. Про ситуацию, когда session context потерян на стороне сервера в спецификации ни слова. Получается,  после такого фатального события надо обойти все счетчики и передернуть им питание, чтобы запустить OTAA заново, раздать устройствам DevAddr и сгенерить новые сессионные ключи шифрования. Я все правильно понял?

  16. Спасибо. Скорее всего я ограничусь подъемом оригинальной железки - чтобы жаба не задушила за выкинутые 14 евро. А в боевом устройстве будет F042. Несовместимость с протоколом, опять же, плохо - планировал использовать canhacker. Но с удовольствием посмотрю ваш вариант, чтобы не содить по лигним граблям.

  17. В LWIP точно реализован. 

        {
            int Value = 1;
            lwip_setsockopt(New_socket, SOL_SOCKET, SO_KEEPALIVE, &Value, sizeof(Value));
        }

    Также обратите внимание на #define LWIP_TCP_KEEPALIVE. Его включение добавляет возможность менять TCP_KEEPIDLE, TCP_KEEPINTVL TCP_KEEPCNT (как именно - легко найти поиском в исходниках по "LWIP_TCP_KEEPALIVE"). Если не включить, будут использоваться прибитые гвоздями значения по-умолчанию TCP_KEEPIDLE_DEFAULT, TCP_KEEPINTVL_DEFAULT, TCP_KEEPCNT_DEFAULT.

  18. 8 часов назад, MPetrovich сказал:

    А в чём смысл установки метки именно после считывания результата конверсии?

    На завершение преобразования есть прерывание и это прерывание привязано к совершенно конкретному событию - концу преобразования. На начало преобразования прерывания нет, может вы будете дергать ногой в одном событии и на осциллографе все будет красиво, а преобразование на самом деле будет запускаться в совсем другое время от совсем другого события.

  19. 29 минут назад, MW_Юрий сказал:

    А какое отношение Вы имеете к бизнесу

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

     

    32 минуты назад, MW_Юрий сказал:

    это не Ваша забота и распоряжаться всем этим никогда не будете.

    Но ведь это и не ваша забота тем более.