Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Создание общей архиектуры алгоритма управления #49

Open
SergNikitin opened this issue May 14, 2014 · 4 comments

Comments

@SergNikitin
Copy link
Member

Первоначально запланировали следующую концепцую:

Управление осуществляется по определённому главному событию - прерыванию энкодера. Для удобочитаемости и простоты поддержания кода все составляющие, необходимые для формирования адекватного управления, выносим в отдельные модули.

У каждого модуля есть единый для всех модулей интерфейс запуска своего специализированного обработчика (например, run() ). Обработчики берут необходимые им данные из глобальных переменных (например, state) и, если на выходе генерируют данные, необходимые другим модулям, кладут их в глобальные же переменные.

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

Таким образом получаем возможность легко включать, отключать и переключать необходимые на данный момент модули. И код не свален в одну кучу.

Для увеличения быстродействия обработчики модулей делаем inline

@SergNikitin
Copy link
Member Author

Описанная структура приведет к синхронной работе системы, чего мы не хотим по причинам быстродействия. В прерывании энкодера будем считать угол и скорость, как критичные по быстродействию части системы, а остальное (типа угла коммутации) - в других местах (main или другие прерывания)

@akindyakov
Copy link
Member

Бурно посовещавшись пришли вот к чему:
soft_arch

@akindyakov
Copy link
Member

control_algo : api:

  • nextStep();
  • prevStep();
  • getLogicStep();
  • getStepsPerRotation();

@akindyakov
Copy link
Member

Переименовываю control_interrupt.o to synchronized_control.o

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants