Программирование контроллеров

Доброго времени суток, уважаемые жители Хабра!
Прочитав пост про программирование ПЛК Siemens серии S7, я залез в поиск по Хабру, и был весьма удивлен, что тема промышленной автоматики вообще, и программирования ПЛК в частности, освещена весьма и весьма скудно. Возьму на себя смелость поделиться своим опытом в данной области, описав базовые принципы программирования ПЛК, в частности, производства компании Beckhoff.

Введение

Я занимаюсь автоматизацией зданий. Сложилось так, что в основном мы строим свои системы на базе ПЛК Beckhoff. Такой выбор был сделан прежде всего потому, что эти контроллеры являются свободно-программируемыми в полном смысле этих слов. Что это значит? Возьмите контроллер TAC Xenta, например, и попробуйте на нем реализовать обмен с внешним устройством через RS232 по собственному протоколу, на уровне «байт послал — байт принял». Не получится, эти контроллеры так не умеют — используйте только те протоколы, которые в них заложил разработчик. А Beckhoff умеет. Но прежде чем лезть в такие дебри, давайте посмотрим на среду разработки? На каком, собственно, языке, мы будем писать?


Стандарт МЭК 61131-3

Промышленные ПЛК программируются на языках стандарта МЭК 61131-3. Всего этих языков 5, некоторые производители добавляют свои. Языки друг на друга совсем не похожи, и, наблюдая за коллегами, могу предположить, что выбор того или иного языка связан прежде всего с тем, чем человек занимался до того, как он пришел в эту отрасль.

  1. IL, instruction list, список инструкций. Похож на ассемблер. Не видел никого, кто его использовал бы, но подозреваю, что олдскульные кодеры, пробивавшие перфокарты по памяти, оценят.
  2. LD, ladder diagram. Визуальный язык, для тех, кто занимался разработкой схем релейной автоматики.
  3. ST, structured text. Более всего напоминает «классические» языки программирования, чем-то похож на Паскаль. Оттого ценится теми, кто до ПЛК занимался программированием на других языках и платформах, в частности — мной.
  4. FBD, functional block diagram. Этакая блок схема, любим прежде всего технологами, решившими податься в программирование, за свою наглядность.
  5. SFC, sequential function chart. Графический язык, больше ничего не скажу. Ни разу не видел, чтоб его использовали.

Из не всеми поддерживаемых языков стоит отметить язык CFC (continuous flow chart), Beckhoff его поддерживает. Это дальнейшее развитие языка FBD, одним из наиболее существенных отличий, на мой взгляд, является поддержка явной обратной связи в схемах. Зачем это нужно? Например, вот такой генератор коротких импульсов на CFC будет работать, а на FBD – нет.

Программирование контроллеров
Блок TON — это стандартный блок, таймер с задержкой включения. Логика работы: выход Q становится TRUE, когда на входе IN сигнал TRUE в течение не менее времени PT.
Самая популярная, наверное, среда разработки под ПЛК — это CoDeSys. Многие производители берут ее за основу, и либо делают к ней библиотеку для работы со своим ПЛК, либо доделывают среду под себя.

Как работает ПЛК?

Программа ПЛК работает циклично. Время цикла может быть от единиц миллисекунд до единиц секунд, в зависимости от задач, которые на этот ПЛК возложены. Большинство ПЛК позволяют задавать время цикла разработчику программы, однако в некоторых моделях такой возможности нет. Многие ПЛК, в частности Beckhoff, позволяют в одной программе создать более одной циклически выполняемой задачи, и задать приоритет для этих задач. Что нам дает эта возможность?
Представим ситуацию: ПЛК управляет вентиляционной установкой, и к нему подключена панель управления через RS232. Температура в помещениях меняется не быстро, и запускать алгоритм управления вентиляцией чаще, чем раз в 50 — 100 мс просто нет смысла. Зато панель оператора опрашивает контроллер постоянно, и задержка ответа ПЛК более 10 мс уже выражается в «притормаживании» интерфейса пользователя, а при задержке 20 мс у нас переполнится аппаратный буфер COM-порта. Наличие нескольких задач позволяет нам решить эту проблему красиво: пусть «быстрая» задача работает с COM-портом, и вызывается каждые 2 мс, а «медленная» реализует логику работы вентиляции, и вызывается каждые 50 мс. Все работает хорошо, панель оператора не тормозит, пользователь доволен.


А что у этих железок внутри?

Тут все очень и очень зависит от производителя. Кто-то делает свою embedded-платформу на RISC-процессоре (например, отечественный «Овен») — этот подход очень популярен. Beckhoff же пошли по другому пути — на их ПЛК установлена Windows CE 5.0 (а если обновить с официального сайта прошивку — то 6.0), или же Windows XP Embedded, а PLC-задача работает как служба. Достаточно интересный контраргумент для любителей рассказывать о нестабильности Windows.
Но это «голова» контроллера, а ведь ему еще нужны входы и выходы, чтобы общаться с внешним миром. Тут есть два подхода:

  1. Можно сделать «все в одной коробке» — голова, некий набор входов / выходов, несколько вариантов конфигурации — вот тут у нас входов побольше, тут поменьше, тут голова помощнее, тут послабее. Так делают, например, Carel, и много кто еще. На маленьком проекте такой подход себя в чем-то, может быть, и оправдывает.
  2. Но лично мне кажется, что большую гибкость дает другой подход. Голова отдельно, и к ней по шине подключается наборный «хвост» из модулей ввода-вывода. Мы ставим те модули, которые нам нужны, и в том количестве, которые нам нужно. Так делают Beckhoff и Siemens, например.

image
Вот так выглядит внешне подход «все в одной коробке». На фото Carel pCO3.

image
А вот другой вариант — голова Beckhoff серии CX9000 (слева на фото) с набором модулей ввода-вывода.

Помимо всего прочего, на голове еще имеется некая шина, позволяющая объединять ПЛК в сеть, а зачастую еще и менять его программу через эту же сеть. Какая это будет сеть — зависит от ПЛК. Это могут быть и незнакомые тем, кто не сталкивался с промышленными сетями EIA-485, Profibus, CAN, а может быть и вполне привычный Ethernet. Именно через эту сеть, называемую fieldbus, и осуществляется подключение ПЛК к верхнему уровню — к СКАДА-системе, например. На фото выше хорошо видны 2 разъема 8P8C на голове Beckhoff’а — это Ethernet, а у Carel сверху слева видны (плоховато, правда) 2 разъема 6P4C — так они сделали RS-485. У этого интерфейса, к сожалению, нет общепринятого разъема.

Так все же, как под него программы писать-то?

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

foo, bar: int; baz: real; foo := 2000; bar := 2000; baz := INT_TO_REAL (foo * bar); 

Понятно, что переполнение, не влазит foo * bar в 16 бит, но зачем же виснуть-то? Да еще так, что ничего, кроме сброса по питанию не помогает.
Среда разработки? Не у всех CoDeSys, многим хочется пооригинальничать и написать что-нить свое. Одна из таких самописных сред вылетала с runtime error при попытке записать число 86400 в 16-битный INT. А вы говорите, обработка исключений на ПЛК. Ее и в среде разработки-то не всегда нормально могут сделать.

НО! Зато для любителей той тонкой грани, которая отделяет железо от программного обеспечения, софта в просторечии — это очень интересная ветвь ай-ти, правда.

Надеюсь, что этот небольшой обзор будет полезен. Если хабрасообществу будет интересна эта тема, то расскажу про ПЛК подробнее.


habr.com

Структура и устройство ПЛК

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

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

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

Обобщенная структура промышленного контроллера

Принцип работы ПЛК несколько отличается от «обычных» микропроцессорных устройств. Программное обеспечение универсальных контроллеров состоит из двух частей. Первая часть это системное программное обеспечение. Проводя аналогию с компьютером можно сказать, что это операционная система, т.е.
равляет работой узлов контроллера, взаимосвязи составляющих частей, внутренней диагностикой. Системное программное обеспечение ПЛК расположено в постоянной памяти центрального процессора и всегда готово к работе. По включению питания, ПЛК готов взять на себя управление системой уже через несколько миллисекунд. ПЛК работают циклически по методу периодического опроса входных данных.
Рабочий цикл ПЛК включает 4 фазы:
1. Опрос входов
2. Выполнение пользовательской программы
3. Установку значений выходов
4. Некоторые вспомогательные операции (диагностика, подготовка данных для отладчика, визуализации и т. д.).

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

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

Рабочий цикл ПЛК


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

Рассмотрим входа и выхода ПЛК. Существует три вида входов дискретные, аналоговые и специальные
Один дискретный вход ПЛК способен принимать один бинарный электрический сигнал, описываемый двумя состояниями – включен или выключен. Все дискретные входы (общего исполнения) контроллеров обычно рассчитаны на прием стандартных сигналов с уровнем 24 В постоянного тока. Типовое значение тока одного дискретного входа (при входном напряжении 24 В) составляет около 10 мА.

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

Поскольку ПЛК является цифровой вычислительной машиной, аналоговые входные сигналы обязательно подвергаются аналого-цифровому преобразованию (АЦП). В результате, образуется дискретная переменная определенной разрядности. Как правило, в ПЛК применяются 8 — 12 разрядные преобразователи, что в большинстве случаев, исходя из современных требований по точности управления технологическими процессами, является достаточным. Кроме этого АЦП более высокой разрядности не оправдывают себя, в первую очередь из-за высокого уровня индустриальных помех, характерных для условий работы контроллеров.


