Результаты поиска по запросу «

образовательная программа

»

Запрос:
Создатель поста:
Теги (через запятую):



YouTube криптография программа ОБЛАКО реактор образовательный 

Развернуть

реактор образовательный видео 

Как на самом деле формируется пол, и что может пойти не так

Покажите это видео знакомой вате и любителям скреп
Развернуть

Химия мать ее реактор образовательный mircenall кальций 

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

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

Ваще это нисколько не удивительно, учитывая масштабы всего кальциевого в мире, так что за ним и в землю лезть не обязательно, достаточно вспомнить о самом себе! О да, мы вернулись к самому началу, ведь костная ткань по большей части кальциевый гидроксофосфат, а если тебе повезёт найти где-нибудь

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

Развернуть

SSETHTZEENTACH реактор образовательный видео 

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

Развернуть

длинопост реактор образовательный что за хуйня? 

Подумаем вместе

Почему? Почему у нас чтобы пойти на работу кем-то нормальным нужно выучиться и пройти собеседование, чтобы ездить на автомобиле нужно выучиться и сдать экзамен, чтобы сделать что-то нужно доказать этим людишкам, что ты умеешь, что ты можешь!? А чтобы жить в квартире и сверлить с утра до вечера ничего не нужно, кроме денег. Приходишь с кучкой денег и вот квартира твоя, и никто тебе до этого не грел голову «а как надо следить за тем, чтобы не затопить соседей снизу» или «как сделать ремонт быстро и тихо». Просто живешь и на своем опыте все проходишь, а если опыта нет? Вот жил в деревне, выучился, заработал на квартиру, а как жить не знаешь и всем плевать, тебе дают квартиру. Считаю, что нужно сделать обязательную процедуру подготовки людей к жизни, например, в школе в 7-9 классах выделить несколько часов на жизненные темы типа «что такое частная собственность, порядок приобретения частного дома» и «основы жития-бытия в городе». Напишите свое мнение в комментах. 

Развернуть

реактор образовательный бег спорт марафон 

Как пробежать марафон и не сдохнуть. Руководство для начинающих.

Всем привет. 

На днях я прошел свой первый марафон, который проходил 7 ноября в Стамбуле. После нескольких месяцев активной подготовки все таки смог это сделать за довольно хорошее, как для начинающего время. (За 3:43:57 с нуля, без мам пап и кредитов). Причина по которой я решил написать пост в том что в странах СНГ абсолютно отсутсвует так называемая "культура бега". Особенно наблюдая как здоровые люди гробят свое здоровье, понимаешь что мало кто знает о технике, пользе, вреде, плюсах и минусах бега. И вот собрав свой не большой но все же опыт, решил написать этот пост. Хочу что бы это “информационное пособие” было полезным для бегунов начального и любительского уровня и уберечь дорогих реакторчан от кучи ошибок которые могут подпортить ваше здоровье в начале вашей беговой “карьеры”. Так же информация будет полезна не только для людей которые хотят пробежать марафон, но и для кто просто хочет быть здоровым, сбросить пару кило и быть в тонусе.

ЛЕНТА Новое (+624071) Хорошее Луч ЮМОР 1И пост Г А V ' < joyfoictor.ee & О Л СЗ - : О а £#*сФейи*Ша СЭ 8У0 СЭ ОН СЭ веуора СЭ ИодвЛ еэ N«08 еэ АгеЬвгу О вроП Й СНоп!« О СосМаН» Й ОНшг Вооктагкв О) Яаа<8пд ОБСУЖДАЕМОЕ (*23) О ПРОЕКТЕ СЛУЧАЙНЫЙ ПОСТ > Комиксы отписаться гифки отписаться

И так, побежали...

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

На самом деле дистанция в 42.2 км не такая уж страшная как кажется на первый взгляд. Среднестатистический человек может подготовится к прохождению марафонской дистанции за 3-6 месяцев. Что немаловажно, это можно сделать без особых страданий и изнурительных тренировок. Мне в возрасте 30+ хватило 4 месяца с нуля. И “с нуля” я имею ввиду до подготовки к марафону даже 10 км пробежать за час давалось с трудом. Главная же проблема подготовки - это избежать ряд ошибок которые могут остановить бегуна в начале пути. Начнем мы естественно с самых распространенны, который делает начинающий спортсмен.

1. На тренировках надо бегать так быстро, как можешь.

реактор образовательный,бег,спорт,марафон

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

Как это чаще всего происходит.

Мы выходим на тренировку, начинаем бежать с такой скоростью что слюни из рта размазывает по всей роже, через 5 минут начинаем задыхаться, после пробежки боль в ногах, отдышка, сопли текут, состояние как буду то под поезд попал. Потом с довольным лицом идем домой, думая “как хорошо я сегодня потренировался, No pain, no gain мать его!!”. На следующей тренировке понимая какие страдания нас опять ждут, идем уже с отсутствием желания бегать. Так две-три недели и люди забивают на бег. Говорят “ну очевидно что бег - это не мое”. Даже если новоиспеченного бегуна хватает на пол года такого “бега” то прогресс идет не очень активно, скорость и дистанция не сильно растет, тренировки сильно истощают морально и физически и уже это убивает мотивацию еще сильнее. И поверь реакторчанин, я через это прошел сам и знаю о чем говорю. 

Но что же делать, как быть?

В чем суть: Для того что бы бегать быстро, надо научится бегать медленно. Примерно 85% (А для начинающих все 100%) тренировок должны проходить в медленном темпе. Медленный считается такой темп, при котором вы спокойно можете бежать 40 минут и более (Например максимальная дистанция такого бега для меня была 54км и заняло примерно 7 часов но данная тренеровка была что то вроде челенжа и не входила в мой план изначально), без отдышки при этом спокойно разговаривать связанными предложениями. Также пульс не должен превышать 60-70% от вашего максимального пульса. (Про пульс будет ниже) Такой бег отлично подготовит тельце начинающего бегуна к нагрузкам и поможет избежать травм, повреждения связок и суставов. “Медленный” бег у всех разный. Для кого то это может быть и 5 минут на километр, а для кого то и 10 и зависит от базовой подготовки бегуна. Так же добавлю что даже у профессиональных спортсменов медленные тренировки составляют 70-80% от тренировочного плана.

2. Игнорирование пульсовых зон и ЧСС.

реактор образовательный,бег,спорт,марафон

Эта ошибка уже не такая веселая как хотелось бы. Думаю что каждый слышал что на очередном забеге кто то закончил гонку раньше времени и отправился в морг. Суть этой проблемы чаще всего заключается в том что бегуны-аматоры не знаю что такое ЧСС и как с ним работать. Тренируясь продолжительное время неправильно, бегуны нарабатывают себе пороки сердца и на очередной гонке финиширует уже в Вальгалле. И тут у людей конфуз. Мол “как так Витька помер на забеге а его сосед дядя Гриша бухает всю жизнь и живой!”. Хотя казало бы нам всю жизнь говорят о том что бег помогает тренировать наше сердце.

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

Как определить эти зоны и что это вообще такое?

Все довольно просто. Пульсовые зоны - это по сути процентное соотношение от вашего максимального пульса. Всего их 5. Рассчитать персональные пульсовые зоны можно при помощи любого онлайн калькулятора по запросу в поисковик -> “calculate pulse zones”. (В целом онлайн калькуляторы не всегда точные и для больше точности нужно проходить тест на газоанализаторе, но данные расчеты по формулам онлайн калькуляторов подходят для большей части людей) Нас интересуют пульсовые зоны 1-2. Например для меня в возрасте 31 год и пульс в покое 54 уд/мин, верхняя грань 2й зоны будет примерно до 135 уд/мин. Зная эти данные уже можно строить тренировочный план или просто заниматься бегом спокойно.

Так же хотел бы остановится и разобрать вкратце плюсы такого подхода.


- Бег на низком пульсе безопасен. Шанс наработать проблемы с сердцем минимален


- Это самый оптимальный пульс для жиросжигания.


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


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



3. Каденс.

реактор образовательный,бег,спорт,марафон

"Что? Что это вообще?" - это чаще всего я слышу от бегунов в парке после вопроса «на каком каденсе они тренируются». В лучшем случае кто то знает что такое понятие вообще существует. (Но скажу сразу что это спорная тема и сети куча сторонников и противников каденса. Но так как вы поняли что я все же “сторонник” то расскажу про него) Каденс - это параметр частоты перемещения ваших ног за отрезок времени. Оптимальным считается каденс 180 шагов в минуту. Хочу заметить сразу что темп, скорость, ландшафт или ещё какие то параметры влиять на ваш каденс во время бега - не должен. Можно бегать как и быстро так и медленно с одинаковым каденсом. 

“Зачем оно ваше надо?”

В чем суть: Задача бегуна не только натренировать ноги и сердце, но так же сделать вашу технику бега более экономичной и безопасной. Дело в том что начинающие бегуны в своей технике делают большие амплитудные шаги, с средним каденсом примерно 140-160. Но так как при беге каждый шаг создаёт дополнительную нагрузку в виде удара о землю, которая несколько раз выше чем при ходьбе, то эта нагрузка идет на колени, спину, связки, и иногда внутренние органы. Отсюда и растет большое количество мифов о том что бег убивает колени, и это действительно так если бегать с низким каденсом. Так же низкий каденс скорее всего свидетельствует о том что ноги при беге ставятся впереди себя и тормозят бегуна. Оптимальный каденс позволит сделать ваше бег более безопасным, так как ноги не будут совершать лишних ударных движений.

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

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

Что жрать бегуну, еда, спортивное питание и тд.Алкоголь, курение, вредная еда и влияние на организм. (Любителям пива и вина могут облегченно вздохнуть)Альтернативщики в беге.(Да, тут есть и такое)Одежда и девайсы для ваших тренировок.(Без рекламы брендов и тд)Бег вместе с другими видами спорта (Качалка, велосипед, бассейн, тд и как это совмещать) Длительность тренировок, беговые объемы, тренировочные планы, как совмещать работу, личную жизнь и бег.Мифы о беге Как начать бегать с нуля (Даже если за всю жизнь ходил не дальше чем к холодильнику)



По возможности могу ответить в комментах на вопросы по данной теме.
Развернуть

Отличный комментарий!

бегает он, ишь ты. рассказал бы лучше, как из дома выйти и не сдохнуть
Pyroksyllin Pyroksyllin09.11.202111:25ссылка
+14.6
Принципы те же:

В чем суть: Для того что бы выходить из дома быстро, надо научится выходить медленно. Примерно 85% (А для начинающих все 100%) выходов из дома должны проходить в медленном темпе. Медленный считается такой темп, при котором вы спокойно можете выходить из дома 40 минут и более
kreyser_pepyaka kreyser_pepyaka09.11.202111:29ссылка
+33.8

песочница geek АСУ ТП программирование реактор образовательный длиннопост 

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

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


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

3) закройте среду разработки и идите искать программиста

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

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

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

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

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


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

ооооо Глобальные переменные Внутренние переменные Управление из алгоритма Управление с НМ1 Внешние сигналы Ограничение уровней доступа на НМ1 [а] Администратор 0 Оператор [п~] Пользователь Без ограничений Приоритетность команд Приоритет управляющих сигналов и режимов работы от наивысшего


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

Глобальные переменные
Обратите внимание на "Глобальные переменные". Что в них входит? А всё, что проходит красной нитью через весь код и существует в единственном экземпляре:
- Аварийный останов
- Общий сброс аварий
- Общий режим эмуляции
- Общий перевод в автоматический режим всех устройств (очень полезно, если оператор любит пошарить ручками где надо и забывает что делал в недрах нашей системы)

Как оно выглядит в объявлении переменных? Вот так:

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

песочница,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,Прикольные гаджеты. Научный, инженерный и айтишный

1 2 3 4 5 € 7 3 5 10 11 12 13 14 15 16 17 13 13 20 21 22 23 24 25 2€ 27 23 23 30 31 32 33 34 35 3€ 37 33 35 40 41 42 43 44 45 4€ 47 43 45 50 51 52 53 54 55 5€ 57 // ДИСКРЕТНЫЙ ВХОД // Сигналы от датчиков, например: // - уровень // -

А почему - угадаете? Не, вы не тупые, вы умные. Просто я хитрожопый и вместо системных таймеров использую самописные. Нахуа-хуа? Да потому что системные кривые. И их мало. И каждый системный таймер можно использовать только один раз(если они аппаратные, как в старых ПЛК).
Почему использовать системный таймеры, это грех:
- если вы измените во время работы таймера уставку времени и она окажется меньше, чем уже прошедшее время с момента запуска таймера, то он встанет раком
- нет паузы
- нет сброса
- нет контроля % отсчитанного времени
- и, самое главное, время в формате 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 // Заданное время достигнуто


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

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

Развернуть

песочница АСУ ТП программирование geek реактор образовательный длиннопост 

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

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

Мда, я дико извиняюсь за большое количество опечаток в предыдщих постах. Руки не поспевают за мыслью, а при редактировании потеряется часть оформления регулярно. Не зналь(

Имея на руках пример того, с чем предлагается работать, впору поговорить об архитектуре, которая и будет обеспечивать корректное и стабильное исполнение кода, однако, перед этим сделаем ряд важных оговорок:
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 ); //выталкиватель трубы из

Из вкусного – вы можете создавать массивы и обрабатывать их пакетно, можете обрабатывать индивидуально, можете создавать со своим именем на каждый сигнал…но концепция не изменится. Они управляются одинаково, ведут себя одинаково, выглядят плюс-минус одинаково. Вы можете спокойно ковыряться внутри драйвера, подкручивая ему те или иные плюшки под конкретный проект, но вся остальная обвязка не сдвинется ни на бит. И это, йа щитаю, прекрасно!
Развернуть

самолеты техника реактор образовательный песочница 

Вызываю к помощи аэропидоров

Вот вышла новая статья, а я, как человек, ходящий на Взгляд только как на лакмусовую бумажку пиздеца, заинтересовался. Есть ли среди пидоров реактора аэропидоры или около пидоры, дабы пояснить, есть ли у самолёта шансы или все пиздежь, что вероятно.
3S&4 *B082%»19:15 û й m_vz.ru/economy/202C 0 5 ВЗГЛЯД Q = ЭКОНОМИКА США испугались вхождения России в мировую элиту авиастроения 23 декабря 2020,11:20 142 США наносят удар по российской гражданской авиации. Случилось это почти сразу после того, как своё первый полет совершил конкурент
Развернуть

реактор образовательный it-безопастность Халява мануал видео Образование самообразование видеокурсы geek 

Пак знаний, учение свет. Metasploitот - от теории к практике.

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

ДАННЫЙ МАТЕРИАЛ РАСПРОСТРОНЯЕТСЯ С ЦЕЛЬЮ ПРОФИЛАКТИКИ IT-БЕЗОПАСТНОСТИ. АВТОР МАТЕРИАЛА СНИМАЕТ С СЕБЯ ОТВЕТСТВЕННОСТЬ ЗА ТО, КАК БУДУТ ИСПОЛЬЗОВАТЬ ЭТОТ МАТЕРИАЛ. НЕ ОРУЖИЕ УБИВАЕТ ЧЕЛОВЕКА, А ЧЕЛОВЕК ДЕРЖАЩИЙ ЭТО ОРУЖИЕ.

Сегодня я принёс вам крупный видеокурс по одной интересной программке под названием "Metasploitот" Кратко говоря, данная программа позволяет найти уязвимости в ОС или сетевом оборудовании (и не только там) и использовать их (уязвимости) по вашему усмотрению.

Собственно вот раздача. Сидовать буду столько сколько смогу. Если будут проблемы с торрентом, напишите, я перезалью. Так что чекайте комменты. 

UPD: Вижу что народ качает... Кто скачал - не уходите плиз с раздачи. Спасибо.


реактор образовательный,it-безопастность,Халява,мануал,видео,video,Образование,самообразование видеокурсы,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор

Развернуть
В этом разделе мы собираем самые смешные приколы (комиксы и картинки) по теме образовательная программа (+1000 картинок)