|
Сложные программы |
|
|
|
Jan 4 2017, 06:47
|

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

|
Доброго времени! Всех с НГ!  Занимаюсь созданием приборов с микроконтроллерным управлением. Ничего эдакого, как говорит ЛИ "автоматизация курятников". Из последнего у меня получилось 32К на Си. Освоил и пользуюсь методами из теории конечных автоматов. Сообщения, таймеры много канальные программные. Однако новые требования заказчиков, косяки в архитектуре ПО и некоторые другие факторы вынуждали меня что то править, что то и вовсе переписывать. Это вылилось в трудно модифицируемую систему с костылями и тп хренью. С нового года я работаю над еще более сложным прибором и понимаю, что так как было делать нельзя. Смотрю в сторону объектно ориентированных принципов построения ПО, а также подумываю над идеями из теории ОС. Как вы решали свои задачи, что можете посоветовать посмотреть-почитать? Спасибо!
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
 |
Ответов
|
Jan 4 2017, 14:08
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(gte @ Jan 4 2017, 12:48)  Кроме того, заказчику легче эксплуатировать такие системы. Например что то модифицировать в будущем или заменить датчик на другой, добавить что-то новое. .... и отказаться в результате от услуг разработчика. Заказчику не должно быть что-то легко переделать самостоятельно в устройстве, иначе у него может возникнуть крамольная мысль "а нафига я столько плачу этому разработчику? эта работа столько не стОит! Я и сам это могу"  Цитата(Буратино @ Jan 4 2017, 12:49)  Ну например: в устройстве есть некий цифровой выход, который должен уметь быть включенным на x секунд в диапазоне от 0 до 120. При этом выход может быть сконфигурирован как инверсным так и без инверсии. Также выход должен уметь работать циклами включен на y сек, выключен на z секунд. Естественно работа этого выхода связана с другими узлами и логикой системы Так например работа выхода может быть прервана на w секунд, а после продолжена. Согласен ничего такого в этом выходе нет, но что если приходит заказчик и говорит: хочу чтоб этот выход включался только если темное время суток, а если светлое время суток то хочу чтоб включался другой выход с другими x,y,z,w Я это реализую, но выглядит это стремно: глобальные переменные, флаги, общие в целом куски ПО. Кароче не то. Ну если так часто ходят заказчики с такими тривиальными задачами (и у каждого она немного отличается от другого), то у Вас наверное неправильно составлено ТЗ. И вообще - решение задачи архитектурно сделано неверно. Усложните себе задачу - поставьте её по-нормальному: 1.Реализовать в устройстве поддержку выполнения скриптов (записанных в любом формате, хоть соответствующем некоему стандарту, хоть доморощенном). 2.Реализовать некий необходимый пользовательский функционал со скриптовым доступом (вкл/выкл ноги, послать пакет в порт, задать паузу, установить таймер и т.п.). 3.Привязать выполнение скриптов к событиям от периферии. 4.Дать возможность пользователю редактировать и запускать скрипты на Вашем устройстве. Всё! С этого места можете спокойно плевать в потолок, попивая пиво и посылая пользователей читать мануал на скрипты.  Цитата(AlexandrY @ Jan 4 2017, 15:28)  Только скрипты позволяют пока клиент рассказывает о своей хотелке реализовать ее в это же время. О, блин! Уже посоветовали.... Цитата(hsoft @ Jan 4 2017, 15:45)  многочисленные switch/case, if/else как виноградные гроздья начали обрывать ствол программы под своей тяжестью. В итоге я тогда решил что уйду на RTOS... но проекты встали и дело заглохло. С тех пор у меня сложилось устойчивое мнение, как только количество ветвей превышает 16 надо уходить на RTOS. Дело тут не в RTOS, а в стиле написания. Наличие RTOS тут равнобедренно. Цитата(яман-тау @ Jan 4 2017, 16:28)  Если проектируемая система единична зачем городить на МК, если есть ПЛК как предлагали выше. Масштабировать, сенсорную панель прикрутить или на верхний уровень АСУТП завести намного легче. ... но как только окажется что чего-то не хватает в функционале этого ПЛК, то уже никак не объедешь. МК - более гибкий подход.
|
|
|
|
|
Jan 4 2017, 15:19
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(яман-тау @ Jan 4 2017, 17:14)  Например чего? Например - низкой цены с возможностью поставить на множество мелких объектов с простым функционалом и ограниченным бюджетом. Или возможности работать долго от батарейки без подзарядки с минимумом потребления. Или на объекте эксплуатации мало места и никакой готовый ПЛК просто не лезет. Да мало-ли чего ещё. Практические задачи они такие непредсказуемые.... в теории всё легко. А захотел клиент чего-нить этакого, чего в готовых кубиках нету и приплыли....
|
|
|
|
|
Jan 4 2017, 16:02
|

Знающий
   
Группа: Свой
Сообщений: 662
Регистрация: 15-02-09
Из: Магнитогорск
Пользователь №: 44 875

|
Цитата(jcxz @ Jan 4 2017, 20:19)  Например - низкой цены с возможностью поставить на множество мелких объектов с простым функционалом и ограниченным бюджетом. Или возможности работать долго от батарейки без подзарядки с минимумом потребления. Или на объекте эксплуатации мало места и никакой готовый ПЛК просто не лезет. Да мало-ли чего ещё. Практические задачи они такие непредсказуемые.... в теории всё легко. А захотел клиент чего-нить этакого, чего в готовых кубиках нету и приплыли....  простите меня теоретика, сдающего по нескольку объектов под ключ за сезон.
|
|
|
|
|
Jan 4 2017, 20:25
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(яман-тау @ Jan 4 2017, 20:06)  В принципе все хотелки Вам должен написать заказчик в техусловиях на проектирование АСУТП. Повезло вам с заказчиками... У нас в основном "хочу что-то вот так, включать, чтобы само отключалось потом...", да чтоб картинки красивые, и сенсорные кнопочки с анимашками... Вот и пиши с этого техзадание... Цитата(dm37 @ Jan 4 2017, 19:17)  5) модули для контроля входов 220V как правило с трудом выдерживают режим работы 24/7 (приходится опять городить что-то свое). Если ПЛК не может работать в 24\7 - это плохой ПЛК, но чаще всего исполнитель не заботится о защите линий от бросков напряжения и т.п. Цитата(Огурцов @ Jan 4 2017, 20:42)  значит время таки пришло ? Пришло к чему? Поставить винду на 8и битник??
|
|
|
|
|
Jan 4 2017, 20:26
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(mantech @ Jan 4 2017, 23:22)  Повезло вам с заказчиками... У нас в основном "хочу что-то вот так, включать, чтобы само отключалось потом...", да чтоб картинки красивые, и сенсорные кнопочки с анимашками... Вот и пиши с этого техзадание... ...а после этого обычно оказывается, что "Вы всё неправильно сделали, и вообще я хотел другого. Вы виноваты. Переделывайте всё....". Сколько занисаюсь разработкой - ТЗ всегда писали сами, заказчик только читал и говорил что ему не нравится. Хотя потом всё равно приходилось переделывать, так как оказывалось что "я хотел не такого, а с перламутровыми пуговицами...."
|
|
|
|
|
Jan 4 2017, 20:32
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(jcxz @ Jan 4 2017, 23:26)  Сколько занисаюсь разработкой - ТЗ всегда писали сами, заказчик только читал и говорил что ему не нравится. Да так и есть, к сожалению.. Цитата(dm37 @ Jan 4 2017, 23:30)  если исполнитель должен заботиться о защите линий по входам 220V, то я скорее выберу свой вариант преобразования из 220V в 24V (с защитой) и возьму обычный модуль дискретного ввода Тоже неплохой вариант, вообще считаю, чем больше низковольтки, тем надежнее.
|
|
|
|
Сообщений в этой теме
Буратино Сложные программы 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 k155la3 Цитата(gte @ Jan 4 2017, 12:48) . . . .
... Jan 4 2017, 10:16   Огурцов си шарп и микрофреймворк 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         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 syoma Буратино, я думаю, что ваша проблема в том, что у ... Jan 5 2017, 11:12 iosifk Цитата(syoma @ Jan 5 2017, 14:12) Буратин... Jan 6 2017, 08:10  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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|