Результаты поиска потегуреактор образовательный

Дополнительные фильтры
Теги:
реактор образовательныйновый тег
Автор поста
Рейтинг поста:
-∞050100200300400+
Найдено: 732
Сортировка:

Пак знаний, учение свет. #3 Wireguard, поднимаем свой VPN.

Сап джой, будет много текста и картинок, но тебе это понравиться (надеюсь).
Давно хотел написать эту инструкцию, но всё времени не было. Решил заставитьсебя.
Немного предыстории, пройдёмся по цифрам и приступим к практике.

Предистория:

  Когда я выбирал какой протокол выбрать для поднятия забугорногоVPNсервиса,я ориентировался на то, что-бы туннель обладал высокой пропускной способностьюи не бы чувствителен к небольшой потери сигнала\пакетов (привет мобильноеинтернет соединение).
Тут была инструкция по настройке OpenVPN. Ни в коем случае не хочу приуменьшить вклад анона,так как «я за» любое просвещение людей в компьютерной грамотности. Вот только авторумолчал что OpenVPN  достаточно медлителен,и тот же IPSecAES почтив половину производительнее.
Так же любитель пожрать ресурсы хоста.
Throughput
WireGuard IPsoc (ChaPoty)
IPsec (AES-GCM)
OpanVPN
128
256
384
512
640
768
896	1.024
megabits per second (higher is better),реактор образовательный,самообразование,it-безопастность,мануал,VPN,сделай сам,системный администратор,it,длинный пост
Да и скажу честно, в принципе это сложно было назватьинструкцией.
Так же автор забыл о защите самого хоста, а это не мало важно.
Перейдём к практике:
Допустим вы уже приобрели себе VPS (вкомментах я подкину парочку, которые я сам юзаю, если хотите) И самостоятельно установили ОС. Я обычно использую либо Debian либо Ubuntu, вданном случае второе.
Давайте обновим пакеты, и поставим нужный софт:
Unpacking Iibqrni-glib5:arnd64 (1.30.4-l~ubuntu20.04.1) ...
Selecting previously unselected package libqrni-proxy.
Preparing to unpack .../21-libqrni-proxy_l.30.4-l~ubuntu20.04.l_amd64.deb ... Unpacking libqrni-proxy (1.30.4-l~ubuntu20.04.1) ...
Preparing to unpack .. ./22-fwupd_1.7.5-3~20.04
sudo apt update && sudo apt upgrade -y && sudoaptautoremove -y && sudo apt install git screen fail2ban mc
Конструкция «sudo apt install git screen fail2ban mc» отвечает за установкунужного нам ПО:
1) git– это апекуха для импортирования проектов из git-репозиториев. Просто навсякий случай.
2) screen– это для того, что бы в случае обрыва sshсоединениявы могли продолжить работать с того же места, где произошёл обрыв.
3) fail2ban–это для защиты второй лини нашего vpnсервиса.
4) MC – (MidnightCommander)это удобный файловый менеджер в «консольной среде», что бы не возится скомандами навигации.
Обновляем и ставим всё это дело, после этого можноперезагрузить хост, и подключиться по SSH.
После подключения набираем команду screen, чтобы в случае обрыва связи, мы смогли вернуться обратнок работе без потерь. 

Далее скачиваем деплой-скрипт с github.
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
Делаем его исполняемым (даём права на выполнение для всех пользователей)
sudo chmod+x wireguard-install.sh
Запускаеми сразу после старта нас любезно спросят важные для сервера параметры. Давай ихразберём.
Первая строка выводит нам твой внешний (белый) ip-шник к которому мы будемцепляться. Его не меняем, как бы не хотелось. Далее.
Public interface– имя сетевой платы (если по простому) через который будетработать сервер.
Wireguard interface– имя виртуальной сетевой платы. (имя вашего соединения, егонужно запомнить)
Следующие две стоки, внутренние ip-адреса.Здесь вы можете указать удобный для вас диапазон адресов, которое будутприсваиваться вашим устройствам при подключении к серверу.
Далее указываем внешний порт соединения к вашему серверу.
Стандартный порт: 57141.Я бы рекомендовал его сменить и\или запомнить, он пригодится очень скоро.
Последнее два вопроса, это dns сервера. Вы можете указать свои (если знаете какие) у меняже это адреса adguard. Что-бы блокировать рекламу.
Нажимаем Enterи ждём завершенияустановки\настройки. Скрипт начнёт скачивать нужные файлы для сервера.
По завершению тебя попросят ввести имя. Это имя твоегопервого соединения. Далее тебе предложат набрать ip-адрес.Лучше оставь его как есть. И в принципе всё. Тебе сгенерируется qr-коддля настройки соединения на твоём мобильном устройстве и путь к файлуконфигурации для других платформ. Сделай скрин, он нам потом пригодится. Что бысоздать ещё одного клиента просто запусти скрипт ещё раз и пройди все шагиснова заполняя данные. Под каждое устройство лучше иметь отдельную конфигурацию.

Длянастройки клиента на Winows\Mac\Linux тебепонадобится файл конфигурации. Он будет находится в директории указанной нижу qr-кода.Вот тут нам и понадобится MC. Запускаем его просто набрав “MC” (илиsudo mc, если хотите запустить с правами суперпользователя, нотогда придётся прогуляться по папкам)
В появившемся окне находим файл .conf именемкоторый мы давали конфигурации, нажимаем F4. Всписке текстовых редакторов лучше выбрать nano. Простоставим цифру, на против которой имя редактора и клацаем enter. Переднами конфигурационные данные, которые мы уже видели при создании пользователя.Скачиваем клиент для вашей ОС (в моём случае это Windows)
Клацаем на треугольник рядом с кнопкой добавить туннель àДобавитьпустой туннель. В открывшаяся окно копируем из ssh сессииданные из файла, сохраняем. Ctrl+x выйтииз редактора и F10 выйти из MC. И впринципе с создание туннеля всё. Весь ваш трафик теперь перенаправляется на вашVPN. На этом можно было бы и закончить, но как я говорил,нужно обезопасить ваш сервер. Но сначала добавим возможность автоматическогозапуска туннеля, так как при перезагрузке сервер не запустится. 
sudo systemctl enable wg-quick@имя_вашего соединения (wg0)
Готово.

Безопасность:
Небуду описывать сколько в интернете ботов и всякого другого дерьма, просто скажу,что их много и надо уметь постоять за себя и свою инфраструктуру. Этом мы ибудем заниматься.
 Для начала сменим порт ssh-соединения.Открываем файл конфигурации ssh-сервера. (да, без оболочки. Так быстрее.) Запускаемобязательно с правами суперпользователя (sudo)
sudo nano /etc/ssh/sshd_config
Ищем в файле sshd_config строку «port 22» Она обычно сверху. Убираем #, и меняем цифру на вашпорт, допустим 4422. Не забудьте его! Выходим предварительно сохранивизменения.
Перезапускаем службу ssh, что бы она получила новые параметры из файла.
sudo systemctl restart ssh.service

 Перезапускаем ssh-сессию,не забывая сменить порт в подключении и при подключении снова набираем screen. Далеенастраиваем firewall. По умолчанию он выключен в ubuntu. Что бы проверить этонабираем sudo ufo status.И ответом нам будет  Status: inactive. Прежде чем включать firewall настроим нужные правила, иначе удалённый хост станетнедоступен для нас по ssh. Вот список команд, просто вставляйте их в консоль:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 4422 <--
 наш ssh
sudo ufw allow 57141 <-- 
наш Wireguard туннель

В двух словах что мы сделали: разрешили весь исходящий трафик, запретиливесь входящий кроме нашего ssh и нашего Wireguard сервера.
Включаем наш firewall командой:
sudo ufw enable
Вы получите предупреждение:
Command may disruptexisting ssh connections.Proceed with operation(y|n)?
Это означает, что запуск этого сервиса может разорвать текущее ssh соединение.
Но, так как мы его уже добавили ssh вправила, этого не произойдет. Поэтому просто нажмите (y).
Можно перезагрузится :)

 
Так же мы качали такую замечательную вещь как Fail2Ban, еёможно не настраивать так как она прекрасно работает из коробки. Я оставлю всессылки на все полезные ресурсы в конце, если захотите покопаться.

Заключение:
Отсылаяськ началу этой статьи я бы хотел сказать, что OpenVPN неплохой протокол, как это могло показаться. У Wireguard есть 2существенных минуса:

1) При подключении к хосту, клиенты могут видеть друг-друга. То есть вы можетепропинговать ваше соседнее устройство. Это можно исправить настройками firewall’aи не так критично, но из коробки OpenVPNсразуотрезает подобное.
2) У Wireguard  легко детектится его трафик, а именно момент обмена хендшейков(handshake) то есть в сам туннель попасть сложно, но вот определитьи прикрыть его можно легко. Нужно делать обфускацию трафика что-бы было сложнееего заметить. Сам я ещё не опробовал, но хочу заюзать socks5 дляпередачи первичной передачи хендшейка. У OpenVPNестьже готовая приблуда так же «из коробки»
Так же стоит упомянуть что я не настроил авторизацию на сервере через ключ-файл потому что мне лень, но я осталю на это линк ниже.
В принципе на этом всё, спасибо что прочитали, все ссылки на полезные ресурсы прилагаю.
Пост написан исключительно для любимого Джояи для тебя анон лично.
Занимайтесь самообразованием, остаюсь с вами на связи в комментах, если что то забыл - дополню там, пока.
,реактор образовательный,самообразование,it-безопастность,мануал,VPN,сделай сам,системный администратор,it,длинный пост
Понравилось?
Да, хочу ещё! :)
334(53,18%)
Нет, пшёл вон :(
37(5,89%)
Я картошка
257(40,92%)

Лекция по иммуннологии и борьбе с раком от SsethTzeentach

«Мышиная возня» Союзников

 Что же там было в этой Северной Африке? Ведь какая-то мышиная возня, да? Роммель гонял бриттов по пустыне, пока ему не отрезали снабжение. Никакого влияния это не оказало на ход войны, слишком слабые были силы, правда? Да и дальнейшие действия Союзников на Сицилии и в Италии принципиального смысла не имели. Так, мелкие пострелушки. Такого мнения у нас придерживаются многие люди, которые не осознают, чем же для нас была важна эта мышиная возня. Разумеется, Красная Армия и Советский Союз вложили основной вклад и понесли основные потери в борьбе с нацистами и их сателлитами, с этим спорить глупо. Однако, кое-что сделали и наши Союзники, и вовсе не так мало, как может показаться. Давайте попробуем разобраться в результатах их чисто военной деятельности. Для наглядности я буду использовать альтернативное моделирование или ретропрогнозирование – то самое сослагательное наклонение, которое история, якобы, не терпит. Ну вот применительно к этой статье ей придется потерпеть, так как без него будет сложнее объяснить и понять суть вопроса.
 Я буду уделять особое внимание танковым частям, и вот почему. Всё дело в том, что пусть танковые и прочие подвижные части и составляют лишь малый процент от армий тех времен, тем не менее основная нагрузка по достижению решительных результатов в наступлении и обороне лежит именно на них. Подвижные соединения используются для нанесения удара, а результатами этого удара уже будут пользоваться все остальные. Именно поэтому я считаю бессмысленным часто высказываемое мнение, что если разделить танки, БТР, САУ, что угодно еще на все дивизии на Восточном фронте, и на все километры его протяженности, то получится ничтожное число, а значит и значения это не имеет. Если б немцы взяли и распределили свои танки равномерно по всем-всем дивизиям, то они никогда бы не достигли столь решительных результатов, и это реально не имело бы большого значения. Но немцы делали наоборот. Танки принято было не распространять везде, а концентрировать в специальных частях – танковых полках. Но и танковые полки не раздавались направо и налево. Они действовали в составе танковых дивизий, где вокруг них концентрировались другие подвижные части – мотопехота, саперы, высокоподвижная буксируемая и самоходная гаубичная артиллерия. Точно так же БТР не распространялись среди всех дивизий и всех батальонов всех дивизий, а концентрировались в специальные роты и батальоны бронированной мотопехоты, предназначенной для действий с танками. Гаубичные САУ тоже не спешили раздать всем, это был атрибут в первую очередь танковых дивизий. Собственно, нелишним будет напомнить, что танковые дивизии — это не только танки, но еще и три — пять батальонов мотопехоты, саперный батальон, несколько десятков 105-мм и 150-мм орудий, и это далеко не всё. Каждая дивизия — это очень мощный ударный кулак. Но и танковые дивизии не распространялись по всему фронту, а вместо этого концентрировались в танковые корпуса, а корпуса – в армии (танковые группы). И вот эти самые корпуса и армии решительно маневрировали и наносили мощные и глубокие удары. Те самые удары, которые и придали Второй Мировой войне и военному делу в целом новый характер и ход. Поэтому-то, пусть и кажется, что описываемые в статье две-три-пять-десять дивизий – это очень и очень небольшие силы, в реальности эти самые силы могли играть и играли решающую роль в сражениях той войны. И от их действий в первую очередь зависело, что будет с остальными многочисленными пехотными и прочими дивизиями. Помимо этого, с танками намного удобнее вести подсчеты, так как по ним существует просто море информации, и она очень наглядна. Давайте же рассмотрим то влияние, которое потенциально оказали действия в Африке и некоторые прочие, а также их последствия.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Не самый современный на 41-й год вариант танка Pz.III, но уже с 50-мм пушкой
 Начнем с веселого. Проблема подобралась с несколько необычной стороны. Все танки 2-й тд, участвовавшей перед Барбароссой в весенней Балканской кампании, были потоплены с кораблями, когда их морем отправили обратно. Потери на суше составили 15 танков, около 120 танков было потоплено. В марте 41-го в Африку отправилась 5-я легкая дивизия (с августа 41 стала 21-й танковой) в составе: 25 единичек (Pz.I), 45 двоек (Pz.II), 71 тройка (Pz.III - все с современной на тот момент 50-мм пушкой), 20 четверок (Pz.IV) и несколько командирских танков. 13 танков потеряны при транспортировке. В апреле 13 танков прибыли для пополнения потерянных. В апреле-мае 41-го в Африку прибыла 15-я танковая дивизия в составе 45 двоек, 71 тройка (все с 50-мм пушкой), 20 четверок, несколько командирских танков. Летом 1941 как пополнение прибыло еще 4 двойки, 25 троек, 5 четверок.
 Это как раз тогда, когда некоторые дивизии на Восточном фронте испытывали довольно заметный некомплект современных танков. К началу кампании против Советского Союза шести дивизиям из семнадцати не хватало двоек, недостаток пришлось восполнять единичками. Танков Pz.III не досталось шести дивизиям, вооруженным заместо них чешскими танками Pz.38 и Pz.35. Чешские танки были слабее защищены и вооружены, имели меньший экипаж (в башне было только два человека). В восьми дивизиях сохранялись Pz.III с 37-мм пушками (в Африку такие старые машины не отправлялись), причем в трех дивизиях их было значительное количество, а в 18-й тд большинство троек были старыми, с 37-мм пушками. Можно сказать, что из-за необходимости оснастить Африканские дивизии техникой, обделенными оказались некоторые дивизии на Восточном фронте. Проследуем дальше.
 В ноябре-декабре 41-го немецкие части в Африке потеряли (полностью) 56 двоек, 105 троек и 29 четверок. Это почти половина от того, что на 22-е декабря имели боеготовыми 16 дивизий на Восточном фронте, включая чешские танки, и примерно 41% от расчетного количества для всех 19-ти дивизий. К сожалению, по трем дивизиям на Востоке мне не удалось найти четкие данные на декабрь, поэтому для них я использовал расчетные показатели. Почему я сравниваю уничтоженные танки с боеготовыми? Ну так это напрямую показывает вклад Союзников – они эти танки уничтожили, а уничтоженные танки не могут поехать на Восточный фронт даже если б возникло желание бросить всю эту Африку и сконцентрироваться на войне с СССР. И потому что окажись эти танки не уничтоженными в Африке, а целыми на Восточном фронте, силы немецких танковых дивизий по танкам в декабре 41-го выросли бы более чем на треть.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Pz.III с 37-мм пушкой — такие танки на лето 41-го года были уже устаревшими, но всё ещё имелись в танковых дивизиях на Восточном фронте, порой в значительных количествах
 В декабре 41-го в Африку отправились 68 троек, 22 двойки, но половина потонули по пути. В 16-ти дивизиях на Восточном фронте на 22 декабря было 66 двоек, 84 38т, 180 троек и 75 четверок исправными + 5 танков в 14-й тд, не учтенной в этих 16-ти. Из трех неучтенных в декабре, по данным на конец лета – начало осени 41 в ней было больше всего боеготовых танков – и к концу года осталось всего пять. Если экстраполировать среднее количество танков на оставшиеся две дивизии, то выйдет, что всего во всех танковых дивизиях на Восточном фронте было 458 исправных танков. 19,6% от расчетного количества исправных танков в 19-ти дивизиях на Восточном фронте составляло пополнение, отправленное в Африку. Причем отправленное в самый разгар боев. 5-го января в Африку прибыло еще 54 танка. Вместе это почти треть от того, что было на Восточном фронте. В то же время многие дивизии на Восточном фронте за всю кампанию 41-го года получили по 10 – 20 танков пополнения.
 Вы спросите, куда же делись танки, произведенные между июнем и декабрем 41-го года? Правда это не так уж прям много танков, производство танков в Германии в 41-м году рекордов не показывало, тем не менее промышленность давала по паре сотен танков в месяц. Но если только некоторая часть из них отправилась в качестве пополнения как на Восточный фронт, так и в Африку, то куда же остальные делись? Разумеется, они не пропали. Начнем с того, что нужно было восстановить 2-ю танковую дивизию, все танки которой утонули вместе с кораблями на пути домой. 5-я танковая тоже была не в лучшем состоянии, у нее имелся некомплект танков еще к началу весенних кампаний, в ходе которых она еще понесла потери, а затем отдала часть танков для частей защиты Крита. Ее требовалось практически восстанавливать. Некоторая часть танков передавалась вновь формируемым дивизиям, так как было принято решение довести количество танковых дивизий с двадцати до тридцати, а для этого нужно было оснастить их танковые полки. Не все дивизии сразу получили штатные немецкие или чешские танки (22-я тд формировалась с чешскими танками в качестве основных), но постепенно оснащение шло. Помимо этого, был также сформирован 203-й танковый полк, который отправился на Восточный фронт только в декабре 41-го.
 Если сложить все танки, полученные африканскими частями за 41-й год и танки, потерянные от потопления судов, то получится примерно 550 машин - можно оснастить танками четыре дивизии. Или как следует пополнить десять дивизий. А еще это больше, чем по приведенным выше подсчетам осталось танков во всех танковых дивизиях на Восточном фронте к концу 1941-го года. И это будут не какие-то там безумно устаревшие танки, на Восточном фронте применялись такие же, да были танки и попроще – Pz.III с 37-мм пушкой, например, и чешские машины.
j. ' г '					w I д%£ ИК/ ^Ь ^ая| ^ ^ * • « • • ; ^
^ ' J* , '«Я •, -< - -	Г JÍ	2f ^,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
6-я танковая дивизия в 1941-м году на Восточном фронте была вооружена устаревшими даже физически танками Pz.35(t) — к концу года дивизия жаловалась, что их даже нечем чинить, по видимому уже не было запчастей в производстве
 С другой стороны, если просто взять эти две танковые дивизии из Африки и отправить их на Восточный фронт, можно ли найти такую точку приложения усилий, где бы это сыграло ключевую роль? В битве под Москвой было задействовано очень много сил, и пусть две свежие дивизии были б неприятны, решающего воздействия они могли и не оказать. Нужно найти другое место. Я предполагаю, что таким местом может быть ГА Север в момент проведения Тихвинской операции. Если б немцам удалось продавить наши части на участке Волхов - Старая Ладога, выйти в этом месте на берег Ладожского озера и закрепиться на реке Волхов, боюсь, Ленинград мог и не устоять. Уже могло не выйти Дороги Жизни (так как местность, откуда она шла, была б захвачена, а в любом месте ее не навести), оборона блокирующих Ленинград немцев получила бы солидную опору в виде реки, да и наши части, отрезанные между реками Волхов и Нева, скорее всего были бы уничтожены. Это могло крайне тяжело сказаться на последующих событиях, хотя я не уверен, что две дивизии обеспечили бы этот важный для немцев перевес. Тем более я не могу думать за немецкое Верховное командование, я просто предлагаю вашему вниманию один из неприятных способов реально значимого использования этих не особо крупных сил.
 Ладно, предположим, что ничего не было. Переходим в следующий год. 30 двоек, 245 троек и 49 четверок получил Роммель в Африке с января по май 42-го. Среди этих машин имелись уже и длинноствольные варианты, как минимум 18 таких троек числилось исправными в африканских дивизиях на 25-е мая и 10 таких четверок прибыло в мае. Под длинноствольными подразумеваются танки Pz.III с 50-мм пушкой длиной ствола 60 калибров (до этого в ходу была 50-мм пушка длиной ствола 42 калибра) и Pz.IV с 75-мм пушкой длиной ствола 43, а позже 48 калибров (до этого в ходу была 75-мм пушка длиной ствола 24 калибра). За почти два месяца боев с 26-го мая по 20-е июля 42-го Роммель потерял (полностью) 233 танка, из них 175 троек (14 длинноствольных) и 31 четверку (2 длинноствольные). Это именно потери, т.е. безвозвратные. В июле-августе 42-го немцы в Африке получили 76 длинных троек и 20 длинных четверок.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Примерно такой танк летом 1942-го года был современным Pz.III — из важных отличий длинноствольная 50-мм пушка и накладное 20 мм бронирование на лбу корпуса и башни
 Итак, если просуммировать машины, полученные за период с января по август 1942 в Африку, то выйдет 420 машин, без учета тех, что были в наличии на начало года. Это количество позволяет оснастить две с половиной дивизии по «южному» штату лета 42-го года, т.е. по три трехротных танковых батальона в каждой. Или почти три дивизии, если по штату с двумя четырехротными батальонами (как приехавшая к концу года под Сталинград 6-я тд). Или солидно пополнить шесть дивизий. Причем не только танками, ведь в танковых дивизиях есть и артиллерия, и мотопехота, и саперы, и ПТО.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Это современный на лето 1942-го года вариант Pz.IV. Главное отличие — длинноствольная 75-мм пушка
 Если выделить из этих чисел только самые современные на тот момент длинноствольные танки, то выйдет порядка 100 троек и около 30 четверок – можно оснастить целую трехбатальонную дивизию практически одними только длинноствольными танками. Таких «длинноствольных» дивизий летом 1942-го года не было ни одной, в каждой дивизии был тот или иной некомплект новых танков, чаще всего более половины танков относилось к «короткоствольным» типам. Это в дивизиях ГА Юг, как следует пополненных перед летней кампанией 1942-го, а в ГА Центр и Север длинноствольные танки почти отсутствовали, да и «обычных» была заметная нехватка – некоторые дивизии лишились одного из батальонов в пользу ГА Юг. У некоторых и один оставшийся батальон был неполным. В это время, на 30-е августа в двух дивизиях в Африке имелось 73 длинные тройки и 27 длинных четверок. Позже, 23.10.42-го в африканских дивизиях имеется 128 и 111 исправных танков, половина из них – новых типов (всего 86 новых троек и 30 новых четверок). Ко 2-му декабря большая часть этих танков ушла в потери. Армия доложила о списании между 23.10.42 и 02.12.42 танков в количестве 229 штук.
	Pz.III (L/42)	Pz.HI (L/60)	Pz.IV (L/24)	Pz.IV (L/43)
13-я тд	41	30	12	-
14-я тд	41	19	20	4
16-я тд	39	18	15	12
22-я тд	114 Pz.38(t)	12	11	11
23-я тд	50	34	17	10
24-я тд	54	56	20	12
9-я тд	38	61	9	12,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World
Таблица показывает наличие средних танков в некоторых дивизиях Группы Армий Юг на конец июня 1942 (L/42 — длина ствола орудия составляет 42 калибра, L/60, L/24, L/43 соответственно)
 Для сравнения, в Группе Армий Б, действовавшей в районе Сталинграда, на середину ноября 42-го числилось 209 боеготовых новых троек на девять дивизий, включая моторизованные пехотные (имевшие танковый батальон). Во всей группе армий за счет африканских частей можно было увеличить количество современных троек на 40%. А если учитывать не только наличные, а еще и потерянные в Африке новые танки, то почти на 50%. Всего в Группе Армий Б было 224 тройки, старых машин почти не осталось, они все сохранялись в других группах армий. Это примерно по 25 машин в среднем на дивизию. Можно докинуть еще более старых Pz.III из Африки в количестве 81 штуки. Танки ведь не только против танков воюют, а для нанесения удара по пехотным подразделениям тройки с обычной 50-мм пушкой очень неплохо сгодятся. Длинноствольных четверок в Группе Армий Б имелось 78 штук – еще около 40% можно добавить за счет африканских. Причем, в который раз хочу отметить, танковые дивизии – это ж не только танки, это еще и артиллерия, саперы и мотопехота, которые будут вовсе не лишними в штурме города.
 Ну или просто взять эти две дивизии как есть, в очень хорошем состоянии, и отправить их под Сталинград, например, в сентябре или октябре 42-го. Они ж могут и город взять. Учитывая, какими потрепанными частями немцам приходилось его штурмовать и как сильно влияло на ход событий, если удавалось включить в состав штурмующих дивизию в достаточно приличном состоянии, как было в октябре с 305-й пехотной дивизией. Тогда в ходе штурма была взята значительная часть удерживаемых РККА позиций, включая завод СТЗ, а позже и завод Баррикады. Или на Кавказе, где они могли бы стать той самой ударной силой, которая таки дошла бы до Каспийского моря и захватила бы нефтепромыслы? Там тоже ситуация была непростая, и свалившиеся с небес две танковые дивизии добавили бы очень много неприятностей. При этом, надо сказать, двумя дивизиями дело не ограничится, несмотря на очень тяжелое положение в ноябре 42-го года и последующих месяцах на Восточном фронте, немцы отправили очень приличные пополнения в Африку. Уже в ноябре начала прибывать 10-я танковая дивизия со своими 155-ю танками, почти все – новых типов. В декабре она прибыла полностью. Помимо нее в ноябре-декабре также обзавелась танками 90-я легкая дивизия, воевавшая до этого в Африке в качестве мотопехотной. Она получила танковый батальон из 71-й машины. В течение декабря прибыл 501-й батальон Тигров в составе 20 Тигров и 25 троек. Весной 43-го отправили еще роту Тигров (11 машин) и роту троек (19 машин) 504-го батальона. Помимо этого, в качестве пополнений с ноября 42-го по май 43-го в Африку отправили еще 68 троек и 142 четверки. Разумеется, практически все эти танки были потеряны, как потеряны были и все эти дивизии в мае 1943-го года при разгроме немецко-итальянских африканских частей. 10-я и 15-я дивизия более не были воссозданы, а 21-ю воссоздали и до января 1945-го она действовала на Западном фронте.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Танки Тигр успели отметиться в Африке
 Как пойдет зимой 1942-43 контрнаступление РККА, окажись эти три танковых и одна легкая дивизия, а также батальон тяжелых танков, не где-то в Африке, а на Восточном фронте, вместе со всеми своими пополнениями? Предсказать очень трудно, это целый танковый корпус хорошей численности с усилением в виде тяжелых танков. Не говоря еще об авиации, которой в 1942-м году в Средиземном море действовало уже очень приличное количество, а потери в отдельные, самые напряженные, периоды превосходили потери на Восточном фронте. Например, такое случилось в ноябре 1942-го, а всего с ноября 42-го по май 1943-го немцы потеряли на Средиземном море порядка 2400 самолетов. Но об авиации будет отдельный разговор.
 Оказало влияние это и на дальнейшие события. Как известно, летом 1943-го, перед началом операции Цитадель, немецкая армия столкнулась с нехваткой сил и средств, в частности остро ощущалась нехватка танков и солдат, в некоторой степени также и авиации. Связано это было и с потерями на Восточном фронте, и с несколько неудачным переходом немцев на танк Пантера, приведшим к уменьшению выпуска танков в первой половине 43-го года, и, в какой-то степени, с деятельностью наших союзников. Итогом стало то, что во многих дивизиях осталось по одному батальону танков (второй проходил затянувшееся переоснащение на Пантеры в Германии). Разумеется, в связи с тем, что убывшие в Германию батальоны оставляли свои выжившие танки в своей дивизии, комплектность единственного батальона порой бывала даже сверхштатной, однако бывали и недотягивающие даже до сокращенного штата (76 танков) батальоны. Например, в 13-й танковой (не участвовала в Цитадели) был 71 танк, из них 9 – устаревших типов (Pz.II и Pz.III с короткой 50-мм пушкой). В 17-й тд (24-й тк, находился в резерве) было 65 танков, из них 6 – устаревших типов. В 18-й тд (ГА Центр) – 74 танка, из них 22 устаревших типов. 23-я тд (24-й тк, находился в резерве) – 61 танк, из них 8 устаревших типов. Из недотягивающих до полного штата батальона (96 танков), но имеющих больше сокращенного (76 танков) штата, можно отметить участвовавшие в сражении на Орловской и Курской дуге 3-ю, 9-ю, 12-ю, 19-ю танковые дивизии, причем в последней имелось два танковых батальона ужасной комплектности, вместе имеющие меньше, чем полноценный батальон. Не всё шоколадно было и в дивизиях СС, в частности в дивизии Викинг имелось менее 50 танков, а в Лейбштандарте батальон не дотягивал до штатной численности. В тех дивизиях, где сохранилось два танковых батальона, они тоже обычно не могли похвастать полной, или близкой к полной, комплектностью, причем даже по сокращенному 76-танковому штату.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Такой танк летом 43-го года в Вермахте считался за хороший — имел длинноствольную 75-мм пушку и усиленный 30 мм накладкой лоб корпуса. Но много где ещё основу танкового полка составлял танк Pz.III, причем сохранялись даже старые машины с короткоствольными 50-мм пушками
 А теперь представьте себе, что в июле 43-го года у немцев оказывается еще один танковый корпус из трех танковых и одной легкой дивизий, усиленный батальоном Тигров. А на пополнение остальных дивизий отправляются те танки, что прибыли с ноября 42-го на пополнение в Африку – 68 длинноствольных троек и 142 четверки – 210 танков, хватит на пополнение трех – четырех, а то и пяти дивизий. К этому добавим части, уже в июле находившиеся на Сицилии для защиты в связи с ожидавшейся высадкой. А это не такие уж малые силы: дивизия «Герман Геринг» с более чем сотней танков и штурмовых орудий, 15-я панцергренадерская (так стали называться мотопехотные) дивизия с батальоном на 52 танка (из них 46 длинных четверок), 29-я панцергренадерская с батальоном из 43 Штугов и рота Тигров. Наклевывается еще один средненький танковый корпус. На Сицилии, кстати, в потери в итоге ушло 118 боевых машин, то есть они там не просто сидели.
 Помимо танков и авиации, о которой мы будем говорить отдельно в другой статье, важно также напомнить, что в Африке только в ходе Тунисской кампании, закончившейся капитуляцией окруженных частей стран Оси, немцы потеряли от 100 до 130 тысяч человек только пленными. Это именно «немцы», итальянцы посчитаны отдельно. Собственно, танковые дивизии требуют развитого тыла, снабжения, все эти люди, обеспечивавшие деятельность «африканских» дивизий тоже избежали Восточного фронта, но не избежали смерти и плена. Разумеется, это не сравнится с потерями на Восточном фронте, но эти 100 000 могли вместо этого стать пополнением для дивизий перед Цитаделью. Я не хотел бы недооценивать эти силы. Можно очень основательно пополнить дивизий десять (среди этих 100 000 далеко не все годятся для службы в боевых частях). ГА Центр как раз очень не хватало пополнения. Такими темпами и операция могла начаться раньше, как раз до того, как РККА успела всё как следует заминировать (по некоторым данным, значительное количество мин было установлено в июне 43-го).
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Пантеры успели прилично попить крови немецким рабочим и военным — имелись серьезные проблемы при запуске в производство, а очень низкая надежность примерно первых полутора — двух тысяч машин во многих случаях оставляла без боеготовых танков даже штатно оснащенные батальоны. Первые же сотни танков пришлось переделывать практически прямо после выпуска. В итоге в 43-м году Пантеры мало поступали на фронт, а те, что поступили, быстро выходили из строя
 Тем не менее, было как было, и на операцию Цитадель все эти люди, танки и самолеты не попали. После завершения безуспешного немецкого наступления инициатива перешла к Красной армии. Было организовано несколько наступлений, идущих одновременно и каскадом на разных участках, и немецким подвижным соединениям приходилось метаться по фронту, купируя прорывы РККА. Иногда удачно, иногда нет. Одной из важнейших проблем для немцев была нехватка этих самых соединений (танковых и панцергренадерских дивизий), из-за чего, собственно, их и приходилось перебрасывать туда-сюда, без возможности отдохнуть и немного восстановиться. При этом сама необходимость постоянных перебросок приводила еще и к опозданиям с контрмерами – пока дивизии перебрасываются, пока концентрируются, наступление идет. В итоге оборона Вермахта была расшатана и началось отступление к Днепру. Параллельно этому процессу происходило накопление сил Германии на территории Италии в процессе подготовки к отражению ожидаемой высадки. В августе 43-го на территории Италии находились четыре панцергренадерские дивизии и пять танковых – 16-я, 24-я, 26-я, Герман Геринг и Лейбштандарт (переброшен с Восточного фронта, оставив там свою технику, и получил новую технику перед отправкой в Италию). При этом Лейбштандарт был еще и усилен двумя ротами Тигров. Не все эти дивизии были в идеальном состоянии, но среди сильных и достаточно высоко комплектных по меркам 43-го года можно отметить Лейбштандарт, 16-ю тд, 24-ю тд. Среди панцергренадерских только 15-я имела слабый танковый батальон, остальные три отличались высокой комплектностью.
 А теперь представьте, что эти пять танковых и четыре панцергренадерских дивизии оказываются на Восточном фронте. А к ним еще добавим 10-ю, 15-ю и 21-ю тд, убитые об Союзников в Африке. Выйдет три – четыре танковых корпуса. А ведь в Италии находились не только подвижные соединения, но и некоторые другие, например, парашютные дивизии. Какие направления они усилили бы на Восточном фронте? С такими силами намного сподручнее будет наносить контрудары по советским частям и сдерживать их, уже без лишних метаний, и далеко не факт, что наступления лета-осени 43-го года будут столь успешны. Конечно, часть дивизий из Италии была переброшена на Восточный фронт, только произошло это заметно позже – в октябре, ноябре и декабре 43-го. РККА к концу сентября успела захватить двадцать один плацдарм на Днепре.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,Вторая мировая война,World War II, The Second World War,запад,Африка
Попадали Пантеры и в Италию, как в 43-м, так и в 44-м году
 В июне 1944-го на Западе уже 9 танковых дивизий, одна панцергренадерская, и два батальона тяжелых танков. Еще как минимум две танковых и четыре панцергренадерских дивизии, а также один батальон тяжелых танков находились в это время в Италии, причем они еще получали пополнения в Тиграх и Пантерах, да и в обычных Pz.IV тоже. Вместе это уже 11 танковых дивизий, пять панцергренадерских и три тяжелых танковых батальона. По количеству бронетехники на 15.06.44 есть следующие данные: на Западном и Итальянском фронтах было 1676 исправных немецких (не французских или каких еще) танков и 659 штурмовых орудий, на Восточном – 1192 исправных танка и 1319 штурмовых орудий. Как мы видим, на Западном фронте намного больше танков – основной ударной силы. Особенно стоит отметить наличие на Западе и в Италии намного большего числа исправных танков Пантера – 498 против 226 на Востоке, это к вопросу о том, что «против Союзников держали всякий устаревший хлам». Все эти 1676 танков с Западного и Итальянского фронта – это очень приличная сила, позволяющая оснастить танками парочку танковых армий. Еще раз отмечу, что в этих данных указаны танки немецких моделей, о количестве на фронтах трофейных французских танков мне неизвестно. И это я еще не говорю про пехоту, она тоже присутствовала на других фронтах. Летом 43-го общая группировка во Франции доходила до 600 000 человек, а летом 44-го – до 800 000. Так если в целом посмотреть, то к концу июня 44-го позиции у плацдарма в Нормандии занимало до 23 дивизий. Причем они там не просто стояли, а участвовали в довольно жестокой позиционной схватке, доведшей их до состояния лохмотьев к моменту прорыва Союзников с Нормандского плацдарма в конце июля 44-го. А всего во Франции, Бельгии, Нидерландах и Италии вместе было примерно 75 дивизий, данные немного разнятся. Разумеется, далеко не все эти дивизии были в приличном состоянии, но примерно такая же ситуация в этот момент наблюдалась на Советско-Германском фронте. И на Востоке тоже хватало устаревших и трофейных систем вооружения, каких-нибудь французских пулеметов, имелся дефицит боеприпасов, о чем пишет, например, Исаев в своей книге об операции Багратион. Более того, в ожидании высадки Союзников во Франции немцы начали примерно за полгода до нее усиливать группировку против будущего Западного фронта, пополняя 75-мм противотанковыми орудиями, пулеметами, танками и штурмовыми орудиями. Всего этого недополучал Восточный фронт. Вернемся к количеству дивизий – на Востоке по данным, что мне удалось найти, в июне 1944-го находилась 181 дивизия. То есть, если так грубо прикидывать, и перекидывать даже не всё, что есть, на Восточный фронт, можно было усилить группировку на Востоке на треть. Удастся ли в таком виде проводить операции, подобные Багратиону? А если учитывать еще и авиацию, которую тоже можно перебросить? Я думаю, что эти дополнительные части, особенно танковые дивизии и авиация, создали бы Красной Армии огромные проблемы. Поэтому столь часто звучащая идея о том, что Союзники высадились в Нормандии только когда РККА уже перешла к разгрому немцев, и значения это большого не имело, явно не соответствует действительности. Как минимум потому что сама высадка Союзников во многом оказывала значительное положительное влияние на успехи Красной Армии, причем даже еще до самого дня Д — за счет необходимости для Германии накапливать, держать и обеспечивать силы для отражения ожидавшейся высадки.
 Каков же итог? Разумеется, статья не подвергает ни малейшему сомнению, что наибольший вклад в разгром фашистской Германии внес Советский Союз. Однако тенденция к принижению роли наших Союзников, которую я наблюдаю уже много-много лет, имеет место. С моей точки зрения нередко это связано с банальным незнанием того, что же происходило на других фронтах. Пусть я и не объяснял ход сражений, задачей этой статьи было показать те силы, которые Германия была вынуждена использовать и пополнять на фронтах борьбы против наших Союзников. С моей точки зрения, эти силы были достаточно значимы, чтобы иметь возможность оказать влияние на судьбу в 41-м году одной операции, в 42-м году одного направления, в 43-м году нескольких направлений, а в 44-м году уже всего Восточного фронта. И я очень рад, что нашлись какие-то силы, которые заставили немцев хотя бы частью дивизий сражаться где-то еще, а не против Красной Армии. Ситуация неоднократно висела на волоске, невероятно дорогой ценой далась эта война, и слишком уж многое стояло на кону.
__________________________________________________
Автор: Виталий Илинич

Часть 3, каркас архитектуры

Мда, я дико извиняюсь за большое количество опечаток в предыдщих постах. Руки не поспевают за мыслью, а при редактировании потеряется часть оформления регулярно. Не зналь(
Имея на руках пример того, с чем предлагается работать, впору поговорить об архитектуре, которая и будет обеспечивать корректное и стабильное исполнение кода, однако, перед этим сделаем ряд важных оговорок:
1) концепт ориентирован на работу с жёстким распределением памяти (Siemens, OMRON CP/CJ series)
2) ввиду пункта 1 внутри одной структуры могут быть переменные которые И читаются, И пишутся, что существенно усложняет их проброс в коммуникацию(особенно тех, которые пишутся И с панели оператора, И из программы, например запуск в ручном режиме и сброс аварий в структуре управления)
3) объём памяти оперативность и для хранения кода, а также мощность CPU–считаются достаточно большими, чтобы не обращать на них внимания, в иных случаях требуется оптимизация кода
4) при работе с контроллерами, имеющими «классическое» распределение памяти, для обеспечения корректного управления моим кодом по ModBus RTU/TCP требуется дополнительная прослойка, которая будет пересобирать структуры в WORD и обратно, когда-нибудь я это исправлю, но явно не сейчас
5) вся концепция рассчитана на применение в обще-промышленной области, где потерять 10-20-30 мс роли не сыграет никакой, если вам нужна более высокая точность – добро пожаловать в чудный мир оптимизации и распределения кусков кода по разным циклам

Ещё одно лирическое отступление
Я осознанно не буду вам рассказывать как работает Промышленный Логический Контроллер (ПЛК), распределение его памяти, времени CPU по задачам системным и пользовательским, типы данных и прочую лабуду – это вы можете узнать на любых вводных курсах от любого производителя железа. Моя задача – показать пример прикладной реализации тех или иных задач.
Кстати, на ардуине в своё время использовал Union, который прекрасно решал проблему компоновки памяти, однако подавляющее большинство сред разработки для промышленного оборудования его или не поддерживают, или имеют кастрированную реализацию.

Генерация импульсов
Начнём с терминологии:
- импульс – это нечто, существующее предельно короткое время, в нашем случае сие ровно 1 цикл контроллера.

Большинство контроллеров предлагает свои системные генераторы импульсов в том или ином виде, но выглядят они следующим образом на примере 1 секунды: 
0.5 сек <-----►
<---->
0.5 сек
------>
время,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,реактор образовательный,длиннопост
Что это значит на практике? Предположим, время цикла ПЛК = 10 мс, тогда:
50 циклов <----->
<--->
50 циклов
<----------->
100 циклов
----->
циклы,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,реактор образовательный,длиннопост
Ёбушки воробушки, наш самописный таймер то проверяет когда сигнал = 1, а он равен 1 в течении 50 циклов, а за это время он насчитает 50 секунд, вместо 1! Лажа какая-то. Мы должны получить следующее:
о
1 цикл
циклы
>,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,реактор образовательный,длиннопост
Для этого есть несколько вариантов, и сначала мы отметём в сторону самый очевидный: мы НЕ будем в каждом таймере проверять фронт системного генератора импульсов, потому что каждая проверка фронта это +1 переменная в памяти ПЛК, а мы не хотим засирать его бесполезным хламом.
Итого остаётся:
1) вызывать системный импульс, проверять его передний или задний фронт и закидывать в pulse_1s;
2) вызвать стандартный таймер TON с длительностью 1 секунда и зациклить на самого себя, при срабатывании таймера взводить pulse_1s;
3) читать системное время и по внутренним часам ПЛК и при смене секунды однократно взводить pulse_1s, потребуется буфер для хранения и сравнения предыдущего времени;
4) прочитать из недр контроллера время предыдущего цикла, насуммировать несчастные наносекунды до 1 секунды и тоже записать в pulse_1s единичку, после чего очистить буфер.
5) ещё что-нибудь на ваше усмотрение.

Мне глубоко фиолетово, каким способом вы получаете в итоге pulse_1s, но вам достаточно получить его корректно 1 раз и все таймеры во всей программе сразу же заработают, причём корректно и, вау, синхронно. Т.е. если у вас в двух местах с разбегом менее 1 секунды начался счёт до 5, то закончится он тоже одновременно. В этом и плюс, и минус. Мы теряем точность. Но так ли она нужна?
Хотите точность до 100 мс? Пишем таймер Time_R для дробных значений генерируем pulse_01s.
Хотите точность до 10 мс? Ну… сделайте отдельный цикл ПЛК с такой частотой и там считайте. Или убедитесь, что ваше время цикла менее 10 мс на всю программу.
1
2
3
4
5
€
7
3
S
10
11
12
TYPE Time_R :	
STRUCT	
Start	:BOOL.
Q	:BOOL.
Pause	:BOOL.
Reset	:BOOL.
SP	:REÀL,
AP	:REAL,
One	:REÀL,
Percent	:REAL,
END_STRUCT	
END TYPE	
//вес импульса //прогресс выполнения,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный,

FUNCTION drv_Time_R : bool VAR_IN_OUT
T	:Time_R;
END_VAR VAR
END VAR
// Таймер с произвольной кратностью счёта T.One := 0.1;
IF T.Start AND NOT T.Reset THEN // Работа таймера IF T.AP < T.SP THEN
IF NOT T.Pause THEN
IF sys.pulse_01s THEN
T.AP := T.AP + T.One; END_IF;
END_IF;
T.Q :=
Обратите внимание, что этот таймер сложнее – мы считаем прогресс времени от 0 до 1,который можно использовать для вспомогательных операций (типа на 30% всего времени моргнуть правой пяткой) и красивого прогресс-бара на экране.

