Runtime / Микроконтроллеры AVR / Примеры FBD блоков

Добавление FBD блока
"сложение двух целых чисел".

1. Оформление блока

Следующая структура описывает оформление блока, имя файла реализации блока, количество входов/выходов блока, его внутренние свойства, текстовое краткое описание работы блока . Подробней о структуре XML файла описывающего FBD блоки.
<BLOCK NAME="ADD"      Library="FBD_add.inc" Shape="3225" Caption="+" IM="Сложение"
    Color1="$00C4FE91" Color2="$00E5925B" Gradient="2" PenColor="$00908070" PenWidth="1">
  <CONST NAME="Код"    TYPE="Byte"      DEFAULT="7"      LIST="" IM="Код блока"/>
  <IN    NAME="вход1"  TYPE="tsDiscr"   DEFAULT="65535"  LIST="" IM="Вход 1"/>
  <IN    NAME="вход2"  TYPE="tsDiscr"   DEFAULT="65535"  LIST="" IM="Вход 2"/>
  <OUT   NAME="выход"  TYPE="tsDiscr"   DEFAULT="65535"  LIST="" IM="Выход"/>
  <!--Сложение двух целых чисел:-->
  <!--     выход=вход1+вход2-->
</BLOCK>
По данному описанию Configurator построит следующий блок:
FBD блок сложение

2. Реализация блока

Блок "сложение двух целых чисел" имеет простой линейный исполнительный код функции исполнения и не имеет функции инициализации . Ниже приведена структурная схема работы данного FBD блока:
FBD функциональная схема
По данной структурной схеме построен следующий исполнительный код:
#ifndef _FBD7_
#define _FBD7_ FBD7
#message define FBD7 (ADD)__FILE__

//Размер описания FDB блока 3 байта
//1 байт- вход 1
//1 байт- вход 2
//1 байт- выход
//Оперативной памяти не требуется

FBD10_run:
//======== Читаем данные блока из файла конфигураций ========= 
 rcall Read_cfg_Load_Uz1                            ;вход 1 
 rcall Read_cfg_Load_Uz2                            ;вход 2 
//============= Логика работы FBD блока ==================
 add  Uz1L, Uz2L                                    ;сложение
 adc  Uz1L, Uz2H                                    ;сложение
//============= Сохраняем результат  ==================
 rcall Read_cfg_Save_Uz1                            ;Сохраняем результат
 ret;

FBD7:
 .db 3, 0              //Размер FBD блока, необходимая оперативная память 
 .dw FBD7_run, Init_default 
#else 
 #error redeclared FBD7 __FILE__
#endif