Как стать автором
Обновить

Implementing FSM

Время на прочтение 7 мин
Количество просмотров 17K
Разработка веб-сайтов *
В статье рассказывается о разработанной автором миниатюрной Java библиотеке, позволяющей коротко и наглядно определять конечные автоматы. Библиотека, назовем ее AkerFSM, доступна в Google Code.
В первой части статьи сформулированы предпосылки и требования к библиотеке. Во второй части приводится абстрактный пример использования библиотеки. В третьей части рассмотрены важные моменты устройства самой библиотеки. Четвертая часть посвящена рассмотрению упрощенного примера из реальной жизни, в котором с помощью конечного автомата задается поведение одного из контроллеров в GWT-приложении.

Читать дальше →
Всего голосов 25: ↑21 и ↓4 +17
Комментарии 31

LabVIEW :: Часть 1

Время на прочтение 3 мин
Количество просмотров 4.9K
Чулан
Приветствую, коллеги. Надеюсь, что предлагаемая мною статья придется вам по вкусу, а открываемый ею цикл найдет свою аудиторию. Будут ли другие публикации по теме, решать отчасти и вам, поэтому прошу активно высказываться в комментариях по поводу актуальности и качества материала.

Dataflow + G = LabVIEW


цикл for в labview
Некоторое время назад я сменил специализацию. Это был не просто переход к другому языку программирования или сосредоточение на иной области задач, но и весьма ощутимое изменение парадигмы, которой я придерживался. Год назад я окунулся в мир dataflow и визуального программирования. Наиболее ярким и мощным представителем этой ветви средств разработки является LabVIEW (National Instruments). К сожалению, информации на Хабре по этой теме практически нет, поэтому я и попытаюсь заполнить пробел.

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

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 14

Автоматное программирование – новая веха или миф? Часть 1. Введение

Время на прочтение 22 мин
Количество просмотров 39K
Совершенный код *Программирование микроконтроллеров *
Из песочницы
Тема автоматного программирования ( AP, АП) уже много лет занимает заметное место в научно-популярных СМИ. Однако, несмотря на это, АП не стало магистральным трендом. Главная причина здесь — недостаточный опыт использования, и как следствие, отсутствие популяризаторов. Нельзя сказать, что недостаточно статей посвященных АП, но круг обсуждаемых в статьях вопросов по большому счёту сводится к описанию UML Statechart, т.е. инструменту описания автоматов, либо к вопросу «Как реализуются программные автоматы?». Это печально но факт, отсутствует обсуждение того, какие перспективы для программистов-профессионалов открываются при использовании данной технологии.

Эта статья – попытка взглянуть на программаты глазами прагматика, на примере задачи, взятой из реальной практики программирования микроконтроллеров. Однако она может заинтересовать не только embedderов, поскольку автоматный подход может эффективно использоваться для создания и драйверов и интерактивных приложений в системах основанных на обработке событий, как например Windows.

Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Комментарии 70

Автоматное программирование. Часть 2. Диаграмма состояний и переходов

Время на прочтение 12 мин
Количество просмотров 14K
Занимательные задачки Анализ и проектирование систем *Совершенный код *Алгоритмы *Программирование микроконтроллеров *
В первой статье я дал пример автоматного программирования от общего к частному, а точнее конструктивную декомпозицию. Следующий этап проектирования, проработка получившихся модулей. Но сначала я покажу чем являются автоматы с математической и практической точки зрения. В основе автоматов лежит модель описывающая процесс протекающий во времени, называемая диаграмма состояний, и невозможно себе представить автоматное программирование без этой сущности. Почему это так рассматривается в сегодняшней статье.
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 18

Автоматное программирование. Часть 3. Диаграмма состояний и переходов. Продолжение

Время на прочтение 22 мин
Количество просмотров 20K
Анализ и проектирование систем *Совершенный код *Алгоритмы *Программирование микроконтроллеров *
В предыдущей статье речь шла о психологических аспектах описания динамических процессов при помощи диаграммы состояний и переходов (то есть в автоматном стиле) и о том, что диаграмма состояний и переходов даёт лучшее понимание динамического процесса. Сегодня я продолжу рассмотрение диаграммы состояний, олицетворяющей автоматный подход, и способы её воплощения в код. Тема предыдущей статьи органично перетекает в сегодняшний материал, поэтому я рекомендую ознакомится с ней.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 20

Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ

Время на прочтение 16 мин
Количество просмотров 8.9K
Анализ и проектирование систем *Совершенный код *Алгоритмы *Программирование микроконтроллеров *
В предыдущих двух статьях речь шла о диаграмме состояний и переходов, используемой для описания динамических процессов в автоматном стиле, и о том, что диаграмма состояний и переходов даёт наилучшее понимание таких процессов. Также были рассмотрены базовые методы реализации автоматов, заданных диаграммой состояний, и были очерчены артефакты автоматной схемотехники, доставшиеся от неё автоматному программированию. Но, до сих пор совершенно не затронут вопрос: насколько эффективны автоматно-реализованные программы?

Я бы сформулировал вопрос иначе: насколько эффективны автоматно-спроектированные программы? Такая формулировка вопроса намекает, что автоматное проектирование — источник высокой эффективности программ. Я ещё практически не касался столь важной темы как эффективность, и пример «Дисплей» идеально подходит для иллюстрации эффективности автоматного проектирования. В первой статье я познакомил читателей с «лабораторной» версией этого модуля, но тестировать я буду «боевой» вариант, процесс проектирования которого я приведу в следующей статье. Исследование эффективности будет выполнено для платформ msp430 и CortexM3.

Чтобы не быть субъективным, оценивая эффективность, нужно с чем-то сравнивать результаты. Поэтому я проведу тот же комплекс испытаний для неавтоматной реализации примера «Дисплей» любезно предоставленной michael_vostrikov, за что ему огромная благодарность и плюсы в карму.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 11

Автоматный практикум — 1. Пример «Дисплей», разработка ОА и УА

Время на прочтение 28 мин
Количество просмотров 6.2K
Анализ и проектирование систем *Совершенный код *Алгоритмы *Программирование микроконтроллеров *
Тесты в предыдущей статье убедительно показали высокую эффективность «автоматной» реализации примера «Дисплей» по сравнению с условно названной «неавтоматной» версией. Вкратце итог: обе реализации автоматные, но разница в эффективности многократна и глубинная причина видится в том, что вариант А1 («автоматный») изначально проектировался как автомат, а вариант А2 («неавтоматный») нет. Не столько автоматная реализация, сколько автоматное проектирование является основой высокой эффективности. Для простых алгоритмов автоматные реализации получаются сами собой. Есть смысл говорить о том, что автоматное программирование, это не столько реализация программы в виде конечного автомата, сколько автоматное проектирование, фундаментом которого является конструктивная декомпозиция. Я несколько раз касался темы автоматного проектирования и конструктивной декомпозиции, но чтобы раскрыть эту тему нужны практические примеры. В этой и следующих нескольких статьях я проведу практикум, покажу процесс автоматного проектирования, пытаясь по возможности приводить ход рассуждений присущих автоматному проектированию.
Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 24

Автоматный практикум — 2. Пример «Переправа», математические преобразования ТЗ при ОА

Время на прочтение 14 мин
Количество просмотров 6.5K
Занимательные задачки Совершенный код *Алгоритмы *Математика *
Велосипед изобрести — не речку переплыть. Задача «Переправа» поднималась дважды за пару месяцев, но я хочу отметить вот это решение, поскольку именно оно иллюстрирует удачный предметный взгляд, и даёт модель удачного ОА, которую остаётся только логически развить, что в итоге даст более совершенное решение, чем при иных взглядах на проблему.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 0

Машина Тьюринга, как модель автоматных программ

Время на прочтение 18 мин
Количество просмотров 20K
Анализ и проектирование систем *C++ *Qt *Алгоритмы *Параллельное программирование *
Из песочницы

Машина Тьюринга, как модель автоматных программ


1. Введение


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

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

За основу обсуждения проблем автоматного программирования возьмем недавнюю лекцию Шалыто А.А. [1] и его «программные» статьи к определению парадигмы автоматного программирования [2, 3].
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 10

Параллелизм и эффективность: Python vs FSM

Время на прочтение 14 мин
Количество просмотров 3.9K
Python *C++ *Параллельное программирование *
Признаюсь, но я не знаю Python. Просто потому, что не использую. Тем не менее, взявшись за его освоение, а также в попытках расшифровать загадочную аббревиатуру GIL, вышел на статью с описанием «необъяснимых магических явлений» параллельного варианта CPU-зависимой функции на Python. Возникло желание перепроверить данный тест и сравнить с эквивалентной реализацией в форме модели конечного автомата (Finite-state machine или сокращенно FSM) в среде Визуального Компонентного Программирования (автоматного) — ВКП(а).

Очевидно любая программа в определенной мере CPU-зависима. С другой стороны, если это только не ассемблер, то тестированием на том или ином языке высокого уровня мы в большей степени исследуем программную прослойку, скрываемую им. Поэтому, рассматривая Python, правильнее было бы говорить о CPU-зависимости его интерпретатора. Можно даже утверждать, что программа на Python будет иметь скорость, зависимую от версии интерпретатора, и обладать характерной для него «мистикой».

В то же время есть ситуации, когда зависимости от CPU может почти не быть (в этом мы убедимся). Речь идет о языках, вычислительная модель которых отлична от типовой архитектуры процессоров. Вычислительная модель Python, ей соответствует, а автоматная модель вычислений, о которой далее пойдет речь, имеет другую архитектуру и это будет определять специфику ее тестирования. Какая будет скорость и будет ли иметь место мистика выяснится в процессе тестирования «автоматного кода».
Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Комментарии 5

Мир без корутин. Итераторы-генераторы

Время на прочтение 20 мин
Количество просмотров 5.9K
Python *ООП *Параллельное программирование *Будущее здесь

1. Введение


Чтобы максимально запутать проблему — поручите ее решение программистам ;). Но если серьезно, то на мой взгляд с корутинами происходит нечто подобное, т.к., вольно или нет, с их помощью происходит замыливание создавшейся ситуации. Последняя характеризуется тем, что по-прежнему остаются проблемы параллельного программирования, которые никуда не уходят, и, главное, корутины не способствуют кардинальному их решению.
Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 28

Мир без корутин. Костыли для программиста — asyncio

Время на прочтение 15 мин
Количество просмотров 6.7K
Python *ООП *Параллельное программирование *Будущее здесь

1. Введение


Тот, кто научился летать, ползать уже не будет. Но не должно быть и высокомерия к тому, кто «летать не может» в принципе. И то и другое вполне норма. И то и другое уважаемо и почетно. Для человека — это, как выбор профессии: вы, условно, либо летчик, либо шофер. Для тех же животных аналогично — вы либо орел, либо волк, т.е. либо летаете, либо бегаете (убегаете). Но только человек в своих понятиях, категориях, отношении и мыслях наделил персонажи характеристиками и выработал свое отношение к ним. Правда, с нюансами. Так, нет, наверное, почетнее и романтичнее профессии летчика, но попробуйте в этом убедить дальнобойщика или авиаконструктора?! И тут сложно возразить: космонавтов много даже сейчас, а второго Королева все еще нет!

Мы — программисты. Может, в разной степени, но некоторые — уж точно. Это я к тому, что мы разные и мыслить можем тоже по-разному. Утверждение, что программист мыслит только последовательно, столь же однобоко, вредно и даже кощунственно, как и то, что человек только бегает. Он иногда — и летает. Кто-то, как летчики, делает это довольно регулярно, а некоторые, как космонавты, даже месяцами и непрерывно. Идея последовательного мышления принижает способности человека. В какой-то момент и на какое-то время в это можно даже поверить, но " все-таки она вертится" — это про то, что рано или поздно жизнь возьмет свое.
Читать дальше →
Всего голосов 26: ↑11 и ↓15 -4
Комментарии 31

Умеет ли человечество писать алгоритмы? Безошибочные алгоритмы и язык ДРАКОН

Время на прочтение 53 мин
Количество просмотров 12K
Программирование *Алгоритмы *Программирование микроконтроллеров *Бизнес-модели *Визуальное программирование *
Recovery mode

Когда мы научимся создавать безошибочные алгоритмы? Двойная катастрофа самолета Боинг 737 МАХ явилась крупнейшей по своим масштабам алгоритмической трагедией за всю историю человечества.
На руках разработчиков алгоритмов кровь сотен людей.
Глава корпорации Boeing, выдающийся инженер и талантливый руководитель Деннис Мюленбург на слушаниях в конгрессе США выглядел как нашкодивший мальчишка и слетел со своего поста как пушинка.

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

Визуальный алгоритмический язык ДРАКОН и ДРАКОН-методология опираются на новые идеи, демонстрируют заметные успехи в области безопасного создания алгоритмов и жизнеритмов.
ДРАКОН использует мантру безошибочности (батарею новых методов) и уверенно делает первый шаг к безошибочному будущему.
К сожалению, есть и ложка дегтя. Язык ДРАКОН пока еще не существует (есть лишь только разговоры) и занимает микроскопическую долю рынка. Но на него стоит обратить серьезное внимание.

Читать далее
Всего голосов 38: ↑19 и ↓19 0
Комментарии 585

Анатолий Шалыто: «Если человек сомневается, заниматься ли наукой, ему стоит заняться чем-то другим»

Время на прочтение 18 мин
Количество просмотров 6.9K
Блог компании DataArt Спортивное программирование *Программирование *История IT Интервью

Анатолий Шалыто — доктор технических наук, профессор Университета ИТМО, специалист в области автоматного программирования и проектирования алгоритмов логического управления технологическими процессами. C 1970 года он работает в НПО «Аврора», в 2018-м стал одним из первых троих специалистов, награжденных государственной наградой, — знаком отличия «За наставничество». В интервью музейному проекту DataArt Анатолий Абрамович рассказал о выборе профессии и институте, провалившемся под землю, инженерах в белых и синих халатах, своих учителях и учениках, книге, напечатанной одним пальцем, и вере в собственные силы.

Читать далее
Всего голосов 17: ↑13 и ↓4 +9
Комментарии 18

Сага о моделировании бизнес-процессов на базе конечного автомата (fsm)

Время на прочтение 9 мин
Количество просмотров 3.7K
Блог компании STM Labs Python *Анализ и проектирование систем *Алгоритмы *

Про конечные автоматы (finite state machine, fsm) много кто слышал, но используют их явно в реальных проектах редко. Чаще встречаются конструкции, которые поведением напоминают КА, но ими не являются.
Почему же автоматы обходят стороной и/или изобретают велосипеды, превращая код в спагетти?
По-моему, тут дело в стереотипе: мол, автоматы — это что-то сложное из теоретической математики и к реальной жизни не относится. А применять их можно только в лексических анализаторах или еще чем-нибудь специфичном.


На самом деле, область применения КА куда шире и понятнее. Давайте разберем на примере автоматизации процессов в любимом кровавом enterprise.


Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 8

Вот, как просто! Автоматы в деле. Для ПЛК фирмы DELTA

Время на прочтение 9 мин
Количество просмотров 5.3K
Параллельное программирование *Промышленное программирование *

Промышленный логический контроллер (ПЛК) - это тот же компьютер, но попроще. В нем есть все или почти все, что есть в любом ПК, но только, может,  в меньшем объеме или не такой производительности. Но зато он может работать там, где обычный компьютер неприменим. У ПЛК есть то, что делает работу с ним проще при управлении оборудованием.  Например,  наличие "на борту" каналов ввода/вывода дискретных логических сигналов. Его программирование специфично. Выбор языков программирования достаточно ограничен, по  большому счету их всего-то пять, и определяется стандартом МЭК 61131-3 [1]. И этого, как убеждает практика, по большому счету вполне достаточно.

Выбор ПЛК фирмы DELTA, кроме наличия собственной IDE, предоставляет доступ к широкому перечню периферийного оборудования. Фирменное ПО, как минимум, удобнее тем, что не требует особой настройки и «в один клик» работает на всей линейке технических средств фирмы. Минусы могут проявиться в отставании от передовых тенденций программирования. Но для ПЛК это не самая большая проблема, т.к. языки, определяемые стандартом, достаточно консервативны, а их настройка под разные типы ПЛК, как правило, не так уж сложна.

Можно даже утверждать, что тип ПЛК достаточно условен, т.к. программирование при наличии промышленного стандарта для них фактически неотличимо (различие в IDE пока не рассматриваем). По крайней мере, сам стандарт на это настраивает. Нам же далее будет важнее реализация определенной идеи. И если уж, как мы увидим,  с этим справится столь элементарный язык программирования, как язык релейно-контактных диаграмм, то это будет вполне по силам и любому другому языку программирования для ПЛК.  И уж тем более по плечу почти любому из известных языков для ПК. 

Читать далее
Всего голосов 7: ↑3 и ↓4 -1
Комментарии 87

«Верьте аль не верьте», но есть и такое… Шаговое программирование

Время на прочтение 6 мин
Количество просмотров 3.4K
Параллельное программирование *Промышленное программирование *

А что сказка дурна — то рассказчика вина.
Изловить бы дурака да отвесить тумака,
ан нельзя никак — ведь рассказчик-то дурак!
А у нас спокон веков нет суда на дураков!..
Леонид Филатов.

При обсуждении предыдущей статьи буквально, как "чертик из табакерки", выскочил вид программирования, названный шаговым. Автор был готов к подобному, поскольку был знаком ним, хотя, может быть, и "шапочно". В документации на ПЛК такое программирование носит, правда, название пошагового управления (видимо, это и сбивало меня на термин "пошаговое программирование"). Но это не столь принципиально, чтобы по этому поводу «ломать копья». Важна суть, а именно в силу ее далее эти термины будем считать равноправными.

Но дело даже не в том, что этот вид программирования был, возможно, новостью для участников обсуждения (в рамках программирования ПЛК DELTA это стандартный вид программирования), а в том, что он позиционировался, как известная идея, заменяющая автоматное программирование (АП).  Собственно это и было определенно неожиданным... Но поскольку, так и не удалось дождаться исполнения просьб о реализации модели RS-триггера на языке шагового программирования, а формат обсуждения статьи не предполагает написания больших постов, то это и послужило поводом к написанию статьи.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 13

Автоматы в деле. Штабелер. Засады ПЛК

Время на прочтение 6 мин
Количество просмотров 2.1K
Параллельное программирование *Промышленное программирование *

Штабелер – устройство, расположенное после гильотины.  Для отражения своего состояния он может иметь один или два датчика. Таких состояний обычно два - закрытое и открытое. Находясь в исходном состоянии - закрытом, штабелер принимает лист металла и затем - в открытом состоянии сбрасывает его в накопительное устройство. После этого возвращается в исходное состояние. Мы рассмотрим штабелер, содержащий один датчик. Для правильной трактовки текущего состояния штабелера нужно в ручном режиме установить его в исходное состояние и далее вести отсчет состояний уже от него.

Запуск и режимы работы штабелера

Система управления линией профилирования металла поддерживает три базовых режима - ручной, полуавтоматический и автоматический. В программе им соответствуют реле - M9, M10, M11. Штабелер имеет всего два режима работы, названных  далее ручным и автоматическим. В ручном режиме работы системы он работает соответственно в ручном режиме, а в остальных - в автоматическом.

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

На рис.1 представлен код, который запускает в работу штабелер, устанавливая единичное значение флагу bПускШтабелера. При этом текущий режим ему задается флагом bРежимШтабелера, нулевое значение которого определяет ручной режим работы, единичное - автоматический.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 31

Технология автоматного программирования для ПЛК на языке LD

Время на прочтение 8 мин
Количество просмотров 3.5K
Параллельное программирование *Промышленное программирование *

В предыдущих статьях мы фрагментарно описали практику автоматного программирования для ПЛК. Здесь мы сведем все в одном месте и кое-что добавим. Ответы на вопросы, которые все же могут возникнуть после прочтения данного материала, можно найти в ранее написанных статьях автора. Перечень базовых статей следующий:

1. Автоматное программирование: определение, модель, реализация.

2. Вот, как просто! Автоматы в деле. Для ПЛК фирмы DELTA.

3. Автоматы в деле. Штабелер. Засады ПЛК.

Задание на проектирование программы

В предшествующей статье мы уже рассматривали штабелер. Здесь будет более сложный его  вариант. Это узкое «крыло», которое, находясь в исходном состоянии, с паузой после старта проката подхватывает лист металла и поддерживает его в процессе движения. После останова проката и отсечения листа оно выполняет «отскок» вперед, освобождая конец листа, который падает на приемное устройство - гидростол.  После этого "крыло" возвращается в исходное состояние. Во время этих движений прокат должен быть остановлен. После исполнения задания (формирования нужного числа листов заданной длины)  «крыло» перемещается в заключительную позицию за пределы гидростола. Возврат в исходное состояние происходит после нажатия кнопки «Штабелер». Выполнение самого задания начинается с нажатия кнопки «Прокат», а длина отдельного листа и общее их количество указывается на панели оператора. 

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 76

Практика применения автоматов в ПЛК

Время на прочтение 7 мин
Количество просмотров 1.7K
Параллельное программирование *Промышленное программирование *

Соловей!.. Ведь, слушайте, ведь вот пичуга! Ну, смотреть не на что!.. Ну, мелочь пузатая!.. А ведь как, подлец, природу украшал!.. Что делал, мерза­вец!.. Э-тю-тю-тю-тю-тю-тю, тю-тю-тю!..

Райкин А. Люди и манекены

Рассмотрим алгоритм, который заимствован из несложного проекта системы управления прессом. В сам проект вникать не будем, а рассмотрим лишь его небольшую и, пожалуй, самую простую часть – управление валками. На пульте управления есть кнопка «Валки» (на рис. 1 сигнал X6), при нажатии на которую посылается сигнал, который то прижимает, то отпускает валки. Преобразуем алгоритм управления валками в автоматную форму и посмотрим, что из этого получится.

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

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 4
1