zHz00 Untitled

среда, 10 апреля 2019
23:30 Об отладке движущихся железок
Каков обычный подход к отладке? Запускаем, потом смотрим, что получается. Если получается не то, что надо, то разбираемся в оставшихся ошмётках, пытаясь по ним определить, что произошло.

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

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

Вот что я придумал, пока пытался ничего не сломать:
1. Точки останова и интерактивную отладку вообще следует использовать с большой осторожностью. Пока программа остановлена, движущиеся части могут продолжать двигаться. Поэтому точки надо ставить ПОСЛЕ команд, которые всё останавливают, а не до. Важно помнить, что если точка стоит на строчке с командой Stop(), то команда выполнена не будет! Надо ставить на следующей строке. Если вам нужно поставить точку там, где нет тотальной остановки, её надо туда временно добавить.
2. Тем не менее, запускать весь алгоритм целиком -- опасно. Тут есть два метода:
а) Алгоритм надо разбить на отдельные этапы, между которыми программа будет вставать на паузу, а все движущиеся части останавливаться. По кнопке программа должна выполнять следующий кусок, если предыдущий прошёл успешно. А если нет -- как раз в этот момент можно будет покопаться в памяти при помощи интерактивного отладчика. Таким образом отладка будет состоять не из серии прогонов и разборов полётов, а из серий прогонов кусков 1, 1+2, 1+2+3 и т.д.
б) Начальные точки движения частей надо расположить подальше от препятствий, а диапазоны перемещений сделать маленькими, поэтому даже если система поедет не туда, она ничего не вывернет.
3. Отладка должна вестись одной рукой. Вторую надо держать на выключателе, который всё обесточивает (система должна быть разработана так, чтобы при пропадании питания по инерции ничего не ехало, но это задача не программиста; ещё одна задача не программиста -- минимизировать риск столкновения частей при штатной работе, например механически ограничить зоны деятельности разных деталей так, чтобы они никогда не пересекались).
4. Во время правки кода система должна быть выключена, а программа не должна выполняться, т.к. пока код не отлажен, что-то может поехать, пока вы отвернулись и уткнулись в монитор. У меня так поехало, причём я до сих пор не знаю, когда поехало и почему.
5. Удобство интерфейса отладочной многокнопочной утилиты (или что вы там используете) очень важно. Чем понятнее для вас всё сделано, тем меньше шанс по ошибке нажать не ту кнопку. Очевидно, что надо перед нажатием чего бы то ни было вообще по два раза проверять, что вы нажимаете. Непонятное расположение кнопок, двусмысленные надписи, разные единицы измерения в разных полях ввода -- это всё очень опасно.
6. Выдавать окошечки с кнопкой ОК для информирования вас о чём-либо -- плохая идея. Они перекрывают главное окно, а могут вообще его блокировать. Таким образом, вы теряете контроль над установкой.
7. Отдельного трактата достойна обработка исключительных ситуаций. Это дело я пока вообще только обдумываю. Например, управляющая программа может УПАСТЬ, а любые подчинённые микроконтроллеры -- зависнуть или умереть. Какие части будут продолжать двигаться после этого? Насколько долго? Сколько промасленных котов намотает на вал? Как можно от этого защититься?

Меня утешает, что тем, кто пишет ПО для спутников, приходится гораздо хуже.

@темы: Программирование, Борьба с техникой, Статьи

URL
вторник, 09 апреля 2019
22:58 Отпечатки пальцев, мухахаха
В г. Новочеркасске я зашёл в Магнит, что-то там взял и спросил у кассирши, есть ли сдача с 5000? Она сказала, что есть.

Я отдал ей 5000, после чего она осмотрела банкноту. А затем она открыла амбарную книгу (на самом деле просто тетрадь) и стала переписывать в неё серийный номер купюры. Там целая таблица была.

Я спросил, со всеми ли банкнотами они так делают или только с пятитысячными? Она сказала, что только с пятитысячными.

А сдачу дали двухтысячными.

@темы: Случай из жизни, Наблюдения

URL
понедельник, 08 апреля 2019
21:04 Untitled [550]
Добро должно быть с кулачками.

@темы: Викторика

URL
воскресенье, 07 апреля 2019
20:27 Презерватив
Сегодня я ел гамбургер. Нет, я делал это не в первый раз.

Когда-то я дал обет не ходить в МакДоналдс. Не помню, когда и кому. Кажется, обет я дал себе -- когда прочитал "Оно" С. Кинга. В МакДоналдсе я ни разу не был. Но обета не есть еду оттуда я не давал. И мне пару раз доставались тамошние гамбургеры. Они мне не понравились. Есть их неудобно. Привкус странный. В общем, фе.

Но тут меня завели в бургерную, где готовят, как выразился коллега, "правильные бургеры". С'ел я этот гамбургер и понял, что просто в МакДональдсе -- лохи. Гамбургер может быть вкусным!

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

Когда я гамбургер доел, то я понял, что перчатки -- это не блажь для педантичных аккуратистов. И они нужны не для того, чтобы держать гамбургер чистым от грязных рук. Они нужны для того, чтобы держать руки чистыми от гамбургера!

@темы: Лайфхак, Наблюдения

URL
суббота, 06 апреля 2019
23:17 Ответная часть
Очень нишевый совет. Если не можете взять с собой в поездку нож, то возьмите точильный камень.

@темы: Лайфхак

URL
пятница, 05 апреля 2019
23:08 Сон разума порождает не только чудовищ
С одной стороны -- программирование -- это творческое занятие. Но с другой -- ремесло. Эффективность работы во многом зависит от наработок, опыта, а не от какой-нибудь музы.

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

Как я себя хвалил, когда не думая сделал понятную (для меня) структуру очередного модуля! Модуль был написан ударными темпами за полчаса и сразу забыт. Я пошёл спать, а когда с утра вернулся к коду -- пришлось выяснять, как там что. И это выяснение заняло всего пару минут.

@темы: Программирование, Очевидное-невероятное

URL
четверг, 04 апреля 2019
22:45 Как я летал на самолёте
Летал первый раз, было интересно.

Сначала я зашёл в аэропорт и стал проходить первый контроль. Прошёл, поднимаюсь по эскалатору, вдруг слышу сзади окрик -- "а сумку кто не забрал?" Это был я. Пришлось возвращаться.

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

В самолёте мне не понравилось то, что при под'ёме и при спуске закладывает уши. Лететь был эмоционально не страшно, хотя я всё время фантазировал, что мы сейчас будем падать и разбиваться.

Пытался следить по GPS, как проходит полёт. Очень интересно: GPS отлично работал на земле и всю середину полёта. Но от взлёта до набора высоты -- и от начала спуска до посадки -- GPS работать не хотел.

Про переезд в Ростов-на-Дону -- было первое апреля, но не совсем. Я в командировке.


@темы: Случай из жизни, Общественный транспорт

URL
среда, 03 апреля 2019
22:33 Время Евы
К посетителю в кафе подсел знакомый.
Официант: Вам ещё приборы принести?
Посетитель: Осциллограф, пожалуйста.

@темы: Викторика

URL
вторник, 02 апреля 2019
01:24 Цветик
Я купил беруши. Я пару раз покупал их до этого. Один раз повезло, другой не повезло. В этот раз мне вынесли беруши марки... 3M. Я даже не знал, что они беруши делают. Фирма мне эта была знакома как изготовитель, в первую очередь, пятидюймовых дискет. А ещё у меня на работе есть наушники этой фирмы. Шумоподавляющие. Работают.

В коробочке с берушами была инструкция. Я её открыл -- и очень удивился. Взгляните сами:


Стишок в инструкции к берушам! Замначальника какого-то там участка рудника! Я сначала думал -- это он заплатил, чтобы его стишок опубликовали в инструкции -- или ему заплатили?

А потом решил этот стишок загуглить. И обнаружил, что в интернете этот стишок существует с 2007 года. Присутствует, как правило, в докладах школьников по теме "звук". И нигде не указано его авторство. Кроме того, у стишка есть ещё одна строфа, которая тут отсутствует. По ФИО этого замначальника тоже ничего интересного найти не удалось.

Загадочная история.

@темы: Наблюдения

URL
понедельник, 01 апреля 2019
02:10 Аптека, улица, фонарь
В последние несколько дней об'ём моих постов резко сократился. Я был очень занят.

Завтра я уезжаю жить в Ростов-на-Дону. Как часто смогу писать посты -- пока не знаю.

@темы: Другое

URL
воскресенье, 31 марта 2019
23:13 О конкуренции
Делал новую симку.

Кассир: Вы пользуетесь ещё какими-нибудь операторами?
Я: ВСЕМИ!

@темы: Случай из жизни, Викторика

URL
суббота, 30 марта 2019
23:59 Untitled [549]
Завтра у него был выходной: он взял работу на дом.

@темы: Викторика

URL
пятница, 29 марта 2019
23:59 Untitled [548]
Пропустить метропоезд ближе к полуночи "потому что народу много" -- плохая идея. Мало того, что интервал больше, чем днём, так ещё и часть составов проезжают станцию мимо. Поэтому время ожидания может оказаться большим. А в следующем нормальном поезде тоже будет "народу много".

@темы: Фейлы, Общественный транспорт, Наблюдения, Очевидное-невероятное

URL
четверг, 28 марта 2019
23:42 Колесо без оси
В установке смешанное питание: большая часть однофазная, но есть трёхфазный двигатель.

Пока мы тестировали однофазную часть, всё работало. Потом подключили трёхфазную. А однофазную стали питать от одной из фаз трёхфазного.

При попытке включения установки выбило УЗО. Электрик-электронщик долго смотрел, прозванивал -- но никаких неполадок не нашёл. Кабель питания был сделан правильно, фазы разведены правильно, нейтраль на нейтрали. Переключились обратно на однофазное -- работает.

Я посоветовал электрику-электронщику проверить розетку. Розетка тоже трёхфазная, пятиконтактная. В моём понимании выбивать УЗО могло, если нейтраль и земля в розетке перепутаны местами (но почему это не обнаружили раньше?). До этого я думал, что земля и нейтраль перепутаны внутри установки, но эта гипотеза не подтвердилась.

При проверке напряжений в розетке

ОКАЗАЛОСЬ

что в ней нету 220 вольт. Только 0...15 и 380. А это могло означать только одно. Земля и нейтраль не были перепутаны. Нейтрали не было вовсе! Почему же этого никто не замечал? Потому что в помещении, где мы работали, стояли станки. Станок, который штатно питался от той трёхфазной розетки, которую мы одолжили, не требовал нейтрали, поскольку с электрической точки зрения состоял из одного трёхфазного двигателя. Трёхфазным двигателям нейтраль не нужна.

Я изучил потом щиток: действительно, все трёхфазные отводы от щитка идут без нейтрали (но зато с землёй). А нейтраль идёт только в однофазные линии.

@темы: Борьба с техникой, Электроника

URL
среда, 27 марта 2019
23:59 О документации
Аморфный пост разрозненных мыслей.

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

***

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

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

***

По тексту выше может сложиться впечатление, что я разводки кабелей на бумажке рисую. Так и есть (но не всегда). Однако документация в единственном экземпляре -- это ОЧЕНЬ плохая идея. Поэтому после того, как я нарисовал разводку, я её обязательно фотографирую. Также на бумажке я указываю метаданные: дата, версия и наименование того, что рисую.

@темы: Мысли, Электроника, Очевидное-невероятное

URL
вторник, 26 марта 2019
23:59 Untitled [547]
Ущерб, который получаешь, совершая доброе дело -- это бесплатное приложение к отсутствию благодарности.

@темы: Тухлые идеи, Мысли

URL
понедельник, 25 марта 2019
23:59 Мир к праху, прах -- к миру
В компьютерах интерфейсы RS-232, RS-485 и подобные сейчас применяются редко (хотя даже на современных платах бывают раз'ёмы для COM1; видимо это сделано для суровых вещей типа удалённой отладки драйверов и ядер операционных систем) . Но в промышленном и встраиваемом оборудовании они применяются повсеместно. Потому что -- дёшево и сердито.

Я не раз налаживал связь между компьютером/контроллером и такими устройствами. И очень часто связь с первого раза не налаживается. Устройство тупо не отвечает на запросы. Самая очевидная проблема тут -- несовпадение скоростей. Но с ней я встречаюсь не очень часто, т.к. в документации скорость почти всегда (лол) указывается.

А вот вторую проблему я всегда называю в качестве подозреваемого. И угадываю!

Вторая проблема в том, что перепутаны линии данных при распайке. Для RS-232 перепутаны TX и RX, для RS-485 перепутаны Data A и Data B. Почему так происходит?

В случае с TX/RX не очевидно, следует ли запаивать TX к TX (обычно при пайке кабелей одноимённые контакты соединяются) или TX к RX (если исходить из предположения, что названия выводов устройства подписываются с точки зрения устройства). ОБЫЧНО TX надо соединять с RX, т.к. действительно названия выводов подписываются с точки зрения устройства, которому эти выводы принадлежат. Поэтому то, что устройству "приём", то компьютеру -- "передача". Точно так же, к примеру, сигналы типа "in" означают "ввод" сигнала в текущую микросхему, а не ввод в подключённые к ней устройства.

В случае с Data A/Data B дело веселее. Хотя какой-то там стандарт предусматривает фиксированные названия, но реально бывает написано в документации на одно устройство -- "Data A (+), Data B (-)", а на другое -- "Data A (-), Data B (+)". И хорошо, если полярность вообще указана. По идее, надо соединять плюс с плюсом, а минус с минусом.

Эти косяки разводки не вредят устройствам -- достаточно поменять местами контакты.

@темы: Борьба с техникой, Электроника

URL
воскресенье, 24 марта 2019
23:59 Сон для слабых
RAM
DATE&TIMEза несколько дней до 2010/01/11
SCENE TITLEДесять негритят
OUTLINEСтудентке стало плохо на лекции. Что же теперь предпримет преподаватель?


У нас в институте был один суровый препод. Он всегда был очень серьёзен. Если он замечал студента за чем-то странным, то ругал его за несерьёзность. Одна из его фраз -- "у нормальных студентов ручки со столов не падают".

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

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

@темы: Случай из жизни, Летопись

URL
суббота, 23 марта 2019
23:59 Плохой UX и под'ёмник
Сегодня меня учили пользоваться ручным под'ёмником. Почему учили? Потому что сам я не догадался, как его использовать.

Сам я, инженер с высшим образованием, широко известный в узких кругах интеллектуал и эрудит, не догадался. А там всего три рычага.

По логике при отгибе главного рычага вилы должны подниматься, обеспечивая под'ём груза. Но это не работало. Тогда я обнаружил внутри рукоятки ещё одну ручку. Я стал её нажимать, думая, что надо нажимать главный рычаг при нажатой маленькой ручке. Но это тоже не помогло.

ОКАЗАЛОСЬ

что чтобы можно было груз поднимать, маленькую ручку надо нажать ВНИЗ! Она зафиксируется в этом положении. При чём же тут плохой UX? Дело в том, что насечки для пальцев имеются на ручке только снизу, т.е. ничто не указывает на то, что она вообще может быть вниз нажата.

@темы: Фейлы, Восприятие

URL
пятница, 22 марта 2019
23:59 Шар Свиборга
На работе аврал. В середине рабочего дня обнаружил, что сижу с очень напряжённым лицом. Прямо всё лицо напряжено. Обычно так не бывает. Пришлось вручную расслаблять.

***

-- Ты что, заболел?
-- Ага.
-- Может, домой тогда пойдёшь? А то вдруг нас заразишь?
-- Это у меня аврал, а не у вас. Поэтому я буду тут сидеть. А вы, если не хотите заразиться, можете сами домой идти.

Очень неожиданный эффект произвела последняя фраза -- все засмеялись.

@темы: Восприятие

URL