FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Четверг, 17.08.2017, 00:49
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Упростить блок (Нужно уменьшить размер блока)
Упростить блок
Oleg_UA Дата: Пятница, 31.03.2017, 02:47 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 4
Репутация: 3
Статус: Offline
Блок служить для управления LED освещение но в связи с большим их количеством стал вопрос с перегрузом памяти контролера, может кто подскажет как уменьшить его размер без изменения принципа работы.
Прикрепления: PWM_trig-CODE-.ubi(74Kb)
 
Pixima Дата: Пятница, 31.03.2017, 13:38 | Сообщение # 2
Сержант
Группа: Проверенные
Сообщений: 59
Награды: 3
Репутация: 1
Статус: Offline
Oleg_UA, расскажите, пожалуйста, про функционал блока. По выходам блока как-то непонятно. Случайно не для WS2812?
 
Boroda Дата: Пятница, 31.03.2017, 14:22 | Сообщение # 3
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
Oleg_UA, как я понимаю, это самый маленький блок в Вашем проекте. Сильной экономии при оптимизации получить будет сложно.

Добавлено (31.03.2017, 14:22)
---------------------------------------------
Компилятор сам довольно хорошо оптимизирует:

Было 2 блока условий:
if ((circle)&&(! cycle_last )) // смена направления при первом нажатие
{aaaaaa}

и

if (circle) // запуск кругового цикла
{bbbbbb}

Оптимизировал так.

if (circle) // запуск кругового цикла
{
    if (! cycle_last ) // смена направления при первом нажатие
    {aaaaaa}
bbbbbb.
}

С точки зрения языков неСИ (бейсик, паскаль и т.п.), да и вообще по логике, такая оптимизация должна приводить к уменьшению размера кода, потому как делается 2 сравнения, вместо трех. Но Wiring-компилятор это что-то... Код в итоге увеличился с 1448, до 1500 байт.  biggrin

 
Pixima Дата: Пятница, 31.03.2017, 14:33 | Сообщение # 4
Сержант
Группа: Проверенные
Сообщений: 59
Награды: 3
Репутация: 1
Статус: Offline
Boroda, подскажите, пожалуйста, возможно ли на базе флпрог создание модуля для управления WS2812?
p.s. Прошу прощения у Oleg_UA, что влезаю в Ваш топик.
 
Boroda Дата: Пятница, 31.03.2017, 14:53 | Сообщение # 5
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
Pixima, где-то видел скетчи управления, но т.к. вещь это ОЧЕНЬ быстрая (управляющие сигналы 0,4/0,8us), то без библиотеки тут никак. Можно попробовать раскурить библиотеку Adafruit_NeoPixel.h, время будет, посмотрю, что можно сделать.

Но что-то на нашем форуме уже имеется: http://flprog.ru/forum/10-1147-18019-16-1485963720
 
Pixima Дата: Пятница, 31.03.2017, 15:30 | Сообщение # 6
Сержант
Группа: Проверенные
Сообщений: 59
Награды: 3
Репутация: 1
Статус: Offline
Boroda, не зря у Вас такое звание. Большое спасибо!
 
Oleg_UA Дата: Пятница, 31.03.2017, 18:18 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 4
Репутация: 3
Статус: Offline
Цитата Pixima ()
расскажите, пожалуйста, про функционал блока. По выходам блока как-то непонятно. Случайно не для WS2812?
Функционал прост: этот блок управляет яркостью свечения одноцветной ленты, проще говоря димер с плавным включением, выключением и круговой регулировкой для подстройки яркости.
Названия входов и выходов говорят сами за себя smile
WS2812 это совсем другое :).
Цитата Boroda ()
это самый маленький блок в Вашем проекте. Сильной экономии при оптимизации получить будет сложно.
Задача контроллера только управлять светодиодными лентами с помощью выключателей и команд полученных от других контроллеров, загвоздка в количестве одинаковых блоков и уменьшив даже на 10%уже будет хорошо.

Первое условие дописывал уже в процессе использования и как то даже не додумался так менять направление smile
Спасибо за подсказку, буду шаманить дальше может что и получится урезать.
 
Boroda Дата: Суббота, 01.04.2017, 01:47 | Сообщение # 8
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
Oleg_UA, поставьте блок PWM_function в проект 1 раз, и все блоки PWM_trig замените. Должно работать, если я нигде не ошибся.

del

П.С. код получился почти такой же...


Сообщение отредактировал Boroda - Суббота, 01.04.2017, 03:12
 
Boroda Дата: Суббота, 01.04.2017, 03:23 | Сообщение # 9
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
А вот в FBD лучше получилось.

Четыре блока на плате:
1. исходник 3502/139байт
2. с отдельной функцией 3356/153байт
3. FBD 2954/162байт
Прикрепления: Test_PWMtrig.rar(159Kb)


Сообщение отредактировал Boroda - Суббота, 01.04.2017, 11:44
 
Oleg_UA Дата: Суббота, 01.04.2017, 15:09 | Сообщение # 10
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 4
Репутация: 3
Статус: Offline
Boroda, Большое спасибо за помощь, буду разбираться и пробовать:) 
 Мне ещё нужно получше разобраться с последовательность в FLprog, вроде и просто но не всё выходить без блоков с кодом.
 
Boroda Дата: Суббота, 01.04.2017, 19:34 | Сообщение # 11
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
Самому нравится на СИ, потому как последовательность действий сразу образуется. А коробочки чуть передвинешь и логика сразу ломается. Но до оптимизатора FBD, который реализован в FLProg, мне не угнаться.
 
Oleg_UA Дата: Суббота, 01.04.2017, 20:02 | Сообщение # 12
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 4
Репутация: 3
Статус: Offline
Вот и я путаюсь с этими "коробочками"  smile  но когда проект громадный то тут уже визуальная среда выигрывает в скоросте редактирование. Проекту до совершенства конечно далеко но он стоит всех усилий а автор вообще молочага respect
 
Boroda Дата: Суббота, 01.04.2017, 20:32 | Сообщение # 13
Генерал-лейтенант
Группа: Проверенные
Сообщений: 793
Награды: 36
Репутация: 36
Статус: Offline
Цитата Oleg_UA ()
Проекту до совершенства конечно далеко
Да вполне себе функционально и довольно стабильно. Не хватает конечно последовательности выполнения блоков как в CodeSys "по ходу сигнала". Но если это реализовать, то объем используемой оперативки увеличится очень прилично.
 
Oleg_UA Дата: Суббота, 01.04.2017, 23:18 | Сообщение # 14
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 4
Репутация: 3
Статус: Offline
Цитата Boroda ()
Да вполне себе функционально и довольно стабильно
Пару версий назад стабильность хромала, сейчас совсем другое дело хоть и тормозит жутко.
Москва тоже не сразу строилась так и FLprog тоже со временем автор отточит.
CodeSys хоть и тоже частично визуальный но для работы с ним нужно иметь больше чем минимум знаний а здесь даже школьник может сотворить "чудо" не зная языка.
Работа над программой уже проделана не малая но нет предела совершенству biggrin 
Отвлеклись от темы пора завязывать, ещё раз спасибо за помощь ok
 
Форум » Основной » Спросить у знатоков » Упростить блок (Нужно уменьшить размер блока)
Страница 1 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика