Материал: 2142

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Спользующие синтаксис языка ST.

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

б А Д И

Рисунок 23. Решение на языке ST задачи об автоматическом управлении включением света

31

Если скомпилировать и запустить две этих программы, результат их работы будет абсолютно одинаков.

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

функц ональных локов с языком ST.

б А Д И

Рисунок 24. Экран с программой на языке ST при подключенном к системе контроллере и запущенной программе

32

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

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

б А Д И

33

Лабораторная работа №4 ПРОГРАММНЫЕЕДИНИЦЫ: ФУНКЦИИ, ПРОГРАММЫИФУНКЦИОНАЛЬНЫЕБЛОКИ, СОЗДАНИЕ СТРУКТУРЫПРИЛОЖЕНИЯ

Структура приложений в среде «CoDeSys»

Цель работы: научиться работать со сложными проектами и использовать POU для х структурирования.

Чем больше объем текста программы, тем труднее понять, как

он работает. Потребность в структурировании появилась сразу же, как

С

только

появляться о ъемные программные проекты. Так появи-

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

торые называются POU – program organization unit – блок для органи-

стали

зации программы. POU ывают трех типов – функции, функциональные блоки программы.

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

Функциональные блоки фактически являются объединением программного кода и группы входных и выходных переменных. Переменные функционального блока не теряют свои значения всё время исполнения программы. У функционального блока может быть несколько входных и несколько выходных параметровИ. Он объявляется как переменная, при этом название POU фактически является «типом» функционального блока, а имена переменных, объявленных с этим типом являются именами экземпляров данного типа функционального блока; у каждого экземпляра свой набор значений переменных, к ним можно обращаться из программы, обозначая сначала имя блока, а далее, через точку, имя внутренней переменной блока. Функциональные блоки были уже использованы ранее, например счетчик CT1 типа CTUD (см. рисунок 22). Также, обращение к переменным функционального блока можно увидеть в тексте программы на рисун-

ке 23.

34

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

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

У программы нет входов и выходов, все переменные программы системы– ее внутренн е. Для обмена данными между программами в проекте

CoDeSys можно создавать глобальные переменные.

Прбмер проектирования структуры приложения

и его реализации

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

Задача. С четырех конвейеров с ненамного отличающейся скоростью сходят подшипники. Различие в скорости обусловлено особенностями конвейеров. ПодшипникиДодинакового качества, с одинаковыми характеристиками. Задача – подсчитать их все. Концевой выключатель для фиксации прохождения подшипника через определенное сечение конвейера имеется на каждом конвейере. Также подшипники на конвейере могут выбраковываться. Это происходит до места их подсчета, при этом подшипник снимаетсяИс конвейера, его место ничем не занимается. Требуется написать программу, моделирующую конвейер с выбраковкой и осуществляющую подсчет подшипников.

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

35