реклама на сайте
подробности

 
 
> Сложные программы
Буратино
сообщение Jan 4 2017, 06:47
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215



Доброго времени! Всех с НГ! sm.gif

Занимаюсь созданием приборов с микроконтроллерным управлением. Ничего эдакого, как говорит ЛИ "автоматизация курятников". Из последнего у меня получилось 32К на Си. Освоил и пользуюсь методами из теории конечных автоматов. Сообщения, таймеры много канальные программные.
Однако новые требования заказчиков, косяки в архитектуре ПО и некоторые другие факторы вынуждали меня что то править, что то и вовсе переписывать. Это вылилось в трудно модифицируемую систему с костылями и тп хренью.
С нового года я работаю над еще более сложным прибором и понимаю, что так как было делать нельзя. Смотрю в сторону объектно ориентированных принципов построения ПО, а также подумываю над идеями из теории ОС.
Как вы решали свои задачи, что можете посоветовать посмотреть-почитать? Спасибо!


--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
syoma
сообщение Jan 5 2017, 11:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



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

Что касается архитектуры ПО для системы управления, то у меня сложилась следующая архитектура, которую я реализовал не в одном успешном проекте:
К основным модулям данной архитектуры относятся: I/O менеджер, управляющй процесс, менеджер коммуникаций, логгер.

Задачей I/O менеджера является абстрагирование железа от остального ПО. Т.е он должен преобразовывать сигналы, получаемые от физических интерфейсов во внутренние "виртуальные" сигналы, которые затем будут использоваться управляющим процессом и менеджером коммуникаций. Под сигналами я понимаю состояния входов, измерения, команды на включение чего либо, статусные сигналы и т.д. Т.е смысл I/O менеджера в том, чтобы остальному ПО было наплевать откуда появляется нужный сигнал и куда он уходит. Сегодня это может быть пин А, завтра пин B, а послезавтра пин на слейве в Modbus RTU или SPI - все это должно конфигурироваться на данном уровне и только на нем. Также тут можно делать простые действия над сигналами - инвертировать, масштабировать. Неплохой функцией является возможность "подменить" значение какого либо сигнала на свое во время исполнения программы, чтобы упростить отладку. I/O менеджер должен работать в жестком реальном времени, с теми же циклами, что и управляющий процесс, поэтому важно его оптимизировать, чтобы он не занимал много процессорного времени.

Управляющий процесс - это сердце вашей системы. Он исполняет все управляющие алгоритмы, которые нужны в данной задаче - автоматы состояний, алгоритмы управления теплицей, курятником, турбиной и пр. Благодаря I/O менеджеру все выходы и входы управляющего процесса будут внутренними переменными, следовательно вы легко сможете изменять свои алгоритмы без необходимости изменять весь проект. Также это значительно упрощает повторное использование алгоритмов и функций, так как они становятся аппаратно-независимыми. Еще раз, важно - никакой непосредственной связи с железом в управляющем процессе. Управляющий процесс опять же исполняется в реальном времени в связке с I/O менеджером. Возможно иметь несколько управлящих циклов, работющие в многозадачном шедулере - самые быстрые с временем исполнения <1мс - например для различных защит, основные 10-100мс - где исполняются основные алгоритмы, медленные 100мс-1с - выборы режимов работы.

Управлящий процесс и I/O менеджер - это два модуля, работающих в реальном времени. Менеджер коммуникаций - уже нет. Его задачей является предоставление доступа различным нереалтаймовым интерфейсам типа HMI, HTTP , файловой систеы к виртуальным переменным I/O менеджера. Это собственно Scada интерфейс.

Логгер - подсистема, взаимодействующая с I/O менеджером и служащая для постоянной записи изменеий всех или выборочных виртуальных сигналов в лог-файл для следующей диагностики.

Приведенная архитектура возможно слегка сумбурна, так как по определенным соображениям не могу привести картинки - спрашивайте, если что не понятно. Как ее реализовывать - это уже дело каждого. Например ПЛК реализуют почти все из этой архитектуры, но на МК возможно вы на чем-то сэкономите. В простых системах все можно сделать даже без ОС, но в более сложных она понадобится. В самых высокопроизводительных системах, как у нас, вообще используется мультипроцессорная архитектура, а I/O менеджер частично реализован на ПЛИС.
Для разработки и отладки управляющего процесса при использовании данной архитектуры идеально подходит т.н. Модельно-ориентированный подход, реализованный, например, на Matlab/Sumulink. Тогда вы сможете сконцентрироваться на решении задачи, а не ее программировании. А все остальное за вас сделает программа, включая генерацию кода.
I/O менеджер в простейшем случае будет представлять shared memory, где хранятся различные переменные. А к этой памяти уже обращаются и драйверы и управляющий процесс. В сложных системах со многими сигналами это уже будет что-то наподобии быстрой базы данных.
Конечно, 8-и битник для всего этого слегка слабоват, так как такая архитектура имеет серьезный оверхед, но начиная с простого АРМ 32-х битника она уже легко позволяет получать циклы в 10мс на сотне-другой I/O сигналов.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 6 2017, 08:10
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(syoma @ Jan 5 2017, 14:12) *
Буратино, я думаю, что ваша проблема в том,...

Вот это все было бы хорошо оформить в виде статьи!
Пусть она будет небольшая, но тем не менее...
Прямо так и начать: "В конференции шло обсуждение... И мое мнение таково..."
И к нам, в КиТ...
Что скажете?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Буратино   Сложные программы   Jan 4 2017, 06:47
- - AlexandrY   Цитата(Буратино @ Jan 4 2017, 08:47) Как ...   Jan 4 2017, 08:36
|- - Make_Pic   Цитата(AlexandrY @ Jan 4 2017, 12:36) ......   Jan 4 2017, 09:04
||- - AlexandrY   Цитата(Make_Pic @ Jan 4 2017, 11:04) Ужас...   Jan 4 2017, 12:28
||- - mantech   Цитата(AlexandrY @ Jan 4 2017, 15:28) Но ...   Jan 4 2017, 20:29
|- - zltigo   Цитата(AlexandrY @ Jan 4 2017, 10:36) И т...   Jan 4 2017, 09:32
|- - haker_fox   QUOTE (AlexandrY @ Jan 4 2017, 16:36) Вся...   Jan 5 2017, 10:06
- - gte   Цитата(Буратино @ Jan 4 2017, 09:47) Зани...   Jan 4 2017, 09:48
|- - k155la3   Цитата(gte @ Jan 4 2017, 12:48) . . . . ...   Jan 4 2017, 10:16
|- - jcxz   Цитата(gte @ Jan 4 2017, 12:48) Кроме тог...   Jan 4 2017, 14:08
|- - яман-тау   Цитата(jcxz @ Jan 4 2017, 19:08) ... но к...   Jan 4 2017, 14:14
|- - Огурцов   си шарп и микрофреймворк   Jan 4 2017, 14:59
||- - alexunder   Цитата(Огурцов @ Jan 4 2017, 15:59) си ша...   Jan 4 2017, 15:46
||- - Огурцов   Цитата(alexunder @ Jan 4 2017, 16:46) авт...   Jan 4 2017, 17:42
|- - jcxz   Цитата(яман-тау @ Jan 4 2017, 17:14)...   Jan 4 2017, 15:19
|- - яман-тау   Цитата(jcxz @ Jan 4 2017, 20:19) Например...   Jan 4 2017, 16:02
|- - AlexandrY   Цитата(яман-тау @ Jan 4 2017, 18:02)...   Jan 4 2017, 16:51
|- - яман-тау   Цитата(AlexandrY @ Jan 4 2017, 21:51) Мож...   Jan 4 2017, 17:06
|- - mantech   Цитата(яман-тау @ Jan 4 2017, 20:06)...   Jan 4 2017, 20:25
|- - jcxz   Цитата(mantech @ Jan 4 2017, 23:22) Повез...   Jan 4 2017, 20:26
|- - mantech   Цитата(jcxz @ Jan 4 2017, 23:26) Сколько ...   Jan 4 2017, 20:32
|- - zltigo   Цитата(jcxz @ Jan 4 2017, 22:26) Сколько ...   Jan 4 2017, 22:56
- - Буратино   нет, готовые RTOS меня не интересуют. Я работаю с ...   Jan 4 2017, 09:49
|- - Onkel   Цитата(Буратино @ Jan 4 2017, 12:49) .......   Jan 4 2017, 12:38
- - яман-тау   Если проектируемая система единична зачем городить...   Jan 4 2017, 13:28
- - dm37   Занимался как раз задачами автоматизации птичника ...   Jan 4 2017, 16:17
- - dm37   ЦитатаМожет что нибудь предложить? Какой ПЛК самый...   Jan 4 2017, 17:33
- - Буратино   В этой теме речь не идет о пром контроллерах, арма...   Jan 4 2017, 19:11
|- - AlexandrY   Цитата(Буратино @ Jan 4 2017, 21:11) В эт...   Jan 4 2017, 21:26
|- - Огурцов   Цитата(Буратино @ Jan 4 2017, 20:11) В эт...   Jan 5 2017, 09:15
|- - Буратино   Цитата(Огурцов @ Jan 5 2017, 13:15) тогда...   Jan 6 2017, 07:38
|- - syoma   Цитата(Буратино @ Jan 6 2017, 09:38) Чего...   Jan 6 2017, 08:52
|- - Огурцов   Цитата(Буратино @ Jan 6 2017, 07:38) Я с ...   Jan 7 2017, 19:37
|- - desh   Цитата(Буратино @ Jan 6 2017, 10:38) Чего...   Jan 7 2017, 21:04
||- - syoma   Цитата(desh @ Jan 7 2017, 23:04) Присмотр...   Jan 7 2017, 22:36
|- - Укушенный воблой   Цитата(Буратино @ Jan 6 2017, 07:38) меня...   Jan 8 2017, 13:27
|- - Огурцов   Цитата(Укушенный воблой @ Jan 8 2017, 14...   Jan 8 2017, 14:04
|- - gerber   Цитата(Укушенный воблой @ Jan 8 2017, 16...   Jan 8 2017, 14:28
- - dm37   С++ для микроконтроллеров. в первую очередь эта с...   Jan 4 2017, 19:24
- - dm37   ЦитатаЕсли ПЛК не может работать в 24\7 - это...   Jan 4 2017, 20:30
- - dm37   ЦитатаА насколько сложные программы вам удается пи...   Jan 5 2017, 06:46
- - k155la3   Цитата(Буратино @ Jan 4 2017, 23:11) . . ...   Jan 5 2017, 07:22
- - Буратино   Спасибо за ответы. Немного почитал о ОС. Мне точн...   Jan 5 2017, 07:40
|- - k155la3   Цитата(Буратино @ Jan 5 2017, 11:40) . . ...   Jan 5 2017, 07:59
|- - AlexandrY   Цитата(Буратино @ Jan 5 2017, 09:40) Еще ...   Jan 5 2017, 10:16
|- - haker_fox   QUOTE (AlexandrY @ Jan 5 2017, 18:16) Cor...   Jan 5 2017, 13:03
|- - jcxz   Цитата(haker_fox @ Jan 5 2017, 16:03) Ну,...   Jan 6 2017, 07:52
- - Буратино   компилятора!? о_О   Jan 5 2017, 08:07
|- - k155la3   Цитата(Буратино @ Jan 5 2017, 12:07) комп...   Jan 5 2017, 08:12
- - Drozd2   Protothreads в помощь   Jan 5 2017, 09:40
|- - k155la3   Цитата(Drozd2 @ Jan 5 2017, 13:40) Protot...   Jan 5 2017, 10:03
|- - jcxz   Цитата(k155la3 @ Jan 5 2017, 13:03) Это н...   Jan 5 2017, 11:19
|- - AlexandrY   Цитата(iosifk @ Jan 6 2017, 10:10) Вот эт...   Jan 6 2017, 09:02
|- - iosifk   Цитата(AlexandrY @ Jan 6 2017, 12:02) Не ...   Jan 6 2017, 09:13
||- - HardEgor   Цитата(iosifk @ Jan 6 2017, 16:13) А для ...   Jan 6 2017, 13:35
||- - iosifk   Цитата(HardEgor @ Jan 6 2017, 16:35) Упс,...   Jan 6 2017, 15:15
|- - zltigo   Цитата(AlexandrY @ Jan 6 2017, 11:02) Нын...   Jan 6 2017, 09:19
|- - iosifk   Цитата(zltigo @ Jan 6 2017, 12:19) Слова,...   Jan 6 2017, 09:25
- - Drozd2   Цитатаназываются "кооперативные" ? Чтоб ...   Jan 5 2017, 11:41
- - ViKo   Писать надо туда, где больше заработаешь. А I/O м...   Jan 6 2017, 09:11
|- - syoma   Цитата(ViKo @ Jan 6 2017, 12:11) А I/O ме...   Jan 6 2017, 09:49
|- - AlexandrY   Цитата(syoma @ Jan 6 2017, 11:49) о I/O м...   Jan 6 2017, 10:25
||- - syoma   Цитата(AlexandrY @ Jan 6 2017, 12:25) Eth...   Jan 6 2017, 14:57
||- - AlexandrY   Цитата(syoma @ Jan 6 2017, 16:57) Alexand...   Jan 7 2017, 19:05
||- - syoma   Цитата(AlexandrY @ Jan 7 2017, 22:05) А в...   Jan 8 2017, 09:11
|- - Укушенный воблой   Цитата(syoma @ Jan 6 2017, 10:49) В одном...   Jan 6 2017, 11:42
|- - ViKo   Цитата(Укушенный воблой @ Jan 6 2017, 14...   Jan 6 2017, 12:47
|- - Укушенный воблой   Цитата(ViKo @ Jan 6 2017, 13:47) Универса...   Jan 6 2017, 13:45
- - dm37   "Буратино", всё таки предложу ещё раз по...   Jan 6 2017, 12:26
- - aiwa   Цитата(Укушенный воблой @ Jan 6 2017, 11...   Jan 6 2017, 13:02
|- - zltigo   Цитата(aiwa @ Jan 6 2017, 15:02) Недостат...   Jan 6 2017, 14:31
- - haker_fox   QUOTE (jcxz @ Jan 6 2017, 15:52) "Чт...   Jan 6 2017, 13:04
|- - jcxz   Цитата(haker_fox @ Jan 6 2017, 16:04) Я д...   Jan 6 2017, 15:31
- - TSerg   Сложные программы.. Угу, посмотрел бы я на любител...   Jan 7 2017, 23:11
|- - BackEnd   Цитата(TSerg @ Jan 7 2017, 23:11) Угу, по...   Jan 8 2017, 04:16
|- - agregat   Цитата(BackEnd @ Jan 8 2017, 07:16) Ну оз...   Jan 8 2017, 10:26
|- - syoma   Цитата(agregat @ Jan 8 2017, 12:26) Я мож...   Jan 8 2017, 11:11
- - Буратино   Огурцов, не хамите. Я в этом деле первый после Бог...   Jan 8 2017, 08:27
|- - Огурцов   Цитата(Буратино @ Jan 8 2017, 09:27) Огур...   Jan 8 2017, 10:07
- - BackEnd   Цитата(Буратино @ Jan 4 2017, 06:47) Смот...   Jan 8 2017, 08:57
- - -SANYCH-   ЦитатаА автору советую взять AT91SAM7 установить н...   Jan 8 2017, 11:32
|- - AlexandrY   Цитата(-SANYCH- @ Jan 8 2017, 13...   Jan 8 2017, 12:24
- - Буратино   Огурцов, сори, но Вы не в теме. Просто не понимает...   Jan 8 2017, 12:34
|- - HardEgor   Цитата(Буратино @ Jan 8 2017, 19:34) еще ...   Jan 8 2017, 17:01
- - SlavaV   Буратино, лично моё мнение, все Ваши проблемы реш...   Jan 8 2017, 13:45
|- - Буратино   Цитата(SlavaV @ Jan 8 2017, 17:45) Бурати...   Jan 8 2017, 14:04
- - SlavaV   У Вас название темы "Сложные программы" ...   Jan 8 2017, 14:14
- - Укушенный воблой   А вообще, ИМХО, топикстартер просто не специалист ...   Jan 8 2017, 14:47
- - Буратино   детский сад.   Jan 8 2017, 15:32
- - aiwa   Цитата(Буратино @ Jan 8 2017, 14:34) Есте...   Jan 8 2017, 17:45
- - Эдди   Как по мне, так ртось как раз и надо бритвой Оккам...   Jan 8 2017, 18:44
- - TSerg   Для меня и Windows NT - тоже RTOS.   Jan 8 2017, 18:47
5 страниц V   1 2 3 > » 


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 17:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01517 секунд с 7
ELECTRONIX ©2004-2016