Упростить блок

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Упростить блок

#1

Сообщение Oleg_UA » 31.03.2017{, 02:47}

Блок служить для управления LED освещение но в связи с большим их количеством стал вопрос с перегрузом памяти контролера, может кто подскажет как уменьшить его размер без изменения принципа работы.
Вложения
PWM_trig-CODE-.ubi
(73.99 КБ) 50 скачиваний

Pixima
Рядовой
Сообщения: 68
Зарегистрирован: 30.01.2016{, 11:51}
Репутация: 0

Упростить блок

#2

Сообщение Pixima » 31.03.2017{, 13:38}

Oleg_UA, расскажите, пожалуйста, про функционал блока. По выходам блока как-то непонятно. Случайно не для WS2812?

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#3

Сообщение Boroda » 31.03.2017{, 14:22}

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 байт. 

Pixima
Рядовой
Сообщения: 68
Зарегистрирован: 30.01.2016{, 11:51}
Репутация: 0

Упростить блок

#4

Сообщение Pixima » 31.03.2017{, 14:33}

Boroda, подскажите, пожалуйста, возможно ли на базе флпрог создание модуля для управления WS2812?
p.s. Прошу прощения у Oleg_UA, что влезаю в Ваш топик.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#5

Сообщение Boroda » 31.03.2017{, 14:53}

Pixima, где-то видел скетчи управления, но т.к. вещь это ОЧЕНЬ быстрая (управляющие сигналы 0,4/0,8us), то без библиотеки тут никак. Можно попробовать раскурить библиотеку Adafruit_NeoPixel.h, время будет, посмотрю, что можно сделать.

Но что-то на нашем форуме уже имеется: http://forum.flprogwiki.ru/viewtopic.php?f=10&t=1147

Pixima
Рядовой
Сообщения: 68
Зарегистрирован: 30.01.2016{, 11:51}
Репутация: 0

Упростить блок

#6

Сообщение Pixima » 31.03.2017{, 15:30}

Boroda, не зря у Вас такое звание. Большое спасибо!

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Упростить блок

#7

Сообщение Oleg_UA » 31.03.2017{, 18:18}

Pixima писал(а):расскажите, пожалуйста, про функционал блока. По выходам блока как-то непонятно. Случайно не для WS2812?
Функционал прост: этот блок управляет яркостью свечения одноцветной ленты, проще говоря димер с плавным включением, выключением и круговой регулировкой для подстройки яркости.
Названия входов и выходов говорят сами за себя
WS2812 это совсем другое :).
Boroda писал(а):это самый маленький блок в Вашем проекте. Сильной экономии при оптимизации получить будет сложно.
Задача контроллера только управлять светодиодными лентами с помощью выключателей и команд полученных от других контроллеров, загвоздка в количестве одинаковых блоков и уменьшив даже на 10%уже будет хорошо.

Первое условие дописывал уже в процессе использования и как то даже не додумался так менять направление
Спасибо за подсказку, буду шаманить дальше может что и получится урезать.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#8

Сообщение Boroda » 01.04.2017{, 01:47}

Oleg_UA, поставьте блок PWM_function в проект 1 раз, и все блоки PWM_trig замените. Должно работать, если я нигде не ошибся.

del

П.С. код получился почти такой же...
Последний раз редактировалось Boroda 01.04.2017{, 03:12}, всего редактировалось 1 раз.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#9

Сообщение Boroda » 01.04.2017{, 03:23}

А вот в FBD лучше получилось.

Четыре блока на плате:
1. исходник 3502/139байт
2. с отдельной функцией 3356/153байт
3. FBD 2954/162байт
Вложения
Test_PWMtrig.rar
(158.58 КБ) 38 скачиваний
Последний раз редактировалось Boroda 01.04.2017{, 11:44}, всего редактировалось 1 раз.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Упростить блок

#10

Сообщение Oleg_UA » 01.04.2017{, 15:09}

Boroda, Большое спасибо за помощь, буду разбираться и пробовать:) 
 Мне ещё нужно получше разобраться с последовательность в FLprog, вроде и просто но не всё выходить без блоков с кодом.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#11

Сообщение Boroda » 01.04.2017{, 19:34}

Самому нравится на СИ, потому как последовательность действий сразу образуется. А коробочки чуть передвинешь и логика сразу ломается. Но до оптимизатора FBD, который реализован в FLProg, мне не угнаться.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Упростить блок

#12

Сообщение Oleg_UA » 01.04.2017{, 20:02}

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

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Упростить блок

#13

Сообщение Boroda » 01.04.2017{, 20:32}

Oleg_UA писал(а):Проекту до совершенства конечно далеко
Да вполне себе функционально и довольно стабильно. Не хватает конечно последовательности выполнения блоков как в CodeSys "по ходу сигнала". Но если это реализовать, то объем используемой оперативки увеличится очень прилично.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Упростить блок

#14

Сообщение Oleg_UA » 01.04.2017{, 23:18}

Boroda писал(а):Да вполне себе функционально и довольно стабильно
Пару версий назад стабильность хромала, сейчас совсем другое дело хоть и тормозит жутко.
Москва тоже не сразу строилась так и FLprog тоже со временем автор отточит.
CodeSys хоть и тоже частично визуальный но для работы с ним нужно иметь больше чем минимум знаний а здесь даже школьник может сотворить "чудо" не зная языка.
Работа над программой уже проделана не малая но нет предела совершенству  
Отвлеклись от темы пора завязывать, ещё раз спасибо за помощь

Ответить

Вернуться в «Спросить у знатоков»