Практически все модули аналогового ввода являются многоканальными. Входной коммутатор подключает вход АЦП к необходимому входу модуля.

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

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

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


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

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

Моноблочный ПЛК

В модульных контроллерах модули входов – выходов устанавливаются в разном составе и количестве в зависимости от предстоящей задачи

Модульный ПЛК

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

Языки программирования ПЛК

При создании системы управления технологического процесса, всегда существует проблема по взаимопониманию программиста и технологов. Технолог скажет «нам надо немного подсыпать, чуть подмешать, еще подсыпать и чуть нагреть». И мало когда следует ждать от технолога формализованного описания алгоритма. И получалось так, что программисту нужно долго вникать в тех. Процесс, потом писать программу. Зачастую при таком подходе программист остается единственным человеком, способным разобраться в своем творении, со всеми вытекающими отсюда последствиями. Такая ситуация породила стремлении создание технологических языков программирования, доступные инженерам и технологам и максимально упрощающим процесс программирования

За последнее десятилетие появилось несколько технологических языков. Более того, Международной Электротехнической Комиссией разработан стандарт МЭК-61131-3, концентрирующий все передовое в области языков программирования для систем автоматизации технологических процессов. Этот стандарт требует от различных изготовителей ПЛК предлагать команды, являющиеся одинаковыми и по внешнему виду, и по действию.

Стандарт специфицирует 5 языков программирования:

  • Sequential Function Chart (SFC) – язык последовательных функциональных блоков;
  • Function Block Diagram (FBD) – язык функциональных блоковых диаграмм;
  • Ladder Diagrams (LАD) – язык релейных диаграмм;
  • Statement List (STL) – язык структурированного текста, язык высокого уровня. Напоминает собой Паскаль
  • Instruction List (IL) – язык инструкций., это типичный ассемблер с аккумулятором и переходам по метке.

Язык LAD или KOP (с немецкого Kontaktplan) похожи на электрические схемы релейной логики. Поэтому инженерам не знающим мудреных языков программирования, не составит труда написать программу. Язык FBD напоминает создание схем на логических элементах. В каждом из этих языков есть свои минусы и плюсы. Поэтому при выборе специалисты основываются в основном на личном опыте. Хотя большинство программных комплексов дают возможность переконвертировать уже написанную программу из одного языку в другой. Так как некоторые задачи изящно и просто решаются на одном языке, а на другом придется столкнуться с некоторыми трудностями

Наибольшее распространение в настоящее время получили языки LAD, STL и FBD.

Большинство фирм изготовители ПЛК традиционно имеют собственные фирменные наработки в области инструментального программного обеспечения. Например такие как «Concept» Schneider Electric, «Step 7» Siemens.

Программный комплекс CoDeSys

Открытость МЭК стандартов привели к созданию фирм занимающихся исключительно инструментами программирования ПЛК.

Наибольшей популярностью в мире пользуются комплекс CoDeSys. CoDeSys разработан фирмой 3S. Это универсальный инструмент программирования контроллеров на языках МЭК, не привязанной к какой-либо аппаратной платформе и удовлетворяющим всем современным требованиям.

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

Литература:
Современные технологии промышленной автоматизации: учебник / О. В. Шишов. Саранск : Изд-во Мордов. ун-та, 2007. – 273 с. ISBN 5-7103-1123-5

cxem.net

Что называют программируемым контроллером

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

Как всё начиналось

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

Принцип работы

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

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

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

Реакция программируемого контроллера

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

Входы и выходы

свободно программируемые контроллерыОни бывают трех типов: аналоговые, дискретные и специальные. В первом типе электрический сигнал отображает наличие определённой физической величины на поточный момент времени, что делается с помощью уровня тока или напряжения. Так, они могут передавать данные про температуру, вес, положение, давление, частоту, скорость и иную подобную информацию. Практически всегда они являются многоканальными. Дискретные входы могут работать с одним бинарным электрическим сигналом. Он может быть описан двумя состояниями – выключен или включен. Дискретные входы обычно рассчитаны на то, чтобы принимать стандартные сигналы, у которых уровень постоянного тока составляет при 24 В примерно 10 мА. Учитывая тот факт, что программируемые контроллеры являются цифровыми вычислительными машинами, необходимо совершать соответствующие преобразования. В результате получается дискретная переменная с определённым разрядом. Как правило, в одном устройстве их используется 8-12 штук. Чтобы управлять на высоте большинством технологических процессов, этого достаточно. К тому же при увеличении разрядности увеличивается количество индустриальных помех, что негативно сказывается на работе других устройств.

fb.ru

Язык последовательных функциональных схем (SFC)

SFC – это графический язык, который позволяет описать хронологическую последовательность различных действий в программе. Для этого действия связываются с шагами (этапами), а последовательность работы определяется условиями переходов между шагами.

Пример SFC диаграммы:

 

 

Шаг

SFC POU состоит из набора шагов, связанных переходами. Существуют 2 вида шагов:

  • Шаг простого типа (упрощенный SFC) может включать единственное действие. Графический флажок (небольшой треугольник в верхнем углушага) показывает, пустой шаг или нет.
  • МЭК шаг (стандартный SFC) связан с произвольным числом действий или логических переменных. Связанные действия располагаются с правой стороны от шага.

 

Действие

Действие может содержать список инструкций на IL или ST, схемы на FBD или LD, или снова схемы на SFC. При использовании простых шагов действие всегда связывается с этим шагом. Для того, чтобы редактировать действие, необходимо дважды щелкнуть левой клавишей мышки на шаге. Или выделить шаг и выбрать команду меню «Extras» «ZoomAction/Transition». Помимо основного действия, шаг может включать одно входное и одно выходное действие. Действия МЭК шагов показаны в Организаторе Объектов, непосредственно под вызывающей их POU. Редактирование действия запускается двойным щелчком мыши или клавишей <Enter>. Новые действия добавляются командой главного меню «Project» «Add Action». Вы можете сопоставить одному шагу до 9 действий.

 

Входное или выходное действие

В шаг можно добавить входное и выходное действие.

Входное действие выполняется один раз при активизации шага, выходное – при деактивизации. Шаг, который имеет входное действие, обозначается буквой «Е» в левом нижнем углу, шаг с выходными действиями – буквой «Х» в правом нижнем углу.

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

Переход/условие перехода

Между шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом языке. Условие может включать серию инструкций, образующих логический результат, в виде ST выражения (т.е.(i<= 100) AND b) либо на любом другом языке. Но условие не должно содержать присваивания, вызов программ и экземпляров функциональных блоков.

В редакторе SFC условие перехода можно записать непосредственно около символа перехода либо в отдельном окне редактора для ввода условия  Условие заданное окне редактора предпочтительнее.

 

Активный шаг

После вызова SFC POU начальный шаг (шаг, выделенный двойной рамкой) выполняется первым. Шаг, выполняемый в данный момент, называется активным. Действия, связанные с активным шагом, выполняются один раз в каждом управляющем цикле. В режиме online активные шаги выделяются синим цветом. Следующий за активным шагом шаг станет активным, только когда условие перехода к этому шагу будет истинно.

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

 

Шаг МЭК

В отличие от упрощенного SFC МЭК шаги могут включать несколько действий. Действия МЭК шагов описываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чего их надо связать с шагом с помощью команды главного меню «Extras» «Associate action».

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

С помощью так называемых классификаторов действия и логические переменные могут активироваться и деактивироваться, возможно, с задержкой времени. Например: действие может продолжать работу, даже если запустивший его шаг утратил активность; с помощью классификатора S (установка) можно программировать параллельные процессы и т.д. Логическая переменная, связанная с шагом, получает значение ИСТИНА при каждой активации шага. Действие, связанное с МЭК шагом, описывается справа от него в блоке, состоящем из двух частот. Левая часть этого блока содержит классификатор, возможно, с константой времени, а правая часть содержит имя действия или логической переменной.

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

При выполнении шага сначала производится деактивация действий, затем выполняются активные действия в алфавитном порядке. Для того чтобы использовать шаги с МЭК действиями, необходимо установить опцию «Extras» «Use IEC-Steps» и подключить к проекту специальную библиотеку Iecsfc.lib. В Организаторе объектов действия показаны непосредственно под SFC POUs, которые их вызывают. Новые действия можно создавать с помощью команды «Project» «Add Action«.

Альтернативная ветвь

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

Параллельные ветви

Две и более ветви SFC могут быть параллельными. Каждая параллельная ветвь должна начинаться и заканчиваться шагом. Параллельные ветви могут содержать альтернативные ветви и другие параллельные ветви. Параллельная ветвь наносится двойной горизонтальной линией (параллельное начало) и заканчивается двойной горизонтальной линией (конец параллели) или переходом на произвольный шаг (jump). Если шаг активен, условие перехода после этого шага истинно и за этим переходом следуют параллельные ветви, то активируются первые шаги этих ветвей. Эти ветви выполняются параллельно друг другу. Шаг, находящийся после параллельных ветвей, становится активным только тогда, когда все предыдущие шаги активны и условие перехода истинно.

Переход на произвольный шаг (Jump)

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

 

Мой блог находят по следующим фразам

  • kak rabotaet plc
  • схема подключения плк
  • step 7 самоучитель
  • kak rabotaet plk
  • языки плк
  • коммутационная программа что это

plc24.ru

