Промышленное программирование что это

Специализация: промышленное программирование

Наташа Мурашкина, студентка четвертого курса программы «Прикладная математика и информатика», выбрала для себя специализацию «Промышленное программирование». Чем ее привлекло это направление, как студенты получают опыт рецензирования кода и какие курсы помогли Наташе в выборе темы диплома, читайте в нашем материале.

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Наташа Мурашкина, студентка четвертого курса программы «Прикладная математика и информатика»

Когда я училась программировать в школе, я писала для себя игрушки или маленькие вспомогательные программки, участвовала в Google Code-In, поэтому мой интерес естественным путем сформировался вокруг промышленного программирования.

Мне особенно нравятся курсы, где для сдачи домашки нужно не просто решить тесты или показать, что программа работает, а ещё и пройти подробное code-review, то есть исправить замечания от преподавателя по коду. Рецензирование кода, как правило, проводится на общих дисциплинах младших курсов — основы программирования,, C++, Java, однако и на старших курсах таких дисциплин было достаточно — альтернативные языки для JVM (Scala, Kotlin) и параллельное программирование. Ревью кода — это весьма затратное по времени для преподавателей предприятие, поэтому вдвойне приятно, что оно не заканчивается на младших курсах. Дополнительно на таких предметах, как базы данных, Software Design, Big Data Software Engineering студенты делают ревью кода друг другу, а побыть в роли рецензента — бесценный опыт.

На младших курсах я писала простенький парсер и интерпретатор языка программирования с помощью библиотек, а также в команде с однокурсницей разрабатывала приложение под Android с возможностью комментировать PDF-файлы. На третьем курсе я сделала шаг в сторону от Software Engineering и попробовала себя в проекте по обработке естественного языка. Но по-настоящему щелкнуло, когда я начала заниматься текущей темой своего диплома по параллельному программированию. Именно поэтому самый дорогой моему сердцу курс — это курс по высокопроизводительным вычислениям от Евгения Калишенко. Также мне запомнился курс по разработке интерфейсов от Матвея Брыксина — это совсем не про программирование, но курс расширил сознание в понимании того, как устроен жизненный цикл продукта за пределами кодинга.

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

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

Более подробно с описанием курсов можно ознакомиться на сайте программы «Прикладная математика и информатика».

Источник

Промышленное программирование, или Пара слов об АСУ ТП

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Есть такая профессия — производство автоматизировать. Аббревиатура АСУ ТП означает «автоматизированная система управления технологическим процессом» — это система, состоящая из персонала и совокупности оборудования с программным обеспечением, использующихся для автоматизации функций этого самого персонала по управлению промышленными объектами: электростанциями, котельными, насосными, водоочистными сооружениями, пищевыми, химическими, металлургическими заводами, нефтегазовыми объектами и т.д. и т.п.

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

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

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

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

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

Верхний уровень

Верхний уровень — это серверы и пользовательские ПК (у нас они называются АРМ — автоматизированное рабочее место). Сюда выводится состояние технологического процесса, и отсюда при необходимости оператором подаются команды на изменение его параметров. Для упрощения разработки создано большое количество SCADA-систем (от англ. supervisory control and data acquisition — диспетчерское управление и сбор данных). Это в некотором роде расширенный аналог IDE, в котором скомпилированная «программа» и выполняется.

Системы SCADA

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

А если совсем не повезёт, то вот так:
Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Подразумеваются два режима функционирования: режим разработки и режим выполнения (runtime). Не обязательно эти режимы взаимоисключающи: можно редактировать проект на одном АРМе, инженерном, заливать его, он обновится на пользовательских. Это очень важно — изменять проект без простоев и отключений, потому что технологический процесс прерывать нельзя, и операторы всегда должны иметь возможность его контролировать. В скаде создаются графические интерфейсы, настраиваются источники данных с полевых устройств, она отвечает за взаимодействие пользователя (оператора, диспетчера, технолога) с происходящим на производстве, а также за архивирование всех нужных данных в БД.

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

Периодически скада складывает все собранные данные в БД. Их потом можно посмотреть в виде графиков (называем их трендами), а при необходимости, если оговорено в ТЗ на АСУТП, реализуется выгрузка в виде отчётов в эксель или ещё как-нибудь. Архивация сделана по-разному: в MS SQL; MS Access; в ту же MS SQL, но по своему хитрому алгоритму с дополнительной архивацией; а у кого-то вообще в свою собственную бинарную БД.

Особым пунктом в скадах идёт информирование оператора: текущие сообщения и аварийные. Они тоже обязательно архивируются. В общем виде сообщения делятся на текущие и важные (аварийные). Текущие прячут подальше, но журнал аварийных всегда выводится на экране оператора. К текстовым аварийным сообщениям привязываются звуковые, чтобы кто-нибудь не проспал ЧП 🙂

Рынок SCADA

Самыми распространёнными, по-моему, считаются скады производства Invensys Wonderware, Iconics, Siemens, Indusoft, AdAstra, Emerson, Rockwell Automation.

Я лично работал с виндовыми: Invensys Wonderware InTouch и более мощной System Platform, с Iconics Genesis32 — и с (пока ещё?) малоизвестной B&R APROL под SLES (формально, это не совсем скада, а покруче — из-под апрола программируются и сами контроллеры).

По поисковым запросам, например, SCADA, HMI можно посмотреть примеры интерфейсов и мнемосхем.

Внешний вид и юзабилити по приоритету, увы, находятся на последнем месте. Причём, это касается не только рантайма, но и разработки. Для разработки в каждой скаде существуют как минимум дефолтные библиотеки символов — от кнопок и прочих контролов до графических изображений насосов, труб, задвижек, ёмкостей. Здесь-то и могли бы умные разработчики SCADA-пакетов (не путать с нами, асушниками — разработчиками проектов в этих пакетах) добиться принципиального преимущества над конкурентами, сделав продуманные библиотеки, из которых бы даже самый далёкий от дизайна и юзабилити инженер при всём нежелании делал бы гуманные интерфейсы и мнемосхемы. К сожалению, сейчас эта сфера идёт по пути экстенсивного развития, по которому развивалась IT до недавнего времени — наращивание функционала, добавление плюшек, больше, выше, сильнее, harder, better, stronger, и о пользователях пока думают мало.

Средний уровень

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

Состав ПЛК

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это
Контроллер B&R серии X20

Зачем нужен блок питания — понятно. БП сделан отдельным именно модулем, а не устройством, чтобы гарантировать совместимость с данной линейкой ПЛК. Чаще всего входное напряжение у БП 220 В переменного тока, выходное — 24 В постоянного тока.

Процессорный модуль — это голова ПЛК. Внутри у него, само собой, ЦПУ, ОЗУ и ПЗУ, сервисный порт для прошивки и, возможно, коммуникационный порт (ethernet, RS232/422/485, Profibus, etc). Иногда коммуникационный порт используется и как сервисный. Иногда на модуле есть переключатель (у Allen Bradley ещё круче — там натуральный ключ с замочной скважиной) для перевода ПЛК в различные режимы работы. Отдельной кнопки включения/выключения нет, в лучшем случае — тот переключатель, иначе, если есть питание — ПЛК запускается, а выключается и перезагружается «по-варварски» отключением питания.

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это
Контроллер Allen Bradley серии CompactLogix

Дискретные и аналоговые модули обрабатывают соответствующие сигналы. Входные модули принимают эти сигналы с поля, выходные — формируют их.

Дискретный сигнал — это обычно напряжение цепи 24 вольта. Есть 24 — это «1», нет — «0». Бывают модули на 220В, есть модули с проверкой целостности цепи. Дискретные сигналы, приходящие с поля, могут информировать, например, о состоянии насоса включен/выключен. Управляющие дискретные сигналы могут запускать либо останавливать этот насос. Оптимизация здесь не оправдана, поэтому на запуск будет отдельная цепь, на останов — отдельная.

Модули I/O одного типа могут быть объединены: например, один модуль с 16 дискретными входами и 16 дискретными выходами.

Аналоговые входные сигналы — это приходят показания с датчиков. Здесь чаще всего используется токовая петля 4-20 мА, в соотетствие которой ставятся пределы измерения датчика. Начинается от 4 мА для диагностирования обрыва цепи (если меньше 4 мА, значит где-то что-то не в порядке с проводкой).

Рассмотрим на примере уровня жидкости в резервуаре. Стоит уровнемер, он измеряет уровень от 0 до 2 метров. Тогда: уровень 0 метров — это 4 мА, уровень 2 метра — это 20 мА. Промежуточные значения калибруются по ситуации, не всегда 1 метр соответствует 4+(20-4)/2=12 мА, может быть небольшая погрешность, уровень в 1 метр может быть какие-нибудь 12,7553 мА.

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

Температурные модули замеряют сопротивление в цепи либо термо-ЭДС. Если на них подключаются термометры сопротивления — при нагревании металла его сопротивление, по законам физики, повышается, соответственно определяется температура. Если подключается термопара (два спаянных проводника из разных металлов, при нагревании стыка возникает разность потенциалов между другими концами), замеряется напряжение.

Интерфейсные (или коммуникационные) модули предоставляют нам порты под RJ45, DB9, DB15, просто клеммники или что ещё бог производителю на душу положит. Помимо реализации непосредственно интерфейса (физического разъёма под коннектор, физического уровня модели OSI) они также реализуют протокол обмена через этот разъём.

Протоколы и интерфейсы

Протоколов напридумывали и используют кучу: ModBus (RTU, TCP, ASCII), Profibus, Profinet, CAN, HART, DF1, DH485 и т.д. Некоторые особо хитрые производители реализуют свои протоколы поверх общепринятых.

Я достаточно тесно знаком с интерфейсами RS232/485 и протоколами Modbus. RS232 это всем знакомый COM-порт, с тремя основными линиями: Tx (transmit, передача), Rx (recieve, получение) и GND (ground, земля). RS485 это асинхронный полудуплексный последовательный интерфейс по 2 проводам (совмещённые Tx/Rx+ и Tx/Rx-) или 4 проводам (отдельно Tx+, Tx-, Rx+, Rx-) с разностью потенциалов на каждой паре от 2 до 10 вольт.

А модбас это в общем-то нехитрая штука, с проверкой целостности пакета по чексумме, подтверждением доставки и корректности запроса — или ответом, почему запрос неверен. В сети модбас есть два вида устройств: master — инициирует обмен; slave — выполняет запросы мастера. Пакет от мастера расходится ко всем слейвам, которые сравнивают адрес назначения со своим, если сходится, то смотрят следующие два байта — это команда работы с регистрами памяти — чтение/запись (за исключением нескольких редко используемых служебных команд), потом байты адреса и непосредственно данных, в конце чексумма. Достаточно подробно и понятно расписано на википедии.

Программная начинка

Первое, что нужно сказать, программа в ПЛК выполняется циклически с определённой частотой. Возможности зависят от контроллера, обычно это где-то 20, 50, 250 мс, 1, 2, 3, 4, 5 с. Естественно, это не гарантирует выполнение кода именно за такой промежуток времени, нельзя большие программы пихать в цикл 20 мс, к началу следующего цикла предыдущий должен быть завершён.

Второе, это языки программирования. По идее программируются ПЛК на языках, определённых стандартом МЭК61131:

Это «по идее». Но, например, Siemens придерживается своего наименования языков, а у B&R есть возможность писать на ANSI C.

Самые используемые контроллеры, безоговорочно, у Siemens и Allen Bradley (последним, к слову, принадлежит Rockwell Automation со своей линейкой SCADA-пакетов RSView). За ними по пятам идут Schneider Electric; ОВЕН; General Electric; AutomationDirect; ICP DAS; Advantech; Mitsubishi Electric; B&R.

Источник

Как программируют станки на заводах

От токарных до лазерных

Программисты востребованы везде, даже на производстве. Дело в том, что изготавливать каждую деталь вручную долго, поэтому нужна автоматизация. А где автоматизация, там программы и алгоритмы. Сегодня покажем вам направление в ИТ, о котором мы ещё не говорили: программирование станков с ЧПУ.

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что этоТокарный станок с ЧПУ, который вытачивает детали из металла.

Что такое станки с ЧПУ

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

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

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

Каждый блок ЧПУ соединён со всеми основными частями станка, чтобы ими можно было управлять или контролировать их состояние. Например, в токарном станке ЧПУ будет следить:

Блоки ЧПУ нужны для того, чтобы автоматизировать работу станка. Ты программируешь, что куда должно ездить и как вращаться, а станок это исполняет.

Что на производстве можно запрограммировать

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

Привод — это то, что заставляет что-либо двигаться. Например, чтобы сделать роборуку, н​​ужно 5–6 приводов, которые будут приводить в движения сочленения роборуки. Приводу можно сказать: «Разогнись на столько-то градусов» или «Повернись так-то», и он будет приводить в движение то, что к нему присоединено.

Датчик — это штука, которая собирает какие-то данные. Например, скорость вращения, температуру, нажим, угол сгиба. Благодаря датчикам можно сказать: «разгибай привод такой-то, пока не почувствуешь датчиком нажима такую-то силу нажима».

Как пишутся программы для ЧПУ

Есть два варианта: автоматически создать программу из макета детали или написать её с нуля.

Чаще всего используют первый вариант — сначала рисуют в деталь в 3D (для этого есть специальный софт), а потом программа сама формирует нужный код для станка, чтобы получилась нарисованная деталь. Минус такого подхода в том, что код может получиться неоптимальным: будет выполняться слишком долго или в процессе получается много отходов.

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

На практике обычно делают так: рисуют трёхмерную модель, выгружают на основе неё код для ЧПУ, а потом дорабатывают его, если требуется.

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

На чём пишут такие программы

Код для станков с ЧПУ пишут на языке программирования G-code. Это относительно общий стандарт для всех станков с ЧПУ, но детали, коды и последовательности у разных производителей отличаются. Проще говоря, нельзя просто так перенести программу со станка одной фирмы и запустить на станке другой фирмы — команды могут не совпасть.

Язык G-code так называется потому, что в нём почти все команды начинаются с буквы G, за которой идут числа — команды для станка. Ещё есть буква M — она используется для обозначения дополнительных кодов и O — для подпрограмм. Но это деление условно и может меняться у каждого производителя станков.

Как выглядит программа для ЧПУ

Если мы заглянем в код, то увидим такое:

N1 G17 G20 G34 G40
N2 T1 M16
N3 S8600 M2
N4 G54
N5 M8

N-код отвечает за номер строки — они могут пригодиться, если нам нужно перепрыгнуть на какую-то определённую строку или пропустить часть команд. M отвечают за детали, например, команда N3 S8600 M2 означает, что нужно раскрутить рабочий шпиндель (за него отвечает M2) до скорости 8600 оборотов в минуту (команда S8600).

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

Особенность программирования станков

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

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

Также важно понимать, что станки работают с живым материалом: металлом, деревом, акрилом, камнем и т. д. Материал несовершенен, может иметь внутренние дефекты, может плавиться и трескаться. Резцы и шпиндели тоже сделаны из каких-то материалов, у которых есть пороги нагрева, прочности и скорости. Если в компьютерном коде ошибиться и вызвать переполнение памяти, то компьютер просто зависнет. Ты его перезагрузишь, и всё. А у станка можно сломать резец или повредить шпиндель. А стоит это хозяйство будь здоров.

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

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

Источник

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

Промышленное программирование что это. Смотреть фото Промышленное программирование что это. Смотреть картинку Промышленное программирование что это. Картинка про Промышленное программирование что это. Фото Промышленное программирование что это

ПРОМЫШЛЕННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Язык LD (LAD, Ladder) является графическим языком разработки, программа на котором представляет собой аналог релейной схемы.

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

К недостаткам данного языка можно отнести то, что по мере увеличения количества «реле» в схеме она становится сложнее для интерпретации, анализа и откладки. Еще один недостаток языка LD заключается в следующем: язык, построенный по аналогии с релейными схемами, может быть эффективно использован только для описания процессов, имеющих дискретный (двоичный) характер; для обработки «непрерывных» процессов (с множеством аналоговых переменных) такой подход теряет смысл.

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

─┤ ├─ Нормально разомкнутый контакт разомкнут при значении ложь, назначенной ему переменной и замыкается при значении истина.

─┤/├─ Нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение ложь, и разомкнут, если переменная имеет значение истина.

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

Рис. 1. Язык релейных диаграмм LD.

Язык FBD (Functional Block Diagram, Диаграмма Функциональных Блоков) является языком графического программирования, так же, как и LD, использующий аналогию с электрической (электронной) схемой. Программа на языке FBD представляет собой совокупность функциональных блоков (functional flocks, FBs), входа и выхода которых соединены линиями связи (connections). Эти связи, соединяющие выхода одних блоков с входами других, являются по сути дела переменными программы и служат для пересылки данных между блоками. Каждый блок представляет собой математическую операцию (сложение, умножение, триггер, логическое «или» и т.д.) и может иметь, в общем случае, произвольное количество входов и выходов. Начальные значения переменных задаются с помощью специальных блоков – входов или констант, выходные цепи могут быть связаны либо с физическими выходами контроллера, либо с глобальными переменными программы.

Практика показывает, что FBD является наиболее распространенным языком стандарта IEC. Графическая форма представления алгоритма, простота в использовании, повторное использование функциональных диаграмм и библиотеки функциональных блоков делают язык FBD незаменимым при разработке программного обеспечения ПЛК. Вместе с тем, нельзя не заметить и некоторые недостатки FBD. Хотя FBD обеспечивает легкое представление функций обработки как «непрерывных» сигналов, в частности, функций регулирования, так и логических функций, в нем неудобным и неочевидным образом реализуются те участки программы, которые было бы удобно представить в виде конечного автомата.

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

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

Рис.2. Функциональная схемаFBD.

Проектирование сводится к выбору из библиотек готовых функциональных блоков, их позиционированию на экране, установке соединений между их входами и выходами, а также настройке параметров выбранных блоков. В отличие от FBD, функциональные блоки языка CFC выполняют не только простые математические операции, а ориентированы на управление целыми технологическими единицами. Так в типовой библиотеке CFC блоков находятся комплексные функциональные блоки, реализующие управление клапанами, моторами, насосами; блоки, генерирующие аварийные сигнализации; блоки PID-регулирования и т.д. Вместе с тем доступны и стандартные блоки FBD. Унаследовав от FBD саму концепцию программирования, язык CFC в наибольшей степени ориентирован на сам технологический процесс, позволяя разработчику абстрагироваться от сложного математического аппарата.

Рис. 3. Среда проектирования на языке CFC системы SimaticPCS7.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *