Суда ро флоу что это
Обновлено: 16.04.2024
Не допускать выхода судна в море с незадраенными клиновыми запорами кормового порта (ворот) и незадраенными винтовыми стопорами закрытых крышек аппарели и грузового люка главной палубы. Строго выполнять судовые инструкции по закрытию внутренних ворот и дверей водонепроницаемых переборок.
Постоянно следить за состоянием шпигатов, водоотливных сточных колодцев на всех палубах. Составить план-схему шпигатов, сделать их маркировку (план-схема шпигатов выдается с постройкой судна).
Составить план-схему всех палуб с указанием всех шпигатов, колодцев, а также производительности всех водоотливных средств по осушению трюмов.
План-схему держать в папке документов по борьбе за живучесть на ГКП (главный командный пункт).
В трюмах и машинных помещениях нанести марки летней грузовой ватерлинии, на верхней палубе — нумерацию шпангоутов и водонепроницаемых переборок.
Иметь табличные величины потери остойчивости (уменьшение метацентрической высоты) от влияния свободной поверхности воды при затоплении пустых отсеков водой в аварийных случаях через каждый метр по высоте.
Перед выходом в рейс для избежания потери остойчивости в случаях аварийного затопления отсеков водой по возможности произвести балластировку, обеспечив метацентрическую высоту не менее величины потери остойчивости от влияния свободных поверхностей воды в самом большом отсеке. Избегать при штормовой погоде положения судна лагом к ветру.
Предупреждать потерю остойчивости на попутном волнении, особенно при длине волны, близкой к длине судна.
Капитан должен пользоваться Информацией об остойчивости судна, Информацией по аварийной посадке и остойчивости судна при затоплении отсеков для обеспечения безопасности судна при различных обстоятельствах и условиях плавания. При сравнении случаев повреждения, могущих иметь место на практике, с расчетными случаями следует учитывать, что элементы аварийной посадки и остойчивости весьма разнятся, так как коэффициенты проницаемости могут быть иными.
Конструктивные особенности таких судов требуют исключительно внимания к вопросу обеспечения герметизации верхнего твиндека. Не допускать наличия свободных поверхностей в танках. Строго соблюдать симметричность заполнения бортовых танков.
При балластировке судна иметь запас балластировочных емкостей для создания в случае необходимости значительного дифферента на нос. Перед выходом в море проверить герметичность дверей и лазов на всех палубах, а также выполнить другие рекомендации, разработанные судовладельцем применительно к конкретным типам судов.
Есть много различных документов, регламентирующих разделение судов по типам, категориям, видам перевозимого груза, способов погрузки-выгрузки и прочему.
Никоим образом не хочу обидеть Википедию и многочисленные сайты с подобной тематикой, но все же предлагаю придерживаться документов Российского Морского Регистра судоходства (РМРС), как основного классификационного судового общества в России. Итак типы судов согласно РМРС:
- пассажирское судно - судно, предназначенное для перевозки или перевозящее более 12 пассажиров
- грузовое судно (любое судно, не являющееся пассажирским)
Предлагаю остановиться на этой градации и раскрыть тему немного глубже.
Пассажирские суда
Напомню, что это суда, перевозящие более 12 пассажиров. Самые распространенные – это круизные суда. Сегодня самые большие круизные суда перевозят до шести с лишним тысяч пассажиров.
В эту же категорию входят и пассажирские накатные суда (пассажирское судно «ро-ро» от англ. roll on – roll off- вкатывать-выкатывать). Это пассажирское судно, имеющее закрытые или открытые грузовые помещения с горизонтальным способом погрузки и выгрузки для заезда колесной техники. Как правило, это автопассажирские паромы.
Грузовые суда
У этих судов линейка гораздо шире. Грузовые суда делятся на типы в зависимости от видов перевозимого груза и способов погрузки/выгрузки: горизонтальный, вертикальный, комбинированный.
Самая большая категория судов – это сухогрузные суда , предназначенные для перевозки различных грузов (генеральных, контейнеров, металлопроката, леса, грузов насыпью и т.п.), кроме жидких грузов наливом.
К ним относятся:
Балкеры (навалочные суда) -этот тип судов тоже пользуется популярностью в морских перевозках. Название говорит само за себя: to bulk (англ) насыпать. Т.е. это суда, предназначенные главным образом для перевозки сухих грузов навалом, включая такие типы судов, как рудовозы и комбинированные суда для перевозки насыпных грузов. Это зерно, уголь, руда, щебень, удобрения.
Контейнеровозы - в связи с почти глобальной контейнеризацией грузов, этот тип судов очень востребован. Немного позже расскажу о том, как появился такой универсальный модуль, как контейнер. В основном, суда-контейнеровозы не оборудованы никакими судовыми грузовыми механизмами. Контейнеры грузятся по направляющим в трюмы и на палубу в несколько ярусов. Современные контейнеровозы могут брать на борт до 20 000 стандартных 20-футовых контейнеров. Более подробно о различных типах судов-контейнеровозов расскажу в отдельной статье.
Судно-контейнеровоз. Так называемый фидерный контейнеровоз, развозит контейнеры небольшими партиями (от 300 до 2,5 тысяч контейнеров) из больших портов-хабов (Антверпен, Гамбург, Роттердам) по Европе.
Судно-контейнеровоз. Так называемый фидерный контейнеровоз, развозит контейнеры небольшими партиями (от 300 до 2,5 тысяч контейнеров) из больших портов-хабов (Антверпен, Гамбург, Роттердам) по Европе.
Лесовозы. С этим типом судов все понятно: основной груз - это лес.
Рефрижераторные суда . И здесь не открою Америку. В название уже отражена способность перевозить температурные грузы, требующие поддержания определенной температуры при перевозке. Температурная «вилка» примерно такая: от + 14 до – 30 градусов Цельсия. Обычно это фрукты, в частности, бананы, киви, яблоки, мясо, мороженная рыба и морепродукты. В общем все, что может испортиться за долгий морской переход.
Ролкеры (накатные суда)-тоже очень востребованный тип судов. Суда с горизонтальным способом погрузки-выгрузки, (от англ. ro-ro (roll on-roll off) закатывать и выкатывать). Они перевозят колесную технику и железнодорожные вагоны. Эти суда хороши тем, что для них не нужно специально оборудованных грузоподъемным оборудованием причалов. Достаточно стандартного или прямоугольного причала, куда суда кладут так называемую рампу (аппарель), по которой колесная техника заезжает на судно. Еще есть суда, сочетающие горизонтальный и вертикальный способы погрузки/выгрузки, это уже ло-ро, (от англ. lift on-roll on).
К сухогрузным судам также можно отнести так называемые Heavy lift vessel - суда с кранами большой грузоподъемности для работы с тяжелыми грузами от 100 до 1000 тн.
Типичный heavy lift vessel, у него краны грузоподъемностью тонн по 300-400. На судно грузится буксир весом 350 тн.
Типичный heavy lift vessel, у него краны грузоподъемностью тонн по 300-400. На судно грузится буксир весом 350 тн.
Танкеры (наливные суда) - предназначенные для перевозки жидких грузов наливом, в том числе сырой нефти и нефтепродуктов.
Суда специального назначения (special purpose ship):
К таким судам относятся:
научно-исследовательские, экспедиционные, гидрографические, учебные суда, китобазы, рыбобазы и прочие суда, используемые для переработки живых ресурсов моря и не занятые их ловом, а также спасательные суда и суда для укладки кабеля.
Занятно, что ледоколы и буксиры относят к грузовым судам. Здесь я бы сделал ремарку: в моем понимании, грузовое судно, это то, которое перевозит грузы на постоянной коммерческой основе.
Понятно, что и ледокол, и судно-спасатель и судно-снабженец могут взять на борт какое-то количество коммерческого груза, но это делается на нерегулярной основе. Основное их предназначение, это все-таки: проводка и буксировка судов, обеспечение ледовой навигации, снабжение морских буровых установок и платформ, спасение судов.
Поэтому я ставлю эти суда в категорию:
Вспомогательные и служебно-вспомогательные суда
Сразу предвижу вопросы, поскольку повторюсь, есть множество руководящих документов по типам и предназначению судов, но в полемике, как известно, истина и рождается…
Снабженцы -это многофункциональные суда, как правило с хорошим ледовым классом. Обеспечивают морские буровые платформы.
Flow — это новая часть корутин, представленная компанией JetBrains и призванная сделать корутины более реактивным фреймворком, заменив собой Rx и LiveData. Забавно, что когда только представили корутины, одним из преимуществ, помимо легковесности, была практически синхронная работа. То есть вам не требуются колбэки и вы можете вычислять все данные прямо там, где они нужны.
После долгой работы внезапно выяснилось, что реактивность все-таки иногда нужна, а подходящего решения не было. Итак, что же такое флоу? Это обычная реализация паттерна наблюдатель. У вас есть источник данных и подписчик, и флоу как раз реализует источник данных. Вот сейчас вы можете видеть пример нескольких эмитированных интов.
Код, который может быть приостановлен располагается внутри блока flow и он может быть suspendable. Что еще раз нас приближает к так называемому подходу DSL, который очень моден в наше время и используется практически повсеместно, например, в очень популярной библиотеке, я бы даже сказал фреймворке - Jetpack Compose.
Видео по Jetpack Compose
Здесь тоже используется этот подход и на самом деле он мне очень нравится, я бы даже сказал, он мне кажется намного более удобным, чем старый подход с простыми функциями. Он ярко выраженный, то есть, если я смотрю код, то могу читать его практически как обычную книгу.
Давайте подробнее, возьмем наш пример.
Как мы видим, внутри функции simple мы выпускаем каждое значение i, пользуясь функцией emit. Учитывая, что я уже сказал, вы наверное уже догадались, что принт Flow started будет напечатан после Calling collect, как раз потому что запуск флоу является холодным, и на самом деле это очень круто, потому что вы таким образом можете регулировать жизненный цикл вашего флоу. Причем как вы видите на экране функция simple уже не является suspend, и это как раз потому что вы возвращаете себе как бы слепок будущих данных, а реальные данные вы начинаете получать уже в момент вызова collect.
Существует несколько различных способов вызова флоу, но в целом я думаю вы итак их легко найдете в интернете, это просто разные способы как нам создать поток данных и это собственно тоже самое как и в Rx. Нам иногда нужны различные подходы к одному и тому же делу.
Так же, как и с любым Observable, вы можете использовать и различные операторы трансформации, конкатенации и так далее. Если вы вдруг не понимаете, что за операторы я имею ввиду, то вот ссылка на видео по RxJava
Также, вместо onNext вы можете использовать onEach и это как бы несколько вас подвигает в сторону использования подхода работы не внутри самого subscribe или collect, а именно в аналоге doOnNext. И тоже самое при работе с ошибками.
Backpressure
Вкратце, это проблема, когда у вас слишком много данных для обработки. Я люблю приводить в пример приложение, которое служит синтезатором для миди-пианино. Представьте, что вы посадили виртуоза за такое пианино, а вам нужно отрисовывать на экране нотки, которые этот виртуоз играет. Если виртуоз будет играть слишком быстро, а отрисовка слишком сложная, то рано или поздно ваш телефон перестанет справляться с этой задачей и не сможет принимать новые данные, которые генерирует наш гений.
В случае с Rx это решается через Backpressure Strategy, а что с Flow? Если взять прям из коробки, то здесь все решается очень просто, ведь мы имеем дело с suspend функцией. Получается, если мы не можем обработать результат пришедший к нам из источника данных и мы имеем холодный запуск, то есть всем управляет именно коллектор, то мы можем просто держать функцию в suspend состоянии ровно до тех пор, пока наш коллектор не сможет обработать следующее значение. И это на самом деле довольно круто.
Но, скажет мне требовательный читатель, а как же другие стратегии? Что если мне нужно, например, сбрасывать значения, которые не смогли обработаться, или накапливать их в буфер и так далее. И вообще, что если моя функция генерирует данные с задержкой, зачем все это делать последовательно? И читатель будет абсолютно прав, ведь делать все это последовательно совершенно не нужно.
Давайте возьмем в пример функцию, которая будет так же генерировать нам инты, но при этом обработчик, то есть коллектор, тоже будет обрабатывать наш поток данных с некоторой задержкой, ну то есть наша ситуация с пианистом и отрисовкой на экране. Между нажатиями на клавиши 100 миллисекунд, и между отрисовками 300 миллисекунд.
Если мы это распечатаем, то увидим, что примерно все это обработается за 1200 миллисекунд, то в общем-то логично 100 + 300 умножить на 3 будет 1200.
Здесь нам поможет отличный оператор под названием buffer. Буфер это оператор для Flow, который позволяет нам запускать коллектор на другой корутине.
И это позволяет нам как выполнять параллельно работу коллектора и эмиттера, так и выбирать разные стратегии переполнения буффера. Как вы наверное заметили у функции есть два параметра. Первый - это капасити, который является флагом.
Здесь остановимся подробнее. Раз у нас эмиттер запущен в отдельной корутине и коллектор запущен в отдельной корутине, то нам нужно как-то передавать между ними данные. Для этого используется механизм Channel. Более подробно расскажу про него как-нибудь отдельно.
А второй параметр у нас фактически определяет стратегию, которой мы будем пользоваться при переполнении нашего буфера и здесь все очень похоже на RxJava, поэтому особо разбирать не будем. Но очень интересно взглянуть на саму реализацию буфера внутри.
Здесь мы видим более подробно, что capacity работает именно как флаг и что есть интересный флаг под названием Conflated , и на самом деле как мы видим из исходников это просто некая такая иконка на стратегию брать самый последний элемент из потока, то есть, в целом вы можете это реализовать через capacity = Buffered и стратегию Drop_Oldest . Также капасити принимает и любое не нулевое значение, что позволяет четко определить емкость данных для передачи в канале.
То есть, возвращаясь к нашему примеру, мы получим уже не 1200 миллисекунд, а около 1000 (на самом деле в тестах все время разное, но в среднем около 1050 мс). Это получается из-за того, что у нас есть некие сдвиги и иногда все же получаются паузы, когда простаивают и эмиттер и коллектор, но все равно 15% прирост времени просто за счет одного оператора это очень неплохо. Однако, как и в любой асинхронности, как только мы начинаем работать с неким общим ресурсом, а в случае андроида с любым долгоживущим запросом (сеть, чтение из базы данных или из файла) у нас сразу же встает проблема как это все делать на разных потоках.
Dispatchers
Как мы уже знаем из корутин у нас есть различные диспетчеры на которых мы можем выполнять те или иные действия. И так как в видео про корутины, где у нас был такой быстрый беглый взгляд мы особо никак не разбирали как это работает, я думаю будет правильно сделать это здесь. Видео про корутины:
Итак, что вообще такое диспетчеры? Наверняка вы делали в своем коде что-то вроде withContext(Dispatchers.Default), но возможно даже не задумывались над тем, что в этот момент происходит. В отличие от стандартной многопоточности, где мы создаем новый поток каждый раз, когда нам нужно сделать новую задачу, в корутинах мы можем иметь несколько корутин на одном потоке (и причем довольно много). Достигается этот эффект из-за тех самых точек приостановки, которые мы разбирали в видеостатье о корутинах:
Это набор различных элементов один из которых это Job, но об этом возможно расскажу как-нибудь отдельно. Самое главное, что нас интересует — это CoroutineDispatcher, который как раз и устанавливает связь между потоком или потоками и корутиной, которая должна выполниться. С помощью этого параметра мы можем запустить корутину на главном потоке, на новом созданном потоке, на каком-то специфичном потоке, который мы хотим указать и так далее.
Создавая корутину, не важно через launch или асинк, вы всегда можете указать параметром на каком диспетчере это будет сделано. А можете и не указывать, потому что этот параметр опциональный.
По коду ниже сразу видно что происходит когда мы указываем или не указываем диспетчер. Особый интерес здесь вызывает именно когда мы не указываем его. Потому что когда указываем тут примерно все понятно, а вот что будет если не указать в явном виде? В таком случае наша корутина унаследует контекст того места откуда была вызвана и если ее вызывать из главного потока, или точнее контекста, который привязан к главному потоку, то логично, что выполнена она будет на главном потоке.
Поэтому будьте аккуратны, вот буквально недавно сталкивался с запросом от одного из людей, что у человека были постоянные ошибки, как раз связанные с тем, что работа UI операций постоянно срабатывала на диспетчере, который был привязан к воркер треду. Причем как и многое другое, связанное с потоками это может давать весьма нетривиальные ошибки. То есть, когда у вас приложение крашится это на самом деле далеко не самый плохой вариант. Вы сразу понимаете ага ну упало, берете, фиксите и дальше живете спокойной жизнью, а вот когда например у вас приложение не падает, но перерасходует батарею на 20% больше, чем могло бы вот это страшно, потому что по моему опыту такое может жить годами, прежде чем это найдут. Вообще тем performance очень недооцененная, особенно для андроид приложений. Если эта тема интересна напишите в комментариях и я сделаю видео.
Итак я думаю более-менее с диспетчерами мы разобрались, но давайте теперь посмотрим как это работает в Flow. На самом деле довольно просто, но как всегда есть нюанс. Может показаться, что раз мы используем внутри нашего flow билдера suspend функции, то и контекст нужно переключать внутри них. Однако, это не так. При таком вот подходе
вы получите Exception, который в явном виде вам скажет, что у вас коллектор и эмиттер работают на разных диспетчерах и это мол недопустимо, поэтому такой способ переключения не работает. Правильный способ — использовать оператор flowOn и уже в нем указывать диспетчер, на котором произойдет эмиссия новых значений.
Момент, который на мой взгляд заслуживает отдельного внимания это то, что оператор flowOn является обычным цепочечным оператором билдера. К слову о том, что сейчас билдеры уже не используют и все пишут на конструкторах с параметрами. Если не понятно о чём речь, то вот ссылка на видео про Строитель:
Раз оператор является цепочечным, значит логично, что мы можем вызвать его сколько угодно раз для различных других цепочечных операций таких как фильтр, маппинг и так далее. Если вы хотите, чтобы операции по фильтрации у вас проходили например на воркере, а операции по принту всего этого дела на главном потоке, то важно помнить, что оператор flowOn действует только на те операторы, которые предшествуют оператору flowOn.
Как вы видите выше, мы выполняем флоу и мап на потоке ввода вывода, потому что они идут перед диспетчер ИО. Ну и видно как выполняются следующие операции.
Это очень важная штука для понимания, потому как я много раз на практике сталкивался с бездумно написанными сабскрайбами, обсервами и т.д., авторы которых не понимают как именно это работает под капотом. Я, конечно, понимаю, что в мобильной разработке у вас вряд ли может возникнуть подобная ситуация, однако, может когда-нибудь и вам это пригодится.
Здесь может возникнуть интересный вопрос — что будет если написать несколько раз подряд flowOn с разными диспатчерами. Отвечаю: операция выполнится в итоге на том диспетчере, который был первым в этом списке.
Combining
Так как Flow позиционируется как полноценная замена Rx (как и Лайвдата кстати тоже), то естественно у флоу есть аналоги операторов комбинирования нескольких флоу, так как без этого трудно представить ни одно серьезное приложение - разные источники данных, микросервисные архитектуры, сервисы всякие левые, все это порождает необходимость женить потоки данных между собой.
Здесь у тех, кто знаком с Рх все будет предельно узнаваемо и знакомо. Оператор зип перекочевал в своем первозданном виде и сюда.
Как видите, все до боли знакомо. Хотя не совсем. Всё-таки сам вызов отличается и это на самом деле больно, потому что если вам надо соединить три, четыре или более флоу, возникнет проблема. Однако, это как правило не нужно, так как в мобильных приложениях мы больше оперируем синглами и это можно сделать через обычные корутины. Тем не менее, я нашел вполне себе нормальное решение как сделать подобную функцию самому. Надеюсь, JetBrains добавят такую реализацию к себе, ведь она может быть полезной.
А теперь давайте поговорим про совершенно новые штуки, которые нам относительно недавно представили JetBrains, а так же попробуем все это на практике.
SharedFlow. StateFlow
Сказанное мной далее будет частично пересекаться с этой статьей, потому как это перевод статьи автора всего этого добра Романа Елизарова.
Если не вдаваться в детали, то для общения между корутинами ранее использовалась штука под названием Channel (уже второй раз встречается) и она была достаточно дорогостоящим решением с точки зрения производительности. В целом можете себе представить ситуацию, когда у вас есть здоровенный такой цех и общение между отдельными операторами станков происходит через письма отправляемые по трубкам. А вам иногда очень важно, чтоб ваши операторы работали, где-то синхронно, где-то асинхронно. Думаю можете представить себе масштаб бедствия.
Как мы помним из ранее сказанного, наши флоу холодные, то есть пока не появится подписчик данные не начнут эмиттиться. Но что делать с данными, которые эмиттятся вне зависимости от того подписан на них кто-то или нет. Ну, например, датчик геолокации. Ваш телефон перемещается в пространстве постоянно и соответственно датчик генерит новые данные.
Тут нам помогает сущность под названием Shared Flow. Это достаточно интересная штука в плане реализации, как мне показалось. Дело в том, что Shared Flow хранит в себе некий кэш, из которого достаются данные когда на них будет подписан коллектор.
И только после того как будет воспроизведен кэш вы начнете получать новые данные. То есть как бы получается, пока нет коллекторов SharedFlow просто как бы подписан сам на себя и просто пишет себе данные в кэш. Очень изящно и круто сделано, как по-мне. Это может быть нам полезно в случае так называемых горячих данных (датчики, события операционной системы и так далее).
Причем, используя параметры, вы можете играться с тем что именно увидит пользователь: все ли события отсеивать, дропать первые или последние и так далее. Если shared flow переполнится, то он приостановит эмиттеры до тех пор, пока их не обработает, но при этом он не дожидается обработки их коллекторами. То есть у вас получается очень быстрая шина данных внутри вашего приложения.
Также вместе с SharedFlow ребята из JetBrains сделали MutableSharedFlow, который позволяет нам, например, получать данные одновременно из suspend источников и из non-suspend источников. Ещё он позволяет нам сбросить кэш при необходимости.
Вообще мне это всё напомнило добрые старые стратегии мокси. Фактически, теперь вы можете играясь с replayCache у SharedFlow реализовывать те самые стратегии, только применяя их например к viewState. Более подробно мы рассмотрим это в примере. Но подумав о стратегиях, я не могу не вспомнить одну из самых популярных стратегий SingleStateStrategy. Кстати, если вдруг кто не видел видео про мокси:
Так вот, чтобы реализовать эту стратегию, а она заключается в демонстрации последнего полученного значения из источника данных, был сделан специальный интерфейс под названием StateFlow. Всю механику работы StateFlow можно увидеть на следующем изображении.
Не допускать выхода судна в море с незадраенными клиновыми запорами кормового порта (ворот) и незадраенными винтовыми стопорами закрытых крышек аппарели и грузового люка главной палубы. Строго выполнять судовые инструкции по закрытию внутренних ворот и дверей водонепроницаемых переборок.
Постоянно следить за состоянием шпигатов, водоотливных сточных колодцев на всех палубах. Составить план-схему шпигатов, сделать их маркировку (план-схема шпигатов выдается с постройкой судна).
Составить план-схему всех палуб с указанием всех шпигатов, колодцев, а также производительности всех водоотливных средств по осушению трюмов.
План-схему держать в папке документов по борьбе за живучесть на ГКП (главный командный пункт).
В трюмах и машинных помещениях нанести марки летней грузовой ватерлинии, на верхней палубе — нумерацию шпангоутов и водонепроницаемых переборок.
Иметь табличные величины потери остойчивости (уменьшение метацентрической высоты) от влияния свободной поверхности воды при затоплении пустых отсеков водой в аварийных случаях через каждый метр по высоте.
Перед выходом в рейс для избежания потери остойчивости в случаях аварийного затопления отсеков водой по возможности произвести балластировку, обеспечив метацентрическую высоту не менее величины потери остойчивости от влияния свободных поверхностей воды в самом большом отсеке. Избегать при штормовой погоде положения судна лагом к ветру.
Предупреждать потерю остойчивости на попутном волнении, особенно при длине волны, близкой к длине судна.
Капитан должен пользоваться Информацией об остойчивости судна, Информацией по аварийной посадке и остойчивости судна при затоплении отсеков для обеспечения безопасности судна при различных обстоятельствах и условиях плавания. При сравнении случаев повреждения, могущих иметь место на практике, с расчетными случаями следует учитывать, что элементы аварийной посадки и остойчивости весьма разнятся, так как коэффициенты проницаемости могут быть иными.
Конструктивные особенности таких судов требуют исключительно внимания к вопросу обеспечения герметизации верхнего твиндека. Не допускать наличия свободных поверхностей в танках. Строго соблюдать симметричность заполнения бортовых танков.
При балластировке судна иметь запас балластировочных емкостей для создания в случае необходимости значительного дифферента на нос. Перед выходом в море проверить герметичность дверей и лазов на всех палубах, а также выполнить другие рекомендации, разработанные судовладельцем применительно к конкретным типам судов.
Все суда подразделяются на транспортные, промысловые, служебно-вспомогательные и суда технического флота. Грузовые суда разделяются на два класса – сухогрузные и наливные.
Универсальные сухогрузные суда предназначены для перевозки генеральных грузов. Генеральный груз – это груз в упаковке (в ящиках, бочках, мешках и т.п.) или в отдельных местах (машины, металлические отливки и прокат, промышленное оборудование и т.п.) (рис. 1.1).
Рис. 1.1. Универсальное судно
Универсальные суда не приспособлены для перевозки какого-либо определенного типа груза, что не позволяет в максимальной степени использовать возможности судна. По этой причине строятся и широко применяются в мировом судоходстве грузовые специализированные суда, на которых лучше используется грузоподъемность и значительно сокращается время стоянки в портах под грузовыми операциями. Подразделяются они на следующие основные типы: балкеры, контейнеровозы, ролкеры, лихтеровозы, рефрижераторные, пассажирские суда и танкеры и др. Все специализированные суда имеют свои индивидуальные эксплуатационные особенности, что требует от экипажа специальной дополнительной подготовки по приобретению определенных навыков для сохранной перевозки груза, а также обеспечения безопасности экипажа и судна в течение рейса.
Рефрижераторные суда (Reefers) – это суда (рис. 1.2) с повышенной скоростью хода, предназначенные для перевозки скоропортящихся грузов, в основном продовольственных, требующих поддержания определенного температурного режима в грузовых помещениях – трюмах. Грузовые трюмы имеют теплоизоляцию, специальное оборудование и люки небольшого размера, а для обеспечения температурного режима служит холодильная установка рефрижераторного машинного отделения судна.
Рис. 1.2 Рефрижераторное судно
Балкеры (Bulkers) – это суда (рис. 1.3), которые приспособлены в определенной степени к перевозке насыпью любого массового сухого груза. Балкеры обычно не имеют грузового устройства, и все грузовые операции производятся портовыми средствами, а люки грузовых трюмов делают больших размеров для полной механизации.
Рис. 1.3 Балкер
Контейнеровозы (Container Ships) – это скоростные суда (рис. 1.4), предназначенные для перевозки различных грузов, предварительно уложенных в специальные крупнотоннажные контейнеры стандартных типов. Грузовые трюмы разделены специальными направляющими на ячейки, в которые загружают контейнеры, а часть контейнеров размещают на верхней палубе. Грузового устройства контейнеровозы обычно не имеют, и грузовые операции производятся у специально оборудованных причалов – контейнерных терминалов. Некоторые типы судов оборудуются специальным саморазгружающим устройством.
Рис. 1.4 Контейнеровоз
Ролкеры «Ро-Ро» (Rolker «Ro-Ro» ships) – это суда (рис. 1.5) с горизонтальным способом погрузки, служат для перевозки груженых трейлеров (автоприцепов), колесной техники, контейнеров и пакетов. Суда имеют один большой трюм и несколько палуб. Грузовые операции производятся у причала с помощью автопогрузчиков и платформ с тягачами через кормовые или носовые лацпорты (ворота) судна по специальным мосткам – рампам, а перемещают груз с палубы на палубу по внутренним аппарелям (устройство для въезда/съезда техники) или при помощи специальных лифтовых подъемников.
Рис. 1.5 Ролкер «Ро-Ро»
Лихтеровозы (Lighter Ships) – это суда (рис. 1.6), где в качестве грузовых единиц используются несамоходные баржи – лихтеры, погрузка которых на судно в порту производится с воды, а выгрузка соответственно на воду.
Рис. 1.6 Лихтеровоз
Рис. 1.7 Пассажирское судно
Рыболовное судно (Fishing vessel) – добывающее судно (рис. 1.8), используемое для лова и первичной обработки рыбы и других живых объектов водного промысла. К рыболовным судам относятся сейнеры, траулеры, ярусники и другие, различающиеся назначением, размерениями, типом промыслового устройства и рыбообрабатывающего оборудования, способом хранения улова.
Рис. 1.8. Рыболовное судно
Лесовоз (Timber carrying vessel) – судно для перевозки лесных грузов (рис. 1.9), в том числе круглого леса и пиломатериалов россыпью, в пакетах и блокпакетах. При перевозке леса для полной загрузки судна значительную часть груза принимают на верхнюю палубу (караван). Палубу на лесовозах ограждают фаль-шбортом повышенной прочности и оснащают специальными устройствами для крепления каравана: деревянными или металлическими стензелями, установленными вдоль судна по бортам, и поперечными найтовыми.
Рис. 1.9. Лесовоз
Парусное судно (Sailing vessel) – судно (рис. 1.10), для движения которого используется энергия ветра, преобразуемая с помощью парусов. Парусные суда различаются по числу мачт и типу парусного вооружения.
Рис. 1.10. Парусные суда
Служебно-вспомогательные суда – суда (рис. 1.11) для материально-технического обеспечения флота и служб, организующих их эксплуатацию. К ним относятся ледоколы, буксирные, спасательные, водолазные, патрульные, лоцманские суда, бункеровщики и т.п.
Рис. 1.11. Служебно-вспомогательное судно
Танкеры (Tankers) – это наливные суда, предназначенные для перевозки наливом в специальных грузовых помещениях – танках (емкостях) жидких грузов. Все грузовые операции на танкерах производятся специальной грузовой системой, которая состоит из насосов и трубопроводов, проложенных по верхней палубе и в грузовых танках. В зависимости от рода перевозимого груза танкеры делятся на:
1. танкеры (Tankers) – это наливные суда, предназначенные для перевозки наливом в специальных грузовых помещениях – танках (емкостях) жидких грузов, в основном нефтепродуктов (рис. 1.12);
Рис. 1.12. Нефтеналивной танкер
2. газовозы (Liquefied Gas Tankers) – это танкеры, предназначенные для перевозки природных и нефтяных газов в жидком состоянии под давлением и (или) при пониженной температуре, в специально предназначенных грузовых емкостях различных типов. Некоторые типы судов имеют рефрижераторное отделение (рис. 1.13);
Рис. 1.13. Танкер-газовоз
3. химовозы (Chemical Tankers) – это танкеры, предназначенные для перевозки жидких химических грузов, грузовая система и танки изготавливаются из специальной нержавеющей стали, либо покрываются специальными кислотостойкими материалами (рис. 1.14).
Автор статьи
Читайте также:
- Что является доходом потребителя от использования собственности государственная пошлина
- Производитель покрасочного покрытия грузовых танков обязан выдать судну
- Принцип работы опреснителя морской воды на судах
- Какие суда строят в россии
- Сроки представления налоговых деклараций в государственные налоговые органы