Пример программы fbd codesys

Поздняков, А. Г. Структура программного кода и практическое использование блока «Функциональный генератор» при программировании в среде CoDeSys / А. Г. Поздняков, В. Х. Аль-Тибби. — Текст : непосредственный // Молодой ученый. — 2014. — № 5 (64). — С. 88-93. — URL: https://moluch.ru/archive/64/10266/ (дата обращения: 03.07.2023).

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

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

CODESYS tutorial on Function Blocks Diagram (FBD) programming | linking FBD with Factory IO

Программирование большинства современных ПЛК осуществляется на языках стандарта международной электротехнической комиссии (МЭК) 61131 [2]. Стандарт содержит описание аппаратных средств, требования к мон­тажу, тестированию, документации и связи по промышленной сети. Часть 3 стандарта описывает требования к языкам программирования, всего таких языков описывается пять: IL – ассемблероподобный текстовый язык; LD – графический язык релейно-контактных схем; ST – паскалеподобный текстовый язык; FBD – графический язык функциональных блоков; SFC – графический язык последовательных функциональных схем. Для программиро­вания ПЛК не требуется знание всех пяти языков МЭК 61131-3, но выбор языка существенно влияет на способ реализации задачи.

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

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

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

CODESYS: Function Block Diagram (FBD) programming — First lesson

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

3S CoDeSys [3] это одна из самых полных и удачно реализованных сред программирования МЭК 61131-3. CoDeSys обладает набором открытых функциональных библиотек, предназначенных для решения широкого круга наиболее распространенных задач автоматизации. Одна из таких библиотек — Util.lib содержит дополнительный набор различных функций и функциональных блоков, применяемых регуляторов, генераторов и преобразований аналоговых сигналов. Рассмотрим работу функционального блока (ФБ) GEN, входящего в состав данной библиотеки среды CoDeSys v2.3. Данный блок предназначен для генерации периодически изменяющихся сигналов различных предустановленных форм: треугольный (двуполярный и однополярный), двуполярный пилообразный (нарастающий и ниспадающий), меандр, синусоида и косинусоида.

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

(*функциональный блок для генерации некоторых периодических функций*)

FUNCTION_BLOCK GEN

(*Раздел описания переменных*)

VAR_INPUT (*входной интерфейс блока*)

MODE: GEN_MODE;

(*определение типа генерируемого сигнала:

TRIANGLE — сигнал треугольной формы от отрицательного значения амплитуды до положительного значения амплитуды сигнала.

TRIANGLE_POS — сигнал треугольной формы от нуля до положительного значения амплитуды сигнала.

SAWTOOTH_RISE — пилообразный сигнал увеличивающийся от отрицательного значения амплитуды до положительного значения амплитуды сигнала.

SAWTOOTH_FALL — пилообразный сигнал увеличивающийся от положительного значения амплитуды до отрицательного значения амплитуды.

RECTANGLE — сигнал прямоугольной формы от отрицательного значения амплитуды до положительного значения амплитуды сигнала.

SINUS — синусоидальный сигнал.

COSINUS — косинусоидальный сигнал. *)

BASE: BOOL;(* FALSE: период определяется как количество вызовов функционального блока; TRUE: период определяется заданным временем *)

PERIOD: TIME:=T#1s; (*время периода сигнала, учитывается только, если BASE=TRUE*)

CYCLES: INT:=1000; (*число вызовов блока за период, учитывается только, если BASE=FALSE *)

AMPLITUDE: INT; (*амплитуда сигнала*)

RESET: BOOL; (*обнуление выхода и остановка генерации сигнала*)

VAR_OUTPUT (*выходной интерфейс блока*)

OUT: INT; (*переменная генерируемого сигнала*)

VAR (*локальные переменные функционального блока*)

CET: DINT; (*переменная, используемая для отсчета времени генерируемого сигнала (шаг дискретизации по времени)*)

PER: DINT; (*переменная, определяющая длительность периода генерируемого сигнала *)

COUNTER: INT; (*счетчик вызовов блока*)

CLOCK: TON; (*экземпляр таймера TON*)

help: REAL; (*промежуточная переменная для вычисления значения синусоидального и косинусоидального сигналов*)

(* Программный код*)

IF RESET THEN

IF BASE=FALSE THEN

Источник: moluch.ru

Руководство пользователя по программированию плк в CoDeSys 3

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 5.57 Mb.

BCD преобразования
Байт, представленный в формате BCD, содержит числа от 0 до 99. Каждый десятичный знак зани- мает 4 бита. Биты 4-7 содержат первую цифру – число десятков. Формат BCD подобен шестнадца- теричному представлению с ограничением диапазона чисел 0..99 вместо 0.. FF.
Например: Преобразуем число 51 в BCD формат. 5 — это двоичное 0101, 1 — это 0001. В результате получается байт 0101_0001.
BCD_TO_INT
Функция преобразует байт формата BCD в число типа INT.
Входной параметр функции типа BYTE и выход типа INT. Если входное значение не укладывает- ся в формат BCD, функция возвращает -1.
Примеры ST:
i:=BCD_TO_INT(73); (* Результат 49 *) k:=BCD_TO_INT(151); (*Результат 97 *)

Читайте также:
Что такое программа дозвона

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-54 l:=BCD_TO_INT(15); (* -1, потому что F0 не BCD формат*)
INT_TO_BCD
Функция преобразует INTEGER число в байт формата BCD.
Входной параметр функции типа INT и выход типа BYTE.
Если INTEGER число не может быть представлено в BCD формате, то функция возвращает значе- ние 255.
Примеры ST:
i:= INT_TO_BCD(49); (*Результат 73 *) k:=INT_TO_BCD (97); (*Результат 151 *) l:= INT_TO_BCD (100); (* Ошибка! Выход: 255 *)
Бит/байт функции
EXTRACT
Параметры функции: DWORD X и BYTE N. Выход типа BOOL, отражает значение бита N в числе
X. Биты нумеруются с 0.
Примеры ST:
FLAG:=EXTRACT(X:=81,N:=4); (* Результат: TRUE, 81 это 1010001, 4й бит 1 *)
FLAG:=EXTRACT(X:=33, N:=0); (* Результат: TRUE, 33 это 100001,бит ‘0’ это 1
*)
PACK
Функция сворачивает восемь параметров B0, B1, . B7 типа BOOL в один BYTE.
Функциональный блок UNPACK выполняет обратную распаковку.
PUTBIT
Параметры функции: DWORD X, BYTE N и BOOL B.
PUTBIT устанавливает N-й бит числа X в состояние, заданное B. Биты нумеруются с 0.
Примеры ST:
A:=38;
(* двоичное 100110 *)
B:=PUTBIT(A,4,TRUE);
(* Результат : 54 = 2#110110 *)
C:=PUTBIT(A,1,FALSE);
(* Результат : 36 = 2#100100 *)
UNPACK
UNPACK преобразует вход B типа BYTE в 8 выходов B0. B7 типа BOOL.
Обратная упаковка производится с помощью PACK.
Пример FBD:

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-55
Дополнительные математические функции
DERIVATIVE
Функциональный блок выполняет численное дифференцирование.
Аналоговый вход IN и выход OUT типа REAL. Вход TM задает время дифференцирования (как правило, в миллисекундах) имеет тип DWORD. В процессе сброса (RESET = TRUE) выход OUT равен нулю.
Алгоритм DERIVATIVE проводит аппроксимацию по четырем точкам, что снижает ошибки при наличии шума во входном сигнале.
Блок FBD:
Пример дифференцирования треугольных импульсов:
INTEGRAL
Функциональный блок выполняет численное интегрирование.
Аналоговый вход IN типа REAL. Вход TM типа DWORD задает длительность интегрирования
(как правило, в миллисекундах). Вход RESET типа BOOL запускает интегрирование при установ- ке в TRUE. Выход OUT типа REAL.
Алгоритм вычисления использует классический двухточечный метод трапеций.
Блок FBD: пример интегрирования линейной функции:

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-56
LIN_TRAFO
Данный функциональный блок (util.lib) преобразует значение переменной REAL, принадлежащее одному интервалу в пропорциональное значение, принадлежащее другому интервалу. Интервалы определяются минимальным и максимальным значением. Алгоритм преобразования опирается на следующее равенство:
(IN — IN_MIN) : (IN_MAX — IN) = (OUT — OUT_MIN) : (OUT_MAX — OUT)
Входные переменные:
Переменная
Тип
дан-
ных
Описание
IN
REAL
Входное значение
IN_MIN
REAL
Нижнее значение входного диапазона
IN_MAX
REAL
Верхнее значение входного диапазона
OUT_MIN
REAL
Нижнее значение выходного диапазона
OUT_MAX
REAL
Верхнее значение выходного диапазона
Выходные переменные:
Переменная
Тип
дан-
ных
Описание
OUT
REAL
Выходное значение
ERROR
BOOL
Признак ошибки: TRUE, если IN_MIN =
IN_MAX или если значение IN вышло за преде- лы входного диапазона
Пример использования:
Допустим, датчик температуры выдает некоторое напряжение в вольтах (вход IN). Нам необходи- мо преобразовать полученное значение в градусы по Цельсию (выход OUT). Входной диапазон (в
Вольтах) определяется пределами IN_MIN=0 и IN_MAX=10. Выходной диапазон (в градусах
Цельсия) определяется соответствующими пределами OUT_MIN=-20 и OUT_MAX=40.
Так, при входном значении 5 Вольт, мы получим на выходе 10 градусов по Цельсию.
STATISTICS_INT
Функциональный блок определяет минимальное, максимальное и среднее значения входной вели- чины.

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-57
Аналоговый вход IN типа INT. По входу RESET типа BOOL все переменные инициализируются заново. Выход MN дает минимальное, выход MX максимальное и выход AVG среднее значения входных данных IN. Все три выхода типа INT.
Блок FBD:
STATISTICS_REAL
Функциональный блок, аналогичный STATISTICS_INT. Вход IN и выходы MN, MX, AVG имеют тип REAL.
VARIANCE
Функциональный блок вычисляет дисперсию входных данных.
Вход IN типа REAL, вход RESET типа BOOL и выход OUT типа REAL. Сброс вычисления произ- водится по входу RESET=TRUE.
Среднеквадратичное отклонение может быть получено как квадратный корень VARIANCE.
Регуляторы
PD
Функциональный блок реализует ПД закон регулирования:






+
+
=
dt
t
de
TV
t
e
KP
OFFSET
Y
Y
)
(
)
(
_
где Y_OFFSET – стационарное значение, KP – коэффициент передачи, TV – постоянная диффе- ренцирования, e(t) — сигнал ошибки (SET_POINT-ACTUAL).
Входы функционального блока:
Наименование
Тип
Описание
ACTUAL
REAL
Текущее значение контролируемой переменной.
SET_POINT
REAL
Задание.
KP
REAL
Коэффициент передачи.
TV
REAL
Постоянная дифференцирования, в секундах
(
т.е. «0.5» для 500 мс).
Y_MANUAL
REAL
Определяет значение выхода Y, если MANUAL = TRUE.
Y_OFFSET
REAL
Стационарное значение Y.
Y_MIN,
Y_MAX
REAL
Значение выхода Y ограничено Y_MIN и Y_MAX. При достижении Y границ ограничения, выход LIMITS_ACTVE,
(BOOL) принимает значение TRUE. Ограничение работает только при Y_MIN Генераторы сигналов
BLINK
Функциональный блок ‘генератор прямоугольных импульсов’
Входы: ENABLE типа BOOL, TIMELOW и TIMEHIGH типа TIME. Выход OUT типа BOOL.
Генератор запускается по входу ENABLE = TRUE. Длительность импульса задается TIMEHIGH, длительность паузы TIMELOW.
При переходе ENABLE в FALSE, выход OUT остается в том состоянии, в котором он был в этот момент. Если вам необходимо чтобы выходная переменная сбрасывалась в FALSE при ENABLE равном FALSE, то используйте выражение «OUT AND ENABLE» на выходе (т.е. добавьте блок
AND на выход и на второй вход подайте ENABLE).
Пример CFC:
FREQ_MEASURE
Данный функциональный блок измеряет (усредненную) частоту (в Герцах) входного сигнала типа
BOOL. Вы можете задать количество периодов для усреднения. Под периодом понимается время между двумя передними фронтами сигнала.
Входные переменные:
Переменная
Тип данных
Описание
IN
BOOL
Входной сигнал
PERIODS
INT
Число периодов усреднения. Допустимое значение от 1 до 10.
RESET
BOOL
Сброс
Выходные переменные:
Переменная
Тип данных
Описание
OUT
REAL
Результат, частота в Герцах

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-61
VALID
BOOL
FALSE до окончания первого замера, либо период >
3*OUT (признак ошибки по входам)
GEN
Функциональный блок ‘функциональный генератор’
Входы: перечисление MODE предопределенного типа GEN_MODE, BASE типа BOOL, PERIOD типа TIME, CYCLES и AMPLITUDE типа INT и RESET типа BOOL. Выход OUT типа INT.
Вход MODE задает вид генерируемой функции. Перечисление включает следующие значения:
TRIANGLE и TRIANGLE_POS — треугольники, SAWTOOTH_RISE и SAWTOOTH_FALL – пила,
RECTANGLE – прямоугольники, SINE и COSINE – синусоиды:
TRIANGLE:
TRIANGLE_POS:
SAWTOOTH_RISE:
SAWTOOTH_FALL:
RECTANGLE:
SINUS:
COSINUS:
BASE определяет представление единиц периода по времени (BASE=TRUE) или по числу циклов, т.е. по количеству вызовов функционального блока (BASE=FALSE).
Входы PERIOD или CYCLES определяют период выходного сигнала. Вход AMPLITUDE задает амплитуду сигнала.
Сброс генератора происходит при установке RESET=TRUE.
Пример FBD:

Читайте также:
Программа для проверки авто по гос номеру на Андроид

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-62
Преобразования аналоговых сигналов
CHARCURVE
Функциональный блок осуществляет пересчет входных данных по заданной переходной функции- путем кусочно-линейной аппроксимации.
Вход IN типа INT принимает исходные данные. Вход N типа BYTE определяет количество точек задающих передаточную функцию. Передаточная функция задается массивом точек ARRAY
P[0..10], где P — это точка, определенная как структура типа POINT, состоящая из двух переменных
INT X и Y.
Выход OUT типа INT, выходные данные. Выход ERR типа BYTE, индикатор ошибки.
Точки P[0]..P[N-1] массива ARRAY должны быть отсортированы по X в порядке возрастания, в противном случае ERR получает значение 1. Если вход IN не лежит в пределах от P[0].X до P[N-
1].X, генерируется ошибка ERR=2 и выход OUT приобретает значение соответствующего предела
P[0].X или P[N-1].X.
Число N должно быть в пределах от 2 до 11, иначе возникает ошибка ERR=4.
Пример ST:
Прежде всего определим массив ARRAY P:
VAR
CHARACTERISTIC_LINE:CHARCURVE;
KL:ARRAY[0..10]
OF
POINT:=
(X:=0,Y:=0),
(X:=250,Y:=50),
(X:=500,Y:=150), (X:=750,Y:=400), 7((X:=1000,Y:=1000));
COUNTER:INT;
END_VAR
Далее вызываем CHARCURVE для линейно возрастающих значений:
COUNTER:=COUNTER+10;
CHARACTERISTIC_LINE(IN:=COUNTER,N:=5,P:=KL);
Последующая трассировка иллюстрирует полученный эффект:
RAMP_INT
Функциональный блок RAMP_INT ограничивает скорость нарастания и спада сигнала.

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-63
Три входа имеют тип INT: IN, входные данные, ASCEND и DESCEND, максимальное нарастание и спад за интервал, заданный TIMEBASE типа TIME. Установка двоичного входа RESET в TRUE вызывает сброс RAMP_INT в начальное состояние.
Выход OUT типа INT, выходные данные.
Если TIMEBASE равен t#0s, ASCEND и DESCEND задают ограничение изменения за один цикл
(вызов блока) безотносительно времени.
Пример FBD:
RAMP_REAL
RAMP_REAL аналогичен RAMP_INT, за исключением того, что входы IN, ASCEND, DESCEND и выход OUT типа REAL.
Аналоговые компараторы
HYSTERESIS
Аналоговый компаратор с гистерезисом.
Входы IN, HIGH и LOW типа INT. Выход OUT типа BOOL.
Если вход IN принимает значение, меньшее LOW, выход OUT устанавливается в TRUE. Если вход
IN принимает значение, большее HIGH, то выход равен FALSE. В пределах от LOW до HIGH зна- чение выхода не изменяется.
Пояснительная иллюстрация:
LIMITALARM
Функциональный блок, контролирует принадлежность значения входа IN заданному диапазону.
Входы LOW и HIGH задают границу диапазона..

Приложение D: Библиотеки CoDeSys
CoDeSys V2.3 10-64
Входы IN, HIGH и LOW типа INT, выходы O, U и IL типа BOOL.
Если значение на входе IN: превышает предел HIGH выход O = TRUE меньше предела LOW выход U = TRUE лежит в пределах между LOW и HIGH (включительно) выход IL = TRUE
Пример FBD:
Библиотека AnalyzationNew.lib
Данная библиотека содержит модули для анализа выражений в SFC. Если сложное выражение да- ет FALSE, то библиотека позволяет уточнить, какие компоненты условного выражения дали такой результат. Существует специальный флаг SFCErrorAnalyzationTable, механизм его работы неявно использует данные функции для анализа условий переходов.
Пример условного выражения: b OR NOT(y InputExpr : BOOL, анализируемое выражение
DoAnalyze: BOOL, TRUE запускает анализ
ExpResult: BOOL, текущее значение выражения
Функции:
AnalyzeExpression возвращает строку, содержащую компоненты выражения, дающие в итоге зна- чение FALSE. Для этого служит вспомогательная функция AppendErrorString добавляющая ком- поненты, разделенные символом «|».
Выходная строка OutString (тип STRING) содержит результат (например: y ExpressionResult , содержащая наименование, адрес, комментарий и текущее значение.
OutTable: ARRAY [0..15] OF ExpressionResult;
Например:
AnalyseExpressionCombined совмещает функции AnalyzeExpression и AnalyseExpressionTable.

Приложение E: Краткий справочник по операторам и компонентам библиотек
CoDeSys V2.3 10-66
Приложение E: Краткий справочник по операторам и
компонентам библиотек
Приведенные ниже таблицы кратко представляют операторы CoDeSys и компоненты библиотек
Standard.lib и Util.lib. Даны нотации для языков ST и IL. Для IL указаны допустимые модифика- торы.
Обратите внимание, что для IL инструкций первый операнд должен быть загружен заранее (на- пример, командой LD). Непосредственно в строке за «IL» командой вводятся второй и после- дующие (если они есть) операнды.
Столбец «Мод.» содержит допустимые IL модификаторы:
C
Команда выполняется только в случае, если результат предыдущей операции TRUE.

Источник: topuch.com

Создание пользовательского функционального блока RS-триггера в CoDeSys

Триггером называют последовательностную схему с положительной обратной связью и двумя устойчивыми состояниями 0 и 1. То есть триггер обладает свойством памяти. В общем случае триггер может иметь асинхронные входы предварительной установки (R, S), тактовый или синхронизирующий (C) и информационные входы (D). К основным типам триггеров относятся:

1) триггер с раздельной установкой состояний (RS-триггер);

2) триггер «защелка» (D — триггер);

3) универсальный триггер (JK — триггер);

4) триггер со счетным входом (T — триггер).

В данной лабораторной работе будет рассмотрен RS-триггер и его работа.

Ход работы:

1. Создание проекта в CoDeSys и исследование работы триггеров

1) Запустить среду программирования CoDeSys 2.3. Создать новый проект (File->New). Выбрать строку 3S CoDeSys SP PLCWinNT V2.4:

Рисунок 1 – Начало работы

Выбрать язык программирования CFC(Continuous Function Chart).

Исследование RS-триггера

RS-триггер (или SR-триггер) — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы. Подача единицы на вход S – устанавливает выход Q в единицу (TRUE). Подача единицы на вход R – сбрасывает выход Q в ноль (FALSE). Одновременная подача единицы на оба входа запрещена.

Рисунок 2 – Условное графическое обозначение RS-триггера: S – вход установки триггера (Set); R – вход сброса триггера (Reset); Q – основной выход; Ǭ – инверсный выход.

RS-триггер может находиться в двух устойчивых состояниях. Во включенном состоянии выход Q активен, выход Ǭ неактивен. В выключенном (сброшенном) состоянии выход Q неактивен, а выход Ǭ активен.

Рисунок 3 – Временная диаграмма работы RS-триггера

Читайте также:
Установить программу дом клик

Таким образом, RS-триггер обладает памятью. Поэтому он используется как простейший элемент для хранения информации. Триггер может собран из элементарных полупроводниковых устройств – транзисторов. Из огромного числа триггеров собирается, например, микросхема статической памяти в ЭВМ. В связи с высокой скоростью работы статической памяти она используется при создании КЭШ-памяти.

Используя функциональные блоки логического «ИЛИ» (OR) собрать RS-триггер, согласно схеме:

Рисунок 4 – Логическая схема RS-триггера «2ИЛИ-НЕ»

Примечание: блок логического OR часто обозначают «1», блок логического AND обозначают «.

Набор программы на языке CFC происходит путем выбора функциональных блоков (ФБ) из библиотеки, размещения их на рабочем поле и соединения соответствующих входов-выходов.

Для вставки нового ФБ следует выбрать иконку на панели инструментов, расположенной сверху. Автоматически создастся блок AND (логическое И). Установив курсор на его имени, можно переименовать его, например в OR, при этом он автоматически превратится в блок логического ИЛИ (OR). Можно также воспользоваться помощником выбора ФБ по библиотекам (щелчок на имени ФБ, затем клавиша F2).

Инвертирование входа/выхода осуществляется значком . Соединение входов и выходов происходит прямым перетаскиванием мышью. Необходимо помнить, что соединяться могут только выход с входом.

Рисунок 5 – RS-триггер на языке CFC с применением блоков OR

Следует не забывать объявлять используемые в программе переменные. В данной работе применяется булевский тип данных BOOL.

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

Отладка программы проводится следующим образом. Установить режим эмуляции в CoDeSys (Online->Simulation mode). Запустить программу на выполнение (Online->Login, затем Online->Run). Наблюдать за работой программы. Ручное изменение значения переменных можно производить следующим образом:

— двойной щелчок на имени переменной в онлайн режиме;

— команда (Online->Force value или клавиша F7).

В онлайн режиме состояние переменных отображается цветом. Синий цвет: логическая переменная равна TRUE; черный цвет: логическая переменная равна FALSE.

Рисунок 6 – Реализация режима эмуляции

Проанализировать работу RS-триггера. Выйти из режима эмуляции, нажав Online->Logout.

Создать визуализацию работы RS-триггера в среде CoDeSys (см. пункт 2), которую при отчете лабораторной представить на проверку преподавателю.

Создание пользовательского функционального блока RS-триггера в CoDeSys

RS-триггер так же может быть собран на элементах логического «И». Создадим собственный функциональный блок «myRS», реализовав RS-триггер по схеме (c применением блоков AND):

Рисунок 7 – Схема реализации RS-триггера с применением блоков AND «2И-НЕ»

Для создания собственного функционального блока (ФБ) следует сделать щелчок правой кнопкой мыши на левой панели дерева проекта (POUs) и выбрать пункт Add object… из контекстного меню. Далее ввести имя нового ФБ: «myRS», указать тип объекта – Function Block и выбрать язык программирования – CFC. Нажать OK.

Рисунок 8 – Окно создания собственного функционального блока

Слева в дереве проекта появится новый ФБ с именем myRS и программа автоматически войдет в режим его редактирования. Этот блок может быть использован в других ФБ или программах. ФБ имеет входные (VAR_INPUT), выходные(VAR_OUTPUT) и внутренние (VAR) переменные, которые объявляются в верхнем поле редактора.

После объявления переменных следует запрограммировать тело ФБ, то есть связь между входными и выходными переменными. Желательно, чтобы имена переменных в ФБ и в главной программе были различными. Регистр букв в CoDeSys не различается.

Рисунок 9 – Программа, описывающая функциональный блок myRS

После того как ФБ создан его можно использовать в главной программе проекта (POU).

Рисунок 10 – Функциональный блок RS-триггера в главной программе проекта

Для этого следует создать новый блок и внутри него изменить имя «AND» на имя своего ФБ, в данном случае «myRS». Над блоком следует указать имя конкретного экземпляра ФБ, например «RStrig1». Также в разделе объявления переменных следует объявить: RStrig1: myRS; Дополнительно следует объявить переменные, связанные с входамивыходами ФБ. Проанализировать работу RS-триггера, построенного на элементах «И».

Визуализация в CoDeSys

Работу программы можно проверить с помощью инструмента визуализации CoDeSys. Визуализация CoDeSys – это мощный инструмент для отладки и презентации разработанной программы.

Порядок создания визуализации:

Перейти на вкладку Vizualizations на левой панели среды CoDeSys. На свободном поле нажать правой кнопкой мыши и из контекстного меню выбрать: Add Object…

Далее ввести имя нового объекта визуализации (например viz1):

Рисунок 11 – Добавление нового объекта

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

Рисунок 12 – Внешний вид палитры инструментов

Создадим визуализацию работы RS-триггера. Фрагмент программы показан в п. 1.1 методических указаний. Разместим на рабочем поле графические элементы, как показано на рисунке 13

Рисунок 13 – Визуализация RS-триггера

Используем для этого компоненты: Эллипс (Ellipse), Скругленный прямоугольник (Rounded rectangle), Button (Кнопка). Текст на кнопке, эллипсе или другом элементе вводится через меню компонента: двойное нажатие мышью на кнопке, пункт Text. Текст можно писать любой, в данном случае он соответствует именам переменных.

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

Привязка выполняется через меню компонента путем двойного нажатия мышью на компоненте. Далее в пункте меню Variables в поле Change color указывает имя переменной (можно использовать F2).

Рисунок 14 – Привязка Лампочек к логическим переменным Q и nQ

Тут же необходимо назначить цвета для активного (Alarm color) и неактивного (Color) состояния лампочки. Это делается в пункте меню Colors.

Рисунок 15 – Задание цветов для активного и неактивного состояний лампочки

Выполним привязку кнопок к управляющим переменным Set и Reset. Привязка также осуществляется через меню компонента «кнопка». В пункте Input в строке Tap Variable указывается имя переменной, на которую будет воздействовать кнопка. Управление логической переменной (например x0) в данном случае задается функцией Toggle variable. Это имитирует кнопку с фиксацией.

Рисунок 16 — Привязка кнопок к управляющим переменным Set и Reset.

1) Что такое триггер?

2) Классификация триггеров?

3) Временная диаграмма RS-триггера.

4) Принцип работы RS-триггера.

5) Визуализация в CoDeSys.

Источник: megalektsii.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru