Стрим-запись, в которой на примере щита АВР разбирается подход к построению программы для ПЛК на языке ST. Показан ход мыслей: от упрощения задачи до выделения ядра логики, выбор структуры на основе CASE, объявление переменных, работа с массивами и переход к массиву функциональных блоков.
- 00:17 Подход к построению программы на структурном тексте
- 13:10 Разбиение программы и уровни абстракции
- 19:08 Подключение измерителя, ИБП и питания контроллера
- 33:23 Классификация программ для ПЛК на основе CASE
- 39:42 Пошаговое исполнение и структура CASE на ST
- 47:12 Объявление глобальных переменных и переход по шагам
- 54:53 Проблема автозаполнения в CODESYS и создание импульсов
- 66:04 Переход от структуры к функциональному блоку
- 73:02 Логика перехода на сеть с отключением ДГУ
- 83:31 Архитектура программы: массив функциональных блоков
- CODESYS
- ПЛК110-30
- ST
- CASE
- ОВЕН
Кому полезно: Инженерам АСУ ТП, программистам ПЛК, интересующимся построением архитектуры программ на ST
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:04 Так мы онлайн. Так посмотрю сейчас. Так привет, друзья, всем привет с вами снова. Сергей Романов, на связи в этом видео я буду писать программу на структурном тексте для Авр для. Счета АВР, но поводом к данному стриму послужила. Вот что уже несколько раз несколько человек разных. Меня спрашивают 1 и тот же вопрос, и как. Программировать, но суть даже не в том, как программировать, как бы как сам структурный текст. С этим то как то вроде бы понятно, а вот как построить. Саму программу как принять какие то архитектурные решения в программе, как решить конкретные задачи и знать, что они решены правильно потом.
1:07 Бывает, задача описана и непонятно сразу, как все решить, с чего вообще начать писать программу и так далее. Но я хотел на примере, это задача как раз таки попытаться продемонстрировать, как нужно решать подобные задачи, то. Есть, как мы будем думать, с чего вообще начать? Вот есть общая задача вообще, с чего начать и как идти от шага к шагу дальше, дальше, как принимать решение по этому поводу. Вот надеюсь к нам присоединиться побольше. Людей я также попрошу у вас написать в чате, что звук есть и что все нормально. Все в порядке, и я как раз увижу вообще, кто присоединился. Может быть, тут у нас есть какие то знакомые наши. Все поприветствуемся, поздороваемся. Всем вот так, опять же, смотрите по счету! Авр, я какой то Авр Щит писал, не знаю несколько лет назад, и это было по моему на овен лоджию блоками. Короче, это вот новая задача, то есть я ее практически буду решать.
2:16 Для структурного текста заново потом, когда я буду вам пытаться объяснить порядок мыслей, каких то или порядок. У меня, видите, даже нет словарного запаса такого, чтобы. Объяснять подобные темы это хорошо и для меня как были развития, и это будет сугубо мое личное мнение о том, как как подходить, решим сдать как методология там. Типология, решение задач, то есть это не то, чтобы вот вот так надо. Да так правильно, то есть это не книга, это не учебник. Это просто мой личный опыт, то есть как это. Делаю я вообще очень сложно передать опыт в этом отношении совсем недавно. Как раз человек не спросил, и я над этим задумался, что когда какая то задача, я читаю в ТЗ.
3:09 Я ее как бы сразу образно вижу я, как бы, как вот строитель, вижу сразу все узлы, все примыкания. Как что будет здесь сделано аккуратно, где будет про силиконин Шевчик все такое, вот если аллегоричным языком. Говорить то есть я, это как бы сразу все вижу, но. Но я понимаю, почему потому, что у меня опыт, я уже как бы какие то все вещи знаю и уже представляю себе даже вот это. Вот целиком машину со всеми шестеренками. И уже понимая, какая шестеренка чем будет управлять в этом полностью механизме. Да, то есть, как вот как я буду абстрагировать программу. Да что я вот вынесу в 1 блок, что будет другим блогом, какие какие решения? Как у меня будут вот исполнены и когда поставил задачу. А как объяснить вот человеку, как надо, то тут проблема? А как я объясню, я даже забыл, что изначально человек понимает, то есть вот это вот ощущение.
4:07 Беспомощности перед поставленной задачей я его как бы забыл, и мне трудно как бы сейчас одновременно сравнить тут и тут и сказать. А ну вот ты вот тут, да вот надо тебе вот так вот так. Идти, потому что я и плохо понимаю, где человек находится. Но какие то основные принципы я, конечно, постараюсь выделить. Так кто у нас тут все так + все окей, все нормально, а с УТП у нас?
4:37 Все отлично, мы в порядке, ну давайте базу базу. Предположим, у нас есть какое то техническое задание. Я вкратце его опишу простое техническое задание. Предположим, там насосная станция. Насосная станция из 2 насосов, 1 основной другой резервный, работают они по уровням. На долив воды в бак, то есть вода кончилась, долили, набралась, выключили, кончилось долине. Требуется обеспечить работу в автоматическом и ручном режиме, также требуется сеть.
5:24 Защита от сухого хода защита от перереза перетока воды в бак, защита от перекосов фаз выпадения фаз высокого напряжения низкого напряжения. Защита двигателя от перегрузки. Предположим такое задание и вот сразу на нее посмотреть в комплексе. Да вот на такую, как бы массу, да?
5:50 И ты понимаешь, что у тебя в голове должно быть? Конечно, контакт, который там вот не включи двигатель, если авария и вот этот контакт, вот этот контакт, но в каком порядке, где кто перед кем? Как бы очень трудно сразу сориентироваться. И начинать писать программу сразу, все контакты эти создать нужно сразу выписать все, что нужно. То есть, если мы сразу начнем комплексно решать всю эту задачу вот одновременно, да то есть сразу строить вот эту вот.
6:17 Большой объем, а ведь у нас не только то, что мы определили нас еще 2 двигателя, основной резервный. Да, потом, возможно, выравнивание моточасов, если 1 вышел из строя автоматическое. Переключение на 2 двигатель и так далее, все эти задачи под задачи они все наслаиваются. Это получается такой, как бы Кракен да более сложный, но и если, допустим, ну я вот для меня такая. Задача она простая, как бы то есть, я ее сразу вижу все совокупность. Я могу сразу начинать прям всю, но если, допустим, вам сложно, да сложно вот эту задачу сразу все понять, что с чего. Начать то я считаю, что нужно упрощать задачу до малой задачи, которая будет понятной. Давайте приведу пример, как это, допустим, давайте из вот этой комплекса сдачи сейчас уберем.
7:17 Все цепи защит, да это защита напряжения, перенапряжения, защиты двигателя и так далее, включая защиту сухого хода. Все вот все цепи защит, мы отсюда убрали, у нас осталось что осталось 2. Насоса основной резервный режим ручной автоматически управления управления по уровням как бы уже проще. Да как бы вот смотрите уже проще, но все еще как бы комплексно, вот давайте еще. Сократим, но и сократим, и постараемся выделить бизнес логику. То есть вот та прямая логика, то основная задача, вокруг которой вообще пляшут все. Вот вот что вот вообще самое главное, предположим. Нету пылка ничего, вы вообще живете в 80 годах, и вот есть насос на станции. Вот и вот что вот самое базовое благодаря сегодняшним средствам автоматизации мы можем там понаворачивать. Всяких там, в ТЗ, там основной резерв на автоматическое переключение. Все, но это благодаря тому, что мы можем это исполнить. Конечно, в релейной схеме тоже можно было бы исполнить там. Паутину там на дело всего, ну какая у нас основная логика, бизнес, основная логика, бизнес. У нас есть бак, у нас есть насос, насос должен заливать воду в бак, то есть да по уровню вот это. Это это ядро, да то Сидро все остальное. Основной резервный автоматический ручной режим все такое. Это все уже как бы эта часть, да тоже бизнес логики прилегаемая, но это не ядро, понимаете? То есть я хочу, чтобы в комментариях писали по ходу? Вот что, где то есть какие то вопросы или что, насколько это все понятно, но это не ядро самой логики, понимаете, а вот эта логика.
9:15 Основная основа и теперь как бы теперь, даже если теперь непонятно. Да как это сделать задачу, потому что я уверен, что есть люди, которые даже вот даже в этом, а в автоматическом режиме, что то там включить, выключить? Убрали автоматически ручной режим, у нас же логика набирать, но в автоматическом и в ручном режиме, но опять же в ручном режиме это не бизнес, логика правильно. То есть в ручном режиме мы не набираем по уровням в. Ручном режиме мы включили, и он набирает, набирает, пока мы не выключили. То есть это вообще не логика, да то есть ручной режим отсюда убираем? То есть получается, мы набираем в автоматическом режиме, но, но если? Даже вот с этим непонятно, конечно, это уже всем понятно, скорее всего, но если даже непонятно, я как пример приведу. Мы можем еще упростить, еще упростить вообще самое ядреное ядро. Этой логики заключается в том, что. Нам нужно просто включать насос, чтобы насос качал нам воду в бак. Все, вот она, вот вот, есть насос, и вот есть контакты управления включить. Да все и пожалуйста, но это понятно, как сделать, да понятно, у нас есть переменная. Выхода, да вот есть внутри переменная. Мы передали на нее тру, насос включили, передали Фолс, выключили все. Вот она простая логика, то есть мы до нее свелись до понятного уровня, опустились и сделали, выполнили, да? Вот мы и прям блоками там или структурным текстом. Неважно, да как сейчас речь, даже не то, что там структурный текст, неструктурный. А вообще как бы комплексно подход к решению задач, и когда мы опустились вот в эту. Часть уже вниз, и нам эта задача, понятно, мы ее исполнили, мы написали, например, создали перемену ИКС, старт задали перемену Икс Памп. Вот насос Икс, старт все и и к старции не секс спам, то есть, если ИКС старт включен. До каким то образом, значит, у нас Икс Памп тоже включается все, и теперь мы начинаем отсюда вот от этого ядра идти обратно вот обратно, да и присоединяется самое близкое. Вот что суда самое близкое, самое близкое, ну. Конечно, каждый по другому, то есть, ну кто скажет. Ну, защита двигателя, ну хорошо, защита, начинайте защиты. Включите сюда цепь защиты, добавьте, что если их старт и если не сработанная защита, то есть добавьте вот этот. Вот блок, но для меня мне кажется, что здесь близкое именно автоматический режим. Да то есть он, это как бы это как ручной режим Икс. Старт нас получился ручной режим, да как все вот ручной режим есть, то есть автоматически. Теперь это более или то есть, и к старт до переименовываем Мануал Мануал. Ну что было понятно ручной режим, да или авто и ниже нижнего уровня? Да, то есть опустились, тоже работает насос, а если верхний вышний. Выгоне отключились, все получается, когда я начинаю это работать. Я вижу, что у нас должен быть гистерезис Зона нечувствительности. То есть не просто не просто, когда мы ниже нижнего уровня, потому что раз вода и мы. Выключились тут, а выключить на тут. Значит, наши все трясет, все я уже отделяю, делаю сетом рысетом ниже нижнего уровня верхне верхнего уровня. Это включение отключения у нас сета русета и его с автоматическим режимом. Через Энд через или на мотор все у меня пошел блок. Понимаете, все теперь дальше, какое следующее. Все у нас уже есть, но с двигателя 2 до Основной резервный все делаем переменную выбора, какой двигатель сейчас. Есть все и на выход, мы раздваиваем, то есть берем селектам. Если выбрана это, то выводим на этот двигатель, это двигатель, и тогда и начинаем вот эту программу, начинаем ее обрастать вот этим вот этой логикой далее.
13:10 Люди также очень переживать за то, что вот как программу правильно разбить, создать именно архитектуру, то есть вот эти вот уровни абстракции. Да что вынести функциональный блок, что функцию, что оставить внутри программы все, но в этом плане я думаю, что вообще очень трудно. Дать совет как что, как правильно именно делать, конечно, можно дать, но трудно. Я думаю, что трудно связана даже не с тем, что трудно это. Сформулировать потому, что, обладая достаточными навыками русского языка, это все таки возможно сделать, а трудность в том, что человек. Который не понимает даже, как ему программу создать. Да вот с чего ему начать объяснять, ему уровне абстракции очень сложно, поэтому я. Считаю, что вот если человек в таком состоянии находится, не понимает и вот начинает он создавать и пошел строить строй, строй строить мне. Кажется, когда вот он дойдет эти последние вот эти вот условия, ТЗ он внедрит в эту программу. Да он сам увидит, увидит, да вот что, как ее. Отделить, вот какая часть логики может работать независимо, какая часть может работать тут независимо и как они могут быть связаны с. собой, то есть вот это вот видение. Она открывается само, и она открывается не сразу, а именно когда ты уже реализовал проект, ну по крайней. Мере у меня чаще так происходит, я сажусь писать программу. Я вообще не думаю об уровнях абстракции, ни о чем я просто думаю о решении. Задач вот мне задача надо решить все, вот у меня точка б. Я двигаюсь из нее сюда, вот надо все, я ее решаю, там у меня вот такое воротилово. Может, получается, что туда сюда, но в процессе, когда у меня начинается такое, что так, а мне надо вот это. Да, а куда добавлю сюда сюда? Сюда, сюда баблю, то вот это здесь, а, а это должно после этого сработать сюда после. Но тогда это получается здесь, а вот у меня какая то. Не связка я уже начала видеть, а ну тогда надо просто вот немножко поменять архитектуру, то есть сделать чуть чуть другую структуру. Программы, чтобы вот это вот вся Светка заработать, она сама потом напрашивается в процессе. И когда уже всю программу напишу, тогда я уже. Смотрю на не во 1 у меня в голове, уже все держится вся логика. Я уже понимаю, как что работает, и тогда мне легко уже взять ее как то.
15:40 Реорганизовать или модифицировать, как сказать, улучшить. Я берусь за ее улучшение уже потом, только когда уже в принципе программа написано. Конечно, вы есть подходы и когда какие то задачи заранее уровня абстракции. Определяется, то есть это может быть требованием технического занятии, то там урм прослойки там или еще что, то там для баз данных, чтобы можно было менять там все. То есть это может быть уже прям на уровне техзадания прямо? Обусловлено, что вот обязательно вот этот слой абстракции, вот этот слой абстрактный слой абстракции. Вот если если это есть за, конечно, то тут нужно уже думать через это. Ну а так как бы вот, ну вот все вкратце не знаю. Понятно было или нет, давайте приступим вот как раз к разбору моей задачей и посмотрим, что мы сможем сделать сегодня. Я сейчас покажу вам схемку, что у меня есть на схемке, а потом мы обсуждаем комментариев, пока так и нет, да?
16:52 Так давайте вот посмотрим, значит, схему счета Авр. Схему тоже, как бы я нарисовал, но собирать щит буду не я, собирать его будет другой человек, как бы. Но я вот предоставляю схему, и я предоставляю нашу программу, значит, у нас 3 ввода. 1 Это дата центр. Который будет, ну там не знаю, дата, центр обеспечить там сеть, там не знаю хостинг там что. Компьютеры серверы и все такое нас 3 ввода. 1 Вот это сеть, да, наверное, так так сейчас сделаем. Сейчас я запущу свою программу любимую.
17:44 Для Виндовс 11 очень медленный, никому не рекомендую, если кто, то вот хотел на него перейти и еще не перешел. Не переходите, вот сразу вам предупреждаю, это просто жесть жесть. Конечно, когда Фишечки, вот видите, тут можно во вкладочках открывать.
18:13 Эти штучки, но Ну вот как так смотрите, столько ищет долго. Вот оно все. Все готово, так смотрите. Значит, вот это у нас. Так сеть, и у нас 2 ввода раз 2 это у нас дгу. Я что то не совсем помню, как ДГУ расшифровывается. Ну, я знаю, что так это генератор, генераторное устройство там, что такое значит у генераторного устройства. Далее пойдем по схеме, вот.
19:08 Все это сливается в 1 штуку, значит, через предохранители подключается вот такой приборчик. Это Еко Эфовский измеритель параметров в сети Смотбасс рту суда через трансформаторы, через трансформаторы. Сюда поступает он, измеряет ток, потребляемый и также получается, измеряет напряжение. Потом у нас через двухполюсный автомат, просто розетка простая, розетка стоит к розетке, подключен ЮП Шнайдер. Изи Юпс до УПС короче, там 500 ватный или сколько то, но с этого Упса у нас уходит основные ветки, то есть, по сути, конечно, по схеме. Значит, я бы должен был бы тут воротить такое, что где на фазе? Есть оттуда с фазы и брать и делать 1 фазу. Так у меня есть УПС, я вообще не думаю об этом. Если как если там 5 10 минут, даже пока там заводится, ДГУ не будет напряжением, меня это не волнует, он не. Будет на Упсе, у меня на Упсе всегда все будет работать теперь дальше. Поехали, но вот у меня, значит, здесь вот супса приходит. Здесь у меня 3 автомата, значит, розетку я себе запланировал розетку и. Запланировался для того, чтобы, если я к счету подошел, у меня, возможно, на Упсе будет еще 1 розетка. Но чтобы уж точно знать, здесь у меня розетка, она для того, чтобы я мог компьютер подключить и там. Что то прожить или ну всегда у меня было тут напряжение? Естественно, блок питания для питания контроллера нашего полка 110 и панель оператора Кинка. И это вот приводы на автоматы 3 штуки приводы. На автоматы, значит, с 1 это общий, а с 2 с 4 это у нас контакты открыть, включить, выключить. Да вот, но и они вот тут, как бы питание находятся, значит, еще у нас на вот этих вот автоматах, так сейчас.
21:09 Вот на этих автоматах, которые у нас на них стоят дополнительные контакты. Спаренный контакт до ВКонтакте аварийный контакт, который мне говорят о положении выключателя. Значит, у нас есть, вот потом здесь, у меня. Пуск на включение каждого автомата. Вот тут у меня электрическая блокировка. Да, то есть я блокирую, не включаю этот, если хотя бы 1 из этих включен, но хотя в программе там и так будет задержка. Небольшая, но все таки вот блокировка у меня есть. Здесь дальше поехали, у меня сразу же здесь, на следующей странице у меня вот входа, да мы вот эти вот.
21:57 3 Катушки это катушки просто вот как раз таки вот с этих вот контактов. Положение автомата до КФ 1 Киев 2 КФ 3 и они как раз таки блокируют. Включение автоматов других, потом у меня здесь, на выход 2 катушки, это заводить ДГУ. Вот они у меня, они же до ушли через эти клеммы. Туда стартовать дыбушки, и у меня вот обратно сюда вход. Это 3 реле контроля фаз с каждого ввода, чтобы знать, что там напряжение нормальное. Можно включать и, как сказать, положение контакта дополнительного и аварийного. Вот это аварийный, как 1 это вот она, да как бы отсюда.
22:48 Проходит с этим, ну все на этом все. Ну, тут у меня вот уж какие я уже выписал себе тут читать, какие регистры мне надо читать с вот. Этого вот вот вот с этого устройства какие нужно читать регистры? Ну и вот что самое главное, у меня здесь это вот карта сигналов пыл. К сгенерировал я, на каком входе, что у меня есть она. Мне сейчас понадобится программу, я уже создал полка, 110 31 что я буду делать я. Пока не буду рассуждать самое простое, что я сделаю я. Просто вот дискретные входы и дискретные выходы я их как бы за, ну как сказать.
23:34 Заимевую опять же здесь, что сделать? Можно прям здесь прописать, я не любитель здесь прописывать. По моему, я бы сделал бы так. Я бы добавил бы. Глобальные переменные, вот тут вода вот так, например, х РКФ. Сеть, допустим, да сеть. Да вот так добавил бы, потом сориентировался бы по конфигурации. Вот тут что это, а Икс, 1 да вот и просто его так прописал бы.
24:28 Вот так все привязал, почему бы я это так сделал? Потому что, знаете, время от времени приходится менять таргет файлов при смене таргета файлов вот здесь, в конфигурации. Все вот тут вот слетает, даже если я просто у меня сейчас. Элька, если Эльки не хватит, допустим, ну лимитированная по памяти, там же Модбасы все и придется там Эмку. Заказывать вот то потом надо будет торги поменять, и вот все здесь летит, и надо как бы неудобно. Но но для этого видео, для этого видео я быстро пропишу все здесь, вот. Именно в конфигурации, а потом за кадром я все перепишу, понятно это? Да ну, то есть, как бы я пытаюсь, конечно, дать совет, как как бы делать лучше. Так вот, у нас РК значит сеть.
25:27 Это был 1. 2 То есть все понятно, да что я сейчас делаю, как бы я вот смотрю. Вот вот сюда вот на вот эти вот входы входы, да и по очереди их сюда. Вписываю, вот д 1 д 2 да и 3 вот я как то, конечно, не дай 1. У меня тут быстрые входы, да 2 штуки надо, наверное, с них начинать было.
26:10 Так нет аварии автомат сетть. Но Ну, Аларм. Так что так? Сеть сеть, какое то слово вот сет получается сет не очень, да? И сеть автомат включен, да? Так Икс. Сет, он, ну вот так вот давайте. 1 Потом, кстати, кто если кто то смотрит, этого момента можно хорошо смотреть на скорости 1 полтора. И 1 2 если вы уже смотрите в записи, то как бы очень удобно смотреть на увеличенной скорости, все это дело.
27:24 Бегом 1 Все да смотрите из входов, у меня все больше ничего нет. У меня вот 3 РКФ на 3 РКФ на 3 РКФ и состояние положение автомата. Я прям называю его, но Аларм вот здесь, вот как бы да вот, но Аларм. Вот так вот, ну Алла именно потому, что я знаю, что если он тру, значит, нет ошибки. А если Фолс, значит, ошибка, да вот и и потом, если Икс вот этот. Вот сет он, да я его называю, ну чтоб мне тоже было понятно, что если он он, значит, автомат включен. Вот такая вот как бы логика теперь с выходами.
28:13 Тоже начнем с 1. Включить, выключить, включить, выключить, включить, выключить, да? Значит так, Икс, а вообще еще знаете вот для ходов и выходов. Я как бы приставки обычно делают такие д. О, да вот так, вот д. О. Так, Сет, он правильно включить, стараюсь выключить.
28:45 Сет о О теперь. То Гоу. Он. Выключить, но надо бегу 1. Работаю быстро, как могу из за того, что тороплюсь, чтобы вас не задерживать. Получается, наоборот, Амилей так, ну вот все. Да у меня сколько, 1 2 3 да, 4 а еще 2 это старт? Так д. о. Д о 1 старт. Ну вот, все определились, теперь давайте поразмышляем, так я перейду в программу, сохранюсь. Перейду в программу. Немножко поразмышляем, так почитаю комментарии. Да попреки к там начинается, но если Ворд это в Дабл Ю. Дабл Ворд Ди Дабл Ворд Ди Дабл Ю так далее. Но вот с булевой переменной она как бы б да, кажется, должна с б начинаться, но так. Оно бы у нас как бы используется для Байт, вот и как бы, ну и принято для булевых переменных использовать префикс. Вот так вот как бы это по Префиксу, так и еще что я хотел сказать то.
30:50 Да, хотел рассказать, вот почему сохранился в недавней истории. У меня было, значит, я на компьютере работаю, я вообще ухожу с работы. Не выключая компьютер ничего, как бы вот и парогенератор, который вот сейчас мы запускаем. Я по нему, кстати, тоже видео сделаю, покажу. На панель делал программу и делаю 2 дня, но, как я делал, я так и как бы делал, поделал, что то раз там. Ну как бы ушел, там пришел, там подел туда сюда, как то за 2 дня. Ну, может быть, я часов 8? Посидел за программой да за интерфейсом, то есть с пылка у него программа. Еще логика просто отрицать интерфейсом вывести данные там настройки, там все такое. Вот все это уже как бы проще, да?
31:35 И вот это было давно месяца полтора, и недавно вот надо было ехать. В понедельник в воскресенье мы ездили на объект, я буквально вот в пятницу. Утром, ну решил открыть программу, проверить все там, как бы открывая программу, и нет вообще. Ну там что, то есть 1 экран, какой то там, а у меня там. Было 7 экранов разных, вот вот, оказывается, я не сохраняла ее и, видимо, как то компьютер выключила. И все, как то вот можно, там прошло время, я. Такое уже все там и, может, на выходные ушел или чего может свет выключали. И все, что я делал все, что я делал, короче, раз не сохранилось вот мне. Пришлось за 1 вечер, потому что, ну вот на следующий день надо уже ехать, пришлось сидеть, и вот все это теперь теперь я сижу короче вот сохранить. В этом вижу студию, вижу, судя код, когда я программирую, что нибудь там. Допустим, приложение пишу или что там удобно, там все в самосохрании я. Пишу я вообще, не думая, как бы все хоть вот свет. В этот момент выкоси мне прям символ символ, все сохранится здесь. Вот такая вот штука, как бы не. Сохранять поэтому постоянно сохранять так, но давайте поразмышляем немножко над нашей задачей. И самому надо подумать, как ее правильно решить.
32:51 Значит, я? Сразу попытаюсь выделить вот эту логику, да вот это ядро самое основное, ну. Ядро это включение автомата, то есть защита, все понятно, да пока не будет включения подача питания на шину. Да вот, значит, 1 автомат должен включен быть в 1 в 1 время. Это самое ядро, теперь задачи я разделяю вот.
33:23 Типы программ для ПЛК на 2 основных типа. Ну вообще можно и тот, и другой решать, 1 и тем, и другим типом вообще решать. Но вот как бы я вообще не знаю, существуют ли такие типы. На которые я делю, вот моя, собственно, к это классификация. Да вот, но вот это какая, то моя собственная классификация 1, это вот такой. Приближенный к стоит машине на, я бы сказал так для структурного текста. Это программа, которая основана на кейс, то есть если в основе. Моей программы лежит кейс, да это вот это. Вот вот, для меня это как бы отдельный тип решения, задач, отдельный подход к решению задач.
34:12 И без кейсовый подход, весь кейсовый подход. Это вот именно подход какой то вот комплексный, когда все все время проходится. Просто мы вот как бы выключаем в программе. Да то есть, если нет, а вот это мы тут не работаем, вот. Эта часть кода не срабатывает тут часть кода. Тут вот и как бы вот такое, как бы, ну, единый такой, как бы график единый график, доставить машин. Да вот куча входов, да и вот такими там чуть чуть чуть какие то квадратиками, то. Если это, то это включается, если не это. Не так это, как называется таблица истинности да такая таблица истинности единая. Это вот вся программа, и просто вот если просто что, то просто вот эта часть здесь на выход не выдает. И все, как вот это 1 тип, подход решения программ и другой. Это когда ты тоже самое решаешь, но ты исключаешь вот то, что сейчас не работает, ты группируешь. Да как бы ты внутри разделяешь на группы логические и вот как бы?
35:09 Для одних задач 1 вот более по моей логике, как иногда более вот прям органично вписывается в задачу. Иногда именно другая пицца органично, поэтому вот как как. Базу, как базу, мне нужно понять, что суда органично впишется. И опять же вот сложности в объяснения подобных подобных тем. Ну вот как вы поймете, что органично? Вписывается или нет, вот, допустим, давайте сейчас, пока еще про рассуждаю. Вы напишите вот по вашему из моей классификации, да что органично вписываем, вписывается. Кейсоподобная система, то есть или если мыслить блоками, си эф си. Да вот пошаговая, да как бы пошаговая структура, да или моноблочная, какой то 1 единый.
36:04 Функциональный блок, котором вот котором все, как бы решено и который вот у него все входы, выходы вот так, моноблочный, вот или пошаговый исполнение вы. Напишите, а я попытаюсь, пока вот по поразмышлять на эту тему и как раз потренируюсь. Просто я хочу, конечно, конечно, сделать такую какую то тему развития и. Может, даже какую то статью написать, но я пока не хватает слов. Это хорошая возможность мне вот попытаться проговорить это все и увидеть эту мысль, да? Поймать ее и набрать вот этот набор предложений, которые необходимы для объяснения. Это задача, я как бы я не вижу, вы комментарии или не пишите, или у меня у.
36:49 У меня ни это, ни Подвисло что то. Я всегда стараюсь решать задачи, формировать их вообще в кейса, подобную систему. Мне кажется, она сама по себе, сама по себе. Она вообще ближе вот к индустриальной теме, и ее логика она сама по себе как бы не.
37:20 Более структурирована получается, почему потому, что если мы какой, то блок берем? Да и вот при 1 условии этот выход при другом, тот при другом этот очень нам нужно. Все равно весь этот блок, всю его внутренность до просмотреть, чтобы понять, чтобы понять, чтобы понять, чтобы понять. Вот почему этот, где вот этот не включен. Да, то есть где отключается вход на таких условиях, а где вот этот. То есть у нас весь блок, он становится частью вот 1 программы и очень сложно. А когда мы киса подобной системе, то мы знаем, что мы всегда. Находимся в каком то в 1 условии кейса, да вот в каком то шаге этого кейса находимся. Да вот в этом шаге, и это всегда видно легко, например, во время от ласки, когда он поднимается вверх кейса. Вот и вот этот вот степ, который у нас шаг, условия кейса. Там всегда написано, какое то значение мы сюда можем к этому шагу определиться и все, и мы в другие шаги вообще даже не лезем. То есть нам вообще все равно, что там происходит, как там или что? То есть мы видим вот это вот короткий шаг, а что здесь? Вот вот при вот этом стечение обстоятельств, вот у нас вот такая вот такой. Вот набор параметров до выходных, и нам легко отследить всю логику, и тут же мы видим, при каких условиях мы переходим на другие шаги. Да, то есть в другие участки кода мы. Переходим, то есть вот, а если вот это сработало, вдруг сюда перескочили. Если вот это, то туда перескочили. И вот мы как бы скачем, то есть для меня киса подобная структура. Она более лаконично читать, и если задачу вот возможно решить в кисоподобной. Структура, то я решаю ее птица подобной структуры, я склонен вот к ней всегда решать. Но есть задачи, которые вот не просто можно решить в этой структуре, а которые вообще было бы даже неправильно решать по другому. То есть можно, да можно, то есть какой. Привести пример, конечно, ну не знаю, там можно на пиццу посыпать ананасы. Да как бы можно, но не нужно ананасы не для пиццы вот так, как бы да то есть, так и тут, а есть вот где прям вот без него щель никак. Так ну что там написали наконец, то дождался?
39:42 Пошаговый степ, бай степ. Кейс на ст да абсолютно правильно, вот я очень рад, что значит значит в этом плане в этом плане. Ну, значит, у людей понимание больше есть. Да, то есть тут не надо понимать как, но вот если что, то можно отталкиваться, так то есть, допустим, базовая, это кейса. Подобное, то есть мы смотрим, как бы прикидываем глазами, сможем ли можно ли эту эту задачу решать кейсами, то мы склоняемся кейсом. Даже если можно и не кейсами, но можно кейсами, мы склоняемся кейсом. Вот если эту задачу как бы ну сложно решить кейсами. Только тогда как бы выбираем не кейс. Да, то есть вот так можно, как то дать совет по этому поводу. Ну вот все, значит, у нас кейсов подобная структура по имени переменных. Значит, каких то определенных прям стандартов, как именовать переменных, их нету, но есть. Такая конвенция Конвенция, конвенция да негласная. Договоренность, договоренность между как бы программистами общепринятые правила еще есть какие то проектом ПСР 2 ПСР. 4 Это, например, для ПИЧ ПИ, да это как форматировать код и все, и какие то.
41:03 Согласие да согласие, когда люди вместе соглашают. Вот так давайте, детка, это стандарт какой то для себя такой устный тут тоже такой есть, но. Насколько я смотрел чужой код и иностранных специалистов, и российских специалистов. Я очень много, кстати, просматриваю чужого кода мне. Люди присылают показывать свои как бы работы. Я смотрю, какие то даю советы там вот по оптимизации программы, там еще что то, вот да. Я делаю так на всех входных выходных переменных, я делаю префикс Диай Дио. Эй, ай и эй, о то есть диджитал Инпу, диджитал Аутпут аналог Аутпут, это вот дело Префикса. Почему я делаю их такими, потому что это очень удобно? Я, когда уже кот сам пришел, написал Диай подчеркивание, и у меня в выпадающем списке уже вот все именно. Вот входы то есть, но я знаю, что мне нужно со входа получить. Да, а внутренние переменные, локальные локальные внутренние переменные, что значит локальный, который. Объявляется между ВАР и Энд ВАР внутри нашего полу программы функционального блока. Я делаю префиксы исходя из типа переменных, да, например, если это ну.
42:22 Маленькое число до с Ай, до Смол Инд, там большое число ди Ай. Если это, допустим, Ансайнд, то есть без знакового числа только положительное. Там, Ю, с Ай, да там такой префикс, префикс, который просто понятно, говорит нам какого. Типа это переменная, да, да, он может быть достаточно как бы длинным. Даже здесь, например, массив из Булли, это может быть. Эй, Ар, Ай, да как бы от массива, а Эр Икс? Да, допустим, то есть, а райбуленов да или.
42:57 Р ст. да, это структуры, дата арай, массив из структур. Рей, вот как то вот так я принял локальные перемены, но глобальные переменные глобальные переменные. Я тоже по другому, как бы именую вообще в КД Сиси в КД Сиси глобальные перемены в 2 3 я тоже как бы дело. Еще Префикса я делаю, Глб, например, до Глб, а потом потом делаю подчеркивание, и там Икс опять же, то есть. Ну вот, с учетом уже как локальных перемен, для чего это дело? Опять же, чтобы удобно было, когда я набираю в коде, там раз набрал Глб Чиксы, у меня выпали. Все именно вот я знаю, что мне нужно. Это настроечные параметры глобальные легко, как бы пользоваться, но в КДСусе 3 5 я вот это приставки голубой не делаю. Почему потому, что когда в коде мы вызываем из глобального списка, мы, если у нас там атрибут не стоит? Глобальный, то мы пишем сначала имя списка, да, допустим, потом точку. Я просто список делаю там Глб, там или ГВЛ, да там как бы точка, и потом имя перемены просто уже сексом. Как то вот так я это делал чисто для удобства, чтобы вот не было удобно набирать все.
44:16 О, у Кадесисе есть в официальной справке, как раз правило именования перемен. Это вот интересно, надо ее найти и почта. Если есть, значит, есть, то есть я считал, что это какая то негласная конвенция, то есть между людьми. Какое то соглашение такое, вот а касса. Есть у нас как бы рекомендации, да ну вот хорошо, отлично. В следующий раз посмотрим на рекомендации, все так. Давайте приступим к дальше, к программированию, так вернемся сюда. Теперь я развернем на весь экран и что теперь у нас, ну будем делать кейс да кейс.
44:54 Степы, где мы сохраним, вот давайте Ю Эс Ай. Степс, вот так вот, ОФ. Вот. Так ну как то вот так вот, да сейчас чуть развернем. Вы скажите, Шрифт достаточно большой, как бы видно всем или сделать побольше, как бы, но я думаю. Что даже спрашивать можно было не спрашивать, а делать побольше, потому что думаю, что людям, конечно, маловато. Вот редактор Шрифта, давайте сделаем 16.
45:45 Вот так чуть чуть побольше, да если если это мало. Скажите мне, я еще увеличу размер шрифта. Значит, вот шаги у нас будут содержать? Какие то там состояния наши, да, естественно, 1 шаг это нулевой, так как переменная по умолчанию 0 нулевой шаг. Мы его вообще забиваем просто, пока это вот типа мы не работаем, вот и пошли шаги, я обычно делаю. Так шаг 10 иду, так 10:20 30 40 50 почему это делаю, потому что, конечно, разницы нет. Я могу где то, 1 2 3 и если мне нужно потом логический, какой то шаг, вот который между какими то другими находится я. Могу сделать по номеру и другим просто переходом логически. Он будет у меня каким то там 3 шагом логически, а по номеру там 5. Это не страшно, но я как бы делаю запас такой, там 10 там, допустим, так вот 20. И если мне надо потом вставить между ними какой, то шаг я там беру и делаю там шаг. Допустим, 15 да и вот у меня уже как бы она по по очереди получается. Типа того вот нулевой шаг, но здесь давайте так.
46:58 Какой нибудь глобальный ИКС старт? Да сделаем, у нас же будет панель оператора на панель оператора, сейчас я пока давайте. Не хочется мне создавать это все, давайте я пока в глобальных буддых объявлять вот так вот. А потом я их перенесу уже, чтобы время не терять. На этот сам уже туда перенесу, так вот. То есть у нас здесь мы тоже пока закрываем? По вертикали 2 окна у нас глобальная, и это вот так вот значит, если. Если Икс Надо отключить и пункта свитча, потому что он будет сейчас это вот мучить меня автозаполнение.
48:08 Старт. Это постоянное выравнивание, редактор, конечно, у Кадесис ужасный. Стэпсон. Ну вот, если мы типа включили старт, то вот мы перешли на 10 шаг, так на 10 шаге, что мы будем делать. На 10 шаге Давайте здесь, так мы будем проверять. Я не знаю, правильно делаю или нет вообще. Сейчас я походу, потом могу все переделать, если у вас какие то есть. Как бы ну замечание сразу, я с удовольствием буду слушать вообще. Знаете, я не претендую на то, что вот я тут типа вас учу там, как правильно. Программировать вообще не подумайте, я честно сказать, вот с подобных подобной деятельности на ютюбе и так далее научился больше, чем людей, чему то. Научил, вот я буду честно, потому что комментарии то, что не пишет комментарии. То, что люди мне советуют, всегда такие, как бы, ну, классные советы. Классные, как бы замечания иногда не классные. Вот, но, но по большей части, по большей части, люди. Вот реально, какую то вот полезность всегда мне выдают.
49:32 Давайте начну с собой, я начну проверять. Значит, у нас нас х РКФ, да? Вот Икс Эркэфсет ДГУ и так далее. Значит, у нас в приоритете вообще Х РК в Сет? То есть вообще вот если 0 то нам как бы надо здесь все отключить. Давайте, поэтому мы как будем отключать. Еще 1 момент для отключения для отключения у нас вообще идут импульсы, да и поэтому я здесь создам переменные отдельные. И чтобы я потом мог импульсы эти выделять, давайте Икс.
50:15 Давайте я назову его для простоты, так и Надин. Вот икс, и это типа входа, да вин 3. Это будет он, да вот так вот он он или лучше даже вот так давайте сделать. Смотрите, так вот рай, Рей, из иксов. Как мы назовем это входы да входы, он. 1 3 То есть это у нас будут входы, то есть включение и выключение, выключение вот так вот. Теперь здесь давайте я их сейчас все выключу. Вот он. Это, конечно, можно делать в массиве, можно потом какую то. Какую то отдельную функцию вынести, а?
51:38 Труда. Вот так вот мы. Как бы вот так у меня будут отключения, да? То есть вот я подал 100 сигнал 2 3 и сразу сделаю импульс, что было понятно вообще, что я хочу сделать вот здесь. Вот за кейсом, за кейсом я сделаю еще 1 массив из из. ТП ШК, да ТП вот так вот, так вот, а рай 3 о ТП ТП сразу я сделаю цикл фона. Равно 1 то 3 ду так вот, а и к он будет у нас, пока интеджер просто. И здесь я буду вот эти сигналы отсылать теперь. Вот так вот у нас будет.
52:57 Берем текущий таймер, да здесь мы что, допустим? Им Равно у нас как раз таки будет вот этот вот ов отключение отключение. И потом, Апт будет равно, ну сколько импульс нам 1 секунду, пусть будет. Да ты 1 секунда, все, что это значит, у нас да получается. Получается, что я сделал в. В цикле прохожу вот эти тпшки. Если у нас на вход тпшки, значит, зашел сигнал тру, то выход тпшки, выход тпшки на 1 секунду будет давать как бы импульс на выход, а импульс мы выдадим. То есть вот это что тут носки у да Кью?
54:01 На Д. о. и вот видите, как удобно до. Да не совсем таки и удобно, потому что. Тогда получается не так, здесь уже за этим мы сделаем так до. Гарри Поттер. 2 ОФ И 7 Равно. 1 Еще у Кадасиса это вот проблема, когда. Автозаполнением пользуешься, он теряет фокус. 2 Вот так вот, 3 пока вот так я у меня есть способ для того, чтобы это все сделать в массиве. Вот обыграть, но так как так, как сейчас я не хочу. Заниматься сильно, просто чтобы было понятно, что происходит. Да, то есть вот эти вот контакты, которые у нас в схеме, да вот вот сюда вот пойдут. И будут включать и выключать вот эти вот приводы на автоматах, на них будет происходить приходить импульс, да то есть в течение 1 секунды. Бац Бац, при включении, то есть вот здесь я офф делаю тру. Вот, значит, включается теперь здесь, перед тем как послать их, да я их делаю в Фолс.
55:53 Перед тем как перейти в работу, ну это для того, чтобы создать импульс, да и если я их сейчас, допустим, Фолз. Вот тут вот выставил, да если где, то вот тут вот я их опять в тру выставлю, у меня здесь опять импульс. Пройдет, а если у меня были они тру в самом начале, потом я им дал труд, а импульс уже не будет, чтобы импульс был. Мне нужно, чтобы на этой вот переменной у нее как бы ушел, да как бы сигнал, да то есть будет.
56:22 Чтобы выделить передний фронт, да как бы вот здесь, вот на тпшки. Мне нужно, чтобы на вот этой вот перемены был задний фронт до обязательно создать, вот тут я создаю задний фронт. Вот так вот. Хорошо, теперь давайте здесь значит, если. Тогда Если у нас есть есть сеть, да как бы нормальная, тогда мы перейдем на шаг управления сетью. Пусть это будет 20 шаг какой, то да вот потом. Далее. Если так, Шаг у нас. Равно 10 то есть. Вот это вот это условие не сработало, да вот это условие не сработало. Тогда мы проверяем следующие условия, да и у нас.
57:29 Так дгу? 1 Да как вот на ДГУ 1 тогда, например, переходим на шаг, 30 вот и. Последние условия, если опять же шаг у нас продолжается, 10 то есть и это условие не сработало. Мы все еще десятка, то тогда смотрим дгу 3 ой дгу 2 и переходим так. Бегу 2 и переходим на шаг 40. Вот смотрите, такая получился у меня структура. Ну, теперь давайте прорисуем шаги, что там у нас шаг, 20:20 значит, когда мы сюда. Пришли на этот шаг на на этот шаг, у нас все выключено. Да, то есть мы, естественно, вот на 10, когда находимся у нас, все отключено, то есть мы здесь ждем вот.
58:33 Ну как бы вообще вот это, вот да можно. Можно и сюда надо было до поставить, вот как здесь все отключено. Это мы еще тоже потом посмотрим. Ну, нам нужно включить правильно, что тут непонятного, если если у нас. Диджитал инпод. А у нас нет, давайте их переименую, потому что мне неудобно вот бездельчатого им вот так. Быстро это сделаю.
1:00:02 И вот как раз смотрите сейчас, я вот эти все алармы. Состояние автоматов я вообще не трогать, то есть я как бы, а я о них сейчас не думаю. Моя задача включить так, если. Ди Ай ди Ай потом РКФ, вот сеть кон, да? Если Нот не включен, да тогда. Когда Тогда вот этой переменной. Так он 1 мы даем трубу, ну вот смотрите! Я, конечно, здесь на ошибку сделал, что начать с массива применять программа не супер, понятно и получается из за этого. Здесь у нас получается теперь, что еще еще 1 ТПшка будет для он, для он и так далее.
1:01:08 Ну вот что я теперь вижу, смотрите, работая над этим. Я увидел небольшую интересную вещь, что мне будет удобно, будет удобно сделать структуру каждого ввода на структуру каждого ввода, где я буду хранить и состояние автоматов, и. Положение их и управлять ими, то есть подавать сигналы на включение выключения и так далее, то есть и вот в моей логике полностью управлять. Давайте так пока пока не буду, но сейчас пока вот это доделаю. Так вот, мы тру включили, да так.
1:01:50 Ну и все, и теперь. 20 Это будет у нас. 30 И 40 Вот так вот. 2 3 Ну типа типа вот так, да это как бы просто, я уверен. Сейчас у нас все тут все полностью изменится кардинально, потому что делает программу я как бы вот мне начинает видение открываться. То есть мы просто вот включаем, что если вот автомат не включен, если он. Не включен, то мы его вот подаем сигнал, включаем включение, будет тут происходить. Но пока что мы не трогаем ничего дальше, потому что мы сейчас все изменим и давайте мы будем это изменять, как будем изменять. Мы зайдем сюда, в данные добавим объект, назовем его.
1:03:00 Вот как бы назвать по английски, вот допустим. Им Тайп тоже автологика это получается. Давайте по русски вот так вот, да вот так вот автология, что у нас тут, но у нас, значит, есть Икс. Это включить да он. Потом есть. Булевая, да есть икс оф! Тоже булевая, есть х Аларм, то, что он в состоянии Аларма находится, тоже булевая, есть х положение, как назовем его. Экспозишн да позишн. Нет, из он вот так вот из он тоже булевая. Включить, выключить положение, Булевая и РК. Да сюда же вот икс, так р к Ф.
1:04:23 И Тоже гуливая нас, как это как бы состояние сети, то есть можно включать нельзя. Ну вот, пока пока этого нам и хватит. А давайте сюда же я добавлю таймера да х ТП ТП. Он. Таймер пульса и Икс ТП ОВ таймер для выключения. Да тоже ТП Пульс вообще шикардос, да будет вот так. Значит, мы его так пока сюда вставим вот здесь, вот пусть он пока.
1:05:03 Он пока стоит, может быть, мы над ним поработаем. Вот тут, значит, я на на. Вот. Вот вот так да смотрите! Что, что я вот тут опять вижу, что мне нужно еще. Какой то функциональный блок, что ли? Вообще я теперь по другому все вижу. Честно сказать, не знаю, хватит ли у вас терпения на мои постоянный смены видения. То есть я уже вижу здесь не структуру, не структуру. А функциональный блок? Потому что нам нужно включать выключать привет сеть. Ну ладно, начнем со структуры, как бы это не сильно большая разница потом на переделку. Ну, все теперь смотрите очень просто, мы будем делать это. У нас во 1 уже есть вот эта штука.
1:06:20 Здесь, в самом начале. В самом начале мы берем массив вводов и. Вот тут. Включаем. Да, Здесь пока за комментируя, что мне они будут нужны. Так вот, у нас, значит, вода и мы берем, так ставим точечку и икс оф отключение происходить равно. Друг, как это будет на самом деле происходить этом? Потом решим, главное то, что у нас вот иксов значит выключить, и если мы подаем на нет ру, значит. У нас происходит отключение, все вот мы этот вопрос как бы решили, закрыли, то есть проходим по всем водам и все выключаем это, пока мы находимся. В режиме ожидания теперь если нажата какая, то Икс старт, то мы переходим на шаг, висят, и дальше мы переходим по шагам только здесь, у нас теперь.
1:07:49 Ну да, пусть будет пока все то же самое. И вот здесь мы тоже меняем на вот такую штуку. Фиксии. Вон. Вот так вот 1. 1 2 И 3 Вот так вот, смотрите, все поменял. Почему мне так удобнее будет, потому что потому, что удобнее теперь, чтобы нам привязки очень сложно сделать булевых переменных, поэтому как привязки я тоже сделаю вот так вот.
1:08:42 Где у нас? Так 1 Икс. РКФ Равно диджитал инпут. РКФ Сеть, то есть я привязываю сюда значение каждый раз, перед тем как мы с нашими кейсами работаем, вот я сюда передаю значение 3.
1:09:23 И договор. Так нету РК в ДГУ почему? Погода. Вот, значит, назначаем теперь. До В конце программы, наоборот, закомментировал. Значит, здесь будет у нас? Вот эта штука теперь. Так что так? ТП ОФ, да ТП ОФ. Вот так вот быстро сделаем, теперь мы назначаем наши выхода до. 2 3 Он он он. Да вот мы назначили входные и выходные параметры все здесь внутри. Вот в этом кейсе, пока мы находимся, мы работаем только вот с внутренними переменными. Да, то есть вот сюда мы вообще не думаем. Да ну вот вроде бы начало у нас есть, но теперь у нас куча вообще всего, то есть мы не можем включить. Допустим, вот этот вот переменную и если включен включен, допустим, вот этот или вот этот включен, а это не можем включить, если то и то короче у нас. Тут еще целая куча, как бы логики сейчас будет, и + нам еще нужно сделать включение и сброс. Да как бы мы вот тут их назначаем, конечно, в тру, да и.
1:11:45 Но надо назначать как бы на импульсе на импульсе. На импульсе Как это сделать, мне надо, чтобы она постоянно не импульсировала, чтобы не было шим, а у нас. Здесь, туда, здесь мы раз перешли и все и перешли, а здесь мы находимся. Допустим, Тру, если я в Фолс назначил. Да давайте я вот тут назначу все у здесь, он на вот так вот.
1:12:25 Так что такое Икс, Эр Кэ! Так здесь мы сейчас все выключим, то есть это подготовительный шаг, и он и офф мы все выключаем.
1:13:02 Выключили он офф, и теперь здесь у нас он будет серьезный переход. Значит, если у нас есть сеть, да? Если у нас есть сеть. То нам нужно. Если сеть появилась, а какой то дугу был выключен, то нам нужно все это отключить да отключить, значит, если. ДГУ 1 Нам нужно отключить, вот у нас здесь был офф. Вот этот вот, да? Пьер, это нет, это у нас 2 да дугу 1 это на 2 офф. Выключаем его теперь, то есть, прежде чем включить сеть, она у нас приоритетная. Да если у нас был включен ДГУ, 2 это у нас 3 элемент массива, тоже его выключаем и переходим на шаг 20 на шаг. 20 Мы включаем, но вот это вот.
1:14:32 Как бы не совсем хорошо, хорошо бы нам тут какую то задержку сделать. Да прежде чем перейти, вот нужно сделать какую то задержку или здесь вот уже сделать задержку перед включением как бы. Или или или вот или здесь вот как бы проверить. Вот здесь вот проверить, что на шаге 20 проверить, что если у нас какие то штуки включены, вот то тогда мы. А здесь, если мы? Он. Так и вот эти тоже все должны быть то же самое. То есть вот таким образом да как бы?
1:15:39 Если если Если вот это, да? Если включен или Или включен ДГУ, 2 то мы посылаем сигналы на их отключение, вот и если они отключены, отключены. Вот все я понял, как нужно сделать, смотрите, чтобы у нас вот это все не работало, то есть.
1:16:11 Нам нужно это состояние сменить на Фолс, но когда мы не можем постоянно через нулевой шаг ходить, это как бы супер неудобно будет, нам нужно их отключать. Вот получается у нас ОФФ выключатель может работать тру, только пока вот эта штука, ну.
1:16:33 Нет смысла его выключать, если он выключен. Поэтому здесь, внизу, мы можем такие вот условия прописать, допустим. Так вот, это, конечно, лучше сделать, наверное, вот в общей обработке до добавить какую то общую обработку такое. Вот общая обработка и здесь внутри, дабы такое условие добавить. Что если? У нас не включен этот автомат, то выключатель будет Фолс. То есть, ну какой смысл ему быть тру, то есть выключать его? Да если он Фолс, то есть мы вот так вот как бы все их изменим.
1:17:27 Аккаунт и такое же условие для получается. Опять мы тут не получится, у нас же это переменная, не динамическая дгу из он. Тогда вот так мы сделаем. Если Не аккаунт. Из он тогда этот, а сюда сюда мы добавим еще 1 набор. Переменных Искон. И здесь у нас будет положение положение, это. 2 И ищите. То есть мы знаем, что из он у нас будет как бы работать? Здесь мы их отключим. Хорошо. Дальше. Значит, вот это мне уже не нужно, все у меня будет автоматически здесь. Я об этой логике я не думаю, она будет автоматически тут происходить. То есть, если у меня не включен автомат, тогда и ОФФ я отключаю и также мне надо отключить он, он то. Есть включение автомата, если если он включен, то есть, если я дал сигнал на включение, если и он включился, то я вот эту штуку. Короче, получается, я здесь даю сигнал тру, здесь он у нас. Кстати, вот надо добавить, да у нас что еще вот этот вот?
1:19:44 Вызов вот этих наших блоков да ТП он. Так им. Равно. К слову. Секунда так вот. И то же самое с ОФ, с ОФ с 2 Ф. и ОФФ. Вот так смотрите, да то есть у меня есть какой то вот обработчик общий. Он проходит по всему массиву, если что, то он отключает эти включатели, также он запускает. Эти таймера постоянно это не в кейсе происходит. Не тут не тут, там не тут, он работает всегда. Да, то есть постоянно работает на каждый цикл полка и вот. Эти исполняет, и если вдруг у нас на интру попала, да тру попала, то он на вот этот. Вот на выход включения да вот включения он передаст сигнал, сигнал включится. Да у нас обратно обратно вот сюда, на Ди Ай, придет, что мы включены до положение. Автомат взведен, и как только автомат заведен, вот эта штука она получается. В Фолз перейдет, да вот в Фолс и выключится таким образом. Здесь она тоже выключится, и таймер сбросится. И в следующий раз, когда мы тру тут опять у нас появится. Импульс на таймере, то есть, ну вот такая, как бы циклическая система. Единственное, что нам здесь нужно, осталось сделать, но мы не можем, вот, например, на шаге. 20 Да вот, например, если не а, ну да, если нет, а если он включится, то, естественно, мы уже не будем назначать. То есть да у нас Шима не будет, ну все мне кажется. Вот такой такой подход, он вполне себя оправдывает. Единственное, что здесь вот нужно нам блокировки расставить, то получается, я думаю, они будут вот тут, да?
1:21:55 А нет, почему вот тут, но вот тут они будут? Да все правильно, вот если мы сюда перешли, а у нас здесь включен какой, то ДГУ мы его выключаем. Если ДГУ 2 выключаем, и мы на этом шаге находимся, ждем пока. Ну, если мы не включены и уже выключены, и тот, и другой. У нас автоматы сбросились, тогда мы отправляем сигнал на взвод вот этого автомата. То же самое получается здесь, у нас вот на вот этих штуках, вот на вот этих штуках у нас будет то же самое. Только здесь будет это ДГУ, 1 значит, здесь будет сеть Сеть.
1:22:48 А здесь ДГУ 2 тут иглу. Значит, все эти дгу 2 ДГУ, 2 это ДГУ, 1 и Сеть. Вот так вот и вот здесь, вот тоже. Добавляем сюда и сюда ДГУ 2. И нот. Нот ДГУ, 1 он, значит, здесь сеть, сеть и ДГУ 2. Сеть вот так вот смотрите, да вот такая программа пока что это мы не отлавливаем, что у нас пропала. Да, то есть, если мы находимся на шаге, 20 да и у нас пропало электричество. Нам нужно завести ДГУ, + нам нужно заглушить ДГУ и так далее, но, по сути, давайте, наверное, сделаем так. Я закончил с этой программой на сегодня стрим, чтобы он не был. Слишком длинным, потому что мы так на достаточно долго уже стримем. Вот, а я тут как бы просто думаю, что да как закончим этот стрим в принципе вам на подход, наверное. Понятен был, да что вот вы видели, как я начал, что у меня было совсем все по другому сделано. У меня была 1 идея, я сначала сделал массивы, потом я понял, что лучше сделать. Массив структур сделал массив структур, вот сейчас я вижу, что лучше сделать вообще массив функциональных блоков. Вот эти вот он, оф Аларм, из он РКФ и так далее это сделать. Входными переменными этого блока и просто просто в массиве вызывать этот блок, каждый блок отдельный. И чтоб там внутри уже все делалось, он и опыт таймер, и задержки. Все там внутри этого блока здесь было бы очень чисто. Мы просто вызываем блок, а логика уже внутри. Я, наверное, так и сделаю в конце, пока продолжили вот так вот расписывать. Логику потихоньку она обрастает сейчас, какие то другие переменные, которых которых я там не учел. Завод ДГУ и выключение завода ДГУ тоже все сюда будут добавлять.
1:25:15 Как то так, ребята, если у вас какие то вопросы еще есть в комментариях, здесь, возможно, задать. Ну, как я вижу, вопросов особого людей нету. Я надеюсь, что вам видео понравилось и каким. То образом было понятно, да как решать саму задачу. Основа этого видео была в том, как решать задачи, как начинать думать, с чего я просто показал, как думаю я, вот не то что это. Как правильно еще раз повторюсь, что там никто не писал. Нет, надо так, надо не так, да надо не так, вот не так, как я. Надо надо по другому, как то возможно, но я решаю задачи, так и. Мне кажется, как я делаю это правильно. Кажется, но, с другой стороны, я знаю, что, например, у нас Евгений Кислов есть до преподаватель учебного центра Овен в Овене, да вот на его код. Когда я смотрю, конечно, вот я вижу, что он иногда знает, как надо лучше. Допустим меня, да и есть другие люди, на которых я смотрю код и тоже вижу, что они знают лучше меня как надо. Потому что я смотрю такой опа, а да, действительно, вот это гораздо элегантней. То есть я бы эту задачу решил немножко по другому, как бы ну, то есть и вот вот так, да так гораздо. Интереснее, то есть, поэтому правильного ответа нет. Возможно, и то, что я написал все, может быть, тоже неправильно. Возможно, я все переработаю, а возможно, потом сниму видео прослеживания. Фолуа до видео, которое просто покажу программу, что у меня в конце концов получилось, да и расскажу, как я до этого дошел. Да продал это как раз на продолжение как раз вот я.
1:27:00 Сейчас задачу обозначу немножко поработал над ней, и, наверное, когда я ее закончу, то нам оформленный вид примет, да я просто сниму короткое. Видео обзор готовы уже программы, где я досконально разберу, как и где в коде. Что вот как решается, как архитектура у меня сложилась? А это видео можно будет посмотреть, как я вот начинал. Да как бы, как я начинал думать, с чего я начал точка. 0 Да вот с 1 с 1 буквы, вот в. Коде, вот с чего я начал, да то есть будет удобно. Ну все, прощаюсь с вами всем спасибо за участие, за активность до следующих встреч пока.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.
Создаю программу управления щитом АВР на языке ST.
Книга по ST
https://plati.market/itm/2877910?lang=ru-RU