Архитектура
Перейдём к тому, ради чего был затеян данный раздел. Следите за руками…
1 цикл ПЛК,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,реактор образовательный,длиннопост
Где-то там приютилось ещё регулирование, типа ПИДов, но о них как-нибудь в другой раз.

На повестке дня вопрос распределения переменных по областям памяти. Что будет глобальным, а что локальным?

К глобальным относится всё, что ранее было названо глобальным, а также туда настоятельно рекомендуется выносить:
- все структуры управления драйверами
- все структуры параметров драйверами
- все структуры состояний драйверами
- общие параметры техпроцесса
- общее управление техпроцессом, типа включить/выключить установку

Из них в раздел энергонезависимой памяти попадают только структуры параметров. 
1
2
3
4
5
€
7
3
з
10
11
12
13
14
15
1€
17
13
13
20
21
22
23
24
25
2 €
27
23
23
30
31
32
VAR GLOBAL RETAIN
//Дискретные входа
DIx_cfg	¡ARRAY
//Дискретные вы:-:ода	
D0x_cfg	¡ARRAY
//Приводы с ЧП	
MDx_cfg	¡ARRAY
//Пневмоцилиндр	>ы
VDx_cfg	¡ARRAY
[0..10] OF
REQ – Request, запрос запуска. Сюда мы из авторежима будем писать команду для устройства, а затем скармливать драйверам в CMD.Start_A.
DONE – состояние устройств, если оно выключено или в аварии то соответствующий флаг =0, если успешно запущен = 1. Это хорошо заходит для минимизации алгоритма авторежима и всяких вспомогательных операций.

А что же тогда попадает в call’ы?Нерадивые любители звонков с автонабором? Увы, их неплохо бы там запереть, но места маловато. Там будут вызваны непосредственно экземпляры драйверов на исполнение со всей обвязкой. На примере уже рассмотренных дискретных входов это выглядит так… опс, в этом проекте их нет, вот вам выхода:

FUNCTION_BLOCK call_DO
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
DOx ¡ARRAY [0..10] OF drv_DO; END VAR
//Пневматика
//выталкиватель трубы из захвата dev := 0;
DOx[dev](
Signal := REQ.KC[0],
CHD := DOx_CHD[dev], cfg := DOx_cfg[dev],
Result => KC_0_CMD );
//выталкиватель трубы из
Из вкусного – вы можете создавать массивы и обрабатывать их пакетно, можете обрабатывать индивидуально, можете создавать со своим именем на каждый сигнал…но концепция не изменится. Они управляются одинаково, ведут себя одинаково, выглядят плюс-минус одинаково. Вы можете спокойно ковыряться внутри драйвера, подкручивая ему те или иные плюшки под конкретный проект, но вся остальная обвязка не сдвинется ни на бит. И это, йа щитаю, прекрасно!

Часть 2, приоритеты и базовые сигналы

Часть 1,введение (отправил в политоту из-за двусмысленных высказываний, ибо было сложно удержаться)

Приоритеты команды
Итак, вы решили взяться за благое дело и сэкономить пару дефицитных рупей на найме программиста и запилить всё своими руками. Что же для этого надо?
1) скачайте среду разработки
2) откройте среду разработки

3) закройте среду разработки и идите искать программиста
Для начала, давайте проясним одну вещь. То что я рассказываю не является аксиомой. Это концепция архитектуры, позволяющая сделать максимально гибкое и устойчивое решение, позволяющее безболезненно изменять различные прослойки кода внутри проекта, не роняя завод.

Итак, помните, я говорил что всё есть сигнал? Я наврал. Всё есть объект.
Вход - это объект.
Выход - это объект.
Бутылка - тоже объект, но более высокого порядка.

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

Вот всё что лежит до троеточия и будем рассматривать. Начнём с базиса, но перед этим - а кто здесь главный? Ты, я? оператор? директор? да пошёл ты в жопу, директор! Главная здесь ОНА:
,песочница,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,АСУ ТП,программирование,реактор образовательный,длиннопост

Мне лень рисовать пирамидки маслоу, поэтому обойдёмся блок-схемами. ГОСТы - для слабаков! Главное, чтобы было понятно...

УХ, ебать! Но это лёгкий вариант, извините.

Глобальные переменные
Обратите внимание на "Глобальные переменные". Что в них входит? А всё, что проходит красной нитью через весь код и существует в единственном экземпляре:
- Аварийный останов
- Общий сброс аварий
- Общий режим эмуляции
- Общий перевод в автоматический режим всех устройств (очень полезно, если оператор любит пошарить ручками где надо и забывает что делал в недрах нашей системы)
Как оно выглядит в объявлении переменных? Вот так:
All_Block:BOOL; //аварийная остановка
All_Reset :BOOL; //сброс всех аварий
All_Sim :BOOL; //общий режим эмуляции
All_Auto :BOOL; //перевести всё в автоматический режим
sys :system; //системные переменные
sec :REAL; //длительность одной секунды
Обратите внимание, на две последние переменные. Это наша опора и поддержка, которую мы будем гонять вместе с первой четвёркой по всем проектам.
sec - длительность секунды в часах, да, я знаю что считать в REAL повышает нагрузку на CPU, но пардон, у вас мощности позволяют то в 2к2+ году
sys - структура системных переменных, которая собирает в себя базовые компоненты, реализация которых отличает у разных производителей:
- флаг TRUE
- флаг FALSE
- импульсы с разным весом, которые живут ровно 1цикл программы
- прочая мелочёвка

Опс, опять что-то новенькое. 1 цикл программы. Да-да, ваш код всегда исполняется от начала и до конца сверху вниз, слевана право. За всякие go_to я лично вырываю руки, ибо нехер.

Итого, на текущий момент у меня в sys лежит:
1
2
3
4
5
€
7
3
3
10
11
12
13
14
15
16
17
13
13
20
21
22
23
24
TYPE system :
STRUCT
pulse_01s	:BOOL,
pulse_ls	:BCDL,
xON	:BOOL,
xOFF	:BCXDL,
Hand_DI	:BOOL,
Hand_D0	:BCDL,
Hand_AI	:BOOL,
Hand_A0	:BOOL,
Hand_M	:BOOL,
Hand_V	:BOOL,
Hand_Axis	:BOOL,
Hand_Any	:BOOL,
Дану ёб твою мать, скажете вы, что это за херня? И будете правы!
- x - не потому что хуй, а потому что ON и OFF зарезервированы системой и их нельзя просто так применять;
- Hand - флаги, что хотя бы одно устройство данного типа переведено в ручной режим;
- Alm - флаги, что хоть одно устройство данного типа находится в аварии;
- Any - сборный флаг для всех флагов, привязанных к типам устройств;
- V - Valve, а не то что вы подумали. Клапан, заслонка, задвижка;
- M - не мудак, к сожалению, а Motor. Вентилятор, транспортёр, всё что вращается - всё Motor. Я иногда делю на MD и MDA, дикрестное и дискретно-аналоговое управления, но это личные заморочки, не более;
- DTL - DataTimeL.. хз что за L, типовая структура формата год-месяц-дата-час-минута-секунда, которую мы будем использовать при работе с расписанием и всем, что требует проверки системного времени.

Ну наконец-то! А где код-то? Хрена вам, а не код. Рано.
На очереди ещё одна структура, которая будет всегда и везде, обеспечивая работу вон той страшной картинки наверху, обычно я называю её CMD:
1
2
3
4
S
€
7
3
s
10
11
12
TYPE CMD : STRUCT

	Start_A	:BOOL,
	Start_M	:BOOL.
	Hand	:BOOL.
	Lock	:BOOL.
	Force	:BOOL.
	Vector	:BOOL.
	ResetOp	:BOOL.
	Reset	:BOOL,
END_	STRUCT	
END	TYPE	
//управление в автоматическом режиме //управление в ручном режиме
//режим управления, 0

УправлениеУра! Наконец-то! Мы добрались! И теперь...
FUNCTION drv_CMD : BOOL VAR_INPUT
Alarm :BOOL; END_VAR VAR_IN_OUT
CHD :CHD; END_VAR VAR
END VAR
// Опредление режима работы драйвера IF NOT All_Block THEN
//He принудительный режим IF NOT CMD.Force THEN
IF NOT CHD.Lock AND NOT Alarm THEN //Автоматический режим IF NOT CHD.Hand THEN
CHD
,песочница,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,АСУ ТП,программирование,реактор образовательный,длиннопост
Видите вон там странный Alarm, которого раньше не было? Видите? И он есть!
А всё почему? Да потому что...
1) мы делаем универсальный код, который будет применим для всего и вся
2) программа - это не только программа, это ещё функциональный блоки функции

В чём же разница? Если кратко - функциональный блок может иметь свои внутренние, приватные, переменные, а функции - работает только с внешними и временными.
СтопЭ. временные и внутренние - какая в пень разница?
Внутренняя - сохраняет своё значения при переходе на новый цикл программы.
Временная - теряет своё значение может содержать случайную величину при переходе на новый цикл программы.
Таким образом, если вы внутри функции делаете А+Б=С и по значению С принимаете решение КАЖДЫЙ раз вызывая функцию, то можно использовать временную. А если делаете А+Б = С один раз и больше к этому не возвращаетесь, только читая С, то нужна внутренняя переменная. И опять таки... если вы хотите сохранить значение С при перезапуске контроллера - будьте добрый, сделать её энергонезависимой, т.е. Retain.

Вернёмся к Alarm. Для функциональных блоков (FB) и функций (FC) есть следующие виды переменных:
- входные - можно только читать
- выходные - можно только записывать
- входные-выходные - как тугая попка трапа, можно и читать и изменять значение
Это очень важно, когда у вас одна и та же внешняя переменная передаётся разныеFC/FB а вы сидите и хлопаете глазками, почему значение теряется посреди программы. Да потому что вы проебались и привязали не к тому типу. Наиболее наглядно сие видно в графических языках:
"«•оссл/и^рв1* "SseLCChjOt f eFE " n9Zjr*Lbu*m wrCAetualJ5p««dr
—	1ч» a Lu ii On
—Switch OÍÍ “
—	P9ÜUT« .Actuad Sp«M»
“Pebiule
"Eag¿.ae*
Huyauc_Or.
— rK Oa'
Prc5C5_3í>eed_?.síic "pl!_Pr**et_Sp*ed ? bsd	" -eftohftd*
SBC,песочница,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор
Слева- входные (input) и входно-выходные (input-output) переменные, справа -выходные.

Фух, разобрались, теперь вызовем нашу страшную функцию:
2S
30
31
// Управлявшее слово
drv_CMD(Alarm := stare.Alarm, CMD := CMD); IF CMD.Hand THEN sys.Hand_V := TRUE; END IF,песочница,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,АСУ ТП,программирование,реактор образовательный,длиннопост

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

Выглядит управление дискретным входом следующим образом:
ооооо
Глобальные переменные	Ограничение уровней доступа на НМ1	Сигнал	
Внутренние переменные	[а] Администратор	0 У	BOOL = неопределён
Управление из алгоритма	0 Оператор	0 У	BOOL = TRUE
Управление с НМ1	(ГГ) Пользователь	0 У	BOOL = FALSE
Внешние сигналы	Без ограничений	0 У	Значение
Дискретный

Итак, для работы драйвера нам необходимы:
- CMD - структура команд, рассмотрена выше
- cfg - структура параметров
- state - структура состояний

Дискретный вход слишком прост и отдельный набор состояний ему не нужен. Состояния включают в себя коды аварий, подсчёт наработки, вспомогательные плюшки для удобства отображения оператору "что тут происходит, мамочки, почему оно встало?!"
TYPE cfg_DI :
STRUCT
use_NC	:BOOL;	//выбор	типа сигнала, 0 - нормально открытый, 1 -	нормально закрытый
T_ON	:INT;	//время	фильтрации дребезга на включение сигнала
T_OFF	:INT;	//время	фильтрации дребезга на выключение сигнала
END_STRUCT END TYPE,песочница,geek,Прикольные гаджеты. Научный,
use_NC...
NC - нормальной закрытый сигнал
NO - нормально открытый сигнал
Например, у вас есть дверь. Стоит датчик, контролирующий что "дверь закрыта". 
Есликогда она закрыта сигнал = 0, а при открытии двери сигнал = 1, это нормально открытый сигнал.
Если когда она закрыта сигнал = 1, а при закрытии двери сигнал = 0, то это нормально закрытый сигнал.

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

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

УУУ, сука, сколько буков то! А это только начало! И я не ответил на главный вопрос - на кой хер нам вообще различать на уровне драйвера тип сигнала? В алгоритме основном поправим, да и делов то. НЕТ! Хватит! Не усложняйте себе жизнь!

Вам, как программисту, должно быть глубочайше насрать какой там тип датчика -сработал это всегда = 1, не сработал это всегда = 0. И именно эту задачу унификации решает драйвер дискретного входа. УНИ-ФИ-КА-ЦИИ, а не загрузки процессорного времени бесполезным хламом. Так менеджеру и ответите, что вы ускоряете дальнейший цикл разработки, ага.

ТаймерыАвтор, ты заебал, где код драйвера? Да вот он, только работать он у вас не будет:
1
2
3
4
5
€
7
3
5
10
11
12
13
14
15
FUNCTION BLOCK drv DI
VAR_INPÜT Signal ENDJVAR VÄR_IN_OUT	:BOOL;
CMD cfg END_VAR VÄR_OUTPUT	:CHD; :cfg_DI;
Result END_VÄR VAR	:BOOL;
Clock	:ARRAY [0..1] OF Time_S;
END VAR,песочница,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор
А почему - угадаете? Не, вы не тупые, вы умные. Просто я хитрожопый и вместо системных таймеров использую самописные. Нахуа-хуа? Да потому что системные кривые. И их мало. И каждый системный таймер можно использовать только один раз(если они аппаратные, как в старых ПЛК).
Почему использовать системный таймеры, это грех:
- если вы измените во время работы таймера уставку времени и она окажется меньше, чем уже прошедшее время с момента запуска таймера, то он встанет раком
- нет паузы
- нет сброса
- нет контроля % отсчитанного времени
- и, самое главное, время в формате Time, которое очень неудобно выводить на панель оператора
Самописный таймер решает все эти задачи. Как вы уже догадались, там потребуется структура переменных для него и FC, вот они для самого простого таймера, который используется в драйвере выше:
1	ТУРЕ Т1те_3	:		
2	БТЮТСТ			
3	Бгагг	:ВООЬ;	//управление таймером	
4	0	:ВООЬ;	//выход таймера	
8	Раизе	:ВООЬ;	//пауза	
€	Иезег	:ВООЬ;	//сброс текущего времени	
7	БР	:ШГ;	//ЗебРотпб - уставка, время, которое надо отсчитать	запуска таймер^
8	АР	:ЮТ;	//ActualPoint - аутальное время, которое

FUNCTION drv_Time_S : bool VAR_IN_OUT
T	:|liine_S;
END_VAR VAR
END VAR
// Таймер с краткостью 1 секунда IF T.Start AND NOT T.Reset THEN // Работа таймера IF T.AP < T.SP THEN
IF NOT T.Pause AND sys.pulse_ls THEN T.AP := T.AP + 1;
END_IF;
T.Q := FALSE;
ELSE
// Заданное время достигнуто
T

И весь этот охреневший объём кода вам нужен в промышленном контроллере только для того, что проверить нажатие кнопочки или срабатывание маленького геркончика. Очень мило, не правда ли?)

Благодарю за терпение, забыл важную картинку и не смог отредактировать пост. В прошлом варианте поста были вопрос на тему, почему pulse_01s и pulse_1s имеют тип BOOL и как вообще эта мерзость должна работать. Не зря в начале было сказано об архитектуре, именно её мы затронем третьей части историй после кружечки кофе и предложим своё видение "как оно должно работать", что, естественно, не претендует на истину и даже не носит рекомендательного характера, потому что код каждого программиста индивидуален и уникален, но если мы сможем писать хотя бы так, чтобы сосед слева мог его прочитать - это уже хорошо.

Часть 1, введение

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

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

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

Заебись, всем спасибо, пока.
Шутка.

Когда эти ампулы изготовлены, они отправляются на завод производства напитков. Например, вот рекламный ролик производителя линий розлив с внятным описанием технологии и что для чего используется.



Итак, мы ознакомились с тем как оно выглядит со стороны и пора заглянуть под капот.

Шкафы управления
Шкаф, сука, управления. Управления чем? А вон всей той хернёй, которая двигалась на роликах выше. Всё что шевелится - управляется из ШУ, а что не шевелится - жалкими смертными, вроде нас с вами. Их ещё "операторами" называют. А над ними стоят "технологи", которые должны разбираться в куче страшных циферок на тех маленьких экранчиках, что мелькали в видосиках, и правильно их настраивать. Одна ошибка - и ты ошибся. Спалил движок, погнул валы, испортил партию продукта.

Что живёт в шкафу?
Кратко:

Подробно:
) -m NEU ТО OI
(t. T ?
V
»«•»и,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,автоматика,напитки,завод,политика,политические новости, шутки и мемы,длиннопост,реактор образовательный

Контроллер
Поскольку я не проектировщик, хоть и могу разобраться в схеме и даже от руки нарисовать, а сраный неИТ-шный программист, то и интересует меня лишь одна часть: МОООЗГИИИ... оу, у кого там от зомбицида лекарство? Нет, давайте без топора обойдёмся, пожалуйста.

Мозги бывают разные: серые, белые, красные...
,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,автоматика,напитки,завод,политика,политические новости, шутки и мемы,длиннопост,реактор образовательный
,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,автоматика,напитки,завод,политика,политические новости, шутки и мемы,длиннопост,реактор образовательный
,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,автоматика,напитки,завод,политика,политические новости, шутки и мемы,длиннопост,реактор образовательный
Но главнее всех - желтые:
,песочница,АСУ ТП,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,автоматика,напитки,завод,политика,политические новости, шутки и мемы,длиннопост,реактор образовательный

Жёлтые - это, мать её, безопасность. А знаете сколько раз за мои 12 лет работы я видел их российских ШУ? Угадаете? Правильно. 0 ёбаных раз. Клали в эрафийском общепроме на ёбаную безопасность. Иногда ставят некое реле безопасности, но подключают его так, что лучше бы не ставили вообще, инвалиды безрукие... Может кто-то где-то и использует их, может даже правильно подключает, я за них искренне рад. Но когда в следующей схеме я увижу это дерьмо на текущей работе - мата будет много. Мат - двигатель процесса.

Пробежимся слегка по производителям железа, их особенностям и нюансам.

Siemens - божественный нектар, услада глаз моих...
# Имеет понтовые линейки с кодом "400", которые ставят атомщики и нефтяники. Горячий аппаратный резерв - это к ним.
# Линейка "300" - ...у тракториста. Уверенный середнячок, который уже лет пять пытаются снять с производства, но выходит как-то не очень. Слишком много их продали в 2000-х годах по всему миру.
# Линейка 1500 - пришла на смену 300 и 400, имеет монстров, способных в одну харю утянуть хороших размеров завод, но, сами понимаете - одна ошибка и весь завод ошибся. Не надо так.
# Линейка 1200 - самый ходовой продукт... был. Их вы видели в видео про шкафы.
=> языки: LAD, SFC, FBD, STL, SCL, Graph, ещё какая-то новая херня для очень тупых вышла в 2021 году, но я её не запомнил
=> среда разработки: закрытый проприентарный пакет Step7, WinCC, объединённый в новый TIA Portal
+ единственный в своём роде с полностью свободным доступом ко всей памяти внутри ПЛК, что позволяет творить офигенные вещи и очень сильно оптимизировать код
+ огромный форум со всеми вопросами и ответами, отличная документация, стабильный как кирпич, пока не ёбнешь молотком на 220
+ единственный в своём роде, кто позволяет загружать программу большими кусками без остановки контроллера (у остальных есть "нюансы" или ограничения)
- закрытая среда разработки, специфичный синтаксис с куче # и ", из-за чего прямой перенос кода на другие системы невозможен, всё ручками, будьте добры
$$$ дорого, но кря кря, 30 дней триала

ОВЕН - для диспетчеризации и садомазохистов
# Имеет широкое распространение среди любителей сэкономить
=> языки: LAD, FDB, CFC, ST
=> среда разработки базируется на CoDeSYS, что обеспечивает хорошую совместимость с большой кодовой базой, пока вам не нужно что-то специфичное
+ . . .
- их тоже больше не будет
- за его цену вы можете взять siemens 1200 и не знать горя
- теряет программу, слабый проц, мало памяти, нет внутренней шины для модулей ввода-вывода
- документация, техподдержка? не, не слышали
$$$ бесплатно, как сыр в мышеловке

OMRON - японцы, которым запретили хентай, решили поебаться сами с собой
# Старая линейка CJ/CP, которая что-то может, но лучше бы вам говнокодить, иначе не вывезет
# Новые линейки, в которых чёрт ногу сломит, много решений заточенных под координатное управление и перемещение
=> языки: LAD, FDB, ST
=> среда разработки: закрытый проприентарный пакет CX-Programmer и SYSMAC



+ оно шевелится и шевелится хорошо, только надо сперва придрочиться
- слабая документация
$$$ дорого, но кря
B&R - когда-то я считал, что хуже овна ничего быть не может...
# Большой спектр решений, много ОЕМ продукции
=> языки: LAD, ST, C
=> среда разработки: закрытый проприентарный пакет B&R Automation
+ хорошо умеют себя продавать
+ поддерживают С
- ошибки компилятора памяти
- программа управления может повредить ОС контроллера
- нельзя сохранить исходник в контроллере или скачать обратно загруженный код и отредактировать, нет проекта - нет проекта
$$$ 30 дней и плати

Shneider Electric - ваша головная боль и ваш бич, когда вы ловите ошибку, которой нет в документации
# Дичайший зоопарк железа и сред разработки, намешана прорва Legacy в одну кучу
=> языки: LAD, FDB, ST
=> среда разработки базируется на CoDeSYS, что обеспечивает хорошую совместимость с большой кодовой базой, пока вам не нужно что-то специфичные
+ большое количество фирменных библиотек для всей линейки дополнительного оборудования собственного производства
+ документация на уровне Siemens, но без форума техподдержки
- есть много мелких нюансов, которые никто нигде не раскроет, а вы разобьёте себе голову о стену пока в них разбираетесь
$$$ 30 дней и плати, привязка к аккаунту

Carel - для вентиляции и отопления самый торт, много готовых программ и решений. ST, LAD, FDB. Бесплатно на 30 дней. Считается импортозамещением, лол.

Beckhoff - Win10+виртуальный контроллер сверху. Хорошо работает, но дела с ними не имел.

Rockwell, Honeywell - что-то слышал, пару раз видел, дорого-богато.

В целом на этом список ходовых прошлогодних решений заканчивается. Наступает 2022...

Со временем, когда остынет мой пукан, я внятно расскажу о китайских и новых импортозамещённых решениях, но не сейчас.

Разработка
Итак, как программиста, нас интересует раздел "языки":
LADFBDSFC/CFCST
Как мы видим, все кроме ST - графические языки. Ах да, все они - группа языков стандарта IEC 61131-3. Перенести графические языки между средами разработки - адская, невыносимая боль, потому каждый гад считает нужным делать собственный визуальный редактор с извращённым функционалом и заморочками. К слову, самый крутой редактор LAD - у Seiemens. Для FDB мне больше всего понравился Carel cSuite.
В связи с этим, мы обратим свой взор на ST и будем дальше ковыряться исключительно в нём. Для Siemens это будет SCL (а STL у них - мерзотный древний язык, который вроде как может дофига всего, но только для сименса и вы без глаз останетесь во время его отладки, когда одна переменная / команда - одна строка, а ещё они зеброй подсвечены, фу, чур меня чур).

И теперь, с этого момента мы перейдём к сути...
Всё есть дискрета и аналог. Всё. Без исключений.
Дискретный вход.
Дискретный выход.
Аналоговый вход.
Аналоговый выход.

Дискретный - он либо есть, либо нет. Как секс.
Аналоговость - определяется качество, условно говоря.
И то, и другое нужно обработать, перед тем как использовать. Те кто пытается в user-friendly, как овно, берёт самостоятельно на себя первичную обработку сигнала, что вызывает адские муки когда надо что-то изменить, потому что это нельзя вывести на ту кнопочную панельку и сказать: "Чел, зайди туда, нажми это и отъебись." Нееет, нихуя, вы должны собирать монатки, закупать билеты и пиздюхать в жопу мира ради 5 минут правок и 100 минут поиска "где этот ебаный бэкап". Ну вот надо ли оно вам, а?

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

Троллфейс Галантного Века: из истории мопсов.

 Пытливые умы, глядя на что-то, задаются вопросами. При взгляде на мопса вопросов обычно два: как? и зачем? Уверен, я в этом не одинок - поэтому сегодня все, кому интересна история данной насмешки над естественным отбором, могут удовлетворить своё любопытство. Начнём мы нашу историю, по обыкновению, давным-давно…
 Свои истоки мопс - порода некрупных собак с плоским морщинистым лицом - берёт, вероятнее всего, в древнем Китае. Упоминания о “квадратных короткорылых” псах встречаются в летописях тибетских монастырей с 700-400 годов до н. э.. Если это мопсы, это делает их одной из старейших пород собак. Их вывели из особо морщинистых мастифов в качестве комнатных собак - что обеспечило им оглушительный успех при дворе китайского императора. Складчатые собакены быстро стали атрибутом верховной власти, а собаководы продолжили, извиняюсь, совершенствовать породу. Главная цель была в том, чтобы складки на лбу пса съезжались в ассиметричный иероглиф “властитель”. Эталон был труднодостижим - поэтому, чтобы у Нефритового Стержня было хотя бы несколько “печатных” любимцев, мопсов разводили массово. Остаточный неформат выдавался за особые отличия аки шоколадная медалька. Вообще при дворе мопсы были практически культом, ходячими символами Императора: им давались сложные имена, у них была своя охрана и штат слуг... вероятно, мопсы всю свою жизнь были окружены беззаветным обожанием.

,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,мопсы,собака,собакен, песель, пес,Англия,Великобритания,Great Britain, UK,страны,19 век

 Затем собаки подобной конструкции отметились в Нидерландах XVI века. Именно конструкции, потому что тогда голландцы ещё не мыслили породой и называли всех маленьких собак спаниелями - из-за чего историкам остаётся лишь доверять описаниям. Или не доверять. Неизвестно также, откуда “квадратные кожистые спаниели" появились в Голландии - то ли привезли как диковинку из Поднебесной, то ли они на самом деле происходят от сибирских пород России, то ли вывели на месте из обычных спаниелей… так или иначе, свой звёздный путь в Европе мопсы начали там. В 1570 году Вильгельм Оранский - голландское “наше всё” ещё при жизни - оказался спасён бдительным мопсом по кличке Помпей, который лаем предупредил спавшего герцога об убийцах.   После инцидента порода была объявлена героическим символом династии Оранских - что вызвало взрывной рост популярности и популяции. Именно голландцы первыми прошарили одну из меметичных особенностей породы: мопсы не возражают против ношения нарядов, даже вычурных и неудобных. Есть свидетельства, что некоторые гвардейские полки Нассау имели на вооружении мопсов в мини-мундирах. Скорее всего, они могли выполнять не только парадные, но и сторожевые функции - тогдашние мопсы физиологически отличались от нынешних.


.V
А,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,мопсы,собака,собакен, песель, пес,Англия,Великобритания,Great Britain, UK,страны,19 век

 Примерно в те времена зародилось само слово “мопс” - согласно наиболее популярной версии, оно восходит к староголландскому mop, “кирпич”, иронически описывая плоское лицо собаки. По другой версии, оригиналом послужил немецкий глагол mopperen, “брюзжать”, и отсылает к саундтреку типичного мопса. В любом случае именно под этим наименованием мопсов узнала Мария Стюарт, будущая жена своего кузена Вильгельма, в свою очередь будущего короля Англии по кличке Третий. Перед отъездом в Лондон в 1688 году новобрачные взяли с собой неустановленное количество мопсов, где августейшие владельцы вновь сделали им превосходную рекламу. Вскоре при дворе появился эпический аниме-кроссовер: мопсы были скрещены с кинг-чарльз-спаниелями, из-за чего новые спаниели этой породы стали похожи на длинношёрстных ушастых мопсов. Гуглите на свой страх и риск.

 При этом само слово “мопс” в Англии почему-то не прижилось - поначалу их называли голландскими мастифами, а затем перешли на pug-dog, сокращённо pug. Интерпретации этого термина расходятся: есть мнение, что образованные английские дворяне использовали латинское слово pugnus, “кулак”, для остроумного описания скукоженной морды пса. Другая гипотеза ведёт к староанглийскому слову puck, которым издавна называли чертей и гоблинов - а во времена пришествия мопсов этим словом ласково называли домашних любимцев, в частности экзотических обезьянок. Это объясняет третью гипотезу - что “чертятами” ранее называли обезьян, и уже за лицевое сходство с обезьянами мопсы переняли название. Дескать, bull-dog - “бычья собака”, pug-dog - “собака-мартышка”. В целом слово pug было довольно популярно в XVII веке как ласковый эпитет; сохранился ряд писем, где возлюбленные называют так друг друга. "Зайка", "солнышко", "чёртова псинка"... мопсы плотно обосновались в пантеоне "мимими" до того, как это стало мейнстримом.

После смерти Вильгельма III в истории мопсов началась череда взлётов и падений. И в Англии, и в Голландии их судьба целиком зависела от того, нравилось ли их специфическая моська нынешним монархам. Полный цикл этих колебаний мы опустим, и перейдём сразу к интересной части - когда из редкого придворного атрибута мопсы просочились в моду всего высшего сословия. К началу XVIII века наличие мопса в хозяйстве считалось признаком близости к высокой культуре… за что аристократов вскоре начали беспощадно стебать газетные карикатуристы, влюбившиеся в комично-туповатую физиономию “чертёнка”. Особенно это проявилось в неспокойные 1715-1745 годы: тогда огромному количеству неугодных прессе лордов, пэров и прочих сэров дорисовывали короткие лапки, слюнявые брыли и нацеленные в разные стороны глаза их питомцев. Так книгопечатная Европа впервые открыла для себя концепт фотожабы - к счастью, дворянская гордость не позволила этому сказаться на количестве мопсов на единицу площади. Не будет преувеличением сказать, что мопс стал забавным мемом, который распространяли всеми доступными способами. В том числе на физических хрюкающих носителях.

Уильям Хогарт, 1745 год. Автопортрет с мопсом.

Мопсо-пародия на автопортрет Хогарта работы Чарльза Черчилля.

 А мемных эпизодов было предостаточно. Когда Папа Климент XII в 1738 году запретил католикам вступать в масонский орден, герцог Клеменс Баварский решил затроллить понтифика и основал свой орден, с преферансом и барышнями. Без иронии. Орден Мопса получил название "за верность и стойкость”, туда было разрешено вступать католикам и даже католичкам. На собраниях братья и сёстры называли друг друга мопсами, ложами заведовали Großmöpse (Большие Мопсы), а верховенствовал сам герцог в титуле Мопса-гроссмейстера. Бытовые привычки мопсов - шкрябание в дверь, колготание по ковру, ношение ошейника, лай - обрели в Ордене ритуальный смысл. Посвещение новичков включало эти действия, а также поцелуй специального фарфорового мопса, клятву на шпаге (для женщин - на зеркале) и, конечно, обнимашки с псом-талисманом. Для идентификации члены Ордена использовали серебряные мопсо-медальоны, которые можно было встретить по всей Европе. Этим, впрочем, информация о скрытном Ордене исчерпывается. В 1747 году студенты Гёттингенского Университета замутили у себя филиал в ответ на запрет университетских властей создавать студенческие ассоциации. Их ложу разогнали, и Орден ушёл в глубочайшее подполье. Последнее его упоминание датируется 1902 годом - в марсельской газете сообщалось, что “мопсовые сектанты замечены за набором новых адептов на Саксонской улице”. Такая вот контркультура.
Фарфоровый мопс - центральная реликвия каждой ложи Ордена Мопса. Впоследствии они стали просто модной декорацией в залах и салонах европейской аристократии.
 Возвращаясь в Галантный Век - вместе с популярностью щекастые “кулачки” обрели статус культурного феномена, проникли в искусство. В Германии “ритуальные” фарфоровые мопсы пошли в массовое производство, в Англии вместе с карикатурами стали рисовать картины, в Италии мордашки мопсов стали наносить на узоры, лепнину, театральные маски… к примеру, так появилось современное итальянское название породы, carlino. Это сценический псевдоним артиста Карло Бестинацци, который выступал в маске мопса и снискал обожание публики. А вы думали назвать вид жуков в честь Шварцнеггера это прям инновация? Впрочем, в отличие от жуков сами собаки тоже активно участвовали в театральных представлениях - обычно им доставалась комедийные роли обезьян и шикарные костюмы.

 В Италии мопсы вообще получили очень тёплый приём. По свидетельству 1789 года, “...даже в Лондоне нет столько мопсов, сколько в Падуе. В каждой встреченной мной карете сидит по мопсу.” Из Италии породу вместе с изменённым названием - carlin - приняли во Франции. Введённые в высший свет Парижа маркизой де Помпадур, мопсы стали питомцами французских королев вплоть до Марии-Антуанетты. Французы не изменили мопсам и после Революции: Жозефина Богарне, тогда ещё будущая жена Наполеона Бонапарта, обожала своего мопса по кличке Фортуна. В период Террора собачка таскала хозяйке письма в тюрьму. Известна история, что во время первой брачной ночи Жозефина запретила Наполеону сгонять собаку с кровати - и зря, поскольку вскоре муж был ею укушен. Собакой, не Жозефиной. Впрочем, достоверность байки подтвердить не представляется возможным.

 Следующим витком истории стало правление королевы Виктории - при её дворе плоскомордых собак почти боготворили. Она подарила породе настоящий Ренессанс, лично занявшись выведением подвидов. Именно её страсть к этим собакам дала начало Королевскому Клубу Собаководов в 1873 году, образец с которого стали брать аналогичные организации по всему миру. Одним из достижений организации можно назвать первые попытки состыковать стандарты красоты с гуманностью. В эпоху головокружительных гвардейских шапок и удушающих дамских корсетов высший свет вдруг решил, что обрезать мопсам уши - что делали ещё китайцы - в высшей степени бесчеловечно. Уважаемые джентльмены атаковали Клуб яростными реляциями о том, как варварское подрезание ушей уродует природную красоту пёсиков и заставляет их адово стродать. И хотя это выглядит довольно лицемерно на фоне того, что происходило в те времена с людьми, сам порыв уменьшить чужие страдания вопреки эстетике и традиции можно рассматривать как маркер развития западной культуры. Уже к концу 1880-х, при содействии Клуба, подрезание ушей было запрещено.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,мопсы,собака,собакен, песель, пес,Англия,Великобритания,Great Britain, UK,страны,19 век
Королева Виктория с одним из своих мопсов. Судя по всему, имело место совмещение негативов - без фотошопа мопсы до таких размеров не дорастают. Я надеюсь.
,Cat_Cat,vk,интернет,длиннопост,История,реактор образовательный,мопсы,собака,собакен, песель, пес,Англия,Великобритания,Great Britain, UK,страны,19 век
Групповой портрет мопсов королевы Виктории - Ольга, Педро, Минту, Фатима и Венера и их неизвестные друзья. Нет, автор не знает кто есть кто.
 Впрочем, не был Клуб и средоточием гуманизма: его усилиями мопсы сегодня выглядят так, как мы привыкли. На ранних изображениях их лапы несколько длиннее, нос не настолько сплющен и хвост не совсем рудиментарный. Викторианская селекция оказалась беспощадна к и без того не очень живучим тварюшкам: уплощение морды лица повлекло частые проблемы с дыханием и охлаждением, характерные для мопсов по сей день. Некоторые исследователи, впрочем, склонны связывать изменения не столько с деятельностью британских селекционеров, сколько с “новой волной” мопсов из Китая, попавшей в Европу в 1860-х годах. Оказывается всё это время там мопсы тоже, независимо, становились более плоские и складчатые. Так или иначе, несмотря на досадные проблемы со здоровьем порода в её новом обличье практически вытеснила “старую” версию. Лишь в последнее время проявляется интерес к “ретро-мопсам”, отчасти из жалости к их непростой судьбе.

 Конец “длинного XIX столетия” в Европе мопсы встретили в состоянии исторического триумфа, сопоставимого с божественным культом у китайских императоров. Однако ничто не вечно: после заката монархий в Европе исчез целый набор институтов, на которых держалось процветающее элитное собаководство. Многие породы комнатных собачек пришли в упадок, когда “потерянному поколению” стало не до них. Но мопсы выжили. Больше всего они обязаны этим американцам - будучи в своё время под сильным культурным влиянием Великобритании, они переняли мопсоводство и укрепили его. По сей день США являются мировым лидером по задокументированным запасам мопсов: Американский Клуб Собаководов фиксирует порядка 20 000 морщинистых лбов, в то время как британский Клуб оценивает численность в 5-6 тысяч. Впрочем, у автора нет никакой информации о Китае - кто знает, может быть нас ожидает третья волна…лна…
______________________________________________
Автор: Даня Годес 
______________________________________________
Покормить кота:
Сбербанк: 4006 8006 0209 5399
Яндекс.Деньги: 4100 1623 736 3870
Все деньги идут на мотивацию авторов и редакторов работать активнее. При переводе по возможности делайте пометку "С Реактора от ...", чтобы мы понимали, на что перевод. Спасибо!
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме (+732 постов - )