Beremiz — это интегрированная среда разработки для ПЛК с открытым исходным кодом, которая полностью соответствует стандарту МЭК-61131-3. Beremiz опирается на открытые стандарты, которые не зависят от целевых устройств. Так что вы можете превратить любой процессор в ПЛК. Также Beremiz включает инструменты для создания HMI и подключения ваших программ PLC к наблюдению, базам данным или полевым шинам.

Программирование контроллеров

Введение
Для программирования ПЛК используются 5 языков, описанных стандартом МЭК 61131-3:
LD — релейно-контактные схемы;
FBD — функциональные блоковые диаграммы;
SFC — последовательностные функциональные диаграммы;
ST — структурированный текст;
IL (Instruction List) — список инструкций.

Тем не менее ведущие производители ПЛК используют собственные варианты этих языков, несовместимых с этим стандартом. Например, у фирмы Siemens это соответственно языки:
LAD, FBD, SFC, SCL, STL. Исключением являются компании, использующие в качестве сред программирования ISAGRAF и Codesys. Обе эти среды полностью соответствуют стандарту МЭК 61131-3.

Но и ISAGRAF и Codesys накладывают ограничение на аппаратную платформу. Сам производитель ПЛК не может внести изменения в исходный сред исполнения для портирования их на новую аппаратную платформу.

Beremiz же являясь свободным программным обеспечением, может быть модифицирован производителем ПЛК для работы на новой аппаратной платформе. Гибкость в изменении существующих и добавлении новых компонентов достигается с помощью языка Python (и соответствующих библиотек для пользовательского интерфейса, работы с сетью и т.д.) и xsd (XML Schema) файлов, применяемых для описания компонентов среды разработки: модулей работы с компиляторами целевой архитектуры, плагинов внешних источников данных и т.д.

Beremiz используется:
1. ПАО «ИНЭУМ им. И.С.Брука» в качестве среды разработки и исполнения на ПЛК серии СМ1820М на базе отечественных микропроцессоров «Эльбрус» и SPARC, а также линеек, основанных на микропроцессорах ARM и x86. www.sm1820.com.ru
2. ООО НПК «Нуклерон» (г. Пермь) тестирует линейки программируемых реле NUC-24x/251. В основе программируемых реле используется микроконтроллер STM32F105 для модели NUC-242 и STM32F205 для остальных. Также поддерживается плата STM32F4DISCOVERY. В качестве среды разработки используется YAPLC-IDE, представляющая собой набор расширений для среды Beremiz. Для ПЛК параллельно разрабатывается среда исполнения YAPLC-RTE. Исходные коды YAPLC доступны на github: github.com/nucleron/YAPLC
3. ООО НТЦ «Арго» МУР 1001.3 СВ argoivanovo.ru/catalog/index.php?IBL=22&ID=184120
4. ООО «НГП Информ» ngpinform.ru/means/programmiruemye-kontrollery-i-raspredelennye-sistemy-vvoda-vyvoda/modulnye-plk/
5. Smarteh LPC-2.MC8 www.smarteh.si/
Полный список компаний, использующих Beremiz: www.beremiz.org/apps

Особенности Beremiz

Среда разработки Beremiz позволяет работать в конфигурационном режиме и в режиме исполнения прикладной программы. В конфигурационном режиме происходит создание прикладной программы, написание алгоритмов и логики её основных программных модулей и их связывание с внешними модулями УСО (устройство связи с объектом). В режиме исполнения прикладная программа передаётся на целевое устройство и может быть запущена с режимом отладки и без отладки.

Основными компонентами Beremiz являются:
— редактор PLCOpen для текстовых (IL и ST) и графических языков (FBD, LD, SFC) стандарта IEC 61131-3;
компилятор MatIEC, преобразующий логику и алгоритмы программных модулей (из которых состоит прикладная программа), описанных на языках стандарта IEC 61131-3, в эквивалентный С-код;
— механизм плагинов, позволяющий связывать внешние источники данных, такие как модули УСО (их параметры, состояния), SCADA-системы с логикой и алгоритмами программных модулей;
— средства отладки прикладной программы в режиме исполнения;
— элементы для создания человеко-машинного интерфейса управления прикладной программой.

Таким образом Beremiz преобразует LD, FBD, SFC или IL в код на ST, а MatIEC конвертирует ST в C. Код С компилируется на конечную платформу.

Установка и запуск

Исходный код и инсталлятор под Windows можно скачать на официальном сайте: www.beremiz.org/download
Для дистрибутива ALT Linux есть готовый пакет beremiz в репозитории.
Для дистрибутивов Debian/Ubuntu инструкция: bitbucket.org/skvorl/beremiz/overview

Для Windows и ALT Linux есть соответствующие значки запуска в меню Пуск. А для остальных дистрибутивов Linux запускать из каталога beremiz исполняемый файл BeremizIDE.py

Руководство пользователя beremiz: www.sm1820.com.ru/files/beremiz/beremiz_manual.pdf

Пока всё.

we.easyelectronics.ru

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

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

В современной промышленности существует большое количество различных систем и процессов, требующих автоматизации, но теперь такие системы редко проектируются из реле. Современные производственные процессы нуждаются в устройстве, которое запрограммировано на выполнение различных логических функций. В конце 1960-х годов американская компания «Bedford Associates» разработала компьютерное устройство, названное MODICON (Modular Digital Controller). Позже название устройства стало названием подразделения компании, спроектировавшей, сделавшей и продавшей его.

Другие компании разработали собственные версии этого устройства, и, в конце концов, оно стало известно как ПЛК, или программируемый логический контроллер. Целью программируемого контроллера, способного имитировать работу большого количества реле, была замена электромеханических реле на логические элементы.

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

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

 

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

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

Шесть винтовых клемм, расположенных с левой стороны, обеспечивают подключение для входных устройств. Каждая клемма представляет свой входной канал (Х). Винтовая клемма («общее» подключение ) расположенная в левом нижнем углу обычно подключается к L2 (нейтральная) источника тока напряжением 120 В переменного тока.

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

Выходные сигналы генерируются компьютерной схемотехникой ПЛК, активируя переключающее устройство (транзистор, тиристор или даже электромеханическое реле) и связывая клемму «Источник» (правый нижний угол) с любым помеченным буквой Y выходом. Клемма «Источник» обычно связывается с L1. Так же, как и каждый вход, каждый выход, находящий под напряжением, отмечается с помощью светодиода:

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

Основы программирования ПЛК

Современная логика системы управления установлена в ПЛК посредством компьютерной программы. Эта программа определяет, какие выходы находятся под напряжением и при каких входных условиях. Хотя сама программа напоминают схему логики реле, в ней не существует никаких контактов переключателя или катушек реле, действующих внутри ПЛК для создания связей между входом и выходом. Эти контакты и катушки мнимые. Программа пишется и просматривается с помощью персонального компьютера, подключенного к порту программирования ПЛК.

Рассмотрим следующую схему и программу ПЛК:

Когда кнопочный переключатель не задействован (находится в не нажатом состоянии), сигнал не посылается на вход Х1. В соответствие с программой, которая показывает «открытый» вход Х1, сигнал не будет посылаться и на выход Y1. Таким образом, выход Y1 останется обесточенным, а индикатор, подключенный к нему, погасшим.

Если кнопочный переключатель нажат, сигнал будет отправлен к входу Х1. Все контакты Х1 в программе примут активированное состояние, как будто они являются контактами реле, активированными посредством подачи напряжения катушке реле, названной Х1. В этом случае открытый контакт Х1 будет «закрыт» и отправит сигнал к катушке Y1. Когда катушка Y1 будет находиться под напряжением, выход Y1 осветится лампочкой, подключенной к нему.

Следует понимать, что контакт Х1 и катушка Y1 соединены с помощью проводов, а «сигнал», появляющийся на мониторе компьютера, виртуальный. Они не существуют как реальные электрические компоненты. Они присутствуют только в компьютерной программе — часть программного обеспечения — и всего лишь напоминают то, что происходит в схеме реле.

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

Истинная мощь и универсальность ПЛК раскрывается, когда мы хотим изменить поведение системы управления. Поскольку ПЛК является программируемым устройством, мы можем изменить, команды, которые мы задали, без перенастройки компонентов, подключенных к нему. Предположим, что мы решили функцию «переключатель – лампочка» перепрограммировать наоборот: нажать кнопку, чтобы выключить лампочку, и отпустить ее, чтобы включить.

Решение такой задачи в реальных условиях заключается в том, что выключатель, «открытый» при нормальных условиях, заменяется на «закрытый». Программное ее решение – это изменение программы так, чтобы контакт Х1 при нормальных условиях был «закрыт», а не «открыт».

На следующем изображении вы увидите уже измененную программу, при не активизированном переключателе:

А здесь переключатель активизирован:

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

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

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

Переключатель, подключенный к входу Х1, служит кнопкой «Старт», в то время как переключатель, подключенный к входу Х2 — кнопкой «Стоп». Другой контакт, названный Y1, подобно печати в контакте, позволяет контактору двигателя оставаться под напряжением, даже если отпустить кнопку «Старт». При этом вы можете увидеть, как контакт Х2, «закрытый» при нормальных условиях, появится в цветном блоке, показывая тем самым, что он находится в «закрытом» («электропроводящем») состоянии.

Если нажать кнопку «Старт», то по «закрытому» контакту Х1 пройдет ток ток и он отправит 120 В переменного токак к контактору двигателя. Параллельный контакт Y1 также «закроется», тем самым замкнув цепь:

Если мы теперь нажмем кнопку «Старт», контакт Х1 перейдет в «открытое» состояние, но двигатель будет продолжать работать, потому что замкнутый контакт Y1 все еще будет держать катушку под напряжением:

Чтобы остановить двигатель, нужно быстро нажать кнопку «Стоп», которая сообщит напряжение входу Х1 и «открытому» контакту, что приведет к прекращению подачи напряжения к катушке Y1:

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

Очень важна отказоустойчивая модель устройств контроля ПЛК, так же, как и в устройствах контроля электромеханического реле. Нужно всегда учитывать влияние ошибочно «открытого» контакта на работу системы. Так, например, в нашем случае, если контакт Х2 будет ошибочно «открыт», то не будет никакой возможности остановить двигатель!

Решением этой проблемы является перепрограммирование контакта Х2 внутри ПЛК и фактическое нажатие кнопки «Стоп»:

Когда кнопка «Стоп» не нажата, вход ПЛК Х2 находится под напряжением, т.е. контакт Х2 «закрыт». Это позволяет двигателю начать работу, когда контакту Х1 сообщается ток, и продолжать работу, когда кнопка «Старт» отпущена. Когда вы нажимаете кнопку «Стоп», контакт Х2 переходит в «открытое» состояние и двигатель прекращает работу. Таким образом, вы можете увидеть, что функциональной разницы между этой и предыдущей моделью нет.

Тем не менее, если входной контакт Х2 был ошибочно «открыт», вход Х2 может быть остановлен нажатием кнопки «Стоп». В результате двигатель немедленно отключается. Эта модель безопаснее, чем предыдущая, где нажатие кнопки «Стоп» сделает невозможным остановку двигателя.

В дополнение к входам (Х) и выходам (Y) в ПЛК есть возможность использовать «внутренние контакты и катушки. Они используются так же, как и промежуточные реле, применяемые в стандартных релейных схемах.

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

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

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

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

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

Перевод с английского — Юлия Сурта.

Оригинал статьи:

http://www.allaboutcircuits.com/vol_4/chpt_6/6.html

electrik.info

Программирование контроллеров

Содержание лекции:

  • Группы языков программирования контроллеров

  • «Сигнал»: введение понятия

  • Запись алгоритма ПИД–регулирования в виде функциональных блоков

  • Текстовая запись программ контроллера 

  • Особенности ввода/вывода при программировании контроллеров

  • Типовые программы контроллера линейного КП

  1. Группы языков программирования контроллеров

В зависимости от аппаратной архитектуры и операционной системы контроллера предлагается два способа разработки программ. Первый – популярный для PC-совместимых контроллеров (использующих в качестве ЦПУ процессор Intel x86, принятую системную архитектуру и одну из распространенных операционных систем реального времени (ОС РВ), напр. QNX, OS-9, VxWorks): производитель предоставляет специальную библиотеку и рекомендует писать обычные программы на языке Си (или другом языке программирования общего назначения), используя специализированные функции контроллера через вызовы библиотечных функций. Второй способ – разработать собственную среду разработки и выполнения программ, выполняющуюся «поверх» некоторой ОС РВ или заменяющую ее. При этом производитель контроллеров вводит некоторый новый (или реализует существующий) язык, содержащий основные операторы, библиотеку функций. Применение таких специализированных языков, адаптированных для программирования задач контроллера, более эффективно, чем использование универсальных языков программирования, в т.ч. позволяет разрабатывать программу технологу – специалисту по производству, а не математику-программисту.  Для обеспечения общей базы разработок подобных языков введен международный стандарт IEC 61131-3, определяющий пять групп языков программирования контроллеров:

  1. LD (Ladder Diagram). Язык релейно-контактной логики, позволяет, используя графические представления контактов, реле записать программу последовательной логики, блокиратора, переключателя.

  2. FBD (Functional Block Diagram). Графический язык программирования, предоставляющий библиотеку графических схемотехнических символов для записи программы управления, регулирования, в т.ч. непрерывного технологического процесса. 

  3. SFC (Sequential Function Chart). Графический язык, позволяющий составить программу последовательных (параллельных, циклически выполняемых) операций в виде блок-схемы. 

  4. ST (Structured Text). Язык структурированного текста – высокоуровневый текстовый язык, содержащий все конструкции (операторы) современного языка программирования, но вводящий специальные расширения реального времени.

  5. IL (Instruction List). Набор инструкций – язык программирования контроллера низкого уровня (ассемблер).

Аналогично тому, как в настоящее время большинство программистов в своей работе используют интегрированные среды разработки (IDE, такие как Microsoft Visual Studio, Borland C++ Builder/Delphi и проч.), а не простой текстовый редактор для набора кода и компилятор командной строки; так же и при программировании контроллеров и использовании любого из типов языков программирования контроллеров обычно используется специальная среда поддержки программирования. Наиболее известный универсальный инструмент разработки программ контроллеров на всех вышеописанных типах языков – система ISaGRAF (производитель – CJ International, Франция). Функции среды разработки:

  • Поддержка ведения базы данных (списка сигналов) контроллера;

  • Поддержка программирования: списка программ, совместного использования памяти и процессорного времени, предоставление средств составления (записи) программ;

  • Настройка списка задействованных плат ввода/вывода и их параметров;

  • Настройка последовательных портов и сетевых интерфейсов контроллера;

  • Установка системных параметров ПО и настройка ограничения доступа.

  • Необходимым инструментом программиста является отладчик. В среде программирования контроллера к отладчику предъявляются следующие требования:

  • Отображение списка всех используемых переменных (сигналов), функциональных блоков и т.д. и их взаимосвязей; проверка отсутствия зацикливания ссылок.

  • Наличие окна просмотра текущих значений переменных во время выполнения программы и в точках останова; возможность пошагового выполнения программы.

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

  1. «Сигнал»: введение понятия

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

Атрибут

Описание

1

Name

Уникальное имя сигнала в контроллере

2

Type

Тип сигнала (скалярный, векторный, табличный)

3

DataType

Тип данного

4

Value

Значение

5

Timestamp

Метка времени – время последнего изменения значения сигнала

6

Quality

Признак достоверности

7

Deadband

Зона нечувствительности (порог учета изменения значения сигнала)

8

Inhibit

Флаг защиты значения сигнала от записи (изменений)

9

Units

Текстовая строка для задания единиц измерения

10

Comment

Текстовая строка – комментарий для описания назначения сигнала

11

Limits

Уставки (для аналоговых сигналов) 

12

Limits Deadband

Зоны нечувствительности для каждой из уставок

13

PRBX

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

15

SRBX

Флаг того, что при изменении новое значение сигнала спонтанно передается контроллеру верхнего уровня (серверу ДП АСУТП)

Значения сигналов вводятся от датчиков ТИ и ТС или являются производными (расчетными). Помимо определяемых разработчиком, в контроллере обычно присутствует набор предопределенных системных сигналов, значения которых можно использовать в программах, но нельзя изменять, например значение текущего времени, состояние портов ввода/вывода, сигналы диагностики отдельных плат контроллера и т.п. Объединенное множество (список) сигналов определяет область хранения данных контроллера, разделяемую между всеми программами, к которой также предоставляется интерфейс для доступа по некоторому протоколу передачи данных для внешних систем.

  1. ^ Запись алгоритма ПИД–регулирования в виде функциональных блоков

В теории САУ вводятся законы управления, которые реализуются соответствующими регуляторами (пропорциональный (П–регулятор), интегральный (И–регулятор), пропорционально–интегральный, пропорционально–интегрально–дифференцирующий (ПИД–регулятор)). Алгоритмы работы таких регуляторов включены в библиотеку средства разработки; используя стандартные модули из этой библиотеки, можно визуально создать программу. Входные данные для нее – сигналы, хранящиеся в БД контроллера. На рис. 4.1 приведен пример программы, составленной из функциональных блоков.  Программирование контроллеров Рис. 4.1. Запись в виде функциональных блоков алгоритма регулирования непрерывного ТП. На рисунке приведена программа управления краном-регулятором. На входе крана мы имеем нестационарный процесс, на выходе требуется обеспечить некоторое постоянное давление в трубопроводе. Точки ввода (измерения) давления и признака его превышения верхней границы диапазона датчика находятся за краном-регулятором. В модуле AI входной аналоговый сигнал преобразуется в цифровой, опираясь на нулевое значение и диапазон измерения. На основании этого значения и логического параметра превышения верхней границы измерения вычисляется уставка регулятора. Текущее значение давления, значения уставки, пропорционального, интегрального, дифференциального коэффициентов являются входными сигналами для модуля ПИД-регулятора. Выходной сигнал регулятора преобразуется в аналоговый токовый выходной сигнал и, усиливаясь реле управления, изменяет степень открытия крана. 

  1. ^ Текстовая запись программ контроллера

Для программиста наиболее простой и удобный для использования способ программирования контроллеров – запись программ в виде структурированного текста.  Ниже рассмотрено программирование на языке ACCOL-II для контроллеров Bristol Babcock –высокоуровневом модульным технологическим языком программирования. ACCOL-II реализует следующие арифметические операции: вычислительные (+, -, *, /, возведение в степень); сравнения (>, <, =, >=, <=); округления до целого, взятия модуля; вычисления логарифма, экспоненты, квадратного корня, синуса, косинуса, тангенса; операции И, ИЛИ, исключающее ИЛИ, НЕТ; изменение знака; конкатенация строк.

1   2   3   4   5   6   7   8   9   …   14

хорошо

   1

studfiles.net


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector