среда, 25 августа 2010 г.

Функциональные блоки в CX-Programmer

Сегодня разбирался с программированием функциональных блоков (FB) в CX-Programmer. До этого довелось использовать только готовые. Необходимо отметить, что можно использовать два типа блоков: созданных с использованием лестничных диаграмм (LAD) и написанных на языке высокого уровня (Structured text).
При первом запуске CX-Programmer  кажется, что можно использовать только релейно-контакторные схемы или как принято в иностранной литературе – лестничные диаграммы. Но в некоторых случаях использование релейно-контакторных схем приводит к сложным и громоздким алгоритмам. Гораздо проще все реализуется с помощью языка высокого уровня. Такая реализация пртменена при программировании функциональных блоков. В принципе можно всю программу написать в виде блоков и почти не использовать LAD.
В качестве языка программирования FB заявлен упрощенный Pascal. Во всяком случае, так написано в справке. По моему мнению этот язык больше похож на старинный БЕЙСИК.

 Выбор программирования функционального блока.

Для создания функционального блока нужно в инспекторе проекта нажать на строчку FunctionBlock, выбрать Insert Function Block, а затем нужный тип блока. После этого откроется окно состоящее из двух частей. В верхней части находится таблица описания переменных, в нижней окно текста программы. Описание переменных напоминает использование раздела Symbols для LAD. Отличие в том, что переменные необходимо описывать в обязательном порядке и их существует несколько типов:
Internal – внутренние переменные, используемые в работе блока.
Input – входные переменные, используемые для передачи информации в блок.
Output – выходные переменные.
External – стандартные переменные контроллера
В разделах Input и Output заранее прописаны переменные EN и ENO. Они используются для включения блока в схему LAD.

 Окно программирования функциональных блоков

Редактор FB в CX-Programmer не чувствителен к регистру и понимает русскоязычные символы.
После создания блока его нужно откомпилировать (Ctrl+F7) и вставить в схему путем нажатия клавиши F. Соединения выполняются только для входа EN и выхода ENO. Для всех остальных входов и выходов блока выполняется операция присваивания необходимого адреса в памяти контроллера.

 Вид функционального блока в окне LAD

Ниже приведен пример программы функционального блока, переключающего свой выход 1 через 5 изменений уровня сигнала на выходе. Если в качестве входа использовать стандартный осциллятор p_1s, то выход будет переключаться с частотой 5 Гц.

Пример программного кода: 
if FL<>aa1 then cnt:=cnt+1; end_if;
aa1:=fl;
If cnt = 5 then s3:=not(s3); cnt:=0; end_if;

1 комментарий: