Справочник от Автор24
Поделись лекцией за скидку на Автор24

Компьютерная и микропроцессорная техника в электроприводе

  • 👀 1350 просмотров
  • 📌 1329 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Компьютерная и микропроцессорная техника в электроприводе» pdf
2 ОГЛАВЛЕНИЕ 1. Программируемый контроллер ........................................................................................ 5 1.1. Общие сведения........................................................................................................... 5 1.2. Состав контроллера ..................................................................................................... 6 2. Входы и выходы ПЛК ........................................................................................................7 2.1. Общее описание .......................................................................................................... 7 2.2. Цифровые входы ......................................................................................................... 7 2.3. Аналоговые входы....................................................................................................... 7 2.4. Цифровые выходы ....................................................................................................... 8 3. Программирование контроллера...................................................................................... 9 3.1. Рабочий цикл ............................................................................................................... 9 3.2. Типы данных ............................................................................................................... 9 3.3. Языки программирования ПЛК ................................................................................ 10 3.4. Язык функциональных блоков (FBD) ...................................................................... 11 4. Стандартные функции ..................................................................................................... 12 4.1. Логические функции ................................................................................................. 12 4.2. Битовые функции ...................................................................................................... 13 4.3. Арифметические функции ........................................................................................ 15 4.4. Математические функции ......................................................................................... 16 4.5. Функции сравнения ................................................................................................... 17 4.6. Функция выбора ........................................................................................................ 18 4.7. Функции максимума и минимума ............................................................................ 19 4.8. Функция ограничения ............................................................................................... 19 4.9. Мультиплексор .......................................................................................................... 20 5. Стандартные функциональные блоки ........................................................................... 21 5.1. Триггеры .................................................................................................................... 21 5.2. Детекторы фронта ..................................................................................................... 22 5.3. Счетчики .................................................................................................................... 23 5.4. Таймеры ..................................................................................................................... 25 6. Язык релейных диаграмм (LD) ....................................................................................... 27 7. Язык структурированного текста (ST) .......................................................................... 28 8. Язык списка инструкций (IL) ......................................................................................... 32 9. Язык последовательных функциональных схем (SFC) ............................................... 34 9.1. Основные элементы языка SFC ................................................................................ 34 9.2. Действия и их классификаторы ................................................................................ 35 9.3. Параллельные ветви .................................................................................................. 38 9.4. Альтернативные ветви .............................................................................................. 39 3 ВВЕДЕНИЕ Электронное учебное пособие по дисциплине «Компьютерная и микропроцессорная техника в электроприводе» направлено на формирование профессиональных компетенций в соответствии с федеральным государственным образовательным стандартом по уровню бакалавриата: ПК-3 Способность принимать участие в проектировании объектов профессиональной деятельности в соответствии с техническим заданием и нормативнотехнической документацией, соблюдая различные технические, энергоэффективные и экологические требования Электронное учебное пособие предназначено для обучающихся по направлению подготовки бакалавриата 13.03.02 «Электроэнергетика и электротехника», может быть использовано при изучении других дисциплин, направленных на формирование профессиональных компетенций. В электронном учебном пособии рассмотрена компьютерная и микропроцессорная техника, используемая в электроприводе, а также методы программирования систем управления электроприводом. Цель электронного учебного пособия – обучить средствам компьютерной и микропроцессорной техники, способам подключения датчиков и исполнительных устройств, языкам программирования контроллеров, используемым в системах управления электроприводом. Содержание данного электронного учебного пособия соответствует рабочей программе дисциплины и основано на материалах отечественных и зарубежных исследований, включая современные публикации. Каждый раздел электронного учебного пособия включает контрольные вопросы и тестовые задания. АННОТАЦИЯ ДИСЦИПЛИНЫ МОДЕЛИРОВАНИЕ В ТЕХНИКЕ 1. Место дисциплины в структуре образовательной программы Дисциплина «Компьютерная и микропроцессорная техника в электроприводе» относится к дисциплинам по выбору вариативной части Блока 1 учебного плана по направлению подготовки 13.03.02 «Электроэнергетика и электротехника», профиль «Электропривод и автоматика». Для изучения дисциплины студент должен: – знать основы теории автоматического управления, законы математической логики, базовый язык программирования, теоретические основы электротехники, физические основы электроники, основные законы электрических и магнитных цепей, основы теоретической механики; – уметь производить выбор и определять параметры регуляторов в замкнутых системах управления, составлять логические выражения и выполнять их преобразования, создавать типовые вычислительные алгоритмы, применять законы физики для установления зависимости выходных величин от входных величин, выполнять расчеты электрических, магнитных и кинематических цепей, выполнять анализ и синтез электрических и электронных схем, выделять связи между элементами технических систем, входы и выходы элементов. Для успешного освоения дисциплины «Компьютерная и микропроцессорная техника в электроприводе» студент должен изучить курсы: «Математика», «Физика», «Информатика», «Компьютерные технологии», «Теоретические основы электротехники», «Введение в математическую логику», «Теоретическая механика», «Физические основы электроники». «Теория автоматического управления». 4 Дисциплина «Компьютерная и микропроцессорная техника в электроприводе» необходима в качестве предшествующей для дисциплин: «Электрический привод», «Системы управления электроприводов», «Электрический привод в современных технологиях», «Электрооборудование береговых объектов водного транспорта». 2. Планируемые результаты обучения по дисциплине. В результате освоения дисциплины обучающийся должен: Знать: средства компьютерной и микропроцессорной техники, способы подключения датчиков и исполнительных устройств, языки программирования контроллеров, используемые в системах управления электроприводом; Уметь: разрабатывать, программировать и отлаживать работу автоматизированных систем управления электроприводами механизмов и технологическими процессами береговых установок; Владеть: методами создания алгоритмов управления электроприводами, средствами разработки и отладки программного обеспечения программируемых котроллеров. 3. Объем дисциплины по видам учебных занятий Объем дисциплины составляет 3 зачетных единицы, всего 108 часов, из которых: 68 часов составляет контактная работа обучающегося с преподавателем (17 часов занятия лекционного типа, 17 часов практические занятия и 34 часа лабораторные работы) по очной форме обучения; 16 часов составляет контактная работа обучающегося с преподавателем (8 часов занятия лекционного типа, 8 часов лабораторные работы) по заочной форме обучения. 5 1. ПРОГРАММИРУЕМЫЙ КОНТРОЛЛЕР 1.1. Общие сведения Программируемый контроллер – это микропроцессорное устройство управления, предназначенное для автоматизации технологического процесса. В системах управления электроприводом используются промышленные компьютеры, программируемые логически контроллеры и микроконтроллеры. Промышленный компьютер является аналогом обычного персонального компьютера, но имеет ряд отличий: Промышленный компьютер рассчитан на более суровые условия эксплуатации, устойчив к внешним воздействиям; Промышленный компьютер имеет порты для промышленных интерфейсов связи. Наиболее часто используется интерфейсы связи RS-485, CAN и Ethernet. На основе RS-485 разработано много промышленных программных протоколов, например Profibus и Modbus. В сети CAN наиболее часто используются протоколы связи DeviceNet и CANopen. Протоколы связи подробно описывают, каким образом передается информация между системами. В промышленном компьютер присутствует сторожевой (watchdog) таймер. Он предназначен для автоматической перезагрузки компьютера при зависании программной или аппаратной части. Во многих промышленных компьютерах оперативная память присутствует в виде микросхем на плате, процессор имеет пассивное охлаждение, а в качестве устройства хранения информации используется flash-память. По конструктивному исполнению, промышленные компьютеры можно разделить на: Панельный промышленный компьютер. Панельный компьютер представляет собой моноблок из сенсорного монитора и платы компьютера. Панельный компьютер обычно предназначен для вертикального встраивания в шкаф системы управления. Встраиваемый компьютер. Он не имеет монитора и предназначен для встраивания в стойки и другие конструкции системы управления. Одноплатный мини-компьютер. Представляет собой плату небольших размеров. Производительность и объем памяти такого компьютера ограничены. Система на кристалле (SoC). Изготавливается в виде единого чипа. Производительность и объем памяти еще меньше чем у одноплатных миникомпьютеров. Сенсорные экраны обычно выполняются по резистивной или емкостной технологии. Преимуществом резистивных сенсорных экранов является возможность использовать для нажатий непроводящие предметы, а также более хорошая защита от случайных нажатий. Преимуществом емкостных сенсорных экранов является защищенность от повреждений, возможность определения одновременных нажатий, а также более высокая яркость. Микроконтроллер – это микросхема, имеющая в своем составе процессорное ядро, память и другие элементы. Наиболее часто, в системах управления электроприводом, используются микроконтроллеры c архитектурой STM32 и процессорным ядром Cortex-M, производства компании STMicroelectronics и процессоры с архитектурой C2000 производства компании Texas Instruments. Программируются микроконтроллеры на языках Си и Ассемблер. Программируемый логический контроллер (ПЛК) конструктивно представляет собой устройство в закрытом корпусе с клеммами, для подключения питания, входных и выходных сигналов. Программируется ПЛК на специально разработанных для этого языках. 6 1.2. Состав контроллера Рассмотрим составляющие части программируемого контроллера. Процессор. Обычно используются 32 разрядные процессоры с тактовой частотой от 100 – 500 МГц. Оперативная память. Объем оперативной памяти обычно составляет 256 Кбайт – 2 Мбайт. Оперативная память делится на динамическую память и статическую память. В основе статической памяти лежит регистровая ячейка на транзисторах. Преимуществом статической памяти является простота управления и низкое энергопотребление. Последнее позволяет осуществлять резервное питания памяти от батареи. В основе динамической памяти лежат ячейки в виде емкости. Преимуществом динамической памяти является высокая плотность хранения информации. Но такой тип памяти требует постоянного подзарядки емкостей (регенерации), что приводит к высокому энергопотреблению и услужению системы управления памятью. Память для хранения программ. Для хранения программ обычно используется flash-память. Такая память позволяет производить многократное изменение программы, путем перезаписи. Запись информации во flash-память производится не отдельными байтами, а целыми блоками. Чтение информации может производиться блоками (NANDпамять) или отдельными байтами (NOR-память). В микроконтроллере обычно используется NOR-память. Это позволяет выполнять программу непосредственно из постоянной памяти, без загрузки в оперативную память. В ПЛК и компьютерах обычно используют NAND-память. Ее преимуществом являются высокая плотность хранения информации и более высокая скорость чтения и записи блоков. В некоторых ответственных применениях, например военных, используют однократно программируемую память (PROM), либо память, программируемую при производстве (ROM). Память для хранения данных. Во многих контроллерах есть электрически стираемая программируемая память (EEPROM). Преимуществом данного типа памяти является возможность производить запись отдельных байтов. Это существенно повышает количество допустимых изменений содержимого памяти. При отсутствии EEPROM памяти, для хранения данных используется flash-память. Память используется для: хранения системных параметров. Эти параметры может изменять только разработчик системы. Они защищены паролем от изменения их оператором. хранения системных параметров. Эти параметры может изменять разработчик системы и оператор. сохранения текущего состояния системы, при исчезновении питания. Контрольные вопросы 1. Что такое программируемый контроллер? 2. Назовите наиболее распространенные промышленные интерфейсы связи. 3. Для чего нужен сторожевой таймер? 4. Перечислите преимущества резистивных сенсорных экранов. 5. Перечислите преимущества емкостных сенсорных экранов 6. Что такое микроконтроллер? 7. Чем микроконтроллер отличается от микропроцессора? 8. На каких языках чаще всего программируется микроконтроллер? 9. Как устроена статическая оперативная память? 10. Как устроена динамическая оперативная память? 11. Перечислите преимущества статической оперативной памяти. 12. Перечислите преимущества динамической оперативной памяти. 13. Какие типы памяти используется для хранения программ? 14. Какие типы памяти используется для хранения данных? 7 2. ВХОДЫ И ВЫХОДЫ ПЛК 2.1. Общее описание ПЛК представляют из себя микропроцессорное (МПС) устройство, предназначенное для сбора, преобразования, обработки, хранения информации и выработки команд управления. Каждый из них представляет собой вычислительную машину, имеющую некоторое множество входов и выходов. Контроллер отслеживает изменение входов и вырабатывает программно определенное воздействие на выходах. Обладая памятью, ПЛК в зависимости от предыстории событий, способен реагировать по-разному на текущие события. Такая модель соответствует широко известным конечным автоматам. Однако возможности перепрограммирования, управления по времени, развитые вычислительные способности, включая цифровую обработку сигналов, поднимают ПЛК на более высокий уровень. Первоначально они предназначались для замены релейно-контактных схем, собранных на дискретных компонентах – реле, счетчиках, таймерах, элементах жесткой логики. Принципиальное отличие ПЛК от релейных схем заключается в том, что все его функции реализованы программно. На одном контроллере можно реализовать схему, эквивалентную тысячам элементов жесткой логики. При этом надежность работы схемы не зависит от ее сложности. 2.2. Цифровые входы Один цифровой (дискретный) вход ПЛК способен принимать один бинарный электрический сигнал, описываемый двумя состояниями – включен или выключен. На уровне программы это один бит информации. Кнопки, выключатели, контакты реле, датчики обнаружения предметов и множество приборов с выходом типа «сухой контакт» или «открытый коллектор» непосредственно могут быть подключены к дискретным входам ПЛК. Состояние некоторых первичных приборов систем промышленной автоматики определяется целым цифровым словом. Для их подключения используют несколько дискретных входов. Системное программное обеспечение ПЛК включает драйвер, автоматически считывающий физические значения входов в оперативную память. Благодаря этому, прикладному программисту нет необходимости разбираться с внутренним устройством контроллера. С точки зрения прикладного программиста дискретные входы это наборы бит, доступные для чтения в ОЗУ. Все цифровые входы ПЛК обычно рассчитаны на прием стандартных сигналов с уровнем 24 В постоянного тока. Типовое значение тока одного цифрового входа (при входном напряжении 24 В) составляет около 10 мА. В простейшем случае, для подключения нормально разомкнутого контакта, дискретный вход и сам контакт необходимо подключить последовательно к источнику питания в 24 В. Для питания таких внешних датчиков нужен отдельный источник питания. Иногда источник питания внешнего маломощного оборудования включают в состав ПЛК. Дискретные входы некоторых контроллеров рассчитаны на прием уровней сигналов с напряжениями высокого уровня, в том числе переменного тока (например, в 220... 240 В). Все современные датчики, базирующиеся на самых разнообразных физических явлениях (емкостные, индуктивные, ультразвуковые, оптические и т.д.), как правило, имеют встроенные первичные преобразователи и не требуют дополнительного согласования при подключении к дискретным входам ПЛК. 2.3. Аналоговые входы Аналоговый электрический сигнал отражает уровень напряжения или тока, соответствующий некоторой физической величине, в каждый момент времени. Это может быть температура, давление, вес, положение, скорость, частота и т. д. 8 Поскольку ПЛК является цифровой вычислительной машиной, аналоговые входные сигналы обязательно подвергаются аналого-цифровому преобразованию (АЦП). В результате, образуется дискретная переменная определенной разрядности. Как правило, в ПЛК применяются 8 - 12 разрядные преобразователи, что в большинстве случаев, исходя из современных требований по точности управления технологическими процессами, является достаточным. Кроме этого АЦП более высокой разрядности не оправдывают себя, в первую очередь из-за высокого уровня индустриальных помех, характерных для условий работы контроллеров. Для аналоговых входов наиболее распространены стандартные диапазоны постоянного напряжения -10...+10 В и 0...+10 В. Для аналоговых токовых входов – 0...20 мА и 4...20 мА. Особые классы аналоговых входов представляют входы, предназначенные для подключения термометров сопротивления и термопар. Здесь требуется применение специальных технических решений (трехточечное включение, источники образцового тока, схемы компенсации холодного спая, схемы линеаризации и т. д.). Для достижения хороших результатов измерений должно обеспечиваться высокое качество выполнения монтажа внешних аналоговых цепей. Практически все модули аналогового ввода являются многоканальными. Входной коммутатор подключает вход АЦП к необходимому входу модуля. Управление коммутатором и АЦП выполняет драйвер системного программного обеспечения ПЛК. Прикладной программист работает с готовыми значениями аналоговых величин в ОЗУ. Несоответствие физических значений напряжений и токов датчиков уровням входов/выходов контроллера решается применением нормирующих преобразователей или заменой нестандартных датчиков. Стандартные дискретные и аналоговые входы ПЛК способны удовлетворить большинство потребностей систем промышленной автоматики. Необходимость применения специализированных входов возникает в случаях, когда непосредственная обработка некоторого сигнала программно затруднена, например, требует много времени. Наиболее часто ПЛК оснащаются специализированными счетными входами для измерения длительности, фиксации фронтов и подсчета импульсов. Например, при измерении положения и скорости вращения вала очень распространены устройства, формирующие определенное количество импульсов за один оборот – поворотные шифраторы. Частота следования импульсов может достигать нескольких мегагерц. Даже если процессор ПЛК обладает достаточным быстродействием, непосредственный подсчет импульсов в пользовательской программе будет весьма расточительным по времени. Здесь желательно иметь специализированный аппаратный входной блок, способный провести первичную обработку и сформировать, необходимые для прикладной задачи величины. Вторым распространенным типом специализированных входов являются входы способные очень быстро запускать заданные пользовательские задачи с прерыванием выполнения основной программы – входы прерываний. 2.4. Цифровые выходы Один логический (дискретный) выход ПЛК способен коммутировать один электрический сигнал. Также как и дискретный вход, с точки зрения программы это один бит информации. Нагрузкой дискретных выходов могут быть лампы, реле, соленоиды, силовые пускатели, пневматические клапаны, индикаторы и т. д. Простейший дискретный выход ПЛК выполняется в виде контактов реле. Такой выход достаточно удобен в применении и прост. Однако он обладает характерными недостатками всех реле – ограниченный ресурс, низкое быстродействие, разрушение контактов при работе на индуктивную нагрузку. Альтернативным решением дискретного вы- 9 хода является электронный элемент – например, схема с открытым коллектором. Наиболее широким спросом пользуются дискретные выходы средней мощности (до 1А, 24В). Практика эксплуатации доказала нецелесообразность сосредоточения в корпусе ПЛК большого числа силовых коммутирующих элементов. При необходимости управления сильноточными нагрузками применяются выносные устройства коммутации. Таким образом, установка силовых коммутирующих приборов осуществляется максимально близко к нагрузке. В результате, сокращается длина силовых монтажных соединений, снижается стоимость монтажа, упрощается обслуживание, уменьшается уровень электромагнитных помех. Контрольные вопросы 1. Что можно подключить к цифровому входу контроллера? 2. Какие уровни напряжения обычно используются для цифрового входа контроллера? 3. Что можно подключить к аналоговому входу контроллера? 4. Для чего предназначен аналого-цифровой преобразователь (АЦП) в контроллере? 5. Стандартный диапазон для аналоговых входов по напряжению. 6. Стандартный диапазон для аналоговых токовых входов. 7. Что можно подключить к цифровому выходу контроллера? 8. Перечислите недостатки релейного выхода контроллера перед транзисторным выходом. 3. ПРОГРАММИРОВАНИЕ КОНТРОЛЛЕРА 3.1. Рабочий цикл ПЛК работают циклически по методу периодического опроса входных данных. Рабочий цикл ПЛК включает 4 фазы: 1. опрос входов, 2. выполнение пользовательской программы, 3. установку значений выходов, 4. некоторые вспомогательные операции (диагностика, подготовка данных для отладчика, визуализации и т. д.). Выполнение 1 фазы обеспечивается системным программным обеспечением. После чего управление передается прикладной программе, а по ее завершению управление опять передается системному уровню. За счет этого обеспечивается максимальная простота построения прикладной программы – ее создатель не должен знать, как производится непосредственное управление аппаратными ресурсами. Прикладная программа имеет дело с одномоментной копией значений входов в памяти. Внутри одного цикла выполнения программы, значения входов можно считать константами. Такая модель упрощает анализ и программирование сложных алгоритмов. Очевидно, что время реакции на событие будет зависеть от времени выполнения одного цикла прикладной программы. Время реакции – время от момента события до момента выдачи соответствующего управляющего сигнала В технических характеристиках ПЛК приводится типовое время рабочего цикла. При его измерении пользовательская программа должна содержать 1К логических команд (на языке IL (STL) МЭК 61131-3). Сегодня ПЛК имеют типовое значение времени рабочего цикла, измеряемое единицами миллисекунд и менее. События, требующие быстрой реакции, выделяются в отдельные задачи – задачи обработки прерываний, приоритетность и период выполнения которых можно изменять. 3.2. Типы данных BOOL логический тип данных. Переменная может принимать 2 значения ИСТИНА (TRUE) или ЛОЖЬ (FALSE). Занимает 8 бит памяти 10 BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, и UDINT – это целочисленные типы. Они отличаются различным диапазоном сохраняемых данных и, естественно, различными требованиями к памяти. Подробно данные характеристики представлены в следующей таблице: Тип данных Минимум Максимум Число разрядов BYTE 255 8 WORD 65535 16 DWORD 4294967295 32 SINT -128 127 8 USINT 255 8 INT -32768 32767 16 UINT 65535 16 DINT -2147483648 2147483647 32 UDINT 4294967295 32 Очевидно, присвоение данных большего типа переменной меньшего типа может приводить к потере информации. REAL и LREAL данные в формате с плавающей запятой, используются для сохранения вещественных чисел. Для типа REAL необходимо 32 бита памяти и 64 бита для LREAL. Диапазон значений REAL от: 1.175494351E-38F до 3.402823466E+38F Диапазон значений LREAL от: 2.2250738585072014E-308 до 1.7976931348623158E+308. 3.3. Языки программирования ПЛК Прикладное программное обеспечение контроллеров разрабатывается с помощью специальных технологических языков, большей частью рассчитанных не на квалифицированных программистов, а на специалистов по автоматизации. Наиболее простой и распространенный язык программирования цепей контроля и управления - это набор программных модулей типовых алгоритмов обработки измерительной информации, регулирования, блокировочных зависимостей и графический конфигуратор, который собирает эти модули в заданные цепи контроля и управления. До недавнего времени (а частично и сейчас) каждый производитель ПТК разрабатывал свои языки программирования контроллеров. В последние годы ситуация начинает изменяться. К середине 90-х годов технологические языки программирования контроллеров были стандартизированы - стандарт IEC 1131.3. Этот стандарт определяет структуру пяти технологических языков: -LD - язык релейных диаграмм. Графический традиционный язык релейных блокировок, в котором разработчик изображает необходимые релейные схемы; -FBD - язык функциональных блоковых диаграмм. Графический конфигуратор с набором типовых программных модулей; -SFC - язык последовательных функциональных схем. Язык, близкий к традиционному программированию, предназначен для реализации алгоритмов последовательного управления. Элементы языка - процедуры и транзакции используются для определения порядка операций, написанных на любом языке стандарта; -ST - язык структурированного текста. Язык типа Pascal, поддерживающий структурное программирование. Он может использоваться для программирования процедур и переходов в языке SFC и дополнять другие языки стандарта; -IL - язык инструкций. Язык низкого уровня типа Ассемблера, но без ориентации на конкретную микропроцессорную архитектуру. С его помощью можно создавать быстродействующие программные модули. Два первых графических языка являются основными, а остальные языки служат дополнениями к ним. 11 В стандарте описываются спецификации механизмов, посредством которых пользователи могут определять новые типы данных, функции и функциональные блоки; т. е. стандарт в этом плане является саморасширяющемся. При необходимости многократно применять одну и ту же последовательность функций, можно выделить ее в отдельный функциональный блок, поместить в библиотеку и устанавливать в любые программы управления. Вес языки стандарта можно комбинировать; можно также включать в программу фрагменты, написанные на традиционных языках. Сертификация конкретных языков на соответствие стандарту осуществляется организацией PLCopen, имеющей свои отделения в разных странах. Сформулировано три уровня совместимости конкретных языков со стандартом: -базовый уровень, когда язык соответствует некоторому подмножеству стандарта IEC 1131.3 (начальный уровень). На этом уровне проверяются типы переменных и языковые конструкции; -уровень переносимости функций, когда существует формат файла обмена функциональных блоков; -уровень совместимости и приложений, когда совместимость реализована на уровне приложений и возможен перенос завершенных приложений. Данный уровень спецификации находится в разработке. Более десятка фирм, специализирующихся на программных продуктах, выпускают сейчас технологические языки по этому стандарту, ориентированные на работу под определенными типовыми операционными системами (т. е. открытые технологические языки), что позволяет разработчикам ПТК использовать их в своих комплексах. Практически большинство контроллеров, выпускаемых в последние годы, оснащаются тем или иным числом технологических языков, соответствующих этому стандарту. Эти языки либо разработаны самими разработчиками контроллеров, либо закуплены последними у фирм, специализирующихся на программных продуктах. 3.4. Язык функциональных блоков (FBD) Язык функциональных блоков (Function Block Diagrams) позволяет создать программу практически любой сложности на основе стандартных функциональных блоков (арифметические, тригонометрические, логические блоки, РID-регуляторы, блоки, описывающие некоторые законы управления, мультиплексоры и т.д.). Все программирование сводится к «склеиванию» готовых компонентов (блоков). Каждый функциональный блок представляет собой прямоугольник, внутри которого имеется обозначение функции, выполняемой блоком. При программировании используются следующие формальные правила языка FBD: Функциональные блоки могут располагаться произвольно в поле программы; Не может быть несоединенных входов и выходов функционального блока; Соединение блоков может выполняться также при помощи ссылок с определенными именами; Функциональные блоки выполняются слева направо, сверху вниз; На входе функционального блока может быть константное выражение, любая внутренняя или входная переменная контроллера; выходная переменная; На выходе блока может быть любая внутренняя или выходная переменная ПЛК. Контрольные вопросы 1. Что происходит в первой, второй и третьей фазах рабочего цикла? 2. Какие значения может принимать тип BOOL? 3. Перечислите целочисленные типы данных. 4. Перечислите вещественные типы данных. 5. Назовите число разрядов в типах USINT и SINT. 12 6. Назовите число разрядов в типах UINT и INT. 7. Назовите число разрядов в типах UDINT и DINT. 8. Назовите минимальное и максимальное значение данных типа USINT. 9. Назовите минимальное и максимальное значение данных типа SINT 10. Назовите число разрядов в типе BYTE. 11. Назовите число разрядов в типе WORD. 12. Назовите число разрядов в типе DWORD 13. Сколько бит необходимо для хранения данных типа REAL и LREAL. 4. СТАНДАРТНЫЕ ФУНКЦИИ 4.1. Логические функции К логическим функциям относятся: логическое «И», логическое «ИЛИ», исключающее «ИЛИ» и логическое «НЕ». В языках программирования контроллеров, логические и битовые функции имеют одинаковые обозначения. Эти функции называются логическими, если их входные значения имеют логический тип BOOL. В этом случае, выходное значение также будет иметь логический тип BOOL. В стандарте языков программирования контроллеров количество входов для логических функций не ограничено, за исключением функции «НЕ». Однако, в конкретной системе программирования контроллера, оно может быть ограничено. Во многих контроллерах можно использовать только два входа, в некоторых можно использовать не больше четырех входов. Логическое «И» обозначается AND. Выход функции AND будет иметь значение TRUE в том и только в том случае, если все входы имеют значение TRUE. Если хотя бы один вход имеет значение FALSE, то и выход будет иметь значение FALSE. Логическое «И» для двух значений имеет следующую таблицу истинности: A B A AND B FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE Логическое «ИЛИ» обозначается OR. Выход функции OR будет иметь значение TRUE в том и только в том случае, если хотя бы один вход имеет значение TRUE. Если все входы имеют значение FALSE, то и выход будет иметь значение FALSE. Логическое «ИЛИ» для двух значений имеет следующую таблицу истинности: A B A OR B FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE Исключающее «ИЛИ» обозначается XOR. Выход функции XOR будет иметь значение TRUE в том и только в том случае, если число входов имеющих значение TRUE нечетно. Если число входов имеющих значение TRUE четно, то выход будет иметь значение FALSE. Если рассматривать FALSE как ноль, а TRUE как единицу, то данную функцию часто называют сложение по модулю два. Это означает, что функция складывает значения всех входов и находит остаток от деления полученного числа на два. При двух входах данную функцию еще называют логическая неравнозначность или неэквивалентность. То есть, выход функции будет иметь значение TRUE в том и только в том случае, если значение входов не равны между собой. 13 Исключающее «ИЛИ» для двух значений имеет следующую таблицу истинности: A B A XOR B FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE Логическое «НЕ» обозначается NOT. В отличие от других логических функций, данная функция может иметь только один вход. Выход функции NOT будет иметь значение TRUE в том и только в том случае, если вход имеет значение FALSE. Если вход имеет значение TRUE, то выход будет иметь значение FALSE. Логическое «НЕ» имеет следующую таблицу истинности: A NOT(A) FALSE TRUE TRUE FALSE В языке FBD, вместо использования функции NOT рекомендуется использовать инверсию входного значения функции или функционального блока. Обычно это делается с помощью кнопок мыши или через меню. Инвертированный вход обозначается окружностью, либо точкой. В качестве примера, рассмотрим реализацию логического выражения Q = (I1 v I2) & I3 на языке FBD (Рис. 4.1). Рис. 4.1. Пример логического выражения на языке FBD 4.2. Битовые функции К битовым функциям относятся: битовое «И», битовое «ИЛИ», битовое исключающее «ИЛИ» и битовое «НЕ». В языках программирования контроллеров, логические и битовые функции имеют одинаковые обозначения. Эти функции называются битовыми, если их входные значения имеют битовые типы BYTE, WORD или DWORD. Выходное значение будет иметь тип DWORD, если хотя бы одно входное значение имеет тип DWORD. Выходное значение будет иметь тип WORD, если хотя бы одно входное значение имеет тип WORD и ни одно входное значение не имеет тип DWORD. Выходное значение будет иметь тип BYTE, если все входные значения имеют тип BYTE. В стандарте языков программирования контроллеров количество входов для битовых функций не ограничено, за исключением функции «НЕ». Однако, в конкретной системе программирования контроллера, оно может быть ограничено. Во многих контроллерах можно использовать только два входа, в некоторых можно использовать не больше четырех входов. Битовое «И» обозначается AND. Для выполнения битового «И» необходимо представить входные значения в двоичном виде. Младший нулевой бит выходного значения определяется путем выполнения операции логического «И» над младшими нулевыми битами всех входных значений. При этом ноль рассматривается как FALSE, а единица как TRUE. Первый бит выходного значения определяется путем выполнения операции логи- 14 ческого «И» над первыми битами всех входных значений. Аналогично и для других битов. Найдем выходное значение, если входные значения имеют тип BYTE и их целочисленные представления равны 19 и 27: 0 0 0 1 0 0 1 1 = 19 0 0 0 1 1 0 0 1 = 25 ––––––––––– 0 0 0 1 0 0 0 1 = 17 Таким образом, выходное значение будет иметь целочисленное представление равное 17. Аналогично можно показать, что если целочисленные представления входных значений равны 19 и 2, то выходное значение будет иметь целочисленное представление равное 0. Важно обратить внимание на полученный результат. Оба входных значений имеют не нулевые биты, а все биты выходного значения равны нулю. Битовое «ИЛИ» обозначается OR. Для выполнения битового «ИЛИ» необходимо представить входные значения в двоичном виде. Младший нулевой бит выходного значения определяется путем выполнения операции логического «ИЛИ» над младшими нулевыми битами всех входных значений. При этом ноль рассматривается как FALSE, а единица как TRUE. Первый бит выходного значения определяется путем выполнения операции логического «ИЛИ» над первыми битами всех входных значений. Аналогично и для других битов. Найдем выходное значение, если входные значения имеют тип BYTE и их целочисленные представления равны 19 и 27: 0 0 0 1 0 0 1 1 = 19 0 0 0 1 1 0 0 1 = 25 ––––––––––– 0 0 0 1 1 0 1 1 = 27 Таким образом, выходное значение будет иметь целочисленное представление равное 27. Битовое исключающее «ИЛИ» обозначается XOR. Для выполнения битового исключающего «ИЛИ» необходимо представить входные значения в двоичном виде. Младший нулевой бит выходного значения определяется путем выполнения операции исключающего «ИЛИ» над младшими нулевыми битами всех входных значений. При этом ноль рассматривается как FALSE, а единица как TRUE. Первый бит выходного значения определяется путем выполнения операции исключающего «ИЛИ» над первыми битами всех входных значений. Аналогично и для других битов. Найдем выходное значение, если входные значения имеют тип BYTE и их целочисленные представления равны 19 и 27: 0 0 0 1 0 0 1 1 = 19 0 0 0 1 1 0 0 1 = 25 ––––––––––– 0 0 0 0 1 0 1 0 = 10 Таким образом, выходное значение будет иметь целочисленное представление равное 10. Битовое «НЕ» обозначается NOT. В отличие от других битовых функций, данная функция может иметь только один вход. Для выполнения битового «НЕ» необходимо представить входное значения в двоичном виде. Младший нулевой бит выходного значения определяется путем выполнения операции логического «НЕ» над младшим нулевым битом входного значения. При этом ноль рассматривается как FALSE, а единица как TRUE. Первый бит выходного значения определяется путем выполнения операции логического «НЕ» над первым битом входного значения. Аналогично и для других битов. Найдем выходное значение, если входное значения имеет тип BYTE и его целочисленное представление равно 19: 15 0 0 0 1 0 0 1 1 = 19 ––––––––––– 1 1 1 0 1 1 0 0 = 236 Таким образом, выходное значение будет иметь целочисленное представление равное 236. Для операции битового «НЕ» тип выходного значения всегда совпадает с типом входного значения. Важно понимать, что если в приведенном только что примере, входное значение имело бы тип WORD, то выходное значение стало бы другим: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 = 19 –––––––––––––––––––––––––– 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 = 65516 Таким образом, выходное значение будет иметь целочисленное представление равное 65516, а не 236. 4.3. Арифметические функции К арифметическим функциям относятся: сложение, вычитание, умножение, целочисленное деление, вещественное деление и нахождения остатка от целочисленного деления. В стандарте языков программирования контроллеров количество входов для арифметических функций сложения и умножения не ограничено. Однако, в конкретной системе программирования контроллера, оно может быть ограничено. Во многих контроллерах можно использовать только два входа, в некоторых можно использовать не больше четырех входов. Входные значения могут быть битового, целочисленного или вещественного типа. В ряде функций допускается использование значений типа TIME или DATE_AND_TIME. Эти случаи будут рассмотрены отдельно. Выходное значение имеет тип, «наибольший» из типов входных значений. То есть имеет тип, в котором можно представить все входные значения. Рассмотрим это более подробно. Сначала, все входные значения битового типа преобразуются к соответствующему значению целочисленного типа. Если все входные значения имеют целочисленные типы, то выходное значение будет иметь тип, совпадающий с типом входного значения наибольшей разрядности. Например, если входные значения имеют типы INT и DINT, то выходное значение будет иметь тип DINT. При выборе между беззнаковый и знаковым типом одинаковой разрядности, преимущество имеет беззнаковый тип. Если хотя бы одно входное значение имеет тип REAL и ни одно из входных значений не имеет тип LREAL, то выходное значение будет иметь тип REAL. Если хотя бы одно входное значение имеет тип LREAL, то выходное значение также будет иметь тип LREAL. Сложение обозначается ADD. Можно складывать значения типа TIME. Выходное значение также будет иметь тип TIME. Значение типа DATE_AND_TIME можно сложить со значением типа TIME. Выходное значение будет иметь тип DATE_AND_TIME, то есть реальное значение времени увеличится на заданный интервал времени. Вычитание обозначается SUB. Данная функция может иметь только два входа. Из значения типа TIME можно вычесть значение типа TIME. Выходное значение также будет иметь тип TIME. Из значения типа DATE_AND_TIME можно вычесть значение типа TIME. Выходное значение будет иметь тип DATE_AND_TIME, то есть реальное значение времени уменьшится на заданный интервал времени. Из значения типа DATE_AND_TIME можно вычесть значение типа DATE_AND_TIME. Выходное значение будет иметь тип TIME, то есть интервал времени между двумя реальными значениями времени. Умножение обозначается MUL. 16 Деление обозначается DIV. Данная функция может иметь только два входа. Если хотя бы одно входное значение функции имеет вещественный тип REAL или LREAL, то выполняется обычное математическое вещественное деление. Например 2.5 / 2 = 1.25. Если оба входных значения функции имеют целочисленный тип, то будет выполняться деление нацело. Например 7 / 3 = 2. Если среди входных значений имеются отрицательные значения, то деление нацело a на b выполняется по следующей формуле: m / n = (|m| / |n|) ⋅ sign(m) ⋅ sign(n), где |z| – модуль числа z, sign(z) – знаковая функция. Также, деление нацело можно рассматривать, как округление вещественного деления в сторону нуля. Нахождение остатка от деления обозначается MOD. Данная функция может иметь только два входа. Входные значения функции должны быть целочисленного или битового типа. Остаток от деления m на n находится по формуле: m – (m / n) ⋅ n. Обратите внимание, что сокращать n в данном выражении недопустимо, так как используется деление нацело. Например, остаток от деления 7 на 3 будет 1: 7 – (7 / 3) ⋅ 3 = 7 – 2 ⋅ 3 = 1. Найдем остаток от деления m на n , если среди m и n имеются отрицательные значения: m – (m / n) ⋅ n = |m| ⋅ sign(m) – (|m| / |n|) ⋅ sign(m) ⋅ sign(n) ⋅ |n| ⋅ sign(n) = (|m|– (|m| / |n|) ⋅ |n|) ⋅ sign(m) . Здесь использованы формулы: x = |x| ⋅ sign(x) sign(x) ⋅ sign(x) = 1. Таким образом, модуль остатка от деления m на n находится как остаток от деления модуля m на модуль n. Знак остатка от деления m на n совпадает со знаком делимого, то есть m. 4.4. Математические функции К математическим функциям относятся тригонометрические функции, обратные тригонометрические функции, логарифмическая функция, показательная функция, функция квадратного корня, функция модуля числа, а также функция возведения в степень. Модуль числа обозначается ABS Синус обозначается SIN. Косинус обозначается COS. Тангенс обозначается TAN. Арксинус обозначается ASIN. Арккосинус обозначается ACOS. Арктангенс обозначается ATAN. Квадратный корень обозначается SQRT. Экспонента обозначается EXP. Натуральный логарифм обозначается LN. Десятичный логарифм обозначается LOG. 17 Перечисленные функции имеют только один вход. Входное значение может быть битового, целочисленного или вещественного типа. Выходное значение всегда имеет вещественный тип. Обратите внимание, что LOG обозначает десятичный логарифм, хотя, в большинстве зарубежных стран, математики и программисты используют обозначение LOG для натурального логарифма. Модуль числа обозначается ABS. Если входное значение имеет целочисленный или вещественный тип, то выходное значение функции ABS имеет тот же тип что и входное значение. Если входное значение имеет битовый тип, то выходное значение имеет соответствующий ему целочисленный тип. Функция возведения в степень обозначается EXPT. Данная функция имеет два входа. Входные значения могут быть битового, целочисленного или вещественного типа. Выходное значение всегда имеет вещественный тип. Функция возводит значение первого входа в степень, равную значению второго входа. Значение первого входа должно быть положительно. В качестве примера, рассмотрим реализацию формулы F = V ⋅ SIN(Z) + W ⋅ COS(Z) на языке FBD (Рис. 4.2). Рис. 4.2. Пример реализации формулы на языке FBD 4.5. Функции сравнения К функциям сравнения относятся: «больше», «больше или равно», «меньше», «меньше или равно», «равно», «не равно». В большинстве систем программирования контроллеров количество входов для функций сравнения равно двум. Однако в стандарте языков программирования контроллеров и в некоторых системах количество входов не ограничено. Входные значения могут быть битового, целочисленного или вещественного типа. Кроме того, входные значения могут иметь тип TIME. Также, входные значения могут иметь тип DATE_AND_TIME. Совместное использование перечисленных вариантов не допустимо. Например, нельзя использовать одно входное значение целочисленного типа, а другое типа TIME. Однако, битовые, целочисленные или вещественные типы можно комбинировать как угодно. Выходное значение функций сравнения имеет логический тип BOOL. Функция «больше» обозначается GT (Рис. 4.3). Рис. 4.3. Функция GT 18 Если значение на входе IN1 больше значения на входе IN2, то выходное значение функции будет TRUE. В противном случае, если значение на входе IN1 меньше или равно значению на входе IN2, то выходное значение функции будет FALSE. Как уже было сказано, в некоторых системах программирования контроллеров количество входов может быть больше двух. Тогда функция работает следующим образом. Если значение на входе IN1 больше значения на входе IN2, а также значение на входе IN2 больше значения на входе IN3, и так далее, то выходное значение функции будет TRUE. В противном случае, выходное значение функции будет FALSE. Остальные функции сравнения работают аналогично функции GT, только с другими условиями. Функция «больше или равно» обозначается GE. Функция «меньше» обозначается LT. Функция «меньше или равно» обозначается LE. Функция «равно» обозначается EQ. Функция «не равно» обозначается NE. 4.6. Функция выбора Функция выбора предназначена для выбора выходного значение из двух входных, в зависимости от условия. Функция выбора имеет три входа (Рис. 4.4). Рис. 4.4. Функция выбора Значение верхнего входа G должно быть логического типа BOOL. Значения входов IN0 и IN1 могут быть битового, целочисленного или вещественного типа. В этом случае выходное значение имеет тип, «наибольший» из типов входных значений IN0 и IN1. То есть имеет тип, в котором можно представить оба входных значения IN0 и IN1. Данное правило рассматривалось более подробно в (4.3). Кроме того, значения входов IN0 и IN1 могут иметь тип TIME. В этом случае выходное значение также имеет тип TIME. Также, значения входов IN0 и IN1 могут иметь тип DATE_AND_TIME. В этом случае выходное значение также имеет тип DATE_AND_TIME. Функция выбора работает следующим образом. Если значение входа G равно FALSE, то выходное значение функции равно значению входа IN0. Если значение входа G равно TRUE, то выходное значение функции равно значению входа IN1. Используя совместно функции сравнения и функцию выбора можно реализовывать аналог условного перехода. Например, пусть требуется выбрать максимум из двух переменных Y и Z и записать его в переменную W. Создадим схему на языке FBD (Рис. 4.5). Рис. 4.5. Нахождение максимума Для выбора максимума также имеется встроенная функция, рассматриваемая ниже. 19 4.7. Функции максимума и минимума В стандарте языков программирования контроллеров количество входов для функций максимума и минимума не ограничено. Однако, в конкретной системе программирования контроллера, оно может быть ограничено. Во многих контроллерах можно использовать только два входа, в некоторых можно использовать не больше четырех входов. Входные значения могут быть битового, целочисленного или вещественного типа. В этом случае выходное значение имеет тип, «наибольший» из типов входных значений. То есть имеет тип, в котором можно представить все входные значения. Данное правило рассматривалось более подробно в (4.3). Кроме того, входные значения могут иметь тип TIME. В этом случае выходное значение также имеет тип TIME. Также, входные значения могут иметь тип DATE_AND_TIME. В этом случае выходное значение также имеет тип DATE_AND_TIME. Функция максимума обозначается MAX. Выходное значение функции максимума равно максимальному значению из значений всех входов. Если функция имеет только два входа, а требуется большее количество входов, например три, то можно использовать следующую схему на Рис. 4.6. Рис. 4.6. Нахождение максимума из трех входов Добавляя блоки MAX, можно найти максимальное значение из любого количества переменных. Функция MIN полностью аналогична функции MAX, но ее значение равно максимальному значению из значений всех входов. 4.8. Функция ограничения Функция ограничения предназначена для ограничения значения в заданных пределах. Функция ограничения имеет три входа (Рис. 4.7). Рис. 4.7. Функция ограничения В отношении типов входных значений и типа выходного значения действуют те же правила, что и для функций MAX или MIN (4.7). Функция ограничения обозначается LIMIT. Функция работает следующим образом. Если значения входа IN меньше, чем значение входа MN, то выходное значение функции равно MN. Если значения входа IN больше, чем значение входа MХ, то выходное значение функции равно MХ. Если значения входа IN больше или равно, чем значение входа MN и меньше или равно чем значение входа MХ, то выходное значение функции равно IN. Если функция ограничения отсутствует в программируемом контроллере, то она может быть реализована через функции MAX и MIN на языке FBD (Рис. 4.8). 20 Рис. 4.8. Реализация функции ограничения через функции MAX и MIN Для создания функции ограничения можно использовать и другую схему (Рис. 4.9). Рис. 4.9. Другая реализация функции ограничения через функции MAX и MIN Обе схемы дают одинаковый результат, если значение MN меньше или равно, чем значение MX. Однако, если значение MN больше, чем значение MX, то схема на (Рис. 4.8) приведет к записи в выходное значение OUT значение MX, не зависимо от входного значения IN. В свою очередь схема на (Рис. 4.9) приведет к записи в выходное значение OUT значение MN, не зависимо от входного значения IN. В стандарте не оговорен алгоритм нахождения выходного значения функции ограничения, если значение MN больше, чем значение MX. Поэтому можно использовать любой из предложенных вариантов по своему усмотрению. 4.9. Мультиплексор Мультиплексор предназначен для выбора одного значения из нескольких других значений. В мультиплексоре обязательно присутствует вход K имеющий целочисленный или битовый тип. Остальные входы обозначаются IN0, IN1, IN2 и т.д. (Рис. 4.10): Рис. 4.10. Мультиплексор В стандарте языков программирования контроллеров количество входов для функции мультиплексора не ограничено. Однако, в конкретной системе программирования контроллера, оно может быть ограничено. Во многих контроллерах можно использовать только четыре входа IN0 – IN3, в некоторых можно использовать восемь входов IN0 – IN7. В отношении типов значений входов IN0, IN1, IN2 и т.д. и типа выходного значения действуют те же правила, что и для функций MAX или MIN (4.7). Функция ограничения обозначается LIMIT. Функция работает следующим образом. Если значения входа K равно 0, то значение выхода функции равно значению входа IN0. Если значения входа K равно 1, то значение выхода функции равно значению входа IN1. То есть, если значения входа K равно X, то значение выхода функции равно значению 21 входа INX, где X – целое число. Если значение входа K меньше нуля, или больше чем максимальный номер входа X, то значение выхода функции равно нулю. Если функция мультиплексора отсутствует в программируемом контроллере, то она может быть реализована через функции сравнения и выбора на языке FBD (Рис. 4.11). Рис. 4.11. Реализация мультиплексора через функции сравнения и выбора Контрольные вопросы 1. Перечислите стандартные логические функции (обозначение и что они делают). 2. Перечислите стандартные арифметические функции (обозначение и что они делают). 3. Перечислите стандартные математические функции (обозначение и что они делают). 4. Перечислите стандартные функции сравнения (обозначение и что они делают). 5. СТАНДАРТНЫЕ ФУНКЦИОНАЛЬНЫЕ БЛОКИ 5.1. Триггеры Триггер предназначен для сохранения состояния выходных сигналов, после их исчезновения. Триггер имеет вход установки SET, вход сброса RESET и один выход Q1. Входные значения и выходное значение триггера имеют логический тип BOOL. Триггер с приоритетом сброса обозначается RS (Рис. 5.1). Рис. 5.1. RS-триггер В RS-триггере вход сброса обозначается RESET1. Ниже приведена таблица истинности для триггера с приоритетом сброса: RESET1 SET Q1p Q1 FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE 22 TRUE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE Здесь Q1p – значение выхода триггера в предыдущем рабочем цикле. Если на входах SET и RESET1 RS-триггера значение FALSE, то выход триггера сохраняет свое предыдущее значение. Если на входе SET RS-триггера значение TRUE, а на входе RESET1 триггера значение FALSE, то выходное значение триггера становится TRUE. Если на входе RESET1 RS-триггера значение TRUE, то выходное значение триггера становится FALSE, независимо от значения на входе SET триггера. В цифровой схемотехнике также существует понятие триггера. Обычно он реализуется с использованием двух транзисторов и пассивных элементов. Если на входы установки и сброса такова триггера одновременно подать единичный сигнал, то триггер окажется в неопределенном состоянии. То есть, либо в состоянии установки, либо в состоянии сброса. В каком состоянии окажется триггер зависит, либо от схемы триггера, либо от того, какой транзистор включится раньше. Функциональный блок триггера, используемый в языках программируемых контроллеров, будет находиться в заранее известном состоянии. Для RS-триггера это состояние сброса, поэтому он и называется триггер с приоритетом сброса. Триггер с приоритетом установки обозначается SR (Рис. 5.2). Рис. 5.2. SR-триггер В SR-триггере вход установки обозначается SET1. Ниже приведена таблица истинности для триггера с приоритетом установки: RESET FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE SET1 FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE Q1p Q1 FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE Здесь Q1p – значение выхода триггера в предыдущем рабочем цикле. Если на входах SET1 и RESET SR-триггера значение FALSE, то выход триггера сохраняет свое предыдущее значение. Если на входе SET1 SR-триггера значение TRUE, то выходное значение триггера становится TRUE, независимо от значения на входе RESET триггера. Если на входе RESET SR-триггера значение TRUE, а на входе SET1 триггера значение FALSE, то выходное значение триггера становится FALSE. Таким образом, при одновременном присутствии значений TRUE на входе установки SET1 и на входе сброса RESET, на выходе SR-триггера будет значение TRUE, то есть триггер перейдет в состояние установки. Поэтому SR-триггер называется триггером с приоритетом установки. 5.2. Детекторы фронта Детекторы фронта предназначены для определения изменения сигнала. Детекторы фронта имеют один вход CLK и один выход Q. Входное и выходное значения детектора фронта имеют логический тип BOOL. 23 Детектор возрастающего фронта обозначается R_TRIG (Рис. 5.3). Рис. 5.3. Детектор возрастающего фронта Если входное значение CLK изменяется с FALSE на TRUE, то выходное значение Q устанавливается в TRUE на время одного рабочего цикла. В остальное время выходное значение детектора возрастающего фронта равно FALSE (Рис. 5.4). CLK Q Рис. 5.4. Временная диаграмма детектора возрастающего фронта Если на вход CLK детектора возрастающего фронта подать единичную константу, то выходное значение Q установится в TRUE в момент запуска контроллера, на время одного рабочего цикла. Такой вариант можно использовать для выполнения инициализации программы. Детектор падающего фронта обозначается F_TRIG и изображается аналогично R_TRIG (Рис. 5.3). Если входное значение CLK изменяется с TRUE на FALSE, то выходное значение Q устанавливается в TRUE на время одного рабочего цикла. В остальное время выходное значение детектора падающего фронта равно FALSE (Рис. 5.5). CLK Q Рис. 5.5. Временная диаграмма детектора падающего фронта 5.3. Счетчики К счетчикам относится счетчик вверх, счетчик вниз и реверсивный счетчик. Счетчик вверх обозначается CTU (Рис. 5.6). Рис. 5.6. Счетчик вверх Входные значения CU и RESET должны быть логического типа BOOL, а входное значение PV должно быть битового или целочисленного типа. Счетчик вверх имеет выходное значение Q логического типа BOOL, а также выходное значение CV, тип которого равен типу входного значения PV. Поведение счетчика различается для разных систем программирования контроллеров. В первом варианте, если входное значение CU равно TRUE, то значение CV увеличивается на единицу в каждом рабочем цикле. При этом счетчик подсчитывает число ра- 24 бочих циклов, в которых входное значение CU было равно TRUE. Данный вариант реализован в системе ISaGRAF. Во втором варианте, значение CV увеличивается на единицу только при изменении входного значения CU с FALSE на TRUE. При этом счетчик подсчитывает число входных импульсов на входе CU. Данный вариант реализован в системе CoDeSys. В обоих вариантах, если значение CV больше или равно значения PV, то значение Q равно TRUE. Если значение CV меньше, чем значение PV, то значение Q равно FALSE. Значение CV не меняется, если входное значение CU равно FALSE. Если на входе RESET значение TRUE, то CV становится равным нулю. Если требуется поведение как во втором варианте, а используется система с первым вариантом, то перед входом CU надо добавить детектор возрастающего фронта R_TRIG (Рис. 5.7). Рис. 5.7. Счет числа импульсов Счетчик вниз обозначается CTD (Рис. 5.8). Рис. 5.8. Счетчик вниз Входные значения CD и LOAD должны быть логического типа BOOL, а входное значение PV должно быть битового или целочисленного типа. Счетчик вниз имеет выходное значение Q логического типа BOOL, а также выходное значение CV, тип которого равен типу входного значения PV. Поведение счетчика различается для разных систем программирования контроллеров. В первом варианте, если входное значение CD равно TRUE, то значение CV уменьшается на единицу в каждом рабочем цикле. Данный вариант реализован в системе ISaGRAF. Во втором варианте, значение CV уменьшается на единицу только при изменении входного значения CD с FALSE на TRUE. Данный вариант реализован в системе CoDeSys. В обоих вариантах, если значение CV меньше или равно нулю, то значение Q равно TRUE. Если значение CV больше нуля, то значение Q равно FALSE. Значение CV не меняется, если входное значение CD равно FALSE. В некоторых системах программирования контроллеров (например, CoDeSys), значение CV не уменьшается, если оно равно нулю. То есть, CV не может стать отрицательным. Если на входе LOAD значение TRUE, то CV становится равным PV. Если требуется поведение как во втором варианте, а используется система с первым вариантом, то перед входом CD надо добавить детектор возрастающего фронта R_TRIG, аналогично как для блока CTU (Рис. 5.7). Реверсивный счетчик вниз обозначается CTUD (Рис. 5.9). 25 Рис. 5.9. Реверсивный счетчик Входные значения CU, CD, RESET и LOAD должны быть логического типа BOOL, а входное значение PV должно быть битового или целочисленного типа. Реверсивный счетчик имеет выходные значения QU и QD логического типа BOOL, а также выходное значение CV, тип которого равен типу входного значения PV. Поведение счетчика различается для разных систем программирования контроллеров. В первом варианте, если входное значение CU равно TRUE, то значение CV увеличивается на единицу в каждом рабочем цикле. В свою очередь, если входное значение CD равно TRUE, то значение CV уменьшается на единицу в каждом рабочем цикле. Данный вариант реализован в системе ISaGRAF. Во втором варианте, значение CV увеличивается на единицу при изменении входного значения CU с FALSE на TRUE. В свою очередь, значение CV уменьшается на единицу при изменении входного значения CD с FALSE на TRUE. Данный вариант реализован в системе CoDeSys. В обоих вариантах, если значение CV больше или равно значения PV, то значение QU равно TRUE. Если значение CV меньше, чем значение PV, то значение QU равно FALSE. Если значение CV меньше или равно нулю, то значение QD равно TRUE. Если значение CV больше нуля, то значение QD равно FALSE. Значение CV не меняется, если входные значения CU и CD оба равны FALSE или оба равны TRUE. В некоторых системах программирования контроллеров (например, CoDeSys), значение CV не уменьшается, если оно равно нулю. То есть, CV не может стать отрицательным. Если на входе RESET значение TRUE, то CV становится равным нулю. Если на входе LOAD значение TRUE, а на входе RESET значение FALSE то CV становится равным PV. Если требуется поведение как во втором варианте, а используется система с первым вариантом, то перед входами CU и CD надо добавить детекторы возрастающего фронта R_TRIG, аналогично как для блока CTU (Рис. 5.7). 5.4. Таймеры К таймерам относится таймер с задержкой включения, таймер с задержкой выключения и импульсный таймер. Входное значение IN должно быть логического типа BOOL, а входное значение PT должно быть типа TIME. Таймеры имеют выходное значение Q логического типа BOOL, а также выходное значение ET типа TIME. Таймер с задержкой включения обозначается TON (Рис. 5.10). Рис. 5.10. Таймер с задержкой включения Таймер работает следующим образом (Рис. 5.11). 26 PT IN ET Q PT PT Рис. 5.11. Временная диаграмма таймера с задержкой включения Если входное значение IN равно FALSE, то значение ET равно нулю, а значение Q равно FALSE. При изменении входного значения IN с FALSE на TRUE, на выходе ET начинает отсчитываться время. Как только значение ET станет равно значению PT, значение ET перестанет изменяться, а выходное значение Q станет равно TRUE. Если входное значение IN станет равно FALSE, пока ET меньше PT, то ET станет равно нулю, а Q останется равным FALSE. Таймер с задержкой выключения обозначается TOF и изображается аналогично TON (Рис. 5.10). Таймер работает следующим образом (Рис. 5.12). PT PT IN ET Q PT PT PT Рис. 5.12. Временная диаграмма таймера с задержкой выключения Если входное значение IN равно TRUE, то значение ET равно нулю, а значение Q равно TRUE. При изменении входного значения IN с TRUE на FALSE, на выходе ET начинает отсчитываться время. Как только значение ET станет равно значению PT, значение ET перестанет изменяться, а выходное значение Q станет равно FALSE. Если входное значение IN станет равно TRUE, пока ET меньше PT, то ET станет равно нулю, а Q останется равным TRUE. Импульсный таймер обозначается TP и изображается аналогично TON (Рис. 5.10). Таймер работает следующим образом (Рис. 5.13). 27 PT PT PT IN ET Q PT PT PT Рис. 5.13. Временная диаграмма импульсного таймера Если значение выхода ET равно нулю (при этом Q будет равно FALSE), то при изменении входного значения IN с FALSE на TRUE, на выходе ET начинает отсчитываться время, а выходное значение Q становится равным TRUE. Как только значение ET станет равно значению PT, значение ET перестанет изменяться, а выходное значение Q станет равно FALSE. Если входное значение IN равно FALSE, а ET равно PT (при этом Q будет равно FALSE), то ET становится равным нулю. Между ET и Q существует следующая зависимость. Если ET равно нулю или ET равно PT, то Q равно FALSE. В противном случае, Q равно TRUE. Контрольные вопросы 1. Чем отличается RS-триггер от SR-триггера? 2. Перечислите стандартные функциональные блоки для детектирования фронта (обозначение, название и что они делают). 3. Перечислите стандартные функциональные блоки счетчиков (обозначение, название и что они делают) 4. Перечислите стандартные функциональные блоки таймеров (обозначение, название и что они делают). 6. ЯЗЫК РЕЛЕЙНЫХ ДИАГРАММ (LD) Язык релейных или релейно-контактных схем (РКС) – графический язык, реализующий структуры электрических цепей. Лучше всего LD подходит для построения логических переключателей, но достаточно легко можно создавать и сложные цепи - как в FBD. Кроме того, LD достаточно удобен для управления другими компонентами POU. Диаграмма LD состоит из ряда цепей. Слева и справа схема ограничена вертикальными линиями - шинами питания. Между ними расположены цепи, образованные контактами и обмотками реле, по аналогии с обычными электронными цепями. Слева любая цепь начинается набором контактов, которые посылают слева направо состояние "ON" или "OFF", соответствующие логическим значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если переменная имеет значение ИСТИНА, то состояние передается через контакт. Иначе правое соединение получает значение выключено ("OFF"). Контакты обозначаются двумя параллельными линиями и могут иметь состояния "ON" или "OFF". Эти состояния соответствуют значениям ИСТИНА или ЛОЖЬ. Каждому 28 контакту соответствует логическая переменная. Если значение переменной ИСТИНА, то контакт замкнут. Контакты могут быть соединены параллельно, тогда соединение передает состояние "ON", когда хотя бы одна из ветвей передает "ON". Это означает операцию логического «ИЛИ». Если контакты соединены последовательно, то для того, чтобы соединение передало "ON", необходимо, чтобы оба контакта передавали "ON". Это означает операцию логического «И». Контакт может быть инвертируемым. Такой контакт обозначается с помощью символа |/| и передает состояние "ON", если значение переменной ЛОЖЬ. В правой части схемы может находиться любое количество обмоток (реле), которые обозначаются круглыми скобками (). Они могут соединяться только параллельно. Обмотка передает значение соединения слева направо и копирует его в соответствующую логическую переменную. В целом цепь может быть либо замкнутой (ON), либо разомкнутой (OFF). Это как раз и отражается на обмотке и соответственно на логической переменной обмотки (ИСТИНА/ЛОЖЬ). Обмотки также могут быть инверсными (в примере - %QX3.0). Если обмотка инверсная (обозначается символом (/)), тогда в соответствующую логическую переменную копируется инверсное значение. Кроме контактов и обмоток, в LD можно использовать функциональные блоки и программы. Они должны иметь логические вход и выход и могут использоваться так же, как контакты. Обмотки могут быть с «самофиксацией» типов SET и RESET. Обмотки типа SET обозначаются буквой "S" внутри круглых скобок (S). Если соответствующая этой обмотке переменная принимает значение ИСТИНА, то она навсегда (до сброса R) сохраняет его. Обмотки типа RESET обозначаются буквой R. Если соответствующая переменная принимает значение ЛОЖЬ, то она навсегда (до установки S) сохраняет его. При работе с LD, с помощью контакта можно управлять другими POU. Такой POU может быть оператором, функцией, программой или функциональным блоком, который имеет добавочный вход, обозначаемый EN. Вход EN всегда логического типа, и POU выполняется, только когда значение EN=ИСТИНА. POU встраивается в схему параллельно обмоткам, и вход EN соединяется ответвлением. Использование таких POU делает LD схему похожей на FBD схему. 1. 2. 3. 4. Контрольные вопросы Перечислите основные элементы языка LD. Как называется вертикальная линия слева и справа от схемы? Какую логическую операцию осуществляет параллельное соединение контактов? Какую логическую операцию осуществляет последовательное соединение контактов? 7. ЯЗЫК СТРУКТУРИРОВАННОГО ТЕКСТА (ST) Язык структурированного текста ST представляет собой набор инструкций высокого уровня, которые могут использоваться в условных операторах ("IF…THEN…ELSE") и в циклах (WHILE…DO). Он основан на языке Паскаль. Пример: IF value < 7 THEN WHILE value < 8 DO value:=value+1; END_WHILE; END_IF; 29 Выражение – это конструкция, возвращающая определенное значение после его вычисления. Выражение состоит из операторов и операндов. Операндом может быть константа, переменная, функциональный блок или другое выражение. Вычисление выражений выполняется согласно правилам приоритета. Оператор с самым высоким приоритетом выполняется первым, оператор с более низким приоритетом – вторым и т.д., пока не будут выполнены все операторы. Операторы с одинаковым приоритетом выполняются слева направо. В следующей таблице приведен список ST операторов, расположенных в порядке приоритета. Операция Обозначение Приоритет Выражение в скобках (Выражение) Самый высокий Имя функции (список параметВызов функции ров) Возведение в степень EXPT Замена знаков Числовое дополнение NOT Умножение * Деление / Абсолютная величина MOD Сложение + Вычитание Сравнение < , > ,<=, >= Неравенство <> Равенство = Логическое И AND Логическое исключающее ИЛИ XOR Логическое ИЛИ OR Самый низкий Оператор присваивания. Перед оператором присваивания находится операнд (переменная или адрес), которому присваивается значение выражения, стоящего после оператора присваивания. Пример: Var1: = Var2 * 10; После выполнения этой операции Var1 принимает значение в десять раз большее, чем Var2. Функциональный блок вызывается с помощью имени экземпляра функционального блока и списка входных параметров с присваиванием данных в круглых скобках. В следующем примере вызывается таймер с параметрами IN и PT. Значение выходной переменной Q присваивается переменной А. К выходной переменной, как и в IL, можно обратиться с помощью имени экземпляра функционального блока, точки, следующей за ним и имени выходной переменной: CMD_TMR (IN: = %IX5, PT: = 300); A: =CMD_TMR.Q Инструкция RETURN позволяет выйти из POU, например, в зависимости от условия. Используя инструкцию IF, можно проверить условие, и в зависимости от этого условия выполнить какие-либо действия. Синтаксис: 30 IF THEN ELSIF THEN … ELSIF THEN ELSE } END_IF; Если возвращает истину, тогда выполняется. В противном случае будут выполняться остальные логические выражения одно за другим, пока одно из них не возвратит истину. Тогда выполняются инструкции, стоящие после этого логического выражения до следующего ELSIF или ELSE. Если все логические выражения ложны, то выполняются инструкции, стоящие после ELSE. Пример: IF temp < 17 THEN heating_on: = TRUE; ELSE heating_on: = FALSE; END_IF В этом примере нагревание (heating) включается, когда температура опустится ниже 17 º градусов, иначе оно останется выключенным. C помощью инструкции CASE можно нескольким различным значениям целочисленной переменной сопоставить различные инструкции. Синтаксис: CASE OF : : : : ... : ELSE END_CASE; Инструкция CASE выполняется согласно следующим правилам: Если переменная имеет значение , то выполняется инструкция . Если не принимает ни одного из указанных значений, то выполняется . Чтобы одна и та же инструкция выполнялась при различных значениях переменной , необходимо перечислить эти значения через запятую. Чтобы одна и та же инструкция выполнялась для целого диапазона значений, необходимо указать начальное и конечное значения, разделенные двумя точками. Пример: CASE INT1 OF 1, 5: BOOL1 : = TRUE; BOOL3 : = FALSE; 31 2: ВОOL2 : = FALSE; BOOL3 : = TRUE; 10. 20: BOOL1: = TRUE; BOOL3:= TRUE; ELSE BOOL1 := NOT BOOL1; BOOL2 := BOOL1 OR BOOL2; END_CASE; С помощью оператора цикла FOR можно программировать повторяющиеся процессы. Синтаксис: INT_Var :INT; FOR := TO {BY } DO END_FOR Часть конструкции, заключенная в фигурные скобки, не обязательна. выполняются, пока счетчик не больше . Это условие проверяется перед выполнением , поэтому раздел не выполняется, если больше . Всякий раз, когда выполняются , значение , увеличивается на . может принимать любое целое значение. По умолчанию шаг устанавливается равным 1. Пример: FOR Counter: =1 TO 5 BY 1 DO Var1: =Var1*2; END_FOR; Erg:=Var1; В этом примере предполагается, что начальное значение Var1 равно 1. После выполнения цикла эта переменная будет равна 32. Замечание: : не должно быть равно предельному значению счетчика . Например, если счетчик является переменной типа SINT и равно 127, то цикл становится бесконечным. Цикл WHILE может использоваться, как и цикл FOR, с тем лишь различием, что условие выхода определяется логическим выражением. Это означает, цикл выполняется, пока верно заданное условие. Синтаксис: WHILE END_WHILE Раздел выполняется циклически до тех пор, пока дает TRUE. Если равно FALSE уже при первой итерации, то раздел не будет выполнен ни разу. Если никогда не примет значение FALSE, то раздел будет выполняться бесконечно. Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значение входящей в условие переменной обязательно должно изменяться. Например, путем инкремента или декремента счетчика. Пример: WHILE counter<>0 DO 32 Var1: = Var1*2; сounter := сounter-1; END_WHILE Цикл REPEAT отличается от цикла WHILE тем, что первая проверка условия выхода из цикла осуществляется, когда цикл уже выполнился 1 раз. Это означает, что независимо от условия выхода цикл выполняется хотя бы один раз. Синтаксис: REPEAT UNTIL END_REPEAT Раздел выполняется циклически до тех пор, пока дает TRUE. Если равно FALSE уже при первой итерации, то раздел не будет выполнен один раз. Если никогда не примет значение FALSE, то раздел будет выполняться бесконечно. Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значение входящей в условие переменной обязательно должно изменяться. Например, путем инкремента или декремента счетчика. Если EXIT встречается в циклах FOR, WHILE, REPEAT, то цикл заканчивает свою работу независимо от значения условия выхода. 1. 2. 3. 4. Контрольные вопросы На основе какого известного языка программирования создан язык ST? Для чего используется оператор IF в языке ST? Перечислите операторы циклов в языке ST. Для чего предназначено ключевое слово EXIT в языке ST? 8. ЯЗЫК СПИСКА ИНСТРУКЦИЙ (IL) Язык IL (Instruction list) дословно – список инструкций. Он основан на языке Ассемблер. Каждая инструкция начинается с новой строки и содержит оператор и, в зависимости от типа операции, один и более операндов, разделенных запятыми. Перед операндом может находиться метка, заканчивающаяся двоеточием. Комментарий должен быть последним элементом в строке. Между инструкциями могут находиться пустые строки. Пример: LD 17 ST lint (* комментарий*) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: В IL можно использовать следующие операторы и модификаторы: Модификаторы: Модификатор С Инструкция JMP, CAL, RET Действие инструкция выполняется только тогда, когда результат аккумулятора TRUE 33 N JMPC,CALC, RETC N в других случаях инструкция выполняется тогда, когда результат аккумулятора FALSE отрицание операнда Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами: Оператор LD ST Модификатор N N S R AND OR XOR ADD SUB MUL DIV GT GE QE NE LE LT JMP CAL RET ) N,( N,( N,( ( ( ( ( ( ( ( ( ( ( CN CN CN Значение Присвоение аккумулятору значения оператора Присвоение значения аккумулятора операнду Присвоить логическому операнду значение ИСТИНА, если значение аккумулятора ИСТИНА Присвоить логическому операнду значение ЛОЖЬ Побитное И Побитное ИЛИ Побитное исключающее ИЛИ Сложение Вычитание Умножение Деление > >= = <> <= < Переход к метке Вызов функционального блока Выход из POU и возврат в вызывающую программу. Вычисление задержанной операции Пример IL программы с использованием некоторых модификаторов: LD TRUE (*загрузить значение ИСТИНА в аккумулятор*) AND BOOL1 (*выполнить И с инверсным значением переменной BOOL1*) JMPC mark (*если значение аккумулятора ИСТИНА, то перейти к метке" mark"*) LDN BOOL2 (*сохранить инверсное значение BOOL2 в аккумуляторе*) ST ERG (*сохранить значение аккумулятора в ERG*) После оператора можно поставить скобки, тогда значение выражения внутри скобок рассматривается как операнд. Например: LD 2 MUL 2 ADD 3 ST ERG Здесь значение ERG равно 7. Если поставить скобки, то порядок вычислений изменится: 34 LD 2 MUL ( 2 ADD 3 ) ST ERG Теперь значение переменной ERG равно 10. Операция MUL выполняется только тогда, когда программа доходит до ")". В качестве операнда MUL использует значение 5. 1. 2. 3. 4. 5. Контрольные вопросы На основе какого известного языка создан язык IL? Какой оператор используется для выполнения сложения? Какой оператор используется для выполнения вычитания? Какой оператор используется для выполнения умножения? Какой оператор используется для выполнения деления? 9. ЯЗЫК ПОСЛЕДОВАТЕЛЬНЫХ ФУНКЦИОНАЛЬНЫХ СХЕМ (SFC) 9.1. Основные элементы языка SFC Рис. 9.1. Программа на языке SFC 35 Графический язык последовательных функциональных схем (Sequential Function Charts) предназначен для написания программ последовательного управления технологическим процессом. Он основан на сетях Петри, описанных Карлом Петри в 1962 году. На Рис. 9.1 приведен пример простой программы на языке SFC. Основными элементами языка SFC являются шаги (Step), соединенные между собой через переходы (Trans). Шаги изображаются в виде прямоугольников с названием шага. Переходы изображаются в виде короткой горизонтальной черты. Между двумя последовательными шагами должен присутствовать переход и притом только один. С каждым переходом связано условие. Условие перехода может быть записано в виде логической переменной (в приведенном примере это W и G), логического выражения (в приведенном примере это Y<=2, Y>2, W AND X) или функции, возвращающей логическое значение (в приведенном примере это Stop(X)). Каждый шаг находится либо в активном состоянии, либо в неактивном состоянии. Рассмотрим, каким образом происходит смена активностей шагов. Рис. 9.2. Смена активностей шагов Пусть шаг Step2 активен и выполнено условие перехода Trans1 (Рис. 9.2). Тогда шаг Step3 становится активным, а шаг Step2 неактивным. Такой процесс называется переходом от шага Step2 к шагу Step3. В программе на языке SFC всегда должен быть начальный шаг Init, который активен при запуске контроллера. Такой шаг обозначается двойной рамкой (Рис. 9.1). Как и в других графических языках ПЛК, программа выполняется слева направо, сверху вниз. При необходимости, можно после условия перехода осуществить прыжок (Jump) к любому шагу. Такой прыжок изображается в виде стрелки вправо, под которой указано имя шага, к которому осуществляется переход. Внизу на Рис. 9.1 показан такой переход от условия G к шагу Init. Подобный переход должен всегда присутствовать, иначе будет неопределенно поведение программы после выполнения условия G. Для каждого шага определена логическая переменная «Имя шага».X. Данная переменная принимает значение TRUE если шаг активен и FALSE если шаг не активен. Также, для каждого шага определена переменная типа TIME «Имя шага».T. Данная переменная содержит время, прошедшее с момента активации шага. Когда шаг становится активным, она сбрасывается в ноль. Пока шаг не активен, переменная сохраняет свое последнее значение. 9.2. Действия и их классификаторы С каждым шагом нужно связать одно или несколько действий (Action). Действие – это подпрограмма на одном из пяти стандартных языков программирования ПЛК, в том числе и на языке SFC. Действие может быть связано с несколькими шагами. Для связи шагов и действий применяются классификаторы. Классификатор определяет влияние ак- 36 тивности шага на выполнение действия. Символ классификатора указывается слева от названия действия (Рис. 9.3). Рис. 9.3. Классификаторы действия В языке SFC определены следующие классификаторы: N – несохраняемое действие. Действие выполнятся в каждом рабочем цикле, пока шаг активен. Это наиболее часто используемый вариант. Активность шага Выполнение действия Рис. 9.4. N – несохраняемое действие P – импульс. Действие выполняется один раз, когда связанный с ним шаг становится активен. Активность шага Выполнение действия Рис. 9.5. P – импульс S – сохраняемое действие. Действие начинает выполняться в каждом рабочем цикле, как только шаг становится активным. Действие продолжает выполняться и после того, как шаг становится неактивным. Действие прекратит выполняться, как только станет активным шаг, в котором это же действие присутствует с классификатором R. Активность шага Выполнение действия Рис. 9.6. S – сохраняемое действие R – сброс действия. Действие прекращает свое выполнение, как только шаг станет активным. Активность шага Выполнение действия 37 Рис. 9.7. R – сброс действия L – ограниченное по времени. Действие начинает выполняться в каждом рабочем цикле, как только шаг становится активным. Действие прекратит выполняться, либо через заданное время T, либо если шаг станет неактивным. Если продолжительность активности шага меньше чем T, то действие выполняться не будет. Активность шага Выполнение действия T T Рис. 9.8. L – ограниченное по времени SL – сохраняемое и ограниченное по времени. Действие начинает выполняться в каждом рабочем цикле, как только шаг становится активным. Действие продолжит выполняться в каждом рабочем цикле, даже если шаг станет неактивным. Действие прекратит выполняться через заданное время T. Также действие прекратит свое выполнение, как только станет активным шаг, в котором это же действие присутствует с классификатором R. Активность шага Выполнение действия T T Рис. 9.9. SL – сохраняемое и ограниченное по времени D – отложенное. Действие начинает выполняться в каждом рабочем цикле, через заданное время T после активации шага. Действие прекратит выполняться, если шаг станет неактивным. Если продолжительность активности шага меньше чем T, то действие выполняться не будет. Активность шага Выполнение действия T T Рис. 9.10. D – отложенное DS – отложенное сохраняемое. Действие начинает выполняться в каждом рабочем цикле, через заданное время T после активации шага, если шаг еще активен. Если продолжительность активности шага меньше чем T, то действие выполняться не будет. Действие прекратит свое выполнение, как только станет активным шаг, в котором это же действие присутствует с классификатором R. 38 Активность шага Выполнение действия T T Рис. 9.11. DS – отложенное сохраняемое SD – сохраняемое отложенное. Действие начинает выполняться в каждом рабочем цикле, через заданное время T после активации шага, даже если шаг уже не активен. Действие прекратит свое выполнение, как только станет активным шаг, в котором это же действие присутствует с классификатором R. Активность шага Выполнение действия T Рис. 9.12. SD – сохраняемое отложенное В классификаторах, где используется время T, оно задается в виде константы типа TIME. Следует отметить, что во многих системах программирования ПЛК, например в CoDeSys, в процессе деактивации действие выполняется еще один раз. В том числе и действие с классификатором P. 9.3. Параллельные ветви В языке SFC можно использовать параллельное ветвление. Начало параллельных ветвей обозначается горизонтальной двойной чертой. Перед этой чертой должно располагаться условие перехода. Рассмотрим, каким образом осуществляется переход к параллельным ветвям (Рис. 9.13). Если шаг Step2 активен и выполнено условие перехода Trans2, то шаги Step3, Step4 и Step5 становятся активными, а шаг Step2 становится неактивным. Затем ветви выполняются параллельно друг другу. В действительности, действия в рабочем цикле выполняются не одновременно, а слева направо, сверху вниз. Окончание параллельного ветвления происходит следующим образом. Если одновременно активны шаги Step6, Step7 и Step8, а также выполнено условие перехода Trans6, то шаг Step9 становится активными, а шаги Step6, Step7 и Step8 становятся неактивными. 39 Рис. 9.13. Параллельные ветви 9.4. Альтернативные ветви В языке SFC можно использовать альтернативное ветвление. Начало альтернативных ветвей обозначается горизонтальной одинарной чертой. Под этой чертой для каждой ветви должно располагаться свое условие перехода. Желательно, чтобы условия переходов для ветвей были взаимоисключающими. В противном случае, порядок перехода стандартом языков программирования контроллеров не определен. В CoDeSys будет осуществлен ближайший слева переход, для которого условие выполнено. В других системах программирования контролеров может быть подругому. Но в любом случае, станет активным шаг только одной ветви. Рассмотрим, каким образом осуществляется переход к альтернативным ветвям (Рис. 9.13). Если шаг Step2 активен и выполнено условие перехода Trans3, то шаг Step3 становится активным, если выполнено условие перехода Trans4, то шаг Step4 становится активным, а если выполнено условие перехода Trans5, то шаг Step5 становится активным. Во всех перечисленных случаях шаг Step2 становится неактивным. Затем последовательно выполняются шаги одной из ветвей, с учетом стандартных правил выполнения перехода от шага к шагу. Окончание альтернативного ветвления происходит следующим образом. Если одновременно активен шаг Step6 и выполнено условие перехода Trans9, либо активен шаг Step7 и выполнено условие перехода Trans10, либо активен шаг Step8 и выполнено условие перехода Trans11, то шаг Step9 становится активными, а шаги Step6, Step7 и Step8 становятся неактивными. 40 Рис. 9.14. Альтернативные ветви Альтернативные ветви могут содержать в себе другие параллельные и альтернативные ветви. В свою очередь, параллельные ветви также могут содержать в себе как параллельные, так и альтернативные ветви. 1. 2. 3. 4. 5. Контрольные вопросы Перечислите основные элементы языка SFC. Что такое начальный шаг Init? Как он изображается? Что такое переменная «Имя шага».T в языке SFC? С какой черты начинаются параллельные ветви в языке SFC? С какой черты начинаются альтернативные ветви в языке SFC? 41 ЗАКЛЮЧЕНИЕ Электронное учебное пособие по дисциплине «Компьютерная и микропроцессорная техника в электроприводе» разработано в соответствии с федеральным государственным образовательным стандартом по уровню бакалавриата направления подготовки «Электроэнергетика и электротехника». В электронном учебном пособии содержится теоретический материал для самостоятельного изучения дисциплины по всем разделам и темам, предусмотренным рабочей программой. Приведены контрольные вопросы по каждому разделу дисциплины. В пособии рассмотрена компьютерная и микропроцессорная техника, используемая в электроприводе, а также методы программирования систем управления электроприводом. В результате изучения электронного учебного пособия студенты должны освоить компетенцию ПК-3 «Способен принимать участие в проектировании объектов профессиональной деятельности в соответствии с техническим заданием и нормативнотехнической документацией, соблюдая различные технические, энергоэффективные и экологические требования». Результатом обучения по дисциплине должны стать знания средств компьютерной и микропроцессорной техники, способов подключения датчиков и исполнительных устройств, языков программирования контроллеров, используемых в системах управления электроприводом. Содержание данного электронного учебного пособия соответствует рабочей программе дисциплины и основано на материалах отечественных и зарубежных исследований, включая современные публикации. 42 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Парр Э. Программируемые контроллеры. Руководство для инженера / Э. Парр; пер. с англ. – 3-е изд. — М.: БИНОМ Библиотека знаний, 2009. — 516 с. 2. Петров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного программирования / И.В. Петров; под ред. проф. В.П. Дьяконова. — М.: СОЛОН-Пресс, 2004. — 256 с. 3. Деменков Н. П. Языки программирования промышленных контроллеров / Н. П. Деменков, под ред. К. А. Пупкова ; Моск. гос. техн. ун-т им. Н. Э. Баумана. — М. : Изд-во МГТУ им. Н.Э. Баумана, 2004. — 167 с. 4. Пшихопов В. Х. Программирование промышленных контроллеров / М.Ю. Медведев, В.Х. Пшихопов. — СПб. : Лань, 2011 — 288 с. 5. Прошин Д.И. Автоматизированная обработка информации в системах управления технологическими процессами / Д. И. Прошин — Пенза: ПензГТУ, 2012. — 113 с. 6. Смирнов Ю.А. Технические средства автоматизации и управления / Ю. А. Смирнов — СПб. : Лань, 2017. — 476 с. 7. Муханин Л.Г. Схемотехника измерительных устройств / Л. Г. Муханин — СПб. : Лань, 2017. — 284 с. 8. Документация на программное обеспечение CoDeSys и примеры его использования [Электронный ресурс] — Режим доступа: http://www.codesys.ru, свободный. 9. Документация на программное обеспечение LOGO!Soft Comfort и примеры его использования [Электронный ресурс] — Режим доступа: http://w3.siemens.com/mcms/programmable-logic-controller/en/logic-modulelogo/Pages/Default.aspx, свободный. 10. Программирование логических контроллеров [Электронный ресурс] — Режим доступа: http://plc24.ru, свободный.
«Компьютерная и микропроцессорная техника в электроприводе» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 55 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot