Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Лого (язык программирования) — Википедия

У этого термина существуют и другие значения, см. Лого.

Ло́го (англ. Logo) — язык программирования высокого уровня, разработанный в 1967 году Уолли Фёрзегом[en], Сеймуром Пейпертом и Синтией Соломон[en] в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.).

Первое научное подтверждение успеха применения Лого как средства обучения было продемонстрировано Идит Харель, студенткой Пейперта, которая использовала Лого для обучения детей программированию и дробям в 1988 году[2].

Logo обеспечивает среду, в которой дети могут развивать свои навыки рассуждений и решений задач.

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

Интерпретаторы Лого существуют для различных платформ и операционных систем: Windows, DOS, Linux, Mac OS, Unix и др. Существует также множество объектно-ориентированных диалектов Лого, таких как Object Logo, вышедший в 1986 году. В 1997 году вышла российская версия —

ЛогоМиры.

Брайн Харви, автор трехтомника о стиле программирования на Лого («Computer Science Logo Style») создал Berkeley Logo. Мультиагентные версии Лого — StarLogo и NetLogo.

Типичные реализации Лого (от LCSI, например) предоставляют программисту библиотеку встроенных команд, текстовую консоль интерпретатора и «лист программ», на котором можно разместить инструкции регистрации новых функций. Также обеспечивается как минимум один графический экран, как минимум с одной «черепашкой».

Во многих реализациях поддерживается многопоточность — на уровне выполнения команд черепашками и на уровне возможности запустить команду асинхронно и в дальнейшем проверять, завершилась ли она. Есть возможность передать на выполнение интерпретатору программно сформированный список слов.

Лого более прогрессивен, чем процедурные языки программирования Бейсик и Фортран, которые обычно используются для обучения программированию. Однако, реализации Лого, как правило, не имеют достаточно хорошо разработанных программ для работы с файлами, и это мешает ему получить широкое распространение в качестве языка программирования.

По сути, язык Лого является адаптацией языка Лисп (некоторые даже называют его «Лиспом без скобок»).

В языке Лого программа представляет собой список «слов».

Как правило, реализации Лого слабо ограничивают перечень допустимых в слове символов, поэтому команды можно называть и по-русски. Более того, многие русскоязычные реализации Лого имеют русскоязычные команды или встроенные русскоязычные синонимы для всех встроенных команд.

Слова в списке разделяются пробелами.

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

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

Имеется специальный синтаксис для передачи в некоторые встроенные команды заранее не фиксированного количества параметров. Для этого предлагается заключать команду и все её параметры в круглые скобки, например: (СПИСОК :A :Б :В :Г 1 2 3 4) Для пользовательских команд такой синтаксис не применим, потому что не предусмотрено синтаксиса для описания обработки переданных таким образом параметров.

Переданный на выполнение интерпретатору список команд выполняется по очереди. Очередное слово интерпретируется как команда из текущего словаря системы. Если она принимает параметры, то интерпретатор выполняет следующее слово из списка, с целью получить значение для передачи его в качестве первого параметра.

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

Поддерживается использование привычной инфиксной формы выражений математики и логики на привычных операторах, типа «(2 + 3) * 5» и «2 > 5». Но в связи с тем, что по основным правилам языка сначала идёт команда, а потом её параметры, для базовых арифметических и логических операций в некоторых диалектах (LCSI ЛогоМиры и LogoWriter, например) также существуют команды, с использованием которых выражения принимают вид «умножь сложи 2 3 5» и «больше? 2 5».

Есть команда для расширения словаря пользовательскими командами, она принимает имя новой команды, список параметров и список команд.

Предусмотрены два основных механизма управления ходом выполнения программы: оператор цикла с фиксированным числом повторений и рекурсия.

TO HELLO
PRINT [Hello, World!]
END

В русской версии языка Лого:

ЭТО ПРИВЕТ
  пиши [Привет, мир!]
КОНЕЦ

По состоянию на июнь 2010 года насчитывалось не менее 246 реализаций Лого[3] с момента создания языка.

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

Наиболее широко использовавшейся и доминировавшей в своё время реализацией языка была система Apple Logo, разработанная фирмой LCSI для компьютера Apple II и распространённая в 1980-е годы. В Болгарии была произведена локализация этого продукта на болгарский и русский языки для совместимых с Apple II компьютеров серии Правец 8, распространявшаяся под названием «Лого 2.0» и широко использовавшаяся в учебном процессе в Болгарии и СССР. В дальнейшем в России была выпущена русская локализация продукта LCSI для MS-DOS под названием LogoWriter.

На сегодняшний день распространена свободная кроссплатформенная реализация UCBLogo[4], также известная как Berkeley Logo, недостатком которой, однако, является рудиментарный графический интерфейс пользователя.

Для Microsoft Windows доступна система MSWLogo[5] и её более новая версия FMSLogo[6][7], которые широко используются в школах Великобритании и Австралии. Также в западных школах используются коммерческие реализации MicroWorlds Logo

[8] и Imagine Logo[9].

MSWLogo и FMSLogo поддерживают использование нескольких черепах и трёхмерную графику, а также расширенные возможности ввода-вывода и другие расширения.

Для MacOS X доступна бесплатная реализация ACSLogo[10], имеющая достаточно развитый графический интерфейс, локализацию на нескольких языках и позволяющая добавлять собственные локализации.

В России в учебном процессе используются русские локализации LCSI MicroWorlds для Windows и Mac OS X под названием ЛогоМиры и ПервоЛого[11].

  • Николов Р., Сендова Е. Начала информатики. Язык Лого / Под ред. Б. Сендова, Пер. c болг. Под ред. А. В. Гиглавого. М.: Гл. ред. физ.-мат. лит., 1989. ISBN 5-02-013998-X
  • Патаракин Е.Д. Телекоммуникации в среде Лого: Многообразие сообщений. Педагогическая Информатика, 1993, N 2, стр. 16 - 20
  • Патаракин Е.Д., Травина Л.Л., Руденко В.П. и др., Возможности среды Лого. Обучающие проекты и новые микромиры. М. ИИО, 1993, 32 с.
  • Gajdar L., Patarakin E. The provisoes of Logo adaptation in the USSR. Eurologos, V. 1, 1992, pp. 66 - 67.
  • Patarakin E., Gajdar L. Logo and personal oriented education. Proceeding of the third European Logo Conference, E. Calabrese Editor, Parma, Italy, 27 - 20 August 1991, pp. 45 - 51.

ru.wikipedia.org

Siemens | Сименс | Преобразователи частоты и промышленная автоматика Siemens

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

Помимо того, что преобразователи частоты позволяют управлять производительностью отдельных элементов системы, они также позволяют сберечь электроэнергию и сделать инженерные системы более энергоэффективными. В ряде случаев экономия электроэнергии достигает 70%.

Преобразователи частоты Siemens

К числу инновационных разработок концерна Siemens относятся надежные и удобные для любого

Устройства плавного пуска Siemens

Устройства данной серии имеют небольшие габаритные размеры, встроенный шунтирующий контактор

Контроллеры Siemens

Это позволит вашему бизнесу не только начать новую жизнь, но и обойти всех возможных конкурентов

Регулирующие и смесительные клапаны Siemens

В данном разделе представлены долговечные и надежные клапаны Siemens, совместимые с любыми

Автоматические регуляторы перепада давления Siemens

Устройства Siemens VSG и Siemens VHG применяется в качестве регуляторов перепада давления или

Газовые клапаны Siemens

Клапаны Siemens газовые предназначены для применения на газовых теплогенераторах, в

Радиаторные клапаны Siemens

Это позволит вашему бизнесу не только начать новую жизнь, но и обойти всех возможных конкурентов

Приводы для регулирующих клапанов Siemens

Выбирая оборудование из модельного ряда приводов Siemens, Вы получаете полный спектр приводов

Приводы для газовых клапанов Siemens

Привод Siemens для газовых клапанов служит исполнительным механизмом и обеспечивает выполнение функций

Приводы воздушных заслонок Siemens

Приводы воздушных заслонок Siemens характеризуются низким энергопотреблением, высокой

Сервоприводы Siemens

Электромоторные приводы Siemens применяются совместно с различными клапанами Siemens

Автоматы горения Siemens

Приводы воздушных заслонок Siemens характеризуются низким энергопотреблением, высокой

Менеджеры горения Siemens

Менеджер горения это устройство на основе микропроцессора с соответствующими компонентами для

Датчики и сенсоры для горелок Siemens

Датчики для контроля пламени газовых и жидкотопливных горелок, а также для проверки наличия искры

Датчики для помещений Siemens

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

Термостаты комнатные Siemens

Siemens выпускает обширный модельный ряд термостатов и температурных регуляторов практически для любых приложений: для частных домов, гостиниц

Термостаты капиллярные Siemens

Линейка продукции включает как электромеханические, так и электронные приборы. Мы выпускаем приборы практически для любых приложений

Контроллеры Albatros

Albatros - это контроллеры для автоматизации котельных (линейка RVA) и индивидуальных тепловых пунктов (линейка RVD)

Контроллеры Sigmagir

Sigmagir - контроллеры тепловых пунктов. Управление тепловыми пунктами с контуром отопления и ГВС. Оптимизирован для управления температурой в обратной магистрали

Контроллеры Synco

Ряд контроллеров Synco 100 состоит из температурных контроллеров для прямого монтажа (не требуется панели управления) и контроллеров комнатной температуры

Контроллеры универсальные Siemens

Универсальные контроллеры для поддержания комфорта в помещениях при помощи управления системами вентиляции, отопления, кондиционирования и

Преобразователи частоты Sinamics

Отдельное внимание стоит уделить коммутационной технике и частотным преобразователям. Данные продукты идеально подходят для автоматизации процесса производства каких-либо изделий в различных отраслях промышленности. При этом осуществляется компьютерное управление согласно современным тенденциям и технологиям. Качественные преобразователи частоты Sinamics, которые применяются к различным типам оборудования.

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

Линейка Sinamics включает в себя:
  • Sinamics G110 - привод на малые мощности.
  • Sinamics G120 - привод модульной конструкции для средних мощностей.
  • Sinamics G110D - компактный и простой привод малой мощности. Децентрализованный.
  • Sinamics G120D - привод модульной конструкции для средних мощностей. Децентрализованный.
  • Sinamics G130, Sinamics G150 - Универсальные преобразователи на приводы высоких мощностей.

Частотные преобразователи Micromaster

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

Серия преобразователей частоты Micromaster - это синоним слова «качество». На сегодняшний день компания Siemens выпускает четвертое поколение преобразователей - Micromaster 4.

  • Micromaster 420 - Преобразователь частоты, основной задачей которого регулирование скорости стандартных приводов. Применяется в конвейерных системах, упаковочных машинах, насосных станциях, вентиляторном оборудовании
  • Micromaster 430 - Преобразователь, предназначенный в основном для работы приводов насосных станций и вентиляторов. Обеспечивается программным обеспечением для решения типовых задач
  • Micromaster 440 - Преобразователь частоты с режимом векторного управления с обратной связью. Используется в приводах, где есть необходимость использовать большой диапазон регулирования

Устройства плавного пуска SIRIUS

Софт-стартеры или устройства плавного пуска SIRIUS 3RW осуществляют плавный пуск и останов трёхфазных электродвигателей методом нарастания/спада напряжения. Устройства данной серии имеют небольшие габаритные размеры, встроенный шунтирующий контактор.

Преимущества от использования данных устройств:
  • Плавный пуск и останов
  • Бесступенчатый запуск
  • Уменьшение пиковых токов
  • Исключение колебания напряжения в сети
  • Разгрузка сети электроснабжения
  • Снижение механических нагрузок на привод
  • Надёжная коммутация, не нуждающаяся в уходе
  • Простота в обслуживании
  • Значительная экономия места и объёма электромонтажа по сравнению с традиционными пускателями

3RW30 - Это серия цифровых устройств плавного запуска для асинхронных электродвигателей мощностью от 0,25 до 55 кВт включительно. Этот тип устройств плавного пуска широко используется в холодильном оборудовании, кондиционерах, системах управления насосами, ленточными конвейерами и многих других применениях. За счёт двухфазного управления на протяжении всего разгона ток во всех трёх фазах поддерживается на уровне минимальных значений. Благодаря непрерывному действию напряжения здесь не возникают неизбежные, например, для пускателей типа «звезда–треугольник» пиковые токи и моменты. Применение этих устройств снижает нагрузку на сеть электропитания, тем самым, продлевая ей жизнь.

3RW40 - Устройства плавного пуска SIRIUS 3RW40 обладают такими же преимуществами, как и 3RW30/31. Однако данные модели оснащены функциями, уникальными в данном диапазоне мощности: полупроводниковая защита от перегрузки двигателя и встроенная защита устройства, регулируемые ограничения тока и двухфазный метод управления (баланс полярности).

3RW44 - Помимо плавного разгона/торможения, полупроводниковые устройства плавного пуска SIRIUS 3RW44 предоставляют множество функций для повышенных требований эксплуатации. Устройства плавного пуска SIRIUS 3RW44 характеризуются компактным размерами, благодаря которым возможна экономия пространства и четкая планировка шкафа управления.

Асинхронный двигатель

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

Программируемые логические контроллеры

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

Но успех автоматизации и бизнеса в целом зависит от грамотного внедрения качественного и надежного оборудования, к числу которых можно отнести программируемые логические контроллеры (ПЛК) и программируемые реле, а также многих других представителей микроконтроллеров.

Siemens Simatic

Несмотря на изменчивость рынка, Simatic не сдает лидирующие позиции, обеспечивая предприятиям надежное и качественное функционирование. При этом данная линейка поддерживает такие популярные протоколы как Ethernet и MPI, Point to Point и PPI, и многие другие. Это позволит вашему бизнесу не только начать новую жизнь, но и обойти всех возможных конкурентов.

В линейку Simatic входят следующие семейства контроллеров:
  • Simatic S7-200 - популярная система автоматизации с широчайшим выбором доп. модулей
  • Simatic S7-300 - семейство для автоматизации крупных объектов
  • Simatic S7-400 - флагман серии, обеспечивающий управление крупными мощностями
  • Simatic S7-1200 - новое поколение программируемых контроллеров Siemens
  • Siemens LOGO!

Серию недорогих логических модулей представляет Siemens Logo! цена которых намного ниже возможностей и качества, которые предназначены для логической обработки информации и выполнения не сложных программ. Основное преимущество данной серии заключается в гибкости модификации модуля и его невысокой стоимости.

Комплексная автоматизация способна кардинально изменить процесс производства, сделав его более оптимизированным и удовлетворяющим современные требования. Убедитесь в этом, сделав заказ умного оборудования именно у нас.

www.siemens-ru.com

Siemens Logo! — десять лет спустя / Habr

Наводя порядок в шкафу, я нашел старый контроллер Siemens Logo! и ряд аксессуаров к нему. Когда-то, десять лет назад, я сделал несколько проектов на таких игрушках. Ностальгия и тёплые воспоминания про те времена побудили меня к написанию этого поста.

Под катом много фотографий (geek porn)!


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

1. Железо

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

1.1. Модуль процессора

Модуль, который я хочу вам показать, оснащен небольшим монохромным LCD. На нем отображаются меню, нужные при загрузке программы, на нём могут отображаться сообщения при работе программы, с него можно даже, при сильном желании, запрограммировать контроллер без подключения к компьютеру. Выпускаются также «слепые» модули (Pure), не имеющие экрана, но если вы занимаетесь построением систем на Siemens Logo!, нужно иметь хотя бы один модуль с экраном, чтобы иметь возможность копировать модули памяти. Но об этом будет сказано ниже.

Итак, модуль процессора 0BA3 питается от сети 220В, и имеет четыре дискретных выхода (реле) и восемь дискретных входов. Дискретный выход представляет собой реле с нагрузочной способностью до 10А при напряжении до 240В, дискретный вход допускает подключение цепей переменного тока напряжением 220В.

Самое интересное, конечно, внутри. Итак, модуль процессора в разобранном виде:

Модуль состоит из двух плат, на верхней плате расположен сам процессор и LCD, на нижней — блок питания, реле и дискретные входы.

Начнем с верхней платы.

Верхняя плата, верхняя сторона.

То же, со снятым LCD.

Верхняя плата, нижняя сторона.

На верхней плате размещается сам процессор (ASIC, разработанный специально для этого изделия), LCD, микросхема L4949EP (стабилизатор напряжения 5В, схема сброса и супервизор питания), кварц на 8МГц, ещё одна микросхема неизвестного назначения, микросхема Atmel 24C08 (EEPROM на 8 кбит), микросхемы 74hc4066 (4 аналоговых ключа) и 74HC11(?). Также на верхней плате расположены разъемы для подключения нижней платы, модуля расширения и модуля памяти.
Как видим, ничего особо интересного на верхней плате нет. Весь основной функционал заключается в одной специализированной микросхеме.

На нижней плате мы видим более интересные вещи. Здесь расположен источник питания на микросхеме TOP332G. Сама по себе микросхема (контроллер импульсного источника питания) очень распространенная, но здесь она применяется в несколько необычном включении, без трансформатора. Получается простой понижающий импульсный преобразователь напряжения, понижающий напряжения от сетевого (85 — 240В) до 24В постоянного тока. Блок питания не изолирует устройство от сети! Цифровая «земля» и общий провод дискретных входов оказываются связаны с «нулём» сети напрямую, поэтому при монтаже контроллера важно, ради соблюдения техники безопасности, подключать сеть правильно, с учётом того, какой провод нулевой, а какой фазный.

Дискретные выходы представляют собой реле Schrack с обмоткой на 24В. Кстати, маркировка на корпусе реле гласит, что коммутируемый ток составляет 8А, а Siemens заявляет для данного модуля 10А. Непорядок.

Дискретные входы не имеют гальванической развязки. По сути, сетевое напряжение через делитель и фильтр поступает напрямую на логику.

Схема дискретного входа

Также на нижней плате расположены винтовые клеммы, разъем для соединения с верхней платой и пьезопищалка.

1.2. Модуль дискретного ввода-вывода

Модуль дискретного ввода-вывода 0BA0, содержит четыре дискретных выхода (реле), четыре дискретных входа, и, как и другие модули этого семейства, пристыковывается к модулю процессора сбоку.

Отдельно он выглядит так:

И в разобранном виде:

Он также состоит из двух плат, верхней и нижней.

Верхняя плата, вид сверху.

Используются точно такие же реле Schrack на 8А, но на этот раз Siemens заявляет максимальный ток 5А. То есть в случае с процессорным блоком они рискуют тем, что будет превышен максимально допустимый ток через контакты реле, а здесь они перестраховываются.

Верхняя плата, вид снизу.

Здесь мы опять видим специализированную микросхему и уже знакомый нам стабилизатор питания L4949.

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

1.3. Загрузочный кабель

Кабель предназначен для загрузки программ через порт RS-232. Кабель имеет гальваническую развязку.

Посмотрим, что внутри.

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

Микросхема MAX3221 (порт RS232) и буфер (74НС14 или какой-то аналог).

1.4. Модуль памяти

Желтенькая штучка на фото — это модуль памяти. В принципе, Logo! работает и без него, но желтый модуль позволяет копировать программы. После заливки программы в контроллер по кабелю её можно скопировать в желтый модуль и вставить в другой контроллер, скажем, находящийся на объекте. Удобно тем, что монтажнику не нужно брать с собой ноутбук и кабель. Бывают ещё красные модули, они не позволяют скопировать своё содержимое во внутреннюю память контроллера (типа, защита от копирования).

Внутри находится микросхема EEPROM Atmel 24C08, такая же, как в модуле процессора.

2. Пишем программу

Итак, подключаем питание, включаем контроллер, и видим следующее:

Напишем программу «мигания светодиодиком». Светодиодик в кавычках, потому что никакой индикации срабатывания выхода на самом деле нет. Мы просто услышим звук срабатывающего реле. Слово «пишем» тоже можно взять в кавычки, потому что програмы для Siemens Logo! не пишутся, а рисуются в графической среде Logo! Comfort.

«Программы» в этой среде построены из «кубиков», каждый из которых представляет собой логический элемент, реле времени, вход, выход, и т.п.

В этой же среде можно запустить симуляцию программы. В нашем случае программа состоит из одного блока Symmetrical Pulse Generator, одного дискретного выхода, и одной константы (лог. 1), разрешающей работу генератора. Всё предельно просто.

Программное обеспечение позволяет запрограммировать любое поколение контроллеров Logo!, как старые (этот, например, третья модель), так и новые (6-я и 7-я модель). Отличаются они тем, что в новых гораздо больше функций, и гораздо меньше ограничений. Третья модель, например, позволят использовать в программе всего лишь до 56 блоков, в современных моделях блоков может быть и 200.

Достоинством этой среды является то, что в ней можно начать работу «с нуля», не имея опыта программирования логических контроллеров. «Кривая обучения» минимальна и может занять один вечер.

Программное обеспечение хорошо документировано, есть примеры проектов (например, автоматика лестничного освещения).

Теперь самое интересное.

Цены.

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

Модуль процессора — 4200 р.
Модуль дискретного ввода-вывода — 3000 р.
Кабель — 3800 р.
Модуль памяти — 650 р.

Впечатляет, не правда ли? Особенно на кабель (две микросхемы и две оптопары) и на модуль памяти (одна микросхема стоимостью меньше 10 р.)

Вот и всё. Надеюсь, вам понравилось. Буду рад ответить на ваши вопросы.

habr.com

Логические реле SIEMENS Logo!, часть 4: Программирование в Logo Soft Comfort — пользовательские блоки UDF и сетевой проект на CS-CS.Net: Лаборатория Электрошамана

Проект управления светом квартиры на Siemens Logo с использованием UDF-блоков

Гыгы! Не прошло и ГОДА! =)) Я нашёл коммент от 9 ноября в третьей части постов про Logo, где говорил что скоро напишу четвёртую часть про UDF-блоки ))) Нет, ну а хрен ли? Я ж говорил, что я как начал в Одинцово ремонтить — так зачерствел, на всё позабил, и вообще замкнулся от людей. Вот ща только начинаю заново раскручивать маховик общения! Поэтому мы продолжаем, и сегодня у меня рассказ про UDF-блоки и сетевой проект в Logo.

Для тех, кто всё позабыл (или только наткнулся на этот пост), напомню ссылки на посты про Logo и ПЛК  (потом вставлю их во все посты про Logo, чтобы связанность была):

Гм. Когда-нибудь (может ещё через год) захерачу пост про WEB-визуализацию, когда в Одинцово весь свет и проводку на Logo переберу и мне надо будет туда WEB-интерфейс замутить =)

Для удобства навигации по постам я завёл тэги по типу контроллера. Раз уж я херачу щиты на ОВЕНе и Logo — то пускай и тэги такие будут, чтобы можно было найти все посты, где есть и техническая инфа и щиты, собранные на этом железе.

В третьей части поста были комментарии, в которых мы уже немного обсуждали UDF. Все эти комментарии я перетащил в этот пост, чтобы они были по теме поста. Так что не удивляйтесь комментам годичной давности — это не глюк! =)

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

Схема на Siemens Logo, участки которой повторяются (кандидат в UDF)

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

Что тут не так? Не, схема правильная — всё нормально! Не так тут то, что она повторяется несколько раз. И если бы вы знали не только про FBD, а про программирование в виде кода, то вы бы сразу заорали: «Надо написать функцию!». Ну, да! UDF — это аналог функции или подпрограммы. Мы запихиваем действие, которое одинаково для разных аргументов или параметров в функцию, один раз отлаживаем, забываем нахер про то, что там написали — и пользуемся готовым результатом!

Вот в Logo можно использовать тот же принцип. Только называется это не функцией, как у всех нормальных (и тех ненормальных, которые в курсе того, что процедура — это функция, которая не возвращает значение) людей, а UDF — User Defined Function или что-то подобное. Я в посте буду звать их UDF-блоками.

Внутрь UDF можно запихать схему, которая будет делать нужное нам сложное (или типовое) действие, а вместо месива элементов (которое задолбаешься копировать несколько раз и заново создавать соединения) — будет один элемент схемы с нужными сигналами входов и выходов. При этом внутри UDF может быть даже сложная схемка — с какими-нибудь таймерами, выдержками и кучей всего другого!

Лично я больше всего затрахался с копированием одинаковых кусков схем. Вот как раз я и взял пример вентилятора, потому что сама схема там простая, но когда ты её копируешь — то Logo Soft Comfort иногда накидывает элементы как попало, и их надо снова красивенько расставлять. А самая ужасная дрянь начинается тогда, когда в этом скопированном куске схемы есть какой-то блок, который надо удалить и поставить новый, а не просто изменить номер входа/выхода. Когда ты удаляешь старое — разваливаются все соединения которые шли к этому блоку, и потом это надо заново отрисовывать.

Меня тут хейтеры упрекали в том, что я делаю одну и ту же стандартную херню в щитах без фантазии =) Во-первых, эти хейтеры забыли сказать о том, что сами-то они по этим щитам учатся и вдохновляются новыми фишками. А во-вторых, посмотрим что они скажут про UDF… =) С ними вся схема для щита с Logo вообще будет выглядеть как несколько стандартных квадратиков =)) А как иначе? Нарабатывается опыт, потом этот опыт сводится в единую техкарту (или стандарт) и все щиты делаются удобно, технично и повторяемо. А через несколько лет снова набирается опыт, все стандарты и техкарты апгрейдятся — и вперёд! =)

Ща мы создадим простой UDF, чтобы я мог показать то, куда надо для этого тыкать в Logo Soft Comfort, а потом займёмся UDF для вентилятора санузлов (по схеме, которую я показал в начале поста).

Тыркаем в меню «File -> New -> UDF diagram (UDF)»:

Создание нового UDF-блока в редакторе Logo

В редакторе открывается новый файл (окно) как для обычной схемы на Logo, только с рамкой вокруг будущего UDF-блока. Рамку можно потаскать за края, чтобы подогнать её размеры под будущую начинку блока. Можно намутить разбивку на страницы, как на обычном проекте, если UDF получается жирный.

Поле для схемы UDF-блока и изменение его размеров

Накидаем схемку для того, чтобы определять длинное нажатие. Идея простая — прокидываем сигнал входа через маркер на выход (для того, чтобы у блока можно было подавать выход на вход через какие-нибудь логические элементы), и для длинного нажатия ставим таймер на включение.

Блок UDF с заданными названиями входов и выходов

Протестим нашу схемку! Эмулятор тут работает точно так же, как и в обычном Logo. Точно так же можно настроить тип входов (кнопка, переключатель), всё протестить и проверить.

Тестируем блок UDF в симуляторе. Работает так же как обычно внутри Logo

У нас получается, что вход передаётся на выход как есть (это одинарное нажатие). Если надо было бы — можно было воткнуть внутрь UDFа какой-нибудь формирователь импульса (Wiping Relay), который выдавал бы на выходе именно импульс одиночного нажатия.

Этот же вход передаём на вход блока задержки включения, которое настроено у нас на две секунды. Если сигнал на входе будет длиться меньше — то блок не сработает. А если больше — то выдаст сигнал на выход, который мы передаём на выход UDF как длинное нажатие.

2. Создаём UDF-блок для вентилятора санузлов

А теперь займёмся нашим блоком. Создадим новый UDF и первым делом займёмся вот чем. Так как мы делаем красивый UDF — то нам надо, чтобы у него было понятное название. Оно в будущем будет использоваться как тип блока в проектах Logo.

Лезем в меню «Edit -> Edit UDF Properties…»:

Команда меню для открытия окна свойств UDF-блока

Открывается большое и дибильное окно:

Задаём название UDF-блока (для внешних программ)

Дибильное, потому что меня БЕСЯТ ублюдочные окна и интерфейсы Logo Soft Comfort! Вот нахер там справа пустое место?! Почему нельзя либо сократить ширину окна, либо растянуть таблицы на всю ширину окна-то?

Вписываем в этом окне название блока и пока закрываем его (но мы ещё вернёмся к нему). А дальше рисуем нашу схему (как из прошлого поста) прямо внутри блока UDF.

Рисуем блок для управления вентилятором санузла (по схеме из предыдущих постов)

Обратите внимание на то, что я задал всем блокам схемы понятные имена. Это красиво, но не всегда хорошо: позжее они сыграют с нами злую шутку!

Внутри UDF можно использовать практически все те же элементы схемы, которые вы используете в обычном Logo. В том числе и маркеры (флаги) M. Они нумеруются внутри UDF с единицы, но они НИКАК не будут связаны с обычными маркерами M в программе Logo. Пугаться не надо: внутри  UDF маркеры живут сами по себе и никуда наружу не вылазят (но занимают ресурсы Logo так же как и имена блоков).

ОКей! Схему мы накидали. Ну а как сделать внешние сигналы входов и выходов? Тут всё просто: берёте линию и тянете её к левому или правому краю рамки UDF-блока:

Создание входов и выходов блока UDF (тянем соединение до края рамки)

Всё, что притянете к левому краю — будет входом, к правому — выходом. Всё просто! И точно так же, как в обычном Logo, на один вход можно подцепить внутри несколько блоков (подать его в разные части схемы).

Вот наша схемка уже со входами и выходами:

Схема блока для управления вентилятором составлена

Возвращаемся к тому же окну свойств UDF-блоков и зададим там названия всех наших входных и выходных сигналов — они будут выводиться в проектах, которые будут использовать этот UDF:

Задали названия внешних сигналов блока

Вот что получилось теперь:

Наш блок UDF управления вентилятором полностью готов

Я, пока рисовал UDF для поста, ещё немного поколдовал и зафигачил вход для Reset — принудительного выключения нашего вентилятора. Вдруг, к примеру, надо будет вентиляторы остановить вместе с центральным выключением света по квартире =)

На этом наш UDF готов и его можно использовать в любом проекте Logo. Надо только подключить его в Logo Soft Comfort. Для этого тыркаем правой кнопкой в дереве элементов на пункт «UDF» и выбираем единственный пункт «Configure UDF…»:

Меню для добавления UDF-блоков в проект

Добавляем все наши UDFки в список:

Список блоков UDF для среды Logo Soft Comfort

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

Захерачиваем UDF — и наша мега-схема превратилась из суперсложной в херовинку из одного прямоугольничка и трёхлиний IO:

Была жирная схема в проекте, а стал маленький блочок UDF =)

Все имена, которые мы задавали, отображаются: название блока и названия всех сигналов. Вот и все хитрости с UDF!

3. Косяки с названиями и передача параметров из UDF-блока

Хех… но не все! Когда я первый раз делал свой UDF для управления светом, то мне надо было сделать некоторые сигналы с разным приоритетом по времени. Я выдумал сигналы Set/Reset и Store/Restore для того, чтобы включать-выключать свет и запоминать и восстанавливать его состояние как было до выключения. И мне ОЧЕНЬ хотелось сделать так, чтобы на блок можно было бы подавать одновременно Reset + Store. А для этого надо замутить приоритет: чтобы Store/Restore обрабатывались внутри блока первыми, а Set/Reset — вторыми. Ну, я и наставил формирователей импульсов внутри блока, которые генерировали мне нужные фронты.

И начал делать на них свой первый проект (в Золотую Звезду; пост будет позжее). Накидал UDFок штук десять — и тут мне Logo каааак ругнётся что всё — не может он больше блоки добавлять, потому что памяти не хватает. Опаньки! Это ж как так? Типа создал UDF, использовал его раза четыре — и досвидос? Хммм.. странные какие-то UDFки… )

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

Помните, что у Logo есть возможность редактировать параметры блоков аппаратно? Ну, когда берёшь какой-нибудь таймер, называешь его как «Work time», а потом прям на Logo в меню «Program -> Set parameter» (аппаратно) можешь подкрутить время его работы? Так вот для этого как раз и нужны названия блоков. Когда я делал свой UDF, я называл все-все блоки. На это тратилась память Logo, и когда я наставил несколько штук блоков — она вся кончилась.

Вывод отсюда уже понятно какой напрашивается: нехер бездумно тратить ресурсы! Если параметры блока будут меняться — то тогда ему и надо задавать имя. Если не будут — то нефиг его именовать; лучше использовать поле «Comment» для названия.

Посмотреть то, сколько занимает ваш проект, можно по кнопке «F2». В этом случае в окно сообщений (в нижней части Logo Soft Comfort) выводится такой вот листинг:

Проверка ресурсов проекта (по клавише F2): хватит ли памяти Logo?

По нему можно увидеть ограничения Logo и то, сколько из них вы уже использовали. Например, с маркерами надо ожидать такой же фигни, как с Block names: если напихать в UDF дофига маркеров, то они в Logo могут быстро кончиться. Ещё интересы пункты «UDF types» и «UDF instances»: в проекте может быть всего до 6 разных UDF (разных штук внутренностей) и до 64 штук UDF в общей сложности.

Я уже упоминал о том, что маркеры (M, «Flag») внутри UDF никак не связаны с проектом Logo. Да, так и есть. Но как ресурсы Logo они вовсю тратятся, причём Logo Soft Comfort сам следит за тем, сколько осталось свободных маркеров.

Я из того проекта, с которого скриншотил, всё стёр и добавил две штуки наших UDF, внутри которых используется один маркер M (Flag), и просто ещё один маркер.

Пример того, как расходуется память маркеров Flag в Logo внутри UDF и в проекте

Смотрите, что получается! Первые два маркера Logo отдал под наши UDF, и поэтому следующий маркер стал номером 3. А если попытаться поменять его номер — то первые два в списке уже недоступны.

Рассказывая про названия блоков, я заикнулся про параметры, которые меняются через меню Logo. А у нас же UDF как раз для управления вентилятором по времени! Внутри UDF для примера я давал названия всем блокам, в том числе и таймеру вентилятора. Ну-ка посмотрим, как это выглядит: будут ли названия блоков из UDF отображаться в меню Logo?

Зальём программу с нашми UDF (и исходными схемами без UDF на два вентилятора) в Logo и зайдём в меню:

Экран Logo. Отображаются только обычные параметры, а не параметры из UDF

А ХРЕН вам, батенька, а не параметры из UDF! Угу, всё что было нафигачено внутри UDF — так внутри UDF и остаётся! Так это и правильно: как же ж Logo разберётся, какой именно параметр из какого именно UDF надо выводить в меню? И как их именовать, если внутри UDF задано всегда одно и то же имя параметра?..

Что надо сделать? То же, что мы делали с именами входов-выходов — составить список параметров UDF. Снова заходим в свойства UDF-блока (меню «Edit -> Edit UDF Properties…»), на вторую вкладку:

Редактирование внешних параметров UDF-блока (время работы вентилятора)

Здесь можно выбрать элементы нашей схемы (внутри UDF) и то, какие их параметры надо вывести наружу из нашего UDF. Опять же зацените ублюдочную вёрстку окна: выбирать надо снизу, а добавляеть вверх. Неужели  эти области местами нельзя было поменять?.. Зато теперь ясно, какого хера на первой вкладке этого окна оставалось пустое место около таблиц входов-выходов: чтобы на второй вкладке хватило места под два списка выборов. Пиздец, очень меня всё это стало бесить. Особенно если с CodeSys сранивать!

Слева снизу вы выбираете элемент схемы, параметр которого надо вытащить наружу. Справа в списке отображаются его параметры. Вы выбираете нужный и жмёте кнопку «Add». А в верхнем списке в колонке «Identifier» задаёте внешнее понятное имя для этого параметра. У меня он будет зваться «Time».

Сохраняем изменения в UDF и идём в наш проект. А чего это там за восклицательный знак появился? А это значит то, что UDF в проекте и UDF в файле не совпадают: вы чего-то поменяли, и Logo не знает, что с этим делать.

Команда для обновления UDF-блока в проекте (если поменяли сам блок)

Надо обновить UDFки в проекте, чтобы Logo подгрузил их из новой версии. Нажимаем правой кнопкой на наш UDF, выбираем пункт «Update UDF». После этого инфа в проекте обновится на нашу новую изменённую версию.

Теперь у нашего блока появился параметр «Time». Тыркаем два раза мышкой на блок, и вылазит стандартное окно настройки свойств блока:

Теперь у нашего блока есть параметр - его можно задавать так же, как и обычные параметры FB-блоков

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

Вуаля: вот теперь в меню параметров Logo появился новый пунктик:

Экран Logo. Теперь отображается ещё и параметр из UDF-блока

Заходим и видим наш параметр «Time». Ура! =)

Экран Logo. Настраиваем параметр Logo из UDF-блока как обычно

Вот такие вот игры с UDF получились. Для своих задач я накатал себе UDF для работы с кнопками по аналогии с FB из библиотеки OSCAT для CodeSys: он определяет одинарное, двойное и длинное нажатие. Все таймеры внутри — а снаружи только удобные выходные сигналы. Берёшь и пользуешься!

Мои блоки UDF для управления светом на Logo

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

Так что теперь в моих щитах с Logo появилась такая фишка: длинное нажатие на кнопку при входе в квартиру вырубает весь свет, а двойное — врубает как было! А если что-то сохранено (свет горел перед центральным выключением) — то подсветка кнопки мигает. Позжее я добавлю сюда видос из поста про щиты на Logo (на Золотую Звезду), где всё это будет видно в работе!

Когда я несколько лет назад начинал изучать логические реле и ПЛК, то больше всего я морочился не про функционал, а про то, что у них всех мало входов-выходов, и поэтому искал такие модели, у которых IO можно было расширять: с модулями расширения или со связью между контроллерами. Некоторые производители (Eaton или вот наш Logo) пишут примерно так: «Возможность связывать несколько Logo по сети между собой».

Ну, я тоже на это покупался и думал: «Вооо!! Ща я сделаю мега-щит, и у меня будет 150 входов и 200 выходов, охренено, круто!». Вот ща мы и разберёмся — можно ли такое наворотить на Logo, как это делается и что ещё можно вытворить. А когда я буду писать пост про ModBus, то ещё раз вернусь к теме сетевых проектов Logo.

Вы уже видели у меня щит в Фили-Град, где было два Logo. Вот фотка оттуда:

Два Siemens Logo для управления освещением (в один не уложились)

Откуда их две штуки набралось? Да потому что в один не уложились, а на ОВЕН нет в щите места: ОВЕН требует опускать рейки по глубине и кучу внешних исполнительных релюшек, а это не всегда влазит в щит. На самом деле ОВЕН (или другой ПЛК с ModBus и модулями ввода-вывода) удобнее, если нам надо получить много линий IO, так как у ПЛК сама система для этого предназначена, а для Logo это уже изнасилование в извращённой форме.

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

Вариант первый — связать Logo между собой аппаратно (общие сигналы подавать через линии IO). Этот вариант я для себя и выбрал, потому что здесь каждый Logo ПОЛНОСТЬЮ автономен и не зависит ни от состояния сети, ни от других Logo. Мы просто заводим одинаковые сигналы на разные Logo — например, сигнал от кнопки центрального выключения света.

Самый главный плюс такого варианта — это адская надёжность и автономность (из-за этого я его и использую), так как вся логика управления находится внутри каждого Logo и не зависит от состояния сети. А минус этого варианта в том, что надо распределять IO по Logo таким образом, чтобы те линии, над которыми мы хотим делать группоые операции (например, центральное выключение света по комнатам целиком при помощи длинного нажатия любой из кнопок света в этой комнате), были целиком внутри одного Logo и не разбивались на два. Пока мне везёт, и у каждого Logo остаётся по 1-4 свободных линии IO.

Вариант второй — связать Logo между собой по схеме «Master — Slave». Это — тот вариант, про который обычно рассказывают производители — типа, вот возьмите кучу Logo и постройте большой щит. Сама программа, если использется режим «Master — Slave», единая для всех Logo и ограничена ресурсами только одного Logo, а удалённые Logo только расширяют линии IO (есть связь только с Input, Output, Analog Input, Analog Output). Зато можно нарисовать большую программу сразу на всю квартиру.

Как это работает? А по обычной Ethernet-сетке! Каждому Logo назначаются свои IP-адреса, а схема-программа составляется при помощи блоков «Network Input», «Network Output», привязанных к этим IP-адресам.

Вот тут-то и возникает первая особенность — IP-адресация и рабочая сетка. Да, я знаю о том, что даже у самого Logo есть свитчи (коммутаторы) на DIN-рейку в аккуратном корпусе. И что можно сделать локальную сетку прямо внутри силового щита. Я ОЧЕНЬ не хочу использовать это всё из-за того, что такая сетка зависит от IP-адресов (а они жёстко прописываются в программе Logo), которые точно отличаются у меня и у заказчика (и чтобы воткнуть Logo с моей программой в свою сеть, ему придётся или переделывать программу в Logo, или перестраивать свою сетку под мою). А если ставить в щит свитч — то блин, это ж потенциальный источник коллизий, мать их.

Хорошее решение — это протащить к каждому Logo в щите свою витую пару от основного свитча квартирной/коттеджной сетки, но щит-то тогда перестаёт быть надёжным готовым изделием, потому что вся работа Logo будет зависеть от состояния этой самой сетки. Отвалится она — и свет аллес =)

Вариант третий — связать Logo между собой по схеме «Master — Master — Master». Этот вариант — смесь двух предыдущих: в каждом Logo теперь будет своя отдельная программа, которая будет крутиться внутри этого Logo. А через сетку можно обмениваться какими-то событиями. Скажем, послать команду центрального выключения всем Logo с любого другого. Тут, если мы заранее про это подумаем, нам не так критичен отвал сетки: тогда просто не будут проходить централизованные команды (если мы решили передавать их по сетке), а свет самими Logo будет управляться как обычно.

В таком режиме можно дёргать из других Logo гораздо больше штучек: входы, выходы, маркеры (флаги M), переменные из памяти переменных (VB) — то есть передавать кучу разных данных или тех жефлагов. Правда, всё равно, если нам нужна команда центрального выключения света — то проще все Ixx у Logo вместе проводом в щите соединить и не париться =)

В общем, пока мне позволяют щиты и задачи, я стараюсь избегать сетевых проектов, чтобы мои щиты не зависели от состояния сетки. ПЛК ОВЕН в этом плане удобнее: там RS-485, который никаких свитчей не требует — развёл его внутри щита, подключил всё IO, и нехай работает! А сетка нужна только для программирования ПЛК или доступа к нему через инет. Конечно же в будущем моя логика может измениться, но пока что (на момент даты этого поста) у меня придумано именно так.

Давайте посмотрим на то, как создаётся сетевой проект в Logo и что там можно сделать. Чтобы начать делать сетевой проект, надо перейти на вкладку «Network Project». Тут у Logo Soft Comfort опять мутная муть, потому что несмотря на то, что мы начали вроде как новый проект, только сетевой, все прошлые открытые файлы на вкладке «Diargram Mode» остаются, хотя это всё должно было бы закрываться — новый же проект начали!

Вкладка сетевого проекта среды Logo Soft Comfort

Экран Logo Soft Comfort в режиме сетевого проекта будет разделён на четыре части: слева сверху — дерево устройств проекта и их схемы-программы (если есть), слева снизу — набор блоков, из которых можно будет рисовать схему для текущего устройства (схема которого будет открыта), справа сверху — схема связей между устройствами проекта и справа снизу — схема текущего устройства в проекте (такой же редактор, как в обычном режиме Logo Soft Comfort).

Схема связей (соединений) задумана для того, чтобы показывать TCP/IP-соединения между устройствами и их параметры (например, указать то, какие параметры опрашиваются по ModBus или другим протоколам). Соединения создаются сами, если мы задаём в программе какую-либо связь, или вручную, если нам надо заранее прописать обмен, но ещё не рисовать схему.

Начнём с того, что добавим в наш проект несколько устройств. Пользуемся кнопкой «Add New Device». Смотрите, СКОЛЬКО тут всего есть!!

Окно добавления устройства в сетевой проект Logo

Поддерживаются Logo в режиме «Slave» (когда программа единая, и надо только увеличить число IO), в режиме «Master» (когда программы в Logo отдельные, но могут обмениваться параметрами между собой). Можно воткнуть связь с S7 — внутренним протоколом ПЛК Siemens, с текстовым дисплеем для Logo TDE и, наконец, можно ModBus! =)

Для каждого устройства надо задать имя (чтобы различать их в проекте) и IP-адрес (и остальные параметры сети). Вот с этого-то момента и нет шага назад: сетевой же проект, без сетки работать не будет =) Хоть одно хорошо: если поменять IP-адрес в свойствах устройства, то все ссылки на него в проекте тоже поменяются. Ура, а то я боялся что всё вручную надо будет перехерачивать по всей схеме!

Всё, что мы добавляем, отображается в дереве слева сверху. Тут можно открыть окно параметров или схему. То же можно сделать, если кликать по шестерёнке на устройстве в схеме соединений. Схема открывается просто двойным щелчком по устройству.

Список устройств и схем сетевого проекта

Вот я добавил два Logo в режиме «Master» и одно устройство ModBus. Соединения нарисовал руками просто для того, чтобы показать то, как это выглядит.

Соединения между устройствами в сетевом проекте Logo

Для соединений на каждом устройстве есть определённые слоты. Слот, который отстоит от других (самый левый на Logo), обозначает динамические соединения, а остальная группа слотов — статические соединения. Из справки я понял это так: статические — это те, которые создаются и поддерживаются всегда (не разрываются), а динамические — это соединения по запросу. Между Logo устанавливаются статические соединения, а между Logo и ОВЕНом среда позволяет сделать только динамическое.

Сам сетевой проект сохраняется как один единый файл. И… на деле это ZIP-архив, внутри которого лежат обычные .lsc-файлы для схем устройств проекта. Пипец находка формата файла, блин! =) Вообще, с этим в Logo Soft Comfort угар: обычные программы хранятся в бинарном формате, сетевые проекты .mnp — ZIP-архив, а UDF-блоки — вообще в XML. Бля, чем дальше я копаюсь в Logo Soft Comfort — тем больше он мне кажется сляпаной на коленке поделкой.

Чтобы общаться по сети с другими устройствами, нам понадобятся входы и выходы из раздела «Network»:

Сетевые входы и выходы в списке элементов схемы Logo

Обычные Input/Output передают один бит, True/False (аналог «Coil» в ModBus), а аналоговые (Analog) передают слово (два байта, 16 бит). Эта инфа потом пригодится в посте про ModBus, а если мы соединяем Logo c Logo — то там всё работает точно так же, как обычные или аналоговые входы и выходы.

Например, хотим мы дёрнуть физический выход на втором Logo. Добавляем «Network output», лезем в его свойства и выбираем то, куда нам надо направить этот выход. VM — это переменные в памяти (их можно потом передавать по ModBus), а «Remote device» — это такое удалённое устройство, которое Logo понимает напрямую (не надо указывать адреса переменных в памяти и прочие штуки).

Выбор типа устройства для связи (Logo) и настройка того, чем будем управлять

В нашем случае мы выбираем второй Logo из списка (и вот тут годится его понятное имя, чтобы ориентироваться по нему, а не по IP-адресу), а потом выбираем тип того, что надо удалённо дёргать (для Logo Master это будет вход I, выход Q, флаг M и переменная в памяти V. Ну и выбираем номер этого элемента.

Как только в проекте появились настроенные удалённые IOшки, то Logo Soft Comfort сразу же создаёт соединение между этими элементами. Вот оно на скриншоте. Я с первого Logo взял вход на вентилятор, а управление самим вентилятором прокинул на второй Logo:

Создали связь со вторым Logo и назначили парочку удалённых выходов

Примерно так же задаются параметры ModBus. Тоже выбираем устройство, его адрес в сети, тип команды (Write Coils, Write Register) и номер регистра, в который пишем.

Создали связь с каким-нить устройством ModBus (команда Set Coils)

Только вот опять мудаки в Logo почему-то адрес устройства в ModBus назвали как «Unit ID», а номер регистра назвали как «ModBus address». Пиздец! Прям как Sunlight в сценосвете — уебанская программа совершенно.

Итого у нас получились вот что:

Полная схема сетевого проекта со всеми соединениям и связями

Дальше такой проект можно загрузить в Logo и он будет работать (на ModBus я проверял, хе хе).

Если сделать двойной щелчок на линии соединения, то открывается окно его свойств. Кое-чего менять нельзя (кто Master, кто Slave именно в соединении, а не в проекте, IP-адреса, передаваемые данные).

Окна со списком параметров, которые передаются по сети Logo

Если вы создаёте ModBus-соединение с нуля, то в этом окне будет список переменных, которые оттудова надо опрашивать. А если задаёте параметры на схеме в проекте — то список будет недоступен; менять их надо будет в схеме проекта — там же, где они и были заданы.

Ещё обратите внимание на то, что минимальный интервал работы по ModBus у Logo нельзя задать меньше, чем 80 мс (а для Logo-Logo такого лимита вообще нет). Так что все идеи типа «Ща мы воткнём сюда парочку модулей ввода-вывода на 32 линии каждый и забацаем на Logo по ModBus щит коттеджа» идут лесом. А вот поопрашивать какие-нибудь аналоговые входы (например, кучу датчиков температуры или давления) — можно.

Вот и все хитрости! Творите, камрады! Если используете эту инфу — оставляйте у себя ссылку на этот пост! Через некоторое время я довыложу пост про щиты с Logo (я за этот год собрал несколько штук) в формате собранного опыта по разработке, а потом и про ModBus в Logo. Я уже пробовал, и это и весело и слёзно одновременно!

cs-cs.net

Логические реле SIEMENS Logo!, часть 3: Программирование в Logo Soft Comfort — таймеры и сообщения на CS-CS.Net: Лаборатория Электрошамана

Программирование в Logo Soft Comfort: более сложная схема

Ну что? И сейчас продолжаем веселиться с Logo и Logo Soft Comfort. На этот раз поразбираемся с парой фишек, которые точно вам сгодятся: это таймеры, настройка параметров блоков и вывод текстовых сообщений на экран. Зная их, можно мутить уже более сложные проекты.

Вспоминаем, что там у нас было? У нас была простая программка из прошлой части, в которой мы поставили пять штук импульсных реле с центральным управлением, если говорить обычными словами, и вывели их на кнопки. И ещё сделали кнопку «Выключить всё».

Теперь хорошо бы поиздеваться над ней дальше. Там, где свет — там ещё и вентиляторы в санузлах, верно? Ну или хотя бы один вентилятор. Вот щас мы его сюда и добавим. А заодно разберём кусочек схемы из щита Мурманска и добавим крутые статусные тексты на экран Logo — мол «Вентилятор в работе ещё хх минут».

1. Таймеры и их параметры. Добавляем вентилятор в схему!

Давайте сделаем самое простое управление вентилятором (которое у меня в Москве и прижилось): вышел из ванной, нажал кнопку — вентилятор заработал на сколько-то минут. Поработал — и сам отключился. Это решение оказалось самым простым и надёжным. Я даже себе так и не дописал другую автоматику.

Заведём себе ещё один вход (кнопка управления вентилятором) и выход (на сам вентилятор). Пущай это будут I8 и Q12.

Добавим блок входа на схему. У нас там было задействовано 6 штук входов (по I6), поэтому среда нам автоматом предложит блок I7. Но нам-то нужен восьмой вход (I8)!

Вот сейчас я покажу то, как это дело поменять. Тыкаем два раза мышкой на блок — и нам открывается окно, где можно его настроить. Это окошко отличается для разных блоков (и там выводятся разные настройки). Для блока I тут можно выбрать номер входа, которым он будет. Ставим для нас восьмой.

Настройки параметров входа I в Logo Soft Comfort

Также сразу, чтобы не бегать в окошко «Simulation parameters», можем настроить то, как этот блок симулировать. У нас это тоже будет кнопка, конечно же.

Настройки параметров симуляции входа I в Logo Soft Comfort

И теперь про таймеры — реле времени. Наверное, чтобы не ходить вокруг да около, выпишу их особенности и отличия от реле ABB CL:

  • Настраиваются таймеры так же, как и там: в окошке задаём параметры времени в разных вариантах: «часы:минуты», «минуты:секунды» или «секунды:сотые».
  • Таймеры бывают с задержкой на включение (On-Delay), на выключение (Off-Delay), и той и другой (On-Off-Delay), генератор импульсов (Pulse generator), формирователь короткого импульса (Wipe relay), а также годовые или недельные.
  • Большинство таймеров в Logo запускаются по входу Trg. Но если в реле ABB CL таймер сбрасывался, если Trg отключали, то тут таймер будет считать до победного конца. Скинуть его может только сигнал по входу «R«. Причём если в те моменты, когда таймер считает, пинать его через Trg — то таймер начинает отсчёт сначала (но не выключается).
    Это немного неудобно в реале: если мы нажали кнопку вентилятора, то он начнёт считать свои 20 минут. Если мы случайно ткнули кнопку, то он начнёт считать свои 20 минут снова, с этого же момента. В реле ABB CL он бы забил на эти нажатия и отработал бы один раз.
    Пожалуй, это самое главное отличие, и для меня оно было неприятно. Если вам хочется иметь таймер, который работал так же, как в реле CL — то возьмите Wiping relay: он управляется одним импульсом и не сбивает отсчёт (гм, надо проверить это).
  • Так же, как и в других реле, параметры таймеров пользователь может редактировать через меню Logo. В реле ABB CL там выводились только обозначения таймеров как Tx, а тут выводится название блока на схеме (это я потом покажу в посте).

Мы сейчас для примера делаем самое простое реле. Используем таймер Off-Delay: задержка выключения. Кнопка нам его запускает в работу, и таймер считает свои 20 минут вентилятора. Когда он досчитает — он выключится.

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

Добавляем реле Off Delay для управления вентилятором в Logo Soft Comfort

В справке пишут примерно так:

Справка по реле Off Delay в Logo Soft Comfort (мутная)

Краткий примерный перевод:

  • Вход «Trg» при переходе значения с 1 к 0 (спад сигнала) запускает отсчёт времени;
  • Вход «R» немедленно сбрасывает время в ноль и останавливает отсчёт, выключая выход. Он имеет приоритет над «Trg»: выключить таймер можно всегда, даже если «Trg» активирован.
  • Выход «Q» включается в 1, когда по сигналу «Trg» идёт отсчёт времени.

Это нам и надо. Вешаем на Trg нашу кнопку, а на выход таймера — Q12 Logo, на котором будет вентилятор. Вот и вся схема готова!

Установили реле Off Delay для управления вентилятором

Готова? Неа! А время кто будет настраивать? Не Пушкин же! Два раза щёлкаем на блок и попадаем в окно его настроек. Блок я здесь переименовал в Vent Time. Зачем это надо — вы потом поймёте и сильно обрадуетесь этой фишке!

Настройка параметров реле времени в Logo Soft Comfort

Можно ввести нужное время (и выбрать, в чём оно меряется). Видна галочка «Retentivity», которая включает режим памяти времени: если питание Logo отключить и потом включить, то такой таймер будет всё равно продолжать считать с того места, на котором он остановился. Про галочку «Protection Active» расскажу позже. Совсем через немного времени.

После того, как мы настроили время, схемой можно пользоваться — она будет работать.

Но мы — это ж не мы, если не подумаем о пользователе? Вот он ткнул наш вентилятор. Работает он у него 20 минут. А если ему этого много, и он решил его выключить пораньше?

Не думайте, что этим надо занимать мозги. Иногда это делается на потоке. Например, чем-то от соседей завоняет, ты ткнул вентилятор, чтобы он вытянул воздух. Крутится он себе, ты про него и забыл (но 20 минут ещё не прошло). А потом мельком проходишь мимо санузлов и думаешь: «А, во, можно и отрубить его».

Давайте сделаем мою стандартную фишку: выключение чего-нибудь той же кнопкой, но с длинным нажатием. Возьмём ещё одно реле времени, но теперь с задержкой на включение (On-Delay) и поставим его параллельно кнопке управления. Выставим там время в 2 секунды, а его выход (если сигнал на входе держится больше 2 секунд, то выход включается) ткнём на вход «R» реле времени.

Вот какая схема получится:

Добавили реле On Delay для ручного выключения вентилятора

Погоняем её в симуляторе. Вот сейчас я ткнул I8 и у меня пошёл отсчёт времени (пока делал скриншот, насчиталось 27 секунд). Вентилятор включен:

Симулируем схему вентилятора: он работает себе

Теперь нажмём на кнопку ещё раз. Вход «Trg» блока «Vent Time» активировался, и он, гад, обнулил свой отсчёт. Но заодно активировался и вход «Trg» блока «Vent Off», и там пошёл отсчёт времени:

Симулируем схему вентилятора: ручное выключение считает себе

Если сейчас отпустить кнопку, то блок «Vent Off» не досчитает до 2 секунд и отключится. А вот если кнопочку подержать, то будет вот чего:

Симулируем схему вентилятора: ручное выключение сработало

Блок «Vent Off» досчитает до 2 секунд и выдаст сигнал на выходе. А этот сигнал пойдёт на вход «R» блока «Vent Time». И сбросит его в исходное состояние. Наш вентилятор выключится раньше его нормального времени работы. Задачка выполнена.

Даю подсказку, как сделать так, чтобы при кратковременных нажатиях на кнопку отсчёт не обнулялся, и время считалось до победного конца. Как сейчас стоит эта задача? «Чтобы если вентилятор работает, то отсчёт времени не обнулялся». Как я ругаю заказчиков: «…а теперь перепиши это более понятно». Перепишем: «Чтобы вход Trg работал (включался) только если вентилятор выключен».

О! А вот это уже решаемо: взять сигнал с выхода блока и объединить его с «И» и «НЕ». Тогда описание этого куска схемы должно выглядеть так: «ЕСЛИ (I1 = 1) И (Q12 НЕ = 1) ТОГДА Trg = 1″.

Ща мы и узнаем, нафига была нужна галочка «Protection Active» в настройках блока реле времени ;). И заодно нафига мы давали блокам реле времени понятные имена.

Как вы думаете? Охота ли вам останавливать программу (и тушить оборудование) и садиться за комп, чтобы поправить и залить новую программу в Logo только ради того, чтобы исправить время работы вентилятора с 20 минут на 25 минут?

КОНЕЧНО ЖЕ НЕТ! Не, если это будет какая-нить ушлая фирма, то она специально может так сделать, чтобы почаще наладчика вызывали. А наладчик будет гнуть пальцы: «Ууу… ну это надо всё оборудование останавливать, перепрограммировать! Это будет стоить денег, вы же понимаете?». А заказчик будет считать убытки, которые он из-за простоя оборудования понёс.

Чтобы такого не было, мы можем дать пользователю возможность самому крутить некоторые параметры программы! За нас всё уже придумано. Заходим в меню «Program» (если программа сейчас работает — то надо нажать кнопку Esc» на Logo):

Меню доступа к параметрам программы в Logo

И выбираем пункт «Set Parameter». В некотором случае нас могут попросить программу остановить, а в некотором всё работает и так.

Меню доступа к параметрам программы в Logo

И чего мы тут видим? А видим мы тут наши родные названия блоков из нашей схемы!! Именно поэтому вбить в схему их можно только латиницей (обычно Logo кириллицу не отображает)! Сразу всё понятно, если разработчик о нас позаботился и вбил понятные названия, конечно. Если названия блокам не дать, то они останутся стандартные (B008 или какие-нибудь B044).

Выбор параметра для настройки внутри Logo

Тыкаем на наш параметр «Vent Time» и можем его менять как хотим. Всё просто, и не надо исправлять программу ради одной фигульки.

Можно настроить время работы вентилятора напрямую из Logo

Важный момент! Однако, если снова залить программу в Logo, то все параметры вернутся на те значения, которые были указаны в программе. Для юзера это выглядит как «настройки сбросились на значения по умолчанию». Не забудьте про это!

Хорошо. Но тут пока что есть один косяк. Юзеру надо настраивать только время работы вентилятора. А вот время работы длинного нажатия на кнопку — не надо. Оно должно быть стандартным для всего проекта. Да и кнопок с таким длинным нажатием может быть десяток — зачем нам путать юзера огромным списком фигни?

Вот как раз для этого и есть галочка «Protection Active» в настройках блока. Если она стоит — то параметры блока пользователь менять уже не может.

Включаем защиту от изменения параметра в Logo Soft Comfort

Поставим её для блока «Vent Off». Выключенные от пользователя параметры помечаются значком «-» (минусом) около времени отсчёта. А включенные — «+» (плюсиком).

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

Теперь лишних параметров нет в списке Logo

Конечно же, мы можем отрубить изменение всех параметров и говорить что «…не, ну это денег стоит». Тут уже всё зависит не от Logo, а от совести и отношения к людям. Я делаю так, как показал: системные тайминги скрываю, а те, которые можно крутить (время работы, время задержки запуска генератора или таймаута переключения рубильника) — конечно же оставляю.

3. Изменение размеров страницы схемы (чтобы влезла схема побольше).

Идём дальше. Схемы-то растут, да? Чего делать, если не влезем на одну страницу? А вот чего: добавить себе страниц. Называется это в этой среде «Page Layout»:

Программирование в Logo Soft Comfort: изменяем число страниц в проекте

Выставим две страницы по вертикали. Теперь можно нарисовать большую схему (это, кстати, как раз схема моего любимого Мурманска).

Программирование в Logo Soft Comfort: схема на две страницы (Мурманск)

Печатается это так, как нарисовано. Границы страниц соблюдаются, и эта наша схема будет напечатана на двух листах А4. Так что с печатью тут всё отлично! Ура!

4. Придурочный редактор соединений. Ктулхизм.

И вот щас мы снова возвращаемся к тому, насколько местами среда Logo Soft Comfort ублюдочная. Вот вам кусочек схемы (мы его потом будем разбирать). А ну-ка угадайте, что здесь с чем соединяется? Для человека, который не знаком с Logo Soft Comfort и ни разу там ничего не чертил, это будет не схема, а абсурд и полная жесть с трешем.

Среда Logo Soft Comfort хреново рисует соединения

А если так? Понятнее, да? 😉

Среда Logo Soft Comfort хреново рисует соединения - то, что получилось

В общем, как вы уже поняли, среде похер как идут соединения. Она рисует их как попадётся. Поэтому схему в процессе рисования надо приводить в порядок и такие мутные соединения окучивать и растаскивать.

Делается это так: кликаем на одно из соединений (любое) и получаем вокруг него маркеры. Если тащить за синие — то вся палка линии тащится целиком. Если за красные — то тащится только один угол линии (и можно вытянуть из него ещё один угол, если надо).

Среда Logo Soft Comfort хреново рисует соединения - правим

А вот вам ещё один такой же образчик. Для среды всё нормально — ей-то понятно, что и куда идёт.

Среда Logo Soft Comfort хреново рисует соединения - ненаглядно

А теперь и нам понятно:

Среда Logo Soft Comfort хреново рисует соединения - добавили наглядности

Но порыдать, как вы поняли, всё равно есть над чем. Я бы даже смешные скриншоты на память делал бы.

И есть ещё одна штука, которая может сгодиться. Это обрезка соединений («Cut connections»). Она нужна, чтобы разорвать линию соединения на схеме. Сначала мы рисуем соединение туда, куда оно должно идти. А потом режем его на две части.

Вот тут у меня так порезаны сигналы центрального выключения на группы комнат:

Программирование в Logo Soft Comfort: разрезанные соединения

5. Более сложная схема (часть Мурманска). Центральное выключение света по комнатам.

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

Программирование в Logo Soft Comfort: управление светом с выключением по помещениям

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

Сделано это вот как: с каждой кнопки сигнал идёт на своё импульсное реле для управления светом. И этот же сигнал через логическое «ИЛИ» (блок B014) собирается в кучу и подаётся на реле времени задержки включения On-Delay так же, как это было для длинного нажатия на кнопку вентилятора в начале этого поста.

Если любая кнопка нажата коротко — то ничего не будет. А если длинно — то B014 сработает и выдаст нам сигнал на блок B034. Этот блок — тоже «ИЛИ». Он работает по любому сигналу: локального выключения (вся комната) или сигналу «ALL_Off» (вся квартира). Вот и вся технология. Блоки «ИЛИ» нам тут нужны для того, чтобы сигналы не смешивались и не влияли друг на друга.

Ну что? Какой же это у нас крутой контроллер (и щит), который не может написать на экране что-то типа «Генератор не запустился, таймаут, ошибка» или «Подъёмник включен, едем вверх, текущий этаж: 5ый». А чего это он не может? МОЖЕТ! Причём сделано это ОЧЕНЬ КРУТО!!! В СТО РАЗ КРУЧЕ, ЧЕМ В РЕЛЕ ABB CL! Ща расскажу!

Нам нужен блок «Message texts«. Вот он:

Блок вывода текстовых сообщений в Logo Soft Comfort

Этот блок ставится на схему так же, как и остальные. Если на его входе управления будет «1», то он отобразит на экране Logo некое сообщение. Какое и как оно настраивается — это мы сейчас изучим. А пока дорисуем парочку таких блоков в нашу схему:

Выводим сообщения в Logo: добавили два блока Message

Обратите внимание на такие фишки, которые могут вам сгодиться:

  • Мы повесили оба блока на выход вентилятора. Мы хотим, чтобы когда вентилятор работает, нам писали про это. А когда он не работает — выводился статус ламп освещения (включен или нет каждый выход).
  • Чтобы блоки работали попеременно, мы инвертировали вход у одного из блоков. Про это говорит нам точка около входа. Инверсия включается двойным щелчком мышки по контакту входа. И выключается также.
  • Блоки сообщений обязательно требуют, чтобы их выход был куда-то подключен (их можно воткнуть в разрыв перед выходом Q, например). Если это не надо — возьмите блок «Open connector» («X») и подцепите его на выход. Я так у себя и сделал.
  • Если вы хотите, то вы можете поменять цвет подсветки экрана Logo. Делается это при помощи маркеров, которые тут зовутся «Flag», но обозначаются буквой «M». Если поставить любой маркер и ткнуть его параметры, то там можно вычитать, что M25 = белый, M28 = оранжевый, M29 = красный.
  • Само сообщение может требовать подтверждения пользователя (чтобы он дошёл до Logo и нажал «OK», мол: «Понял я, хорошо»). Такие сообщения называются «Acknowledge message» и нужны, если у нас требуется вмешательство пользователя. Ну, не знаю… например, «Закончилась суспензия в баке! Налейте её в бак и нажмите ОК» или «Ошибка открытия привода. Проверьте привод! Работа остановлена!».

А вот дальше — тыкаем два раза на блок сообщений и попадаем в… в рай! Дело в том, что в других реле (у ABB CL, например) сообщение — это единый общий текст, который можно или вывести на экране, или не вывести целиком. А вот у Logo текст сообщения может быть большим шаблоном, куда можно вписать разные параметры: состояния входов/выходов, текущие параметры разных блоков (например, остаток времени работы нашего вентилятора). Сообщения можно выводить только построчно (затрагивать одну строчку на экране, не меняя другие) или сразу единым экраном.

Вот как этот редактор выглядит:

Выводим сообщения в Logo: редактор блока сообщения

Слева вверху можно настроить приоритет сообщения и выбрать блоки, параметры которых мы будем отображать. Справа снизу есть сам редактор сообщений. Зелёная часть — это та часть экрана, которая будет видима сразу. Синяя — та, которую можно прокрутить кнопками. Лучше укладываться в зелёную часть.

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

Выводим сообщения в Logo: набиваем своё сообщение, как хотим

А теперь подставим туда параметры выходов. Я там выделил кнопочку «ON/OFF». Она как раз и позволяет вставить нужный параметр. Открывается окошко, в котором можно выбрать вход, выход, маркер (флаг) или состояние выхода какого-то внутреннего блока. А заодно можно написать свой текст для состояния «1» и «0».

Выводим сообщения в Logo: вставляем состояние любого сигнала

Вдумайтесь, как это круто!! Например, если у нас где-то внутри есть свой таймер отсчёта таймаута запуска генератора (выдали команду запустить генератор и ждём для примера минуту — если за минуту не стартанул — значит авария). Вот чтобы не выводить специально внутри программы-схемы это состояние на флаг, можно взять выход с этого таймера напрямую и написать для состояния «1» текст «запуск…», а для состояния «0» текст «ждёт запуска». И выставить это значение перед словом: «Генератор: «. Это ОЧЕНЬ КРУТО!

Только для того, чтобы можно было выводить кириллицу, в проекте надо поменять кодовую страницу сообщений. Я этого делать не стал и оставил для нашего примера обычные ON-OFF. Вот что у меня получилось в шаблоне:

Выводим сообщения в Logo: создали сообщение для статусов освещения

Теперь сделаем второе сообщение для вентилятора. Если можно вставить любой параметр любого блока — то давайте вставим время, которое осталось до выключения вентилятора. Выбираем наш блок «Vent Time» и справа берём его параметр «Remaining Time» (оставшееся время) и жмём кнопку «Insert Parameter»:

Выводим сообщения в Logo: создаём сообщение для вывода задержки вентилятора

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

Выводим сообщения в Logo: сообщение статуса света в работе

А вот фотка с реального Logo и его экрана:

Пример текстового сообщения на дисплее Logo (свет)

Теперь стартанём вентилятор. В этот момент предыдущее сообщение отключается и сразу же включается другое:

Выводим сообщения в Logo: сообщение статуса вентилятора в работе

Вот так оно выглядит на Logo вживую:

Пример текстового сообщения на дисплее Logo (вентилятор)

7. Доводим и наш пример с вентилятором до ума окончательно.

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

Программирование в Logo Soft Comfort: полный пример схемы управления вентилятором санузла

У нас тут добавился блок B008 — логическое «И». Так как это «И» — то оно никогда не сработает, если неиспользуемые входы не подключить к статусу «Hi» (единице): условие «И» никогда не сойдётся, ибо неподключенные входы всегда будут равны логическому нулю.

Что мы делаем? Мы берём выход после Q12 (напрямую с таймера «Vent Time» сделать это нельзя, иначе Logo зациклится — среда про это предупреждает; сделать можно только через маркер M или выход Q). Прям на входе «И» инвертируем его (там стоит точка) и соединяем с входом от кнопки I8.

Теперь если вентилятор выключен (Q12 = 0) на инвертированном входе блока «И» будет логическое 1. Если нажать кнопку — то сигналы совпадут по «И», и сигнал пройдёт на Trg. Наш блок «Vent Time» включится и включит нам Q12. Теперь на инвертированном входе блока «И» будет ноль — и сигнал от кнопки не будет проходить на Trg. Блин, это реально как мои родные микросхемы =) Те же приёмы из раннего детства! =)

8. Заключение.

Это будет самое краткое заключение из всего, что было. Камрады! Я… у меня так получилось, что Logo меня АДСКИ ВТАЩИЛ. И я разжевал и показал даже то, что совсем не хотел показывать — про сообщения и всякие куски из Мурманска.

Не просите меня выложить схемы или примеры к постам. Тут всё настолько расписано, что если вы захотите — то вы сделаете всё сами. Такой пример у меня есть: один суровый дяденька «из органов», который первый раз в жизни увидел этот Logo, в итоге настолько в нём разобрался (и это в прошлом году со мной за чаем, без этих постов), что выдал потом: «Это охеренская штука! Я буду её своим по работе советовать! И сам буду программировать под свою квартиру!».

А кто не хочет разбираться — тому тупое копирование примеров не поможет. Извините! =) Жжом дальше!

cs-cs.net

Для программирования логических модулей LOGО! используется набор функций, встроенных в их операционную систему. Все функции сгруппированы в две библиотеки.

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

Общий объем программы ограничен 200 функциями. Это значит, что один логический модуль способен заменить схему, включающую в свой состав до 200 электронных и электромеханических компонентов.

Программирование может выполняться тремя способами:

  • С клавиатуры модуля LOGО! Basic.
  • Установкой запрограммированного модуля памяти.
  • С компьютера, оснащенного пакетом программ LOGО! SoftComfort.

Программирование с клавиатуры контроллера logo

Программирование модулей LOGО! с клавиатуры выполняется на языке FBD (Function Block Diagram) и напоминает разработку схемы электронного устройства. Этот вариант программирования возможен только для модулей LOGO!Basic.

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

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

Все операции программирования поддерживаются встроенной системой меню модуля. В модулях LOGО! от версии 0BA6 все меню могут отображаться на русском языке.

Программирование с помощью модуля памяти

Программирование логических модулей LOGО! может выполняться установкой в его паз модуля памяти с заранее записанной в него программой. После установки модуля памяти и включения питания в LOGО!Pure программа автоматически копируется из модуля памяти в память логического модуля, после чего выполняется автоматический запуск программы.

В LOGО!Basic после установки модуля памяти и включения питания на экран дисплея выводится меню, из которого можно произвести перезапись программы из модуля памяти в память логического модуля и осуществить запуск выполнения программы.

Программирование с помощью LOGO! SoftComfort

Программное обеспечение LOGО! Soft Comfort предоставляяет наиболее широкие возможности по разработке, отладке и документированию программ логических модулей LOGО! Разработка программы может выполняться на языках LAD (Ladder Diagram) или FBD. Допускается использование символьных имен для переменных и функций, а также необходимых комментариев.

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

Разработка, отладка и полное тестирование работы программы может осуществляться в автономном режиме без наличия реального модуля LOGО! Готовая программа может загружаться в логический модуль или записываться в модуль памяти, а также сохраняться на жестком диске компьютера.

Логические модули сименс лого исполнения …0BA6 и программное обеспечение LOGО! Soft Comfort от V6.0 и выше позволяют выполнять операции программирования и диагностики через системы модемной связи.

promspecrele.ru

Знакомство с Лого

Среда программирования ЛогоМиры

Мы будем изучать язык программирования Лого с применением программы ЛогоМиры. Разработчиками предложено название MicroWorlds (читается МикроВолдс, переводится МикроМиры), но в России это название имеет другой компьютерный продукт – текстовый редактор МикроМир (MIM), поэтому применяется название ЛогоМиры.
Для загрузки ЛогоМиров следует дважды нажать ярлык программы на рабочем столе.

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

Рис. 1 Вид экрана.

Главным объектом языка Лого является черепашка. Она перемещается по экрану и выполняет ваши задания - команды. Черепашка существо глупое, но дисциплинированное. Она выполняет не то, что вы хотите, а то, что вы ей приказываете.

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

Черепашка знает команды: вперед, назад, направо, налево и другие.

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

После набора команды следует нажимать клавишу Enter.

Если мы подадим неверную команду, которую черепашка не понимает, то она отвечают: «Не знаю, что такое…». Следует исправить ошибку и повторно выполнить команду.

Черепашка может двигаться по экрану только вперед или назад. Этим движениям черепашки соответствуют процедуры:

ВПЕРЕД 50 - вперед 50 шагов (между словом и числом обязательно ставится пробел).
ВП 50 - сокращенная запись команды вперед,

НАЗАД 50 - назад 50 шагов
НД 50 - сокращенная запись команды назад.

У черепашки есть перо, которым она может оставлять след на экране. По команде перо опусти (пишется слитно пероопусти) черепашка может оставить след. Возможно сокращение этой команды до двух букв ПО. Таким образом, черепашка может рисовать.

Для того, чтобы черепашка двигалась без следа ей надо сообщить команду перо подними (пероподними) или ПП. Черепашка может рисовать в различных местах рабочего поля.

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

НАЛЕВО 30 - налево на 30°
ЛВ 30 - сокращенная запись команды налево.

НАЛЕВО 300 - налево на 300°
ЛВ 300 - сокращенная запись.

НАПРАВО 30 - направо на 30°
ПР 30 - сокращенная запись команды направо.

НАПРАВО 300 - направо на 300°
ПР 300 - сокращенная запись.

Наведите указатель мыши на черепашку.

lukped.narod.ru

Отправить ответ

avatar
  Подписаться  
Уведомление о