Страница 1 из 1

Добавить Функции

Добавлено: 05.04.2016{, 09:59}
Слимпер
В некоторых вариантах реализации FBD кроме собственный функциональных блоков, существует возможность создавать функции.
Главное отличие, отсутствие собственной внутренней памяти.

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

Но  тут надо будет следить  за  использованием  внутренних переменных  и триггеров, или за тем чтобы одновременно был активен только один экземпляр функции (используя для этого вход EN)

Просмотрев как сейчас генерируется код  функциональных блоков при передачи в  Arduino IDE:
1.      Создается структура данных  для работы блока;
2.      Для каждого экземпляра ФБ создается экземпляр структурыданных ;
3.      Создается функция ;
4.      В секции loop  при вызове ФБ в функцию передается нужный экземплярструктуры данных, после обработки в эту же структуру возвращается результат.

Мне кажется для введения «Функций» достаточно будет:
--В интерфейсе  ФБ добавить еще одну галочку на подобии EN, назвав ее соответственно Функция
--А при генерации кода в случаи перевода ФБ в режим функция, генерировать только один экземпляр структуры данных и всегда его использовать.
--Добавить при активации входа EN Boolean переменную, на которой будет генерироваться импульс при активации работы блока. (этого и сейчас бывает не хватает)

P.S. Идея возникала, когда создавал набор блоков для удобного(мне) создания древовидного меню настроек с запись их в EEPROM.
Блоки написал, но их можно использовать только на Mega, да и там осторожно, так как при добавлении экземпляра занимается от 50 до 100 байтов ОЗУ, а больше одного блока в работе у
меня и не бывает.