Разработка → Как проектируют ненастоящие программисты

Jef239 2 января в 08:27 62,3k
Настоящие программисты — это облака, big data, high load… А у нас — практически DIY. 2 установки — уже тиражирование, 100 штук — производство… Но зато атомные ледоколы, маневровые локомотивы, трактора, шлюзы, мосты, опускающиеся вниз от лишнего асфальта, беспилотники размером в дом, 50 человек персонала на цех длиной больше двух километров… и надежность, надежность, надежность… И пяток гендиректоров в костюмах прямо на поле при демонстрации системы на тракторе…

image
Обычное окончание отладки — убираем антенны с путеправильной машины

Итак… пришла просьба от коллег — написать ТКП (технико-коммерческое предложение) на хитрый GPS-трекер. И комментарии, что большие и настоящие делать отказались.

Мда… мы, конечно, занимается GPS, но мягко говоря совсем другим. Не трекерами, а высокоточкой. Ну как колышется мост можем измерить. Или спутниковый компас сделать. А трекеры — не наше. Но интересно же попробовать там, где настоящие отказались!

Основной целью работы является выполнение п. 597 Федеральных норм и правил в области промышленной безопасности «Правила безопасности при ведении горных работ и переработке твердых полезных ископаемых»

Есть карьер. На нем ездят карьерные экскаваторы и грузовики. И работают люди. Кто не знает — карьерные машины большие. Из кабины — людей не видно. За последние годы — у заказчиков пара ДТП с человеческими жертвами. Поэтому нужна система для предупреждения столкновений. То есть умные GPS-трекеры.

Понятно, как это делают большие и настоящие. GPS-трекер по мобильной связи (GPRS, 3G) передает координаты на сервер БД. Сервер БД выдает координаты серверу приложений, тот определяет возможность столкновения и по интернету пересылает предупреждения в диспетчерскую. Из диспетчерской они как-то (SMS? Пейджер? Радиовызов?) передаются персоналу. Начинаем думать, почему отказались большие.

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

точность позиционирования.

При этом точность позиционирования должна составлять:
для карьерного автомобильного транспорта и бульдозеров — не более 3 м;
для железнодорожного транспорта — не более 1 м;
для исполнительных механизмов буровых станков и добычного оборудования — не более 0,1 м;
для персонала — не более 3 м.

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

Ага, уже понятно. Точность бытовых приемников GPS и GNSS — 3 метра КВО-50. То есть 50% времени — они дают точность в 3 метра, 49.8% — от 3 до 9 метров и 0.2% дальше. А в ТЗ скорее всего имеется ввиду 3 метра КВО-95. То есть 95% времени ошибка должна укладываться в круг радиусом 3 метра. Ну это понятно как решается. Вместо бытового — берем полупрофессиональный приемник, поддерживающий DGNSS. Это такая система, когда есть неподвижный приемник с известными координатами. Он вычисляет ошибку приема по каждому спутнику и передает эту ошибку другим приемникам — подвижным. А те уже считают с учетом известной ошибки (прежде всего ионосферной). ОГО! В проекте уже появилась базовая станция и канал связи базовой станции с приемниками.

Приемник берем российско-украинский NV08C-CSM от КБ Навис. Ну просто потому, что авторы знакомые. Значит — при проблемах получим консультацию. Смотрим параметры — в режиме DGNSS точность 1 метр СКО, то есть 1.7 метра КВО-95. Уложились. И сержантский зазор хороший.

Что у нас дальше? Передача по GPRS/3G. Читаем ТЗ: Удаленность операторской от карьера цементных глин составляет 7 км., от карьера известняка – 100 км.. Смотрим на карту — что с покрытием сотовых операторов? А черт знает, что там, в карьере. На поверхности — может и 3G будет, а вот внизу в карьере… Значит связь трекеров с базовой станцией — по радиоканалу. Выбираем LoRa, ну хочется нашему электронщику поиграть с этой технологией потому что он дешев и производителен. Заодно — экономим заказчику на эксплуатационных расходах. Оплачивать 3 симки дешевле, чем 40.

Узнаем про интернет — не видели его на этих карьерах. А как же связь с диспетчерской? Значит нужна GSM антенна на мачте. И не просто антенна, а с усилителем. Вспоминаем Сочи и 1 пакет раз в 20 минут по GPRS. Хоть и не сезон был, но вечером сота была забита голосовой связью и на GPRS слотов не оставалось. Потом вспоминаем, как обновлением ПО в Питере на день положили всю сеть Fora. Не, одного оператора нам мало. Делаем 3 вышки — каждая на своего оператора.

А раз 3 вышки — значит 3 базовых станций DGNSS и 3 канала LoRa. Как раз влезем в диапазон с частотным разделением. Впрочем, временное разделение, наверное лучше?

Что там дальше у больших? Сервер приложений, определяющий опасное приближение? А он нужен? А если интернета не будет? Не, мы параноики. Связь трекеров с базовыми станциями у нас есть. Координаты в эфир трекеры передают. Трекеры друг друга слушают. Значит трекер сам может определить, есть ли кто рядом. И кто это — человек или машина. А если не может? Ну через карьерный самосвал радиосигнал может плохо пройти. Значит страховочная система — на базовых станциях. Они тоже анализируют приближения и выдают сигнал тревоги на трекер.

Сервер БД? Да ну его к бесу в диспетчерскую. Мнемосхему диспетчерской — рисуем на Мастер-скада, от неё же и сервер. Но с сервером и мнемосхемой коллеги справятся лучше нас — это их часть в общем проекте. А наша — трекеры и базовые станции.

image

Принципиальная схема уже понятна. Едем дальше. Дальше у нас электропитание. С базовыми станциями — все хорошо. Питаем 220 вольт по кабелю. Отключится кабель — не страшно, есть еще две. Не будет электричества совсем — ну худо-бедно, хрум-хрум-хрум, но трекеры работать будут. Диспетчерская отключится, но обнаружение опасной близости людей к технике останется. С потерей точности — но останется.

А что с питанием трекеров? Литиевая батарейка, как у больших? А как её менять, когда она разрядится? Настоящие трекеры не шлют данные раз в секунду, у них трекер в основном работает в спящем режиме. Не, делаем питание на двух аккумуляторах 18650. Причем вначале питаемся от одного, а после его полного разряда от другого. Для проверки питания — ставим кнопочку и светодиод. Нажали — горит, значит норма. Мигает длинно — правая батарейка разряжена. Мигает коротко — разряжены обе. Ну и зарядную станцию — чтобы все вместе заряжать ночью. Карьер работает в 1-2 смены, так что ночь на зарядку есть. А не будет ночи — просто увеличим число батарей и буде их менять между сменами.

А что с трекерами на автомобилях? А вот тут осциллограф нужен. Непонятно, то ли их тоже от батарей питать, то ли можно от бортовой сети + ионистор. Проблема в том, что при переходе автомобиля от питания о аккумуляторов к питанию от дизеля — идет бросок напряжения и наши приборы зависают. Надо с осциллографом поотлаживаться, понять, что там за бросок. Но пока что решаем, что бортовая сеть лучше.

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

Соответственно у нас три прибора: базовая станция, носимый трекер на батарейках со встроенной антенной и автомобильный трекер с питанием от бортовой сети и антенной на крыше.

Дальше у нас водители. Водителю трекер нужен? Да похоже, что нужен. Если водитель вышел из машины — его стоит предупреждать о движении других машин. А что делать при посадке в машину? Будет же звенеть постоянно. Значит нужна функция отключения звона нажатием на кнопочку. Заодно решаем проблему с подвозом на машине. Подошел к машине, трекер звенит. Нажал на кнопочку — трекер замолчал до выхода из 3хметровой зоны.

А нужно ли отслеживать самосвал по пути от карьера к жд-станции или заводу? Да вроде нужно, но это уже как опция. Ставим в автомобильные трекеры 3G-модемы, но как опцию. Цену даем повыше — тут «большие» умеют лучше нас, пусть заказчик у них отдельную систему покупает.

Ну что, составы устройств понятны.

  • Базовая станция: приемник GNSS, 3G-модем, мачта, антенна GNSS, антенна 3G, усилитель 3G, блок питания (220 на 5 и 12 вольт), радиопередатчик LoRa, антенна LoRa, процессор Renesas, ОС linux.
  • Носимый трекер: приемник GNSS, антенна GNSS, радиопередатчик LoRa, антенна LoRa, процессор STM32, FreeRTOS, зуммер, кнопка, светодиод, 2 батарейки.
  • Автомобильный трекер: приемник GNSS, радиопередатчик LoRa, 3G-модемпроцессор STM32, FreeRTOS, зуммер, кнопка, светодиод, 2 батарейки.
  • Выносимая на крышу часть автомобильного трекера: антенна GNSS, антенна 3G, антенна LoRa.
  • В домике на КПП: зарядная станция и ночное хранилище носимых трекеров. Там же — дубль пульта диспетчера, получающий данные через инет со скады.

Дальше плюшки, то есть то, что нам не заказывали, но что легко можно сделать как опцию:

  1. Подача сигнала SOS с носимых и передвижных трекеров;
  2. Приём сигналов радиовызова (до 4-х вариантов сигналов);
  3. Сканер для определения направления на засыпанных обвалом людей;
  4. Геомониторинг оползней по бокам карьера;
  5. Геомониторинг краев карьера;
  6. Адаптивная частота опроса (от 1 раз в секунду до 1 раза в минуту) в носимом трекере в зависимости от возможности столкновений. В том числе — при нахождении в машине;
  7. Роутер для раздачи интернета в прикарьерном домике;
  8. Обеспечение нескольких АРМ оператора путем установки размножителя данных;
  9. Анализ исторических данных (треков и аварий).

Что осталось за кадром? Бюджет радиоканала. Тут прежде всего нужны исследования на карьере. Но тем или иным способом мы связь обеспечим. И связь трекеров между собой и базовых станций с трекерами и базовых станций между собой. В самом крайнем случае базовые станции будут передавать по кругу, раз в 3 секунды каждая. А роверы — на каждой секунде. Связано это с тем, что от базовой станции идет поток в 25 раз больше, чем от ровера: координаты всех 20 роверов + поправки DGNSS.

P.S. Как и бывает в 80% случаев, тендер выиграло собственное КБ заказчика. Ну да, они в Брянске, у них зарплаты ниже и аренда офиса дешевле. Ну мы не в обиде. Пару дней можно над интересным проектом и бесплатно поработать.

UPD1: По наводке Wicron уточняю, что оповещение и пешеходов и водителей делается путем подачи звукового сигнала (звонка) через зуммер.

UPD2: В комментариях отметилось много желающих сделать систему предупреждения столкновения и наездов на основе RFID. Увы, нам заказали не «систему предупреждения столкновений», нам заказали выполнение п. 597 Федеральных норм и правил в области промышленной безопасности «Правила безопасности при ведении горных работ и переработке твердых полезных ископаемых». А нарушение данных правил влечет за собой ответственность вплоть до уголовной. Речь о статье 216. "Нарушение правил безопасности при ведении горных, строительных или иных работ"

Основные требования правил:

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

Правила не запрещают делать систему на основе радиосредств, ульразвука, инфракрасных датчиков, но передача информации о положении должна идти по всей территории карьера. Это примерно 2.5 на 1.5 километра.

UPD3. По просьбе TheShock пишу подробнее про бюджет радиоканала LoRa. Про само разделение каналов в LoRa много рассказывать не буду, но оно бывает частотное, кодовое и временное.

Проблема такая. Каждый трекер передает 37 бит: 23 бита координат, 8 бит скорости, 1 бит — кнопка SOS, 5 бит — номер трекера. Базовая станция передает координаты и скорости всех 20 трекеров, то есть 620 бит + 30 бит поправок DGNSS +5 бит на номер станции, всего 655 бит. Если все сидят на одном частотном канале — то всего передается 2035 бит. Между передачами — защитные промежутки. В итоге передавать придется на скорости порядка 7 килобит, если не больше. Зато — самая широкая полоса передачи — 500 килогерц.

Есть другой вариант. Каждая базовая станция вещает на своей частоте. На той же частоте вещают те приемники, что ближе к ней. Тогда в среднем случае у нас 37*7 + 655 = 914 бит, а в худшем 37*20 + 655 = 1295 бит. Но у приемника появляется код для выбора частотного канала, а у базовых станций — второй и третий приемник LoRa, чтобы слушать каналы друг друга. И каналы в этом случае по 125 или 250 килогерц.

Есть ещё вариант. Базовые станции работают на одном канале, но каждая передает 1 раз в 3 секунды. Тогда у нас будет 1295 бит.

А какой вариант лучше — мы узнаем, когда подпишем договор, получим точные топографические карты карьеров и проведем компьютерное моделирование видимости при разном размещении вышек. Точнее уже не узнаем.
Проголосовать:
+107
Сохранить: