FLProg — школа для Arduino. Первые уроки общения и быстрого счета

image
Вышла новая версия программы FLProg. Предыдущие посты о программе можно почитать здесь и здесь.

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

Итак, что нового.
Прежде всего, была проведена огромная работа по переделке рисования схемы. Действительно при размере схемы в 10 -15 плат отрисовка тормозила даже на мощных компьютерах. Пришлось полностью переписывать рисование в соответствии с новыми принципами.

Принцип 1 – кэшируем ВСЁ. Минимум расчетов в момент рисования. Это потянуло за собой создание переменных для кэша, поднятие дерева сообщений по цепочке объектов, и соответственно систему change-й с определением необходимости сброса тех или иных кэшей.
Принцип 2 – рисуем только то, что видим. В общем, то тривиальная задача. Но на языке Smalltalk пришлось достаточно долго поковыряться для того что бы определить видимый прямоугольник в ScroolBox-е.
Возможно, я изобрел велосипед, но это сработало. Проверка на нетбуке с Atom-ом показала, что скорость рисования никак не зависит от размера схемы.

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

Добавлен блок скоростного счетчика.
Это стандартный блок практически во всех промышленных контроллерах. Но до сих пор я не решался к нему подступиться, поскольку не очень разбирался в аппаратных прерывания контроллера. Но пользователи хотели, и пришлось копаться. Вроде получилось. Блок считает импульсы на привязанном к нему цифровом входе контроллера за заданный промежуток времени. Счет происходит по прерыванию, соответственно не зависит от остальной программы. Описание работы со счетчиком и пример применения можно посмотреть на видео ниже

Так же в соответствии с пожеланиями добавлено некоторое количество новых функциональных блоков. Блоки алгебры: Sin, Cos, Tan, Abs, Min, Max, Sq, Sqrt. Генератор случайных чисел, выделение переднего фронта. Общий обзор нововведений можно посмотреть на видео.

PS. Прошу не начинать как в прошлых постах холивар по поводу вредности языков FBD и LAD. Если Вы считаете их вселенским злом, просто закройте эту страницу. Есть люди, которые так не считают. Оставьте этот пост им.

ссылка на оригинал статьи http://habrahabr.ru/post/229021/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *