fixik_papus (fixik_papus) wrote,
fixik_papus
fixik_papus

Про криворуких уродов. (Записки гравицапера). (репост)

Взято отсюда с разешения автора
Справедливости ради отметим, что это - этап R&D, альфа-тестирование, но тем не менее
Орфография и пунктуация сохранены авторские, посему положено поставить значок "18+"

---------------
Меняют танкисты гусеницу у танка.
А тут к ним подлетает фея и спрашивает:
-А, что это вы тут делаете?
-Е-ся.
-А по настоящему хотите? - спрашивает фея.
-Конечно хотим!- закричали танкисты.
Взмахнула фея своей палочкой и... у танка отвалилась башня.


Поступило предложение от поставщиков, сменить серво-драйверы, на драйвера следующего поколения. Они типа лучше, дешевле, и в них полно всяческих фитчеров и самое главное полностью совместимы со старыми.
Я конечно не был в восторге такого предложения, на кой мне такой головняк, менять что-то проверенное, на что-то не проверенное, но и чётких аргументов, почему нет, у меня не было. И хоть моя интуиция не сулила мне ничего хорошего, но интуицию к делу не пришьёшь.

Для не специалистов, серво-драйвер - это такая штуковина которая умеет крутить серво-мотор.
Дарайвер сидит на шине EtherCat, по нему он получает от компьютера каждую миллисекунду команду куда ему ехать, и возвращает в компьютер реальное положение мотора и состояние его периферии цифровых и аналоговых входов и выходов, и ещё к нему можно подсоединить второй энкодер со входом заморозки.
Всё, это самая минимальная конфигурациям, самый, что ни на есть стандарт, никакими наворотами я там пользоваться не собирался, а посему решил, что всяческих баги в навороченных фитчерах (которых там должно быть как мух в навозной куче), мне не помешают. И тут начался 3.14-здец, причём 3.14-здец много ступенчатый.

3.14-здец N1. Кабели.
В новом драйвере, есть новая система подключения энкодера. Она очень навороченная, она поддерживает десятки вариантов подключения, различных типов энкодеров, даже таких о которых я никогда не слышал.
Нет только одного варианта подключения - так как на старом драйвере. Блядь драйвер предназначенный для замены старого и требует переделки всех кабелей. Это дравйвер относительно легко меняется в шкафу, а вот кабели, они проложены внутри машины, их вытащить, перепаять и проложить наново - это ещё та задача.

3.14-здец N 2. Скорость.
Выяснилось, что с новым драйвером мотор работающий на 1000 [RPM], начинает сходить с ума на 460.
Причём 3.14-доры из технической поддержки долго заявляли, что у них всё работает.
Твою мать, это что, какой-то хитрый наворот. Просто берешь любой мотор с таким же энкодером и смотришь на 460 он работает, а на 470 уже сходит с ума.
В конце-концов я уже допёр, что криворукие уроды не могут работать с энкодерами высокой резолюции, просто потому, что кто-то в коде под дельту выделил 16 бит, вместо 32 и на 463 [RPM] происходило переполнение. Уже когда я им написал, что и где искать, мне прислали новую версию для прожига.

3.14-здец N 3. Температура.
Карточка EtherCar начала греться и вылетать при работе сообщая, что у неё "Over tempature".
После долгой переписки мне прислали новую версию для карточки, где они подняли уровень определения ошибки. После этого карточки конечно падать не перестали, но зато вместе сообщена "Over tempеrature", появилось сообщение "Communication failure".

3.14-здец N 5.Communication failure.
Даже после нескольких версий карточки, периодические крешы не прекратились, хотя и стали реже.
Очередной маил расставил всё точки над i.
Фирма обещала 4 PDO (пакетов даты отправляемой по EtherCat) по 12 переменных, и один на 32 переменных, фактические работал только один PDO на 12 переменных. Остальные пока не поддерживаются, но всё бы ничего, если бы мне не сказали, что ни в коем случае нельзя передавать положение экодера и аналогового входа в одном PDO, блядь он у меня всего один.
Т.е. аналоговый вход есть, его можно откалибровать, прочитать, но нельзя передать его значение в компьютер.

3.14-здец N 6. Encoder freeze.
Разобравшись с 3.14-здецом N 5, путём использования внешнего АЦП другого производителя, я столкнулся со следующей проблемой.
Вход заморозки энкодера (Эта такая штука которая при подаче не неё сигнала должна "заморозить" значение энкодера в специальном регистре) с точностью 40 нано секунд, на самом деле работает с точностью +-500микро секунд, т.е. в 12,5 тысяч раз хуже обещанного.
Для тех кто не понимает, что это такое объясняю на примере.
Если объект двигается со скоростью 5[м/сек], то его положение можно зафиксировать с точностью 0.2 микрона, при точности заморозки 40 нано секунд, а если точность 500 микро, то ошибка составляет 2.5 миллиметра.
Твою мать - это единственная функция этой карточки. Как вы её проверяли. Теперь пишут, что мол подожди новой версии которая возможно выйдет в конце марта.

3.14-здец N 7. Ethernet failure.
Это вообще самый 3.14-здецовый 3.14 -здец. Просто потому, что он вообще ломает всю картину мира и золотой принцип - не трогай г-но, вонять не будет.
Нет я понимаю, что в драйвере есть итернет соединение, но я им не пользуюсь, от слова совсем, там даже кабелей нет.
Во время работы вдруг посыпались сообщения о проблемах с итернетом.
Очередная версия от фирмы производителя, которая должна решить проблему с девайсом который мне вообще нафиг не нужен.

Update.
3.14-здец N6. Продолжение.
Прислали новую карточку энкодера.
Баг починили, латч работает правильно и с заданной точностью, но зато вернулсяй 3.14-здец N5 .Communication failure.
У меня непроходящее желание взять ихнего программисте и бить его ногами, до тех пор пока он не поймёт, что в прерывании от энкодера, только копируют регистры, а обработку данных делают в свободное время или в прерывании более низкого преоретета чем EtherCat.

И это, только очень серьёзные косяки, которые не возможно объехать никакими ухищрениями.
В общем, знакомьтесь

Tags: Байки от коллег
Subscribe

Posts from This Journal “Байки от коллег” Tag

Buy for 10 tokens
Buy promo for minimal price.
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 99 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →