Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Програмиров контролеров.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
17.53 Mб
Скачать

2.2 Программирование на языке функционально – блоковых диаграмм фбд (fbd)

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

  • что,

  • в какой последовательности и

  • какими средствами (применением усилителей, преобразователей формы кривой: интеграторов или дифференциаторов, счётчиков, временных компонентов и т. д.)

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

Язык ФБД – это набор программно реализованных блоков, каждый из которых предназначен для выполнения какой – то определённой функции по преобразованию сигнала. Если подобрать достаточное количество функционально подходящих блоков и соединить их между собой соответствующим образом, получится программа работы контроллера. Что характерно: и в реальной схеме, и в программе на ФБД по линиям соединения узлов (блоков) можно проследить от начала и до самого конца всю последовательность преобразования сигнала. В программе, написанной на языке РКС, этого не удастся сделать.

Чтобы пояснить сам принцип программирования на ФБД, обратимся к простому примеру. Общеизвестен принцип измерения частоты следования импульсов. Если измеряемая частота мала ( период колебаний Tх относительно продолжителен), то удобно подсчитать число импульсов N известной частоты fсч = 1 / Tсч, которые проходят на вход счётчика за время полупериода измеряемой частоты (рис.2.9,а). Из простых и очевидных соотношений понятен механизм пересчёта результатов в значения измеряемой частоты: fх =1 / Tх ; Tх / 2 = N×Tсч ; Tх = 2N × Tсч; f х =1 / (2N × Tсч) .

Если измеряемая частота сигнала высокая (период короткий), этот способ измерения применить «один в один», т.е. без поправки на изменившиеся условия, вряд ли получится: при малой длительности измеряемого периода Tх частота импульсов заполнения должна быть неприемлемо высокой. Поэтому поступают иначе: формируют интервал наблюдения заранее известной длительности Tи и заполняют его импульсами измеряемой частоты fх (рис. 2.9,б). Так как Tи = M × Tх , то fх = 1 / Tх = M / Tи . Принципы измерения в обоих случаях очень похожи. Меняется лишь содержание того, что чем заполняется: специально сгенерированными импульсами fсч измеряемый интервал Tх, как в первом случае, или формируемый интервал наблюдения Tи импульсами измеряемой частоты fх , как на рис.2.9,б.

Рис. 2.9

Пример программирования на языке фбд

Задача: средствами языка ФБД запрограммировать получение интервала наблюдения длительностью 10 секунд. Следует предусмотреть один дискретный вход для активизации программы и два дискретных выхода для получения отметок времени со сдвигом на полпериода друг относительно друга.

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

Входным сигналом (диагр.1) программа запускается. Формируемая непрерывная последовательность импульсов (диагр.2) поступает на счётчик (диагр.3). Временные параметры генерируемых импульсов (2) и устанавливаемый коэффициент счёта счётчика должны допускать настраиваемость программы на получение интервала наблюдения 10 секунд.

После достижения установленного коэффициента счёта надо предусмотреть мероприятия для сброса счётчика в исходное состояние. Здесь могут оказаться полезными функции укорочения импульсов, задержки появления сигнала, чтобы можно было разнести по времени действия сигналы счёта и сброса (диагр.4 и 5). Выходные сигналы (диагр.6 и 7) выдаются в виде инвертированных импульсов. Их форма кривой получается путём преобразования, похожего на деление частоты импульсов (диагр.4) вдвое с помощью элемента, работающего как D – триггер. Если формирование интервала наблюдения выполнять в соответствии с рис. 2.10, то на языке ФБД в среде α – Programming это могло бы быть представлено как на рис. 2.11. Очень легко устанавливается соответствие между временными диаграммами и программой. На каждой строке диаграмм справа проставлены номера выходных сигналов блоков, на которых эти сигналы получены.

Рис. 2.10

При включении I 01 начинает генерировать импульсы блок FLICKER. В окне описания блока заданы длительности импульса ON и паузы OFF между ними, каждая из которых равна 100ms. При таком задании период равен 200 ms, что соответствует частоте 5 Гц, т.е. получению 5 импульсов в секунду. Чтобы обеспечить общую длительность интервала 10 секунд, в счётчик COUNTER надо ввести коэффициент счёта 50. Все эти вводимые величины показаны на вкладках, представляющих собой фрагменты окон описания блоков FLICKER и COUNTER.

Рис.2.11

Пока счётчик не закончил очередной счёт, его выходной сигнал B 02 имеет уровень OFF, и для того, чтобы начать формирование выходного импульса, начиная с первого полупериода, установка триггера (B 03) осуществляется через инвертор (B 04). Выходной сигнал R - S триггера (B 03) делится по частоте вдвое элементом ALT (B 07), представляющим собой аналог D – триггера. Блоки задержки (B 05) и «дифференцирования» (B 06) применены для сброса счётчика в нулевое состояние.

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

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

Рис.2.12

По сравнению с рис.2.11 в полях задания длительностей импульса и паузы блока FLICKER вместо единиц введены коэффициенты 100. После умножения их на 100ms = 0,1s получаются длительности импульса и паузы как раз равными требуемым 10 секундам. В этом варианте экономится объём занимаемой памяти, программа просто выглядит, легко читается.

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