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

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

|
Доброго времени! Всех с НГ!  Занимаюсь созданием приборов с микроконтроллерным управлением. Ничего эдакого, как говорит ЛИ "автоматизация курятников". Из последнего у меня получилось 32К на Си. Освоил и пользуюсь методами из теории конечных автоматов. Сообщения, таймеры много канальные программные. Однако новые требования заказчиков, косяки в архитектуре ПО и некоторые другие факторы вынуждали меня что то править, что то и вовсе переписывать. Это вылилось в трудно модифицируемую систему с костылями и тп хренью. С нового года я работаю над еще более сложным прибором и понимаю, что так как было делать нельзя. Смотрю в сторону объектно ориентированных принципов построения ПО, а также подумываю над идеями из теории ОС. Как вы решали свои задачи, что можете посоветовать посмотреть-почитать? Спасибо!
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
27 страниц
1 2 3 > »
|
 |
Ответов
(1 - 99)
|
Jan 4 2017, 08:36
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Буратино @ Jan 4 2017, 08:47)  Как вы решали свои задачи, что можете посоветовать посмотреть-почитать? Спасибо! Посмотрите как делают моргание на светодиодах. Вот тут например - https://geektimes.ru/post/284248/Там на одном микроконтроллере программа занимает 160К и на втором 130K Зато сделано за день. Вся фишка во фреймворке. Вы просто еще не собрали свой фреймворк. Туда должны входить RTOS (лучше несколько), несколько файловых систем, движки отладочных мониторов, коммуникационные стеки и проч. И тогда ваши программы со старта уже будут весить под 100К и вы забудете слово "сложные"
|
|
|
|
|
Jan 4 2017, 09:04
|

Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828

|
Цитата(AlexandrY @ Jan 4 2017, 12:36)  ... Вся фишка во фреймворке. Вы просто еще не собрали свой фреймворк. Туда должны входить RTOS (лучше несколько), несколько файловых систем, движки отладочных мониторов, коммуникационные стеки и проч. И тогда ваши программы со старта уже будут весить под 100К и вы забудете слово "сложные"  Ужасссс! Не в тему - Александр, меня удивляет ваше увлечение или осмысленное использование Freescale - овских (NXP) контроллеров серии Kinetis - мало кто их использует в наших краях, я то же к ним не равнодушен (работал до этого с MC68332) и хочу заложить в свою конструкцию. Много ли ерратовских косяков и других проблем возникает на пути их юзанья? Это касаемо серий K66 K20 K02?
|
|
|
|
|
Jan 4 2017, 09:49
|

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

|
нет, готовые RTOS меня не интересуют. Я работаю с 8ми битниками и задачи у меня в целом достаточно простые: обработать клавиатуру, аналоговые входы. поддержка цифровых интерфейсов и тп. Трудности возникли именно на этапе соединения всего этого зоопарка в единое целое. Быстродействия, памяти мне всегда хватает. Сейчас я подошел к пределу своих возможностей в так сказать в функциональных ресурсах своего подхода к написанию ПО. Ну например: в устройстве есть некий цифровой выход, который должен уметь быть включенным на x секунд в диапазоне от 0 до 120. При этом выход может быть сконфигурирован как инверсным так и без инверсии. Также выход должен уметь работать циклами включен на y сек, выключен на z секунд. Естественно работа этого выхода связана с другими узлами и логикой системы Так например работа выхода может быть прервана на w секунд, а после продолжена. Согласен ничего такого в этом выходе нет, но что если приходит заказчик и говорит: хочу чтоб этот выход включался только если темное время суток, а если светлое время суток то хочу чтоб включался другой выход с другими x,y,z,w Я это реализую, но выглядит это стремно: глобальные переменные, флаги, общие в целом куски ПО. Кароче не то.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jan 4 2017, 10:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(gte @ Jan 4 2017, 12:48)  . . . . в итоге, дешевле. . . . . Сильно сомневаюсь, что задача типа условного ногодрыга решается дешевле с помощью покупного PLC или даже недо-PLC типа Siemens LOGO  Бывает сильно по-разному. Иногда - да. Экономия времени. Удобство разработки "на всем готовом". Иногда нет. Особенно что изготовители PLC постоянно стимулируют "докупать" железо, драйвера, лицензии, модули, интерфейсы и прочея и всякая за дорого. Хотя если учесть, что самый дорогой ресурс - время, то согласен. Цитата(Буратино @ Jan 4 2017, 09:47)  . . . . Как вы решали свои задачи, . . . 1. C 2. там где надо - использовать модули ASM в составе проекта на С 3. Для больших проектов сильно упрощает наличие RTOS. Посмотрите scmRTOS. 4. Использование ООП (C++) - позволяет на порядок увеличить "читабельность", простоту и упоряченность своего кода. Естественно - если пишется в "трезвом рассудке и здравом уме"  5. Как тут советовали. Свои наработки "перепакуйте" в модули и/или библиотеки. Если есть смысл - перепишите с использованием объектов на C++. 6. Для ведения разработки сильно упрощает жизнь системы версирования проектов. Я пользую SVN. (база данных разработки, с возможностью, например, отката на "позпрошлый понедельник")
|
|
|
|
|
Jan 4 2017, 12:28
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Make_Pic @ Jan 4 2017, 11:04)  Ужасссс! Не в тему - Александр, меня удивляет ваше увлечение или осмысленное использование Freescale - овских (NXP) контроллеров серии Kinetis - мало кто их использует в наших краях, я то же к ним не равнодушен (работал до этого с MC68332) и хочу заложить в свою конструкцию. Много ли ерратовских косяков и других проблем возникает на пути их юзанья? Это касаемо серий K66 K20 K02? Kinetis обсуждаем здесь - https://electronix.ru/forum/index.php?showt...=0#entry1472241Я создал специально тему. Цитата(Буратино @ Jan 4 2017, 11:49)  нет, готовые RTOS меня не интересуют.
Согласен ничего такого в этом выходе нет, но что если приходит заказчик и говорит: хочу чтоб этот выход включался только если темное время суток, а если светлое время суток то хочу чтоб включался другой выход с другими x,y,z,w Я это реализую, но выглядит это стремно: глобальные переменные, флаги, общие в целом куски ПО. Кароче не то. Напрасно не интересуетесь RTOS, в той гирлянде на светодиодах применяются автоматы состояний сложнее ваших. Причем автомат состояний на каждый светодиод свой. Но вижу вы уже на пороге создания велосипеда под названием скриптовый движок. Только скрипты позволяют пока клиент рассказывает о своей хотелке реализовать ее в это же время.
|
|
|
|
|
Jan 4 2017, 12:38
|
Знающий
   
Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861

|
Цитата(Буратино @ Jan 4 2017, 12:49)  .... Я работаю с 8ми битниками и задачи у меня в целом достаточно простые: обработать клавиатуру, аналоговые входы. поддержка цифровых интерфейсов и тп. Трудности возникли именно на этапе соединения всег.... Кароче не то. я сразу же как начал работу с мк делал по рецепту многоуважаемого DiHalt тут AVR. Учебный курс. Операционная система. Введение. Очень рекомендую. Ну а дальше по желанию любые учебники по написанию embedded кода с семафорами, пайплайнами и прочими прелестями.. Но имхо для 8 битников и DiHalt 'а освоить достаточно будет.
|
|
|
|
|
Jan 4 2017, 13:09
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(hsoft @ Jan 4 2017, 14:45)  На самом деле тоже был в подобной ситуации, проект продолжения не получил, но вот точно также дважды кстати, уперся лбом в стенку, когда в одном проекте устройство работало с протоколом TCP/IP, а в другом устройство отрабатывало алгоритм UI. В обоих случаях число команд, ответов превысило 60 и многочисленные switch/case, if/else как виноградные гроздья начали обрывать ствол программы под своей тяжестью. В итоге я тогда решил что уйду на RTOS... но проекты встали и дело заглохло. С тех пор у меня сложилось устойчивое мнение, как только количество ветвей превышает 16 надо уходить на RTOS. RTOS для описанной Вами ситуации дело десятое. Это просто один из возможных инструментов. Причем не универсально-эффективный и НЕ способный заменить собой все технологии.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
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, 16:17
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
Занимался как раз задачами автоматизации птичника (более 10 лет). Расскажу с чем мы столкнулись. Как показала практика все системы должны быть распределёнными (как минимум допускать расширение), либо связаны по сети (диспетчеризация). Готовые системы не устраивают не зависимо от производителя, должен быть индивидуальный подход.
Минусы использования ПЛК (тип не имеет значение): 1) ОЧЕНЬ дорого, особенно по нынешним ценам; 2) в качестве датчиков температуры использовали DS18B20 (DS18S20). Ни один нормальный ПЛК не поддерживает данный тип датчиков (городить что то по modbus не очень хороший вариант) 3) частично лицензионный софт 4) иногда быстродействие, как ни странно (например, при реализации фазоимпульсной модуляции) 5) модули для контроля входов 220V как правило с трудом выдерживают режим работы 24/7 (приходится опять городить что-то свое).
При разработке основная проблема была с нехваткой портов ввода/вывода, а также памяти (как RAM так Flash), как говорили уже здесь быстродействия вполне хватало (в ОСРВ потребности не было). В итоге даже начинал рассматривать вариант разработки своего ПЛК (хотели переделать ПЛК Delta, они дешевле и используют STM32 (правда среда разработки плохая, нет ST) либо сделать что-то своё аналогичное, платы можно заказать в Китае).
По поводу требований заказчиков - в итоге мы (заказчики) забрали разработку софта себе, а разработчик оборудования поставлял только железо. Вот так. Скрипты не нужны, иначе вас заставят отвечать за ошибки в оборудовании (как вы собираетесь доказывать, что виноват скрипт, а не основной софт). Лучше создать железо и базовый софт и продать это всё заказчику, если у них есть кому сопровождать, пускай сами делают всё под себя, можете даже провести обучение. Если нет, поддержка у вас и ни в коем случае не давать дополнительных возможностей в виде скриптов (сломают). Помню как мы по несколько раз в неделю бегали в цех для восстановления параметров блока, пока начальник цеха не наказал их рублём за шаловливые ручки.
Речь в данной теме шла о софте: итог (моё мнение) - всё равно придётся плодить версии под каждого заказчика (заказчик всегда прав), единственно, что можно это попробовать решить за счёт конфигурации блока (недоступной заказчику). Правда я немного не понимаю почему у вас это сводится к изменению ПО, как правило оно тянет за собой и изменение аппаратной части.
|
|
|
|
|
Jan 4 2017, 17:33
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
Цитата Может что нибудь предложить? Какой ПЛК самый лучший? В своё время рассматривали Schneider Electric Modicon M340 (BMX XBP 1200 + BMXP342020 + ...)
|
|
|
|
|
Jan 4 2017, 19:24
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
С++ для микроконтроллеров. в первую очередь эта статья http://easyelectronics.ru/rabota-s-portami...erov-na-si.htmlи примеры к ней https://github.com/KonstantinChizhov/Mcucpp/tree/devМногие будут отсылать к книге Андрея Александреску "Современное проектирование на С++", но как то пока сложновато. тоже в основном смотрю в этом направлении, пробую как раз для AVR (8 бит). Задача стоит иметь расход RAM (а потом и Flash) аналогичный применению с использованием Си. Для себя сделал вывод, что для uC необходимо (желательно) использовать шаблоны классов со статическими членами, тогда вроде всё получается...
Сообщение отредактировал dm37 - Jan 4 2017, 19:53
|
|
|
|
|
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:29
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(AlexandrY @ Jan 4 2017, 15:28)  Но вижу вы уже на пороге создания велосипеда под названием скриптовый движок. Только скрипты позволяют пока клиент рассказывает о своей хотелке реализовать ее в это же время. Как ни странно, но здесь есть доля истины. Только чтоб работать со скриптами, их должна выполнять какая-либо ось, в которой есть уже готовые модули работы с портами в\в интерфейсами, типа того далласа, который указал автор, и еще многое другое. Тогда, да, будет быстрое программирование и не надо винду ставить, сам делал такие ПЛК.
|
|
|
|
|
Jan 4 2017, 20:30
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
Цитата Если ПЛК не может работать в 24\7 - это плохой ПЛК, но чаще всего исполнитель не заботится о защите линий от бросков напряжения и т.п. если исполнитель должен заботиться о защите линий по входам 220V, то я скорее выберу свой вариант преобразования из 220V в 24V (с защитой) и возьму обычный модуль дискретного ввода, в противном случае получается необоснованный огород. В принципе мы так и делаем.
|
|
|
|
|
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, 21:26
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Буратино @ Jan 4 2017, 21:11)  В этой теме речь не идет о пром контроллерах, армах или скриптовых движках. Это наверное и важно и интересно, но точно не мне и не сейчас. Из конструктива в теме отмечу ссылки на ооп и ос. На сколько мне известно, то это огромные темы с массой интересного. Однако напоминаю, что у меня маленькие процы и в принципе простые задачи сложно взаимодействующие друг с другом. Что из самого ценного взять и трансформировать в мир маленьких камней из ооп и ос? обьекты и задачи? семафоры? есть ли реализации на которые можно смотреть и наследовать? По моему суть вашей "сложности" недостаточно раскрыта. Может вам просто нужно провести рефакторинг. По сути переход на ООП это будет рефакторинг и больше ничего. Может вы еще 20-и часов не провели со своим кодом. Правило 20-и часов гласит, что спустя 20-ч изучения в течении 20 дней любой код становится простым. Цитата(яман-тау @ Jan 4 2017, 19:06)  Последние 2 года в основном ставлю Овен ПЛК110-60 и ПЛК110-30. Самый лучший не подскажу, выбираю под конкретные задачи. По надежности одним из них считаю Simatic S-300. В принципе все хотелки Вам должен написать заказчик в техусловиях на проектирование АСУТП. Может у них Аллен Бредли или Омрон в почете, им виднее. А насколько сложные программы вам удается писать под Овен и на каком языке? Там многофайловые проекты можно написать?
|
|
|
|
|
Jan 5 2017, 06:46
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
Цитата А насколько сложные программы вам удается писать под Овен и на каком языке? Там многофайловые проекты можно написать? Тоже есть опыт использования продукции Овен, есть работающие проекты на ПЛК63, ПЛК100 + СП270. Отношение конечно плохое. ПЛК у Овен получились не очень. Что не понравилось: - в ПЛК крепления верхней платы идёт (шло) на пластмассовых винтах, которые быстро ломались (после покупки сразу меняли на металлические). Элемент питания для RTC тоже сразу меняли (почти всегда были старые или не рабочие) - если программировать через RS232, то постоянно терялась связь со средой разработки. Использовать переходники UBS-COM тоже не получалось (ПЛК критичны к уровням RS232), даже ноутбук со встроенным RS232 глючил, пришлось в цех тащить плату c COM-портами и вставлять в обычный ПК. Где то на форуме Овен говорили, что ПЛК110 лучше держат связь со средой разработки при отладке. - панель оператора СП270. Конфигуратор (IDE) без предупреждений просто отказалась открывать проект, который создавался несколько дней. Как потом опытным путём выяснил - количество элементов отображения какого то типа (не помню уже какого) превысило 255. После этого проект умирал без предупреждений. Писал про этот глюк на форуме, но мне разработчики панели так ничего и не ответили. - Теперь ПЛК63: в спецификации указан доступный пользователю объём RAM. Создал массив элементов с учётом данного размера, загружаю в ПЛК, ПЛК виснет. Хорошо есть комбинация из трёх пальцев, позволяющая вернуть ПЛК к жизни. В итоге выяснилось, что доступный объём меньше чем указано. В общем ПЛК Овен работает, если у вас всё же хватит терпения довести проект до конца. У нас уже несколько лет работает и проблем вроде нет. Только СП270 всё же глючит при отображении (сейчас её вроде уже не выпускают). Среда разработки CodeSys 2.3, язык ST, многофайловые поддерживаются. Стандартное меню в ПЛК63 не использовал, сделал своё. После мучений с Овен по возможности несложные проекты стали делать на ПЛК Delta (дешёвые ПЛК, которые применяются на производстве), правда среда разработки не поддерживала язык ST (не знаю как сейчас).
|
|
|
|
|
Jan 5 2017, 07:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Буратино @ Jan 4 2017, 23:11)  . . . . Что из самого ценного взять и трансформировать в мир маленьких камней из ооп и ос? обьекты и задачи? семафоры? есть ли реализации на которые можно смотреть и наследовать? Как один из вариантов использования ООП для Вас. (1) Если есть наработки для малых МК - можете рассмотреть возможность создания своего "компилятора". Это на базе PC. (2) В разрезе программирования МК. Если не использовали структуры - начинайте исползовать. В структуры интегрируйте как данные, так и указатели на функции-обработчики этих данных. Это можно делать на базе С - без плюсов. Эти структуры с разной инф. набирайте в массив. Например, задача, которая решается элементарно таким способом - сложное меню. Без единого switch-case и с одной "управляющей" функцией  "маленьких камней" - это как ? Контроллер с Flash=32k + RAM=8k я маленьким я не считаю. В контексте использования, например, scmRTOS это вполне достаточные ресурсы. Вот когда Flash=1k + RAM=512 - это нечто  Туда бы OS я и не думал, хотя есть и такие весчи. Но это скорее не ОС а "планировщик" выполнения кода.
|
|
|
|
|
Jan 5 2017, 07:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Буратино @ Jan 5 2017, 11:40)  . . . Еще очень интересно попробовать идею с объектами. Сам ООП в моей работе вряд ли поможет. А вот объект с свойствами и методами наверное то что нужно. Если есть что то простое для мелких мк - поделитесь ссылками. Спс! Берете туже scmRTOS. ОНО сделано на C++. Смотрите исходник как да что. И разницы, какой контроллер - большой или малый, нет. Просто для контроллера с очень малыми ресурсами - IMHO - использовать класы, наследование, вирт. функции итд итп - смысла не имеет. А имеет смысл (то что я сказал выше) разработка своего специализированого компилятора. Точнее пре-компилятора для компилятора С или ASM. Вот тут можете на PC "разгуляться" c ООП и всеми его возможностями.
|
|
|
|
|
Jan 5 2017, 10:16
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Буратино @ Jan 5 2017, 09:40)  Еще очень интересно попробовать идею с объектами. Сам ООП в моей работе вряд ли поможет. А вот объект с свойствами и методами наверное то что нужно. Если есть что то простое для мелких мк - поделитесь ссылками. Спс! Рядышком напишите статические переменные и функции и сверху и снизу поставьте коментарии со скобками - вот вам и объект со свойствами. Зачем платить писать больше если нет разницы? C++ был придуман для коллективной разработки. Если вы не используете оси и вообще стронние исходники и проекты, то плюсы вам точно не помогут. Только лишним множеством имён загрузитесь, потеряете производительность. Хотя может подсознательно вы и хотите уйти в простой, отвлечься от целевой задачи.  Цитата(haker_fox @ Jan 5 2017, 12:06)  Простите, как вы решаете вопрос "порчи" памяти? Как вы отслеживаете, что например процесс №1 записал данные, выйдя за границы массива на два элемента? Используете ли вы MPU в Cortex-m3? Cortex-M3 давно уже не использую. Не понял связи ошибки памяти с фреймворками.
|
|
|
|
|
Jan 5 2017, 11:12
|
Профессионал
    
Группа: Свой
Сообщений: 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 сигналов.
|
|
|
|
|
Jan 5 2017, 11:41
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 19-11-09
Пользователь №: 53 743

|
Цитата называются "кооперативные" ? Чтоб запустить на MK достаточно откомпилировать, портирование не требуется ? Точно. Стек протопотоков общий. Переполнение одно на всех. Отработка протопотоков асинхронная. Для 8-битников, на мой субъективный взгляд, очень удобно.
|
|
|
|
|
Jan 5 2017, 13:03
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (AlexandrY @ Jan 5 2017, 18:16)  Cortex-M3 давно уже не использую. Не понял связи ошибки памяти с фреймворками. Связи нет никакой, скорее всего я озадачился размерами ваших программ))) Ну, а всё-таки, есть в том же kinetis что-то аппаратное, что позволяет вам как-то предохранять память от несанкционированного доступа? В "больших" камнях это решается MMU с вызываемыми исключениями... QUOTE (syoma @ Jan 5 2017, 19:12)  Буратино, я думаю, что ваша проблема в том, что у вас нет четко определенной архитектуры ПО. Под архитектурой я подразумеваю то, что ПО должно быть разделено на программные модули, которые взаимодействуют друг-с-другом через четко заданные интерфейсы. Мне нравится ваш подход. Наверно потому, что и я думаю в этом же направлении  Уже давно нахожусь на пути создания минимального базиса (фреймворка), включающего в себя ОС (пока FreeRTOS), стек драйверов (high и low-уровни), отладочная текстовая консоль (использую обточенную CLI из FreeRTOS), адекватный менеджер памяти, позволяющую понять куда она ушла (спасибо уважаемому zltigo!). Логгер пока ещё не присобачивал.
--------------------
Выбор.
|
|
|
|
|
Jan 6 2017, 07:38
|

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

|
Цитата(Огурцов @ Jan 5 2017, 13:15)  тогда вариант один - делить задачу между несколькими камнями, в каждом иметь законченный софт, при необходимости новых фич - досыпать ещё камней, не трогая прежние Я с вариантами разберусь, а вы пож. не постите ерунду больше. syoma, спасибо за текст. Не мое точно. Точнее все то что вы пишите в том или ином виде есть по умолчанию в любом проекте. И абстракция и манагер процессов и логер если нужно. Только все это в примитивной форме в достаточной для решения моих задач. Чего мне не хватает так это инструментов для реализации бизнес логики и меня не устраивает не только сложность с написанием ПО, но и самое главное сложности с его модификацией.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jan 6 2017, 08:10
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(syoma @ Jan 5 2017, 14:12)  Буратино, я думаю, что ваша проблема в том,... Вот это все было бы хорошо оформить в виде статьи! Пусть она будет небольшая, но тем не менее... Прямо так и начать: "В конференции шло обсуждение... И мое мнение таково..." И к нам, в КиТ... Что скажете?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 6 2017, 09:02
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(iosifk @ Jan 6 2017, 10:10)  Вот это все было бы хорошо оформить в виде статьи! ... И к нам, в КиТ... Не статью писать надо, а в github.com постить. Нынче так - или вы показываете свои сорсы на github-е или ваши слова про программирование малого стоят. Когда говорят о такой запредельной абстракции как некий "I/O менеджер" исходники надо показывать в обязаловку. Я не первый год в программировании, но у меня даже не идей что такое "I/O менеджер"
|
|
|
|
|
Jan 6 2017, 09:13
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(AlexandrY @ Jan 6 2017, 12:02)  Не статью писать надо, а в github.com постить. Да нет, у каждого издания свои читатели. КиТ имеет тираж 6,5 тыс экз. И никто не мешает сначала напечатать статью, а потом размещать материалы еще где-то. Тем более, исходники можно выложить в сети и в статье на них ссылаться. потому как статьи - это пожизненно, а тексты из сети лет через 10 могут и удалить. А для чего нужны статьи я написал в КиТ №11 за 14 год. Они нужны не для того, чтобы все знали о том как писать программы для... А для того, чтобы получать приличную зарплату.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 6 2017, 09:19
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(AlexandrY @ Jan 6 2017, 11:02)  Нынче так - или вы показываете свои сорсы на github-е или ваши слова про программирование малого стоят. Слова, слова по любому малого стоят, хоть напечатанные на "github-е" хоть нет. Стоит результат программирования. Цитата(AlexandrY @ Jan 6 2017, 11:02)  Когда говорят о такой запредельной абстракции как некий "I/O менеджер" исходники надо показывать в обязаловку. Запредельные и не очень абстракции много лучше описываются не на языке Cи, а на более высокоуровневых языках, например, русском  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 6 2017, 09:25
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(zltigo @ Jan 6 2017, 12:19)  Слова, слова по любому малого стоят, хоть напечатанные на "github-е" хоть нет. Стоит результат программирования. Вы не правы. "результат программирования" - это товар. И инженерный опыт - это тоже товар. И его надо уметь продавать, ибо товар надо превратить в деньги... Для того, чтобы продавать нужны "слова"... А разговор о том, что "слова по любому малого стоят" - смотрите на время, затрачиваемое на рекламу по телевизору. Как по Вашему это время, затрачиваемое на рекламу " по любому малого стоит"?
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Jan 6 2017, 09:31
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(hsoft @ Jan 4 2017, 13:45)  и многочисленные switch/case, if/else как виноградные гроздья начали обрывать ствол программы под своей тяжестью. На самом деле "многочисленные IF/ELSE (SWITCH/CASE)" - это фундаментальная проблема программирования которая пока никак не решена. Даже в том же пресловутом ООП. А ведь эти "IF/ELSE (SWITCH/CASE)" - есть ГЛАВНАЯ причина трудно модифицируемости программы и появления трудно отслеживаемых ошибок, возникающих при внесении изменений в программу. Но пока что универсальной пилюли (программирование без if..then..else) не изобрели. Хотя отдельные попытки предпринимаются.
|
|
|
|
|
Jan 6 2017, 09:39
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(ViKo @ Jan 6 2017, 10:34)  Массив указателей на функции, например. Коллега уже хорошо сказал про такие "рецепты": Цитата(zltigo @ Jan 4 2017, 10:32)  Рецепт из серии - если у Вас болит зуб - прищемите палец дверью... Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Типа "болит голова - ампутируем голову"?
Сообщение отредактировал Укушенный воблой - Jan 6 2017, 09:40
|
|
|
|
|
Jan 6 2017, 09:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(ViKo @ Jan 6 2017, 12:11)  А I/O менеджер и менеджер коммуникаций звучат слишком похоже. Фундаментальное отличие между ними в том, что I/O менеджер работает в реальном времени и взаимодействует с физическим железом. Причем делать он это может как напрямую - через драйверы HAL, так и через последовательные интерфейсы - CAN, SPI,RSXXX и пр. В одном проекте у нас вообще используется EtherCAT мастер с временем опроса в 100мкс. Контроллер коммуникаций наоборот, работает не в реальном времени. Например он может работать под обычной операционкой. Его задачей является связь со всеми остальными интерфейсами, которым не нужно реальное время. Например все Ethernet коммуникации типа веб-серверов, ФТП и пр. Обработка клавиатуры, дисплея. Контроллер коммуникаций является клиентом I/O менеджера - он должен иметь доступ к нужным сигналам, но этот доступ должен быть четко регламентирован, так как он будет проходить через границу между реальным и нереальным временем. Т.е. тут нужно предусматривать буферизацию, очереди сообщений и пр, чтобы не потерять информацию. Хорошо, что это надо сделать только один раз.
|
|
|
|
|
Jan 6 2017, 09:54
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Укушенный воблой @ Jan 6 2017, 12:39)  Коллега уже хорошо сказал про такие "рецепты": Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Типа "болит голова - ампутируем голову"? Я думаю, вы неверно цитируете коллегу по данному поводу. Массив упорядочивает реагирование на внешние сигналы. Например, у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Причем, в массиве есть указатели даже на несуществующие номера кнопок. На пустые функции. А когда понадобилось, добавляю.
|
|
|
|
|
Jan 6 2017, 11:42
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(syoma @ Jan 6 2017, 10:49)  В одном проекте у нас вообще используется EtherCAT Расскажите про EtherCATА то мы в Москве перебрали СОТНИ организаций но так не нашли ни одного толкового спеца по этер кату. Скажите название Вашей организации? Цитата(ViKo @ Jan 6 2017, 10:54)  у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Это не универсальное решение и при том очень простой задачи. Это очередные "костыли". От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться
Сообщение отредактировал Укушенный воблой - Jan 6 2017, 11:43
|
|
|
|
|
Jan 6 2017, 12:26
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949

|
"Буратино", всё таки предложу ещё раз посмотреть книжку Андрей Александреску "Современное проектирование на C++" и всё что с ней связано (у людей уже есть наработки в этой области - приводил выше), Прочитайте стр.17 (предисловие) - написано прямо то что вы хотите. книга
|
|
|
|
|
Jan 6 2017, 13:02
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Укушенный воблой @ Jan 6 2017, 11:39)  Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Совершенно наоборот: кодирование логики в номерах функций в случае, когда switch/case-реализация становится запутанной хотя бы из-за ее размера. Недостатки лишь в издержках на вызов функций.
|
|
|
|
|
Jan 6 2017, 13:45
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(ViKo @ Jan 6 2017, 13:47)  Универсальных решений не бывает. Я показал один из примеров. Я и сказал. "Очередной костыль", а не решение Цитата(ViKo @ Jan 6 2017, 13:47)  Условных выполнений у меня хватает, но я не вижу это проблемой. "А слона-то он и не заметил"© Т.е. ФУНДАМЕНТАЛЬНУЮ проблему программирования Вы просто не заметили. вы молодец. Цитата(ViKo @ Jan 6 2017, 13:47)  Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с) На самом деле есть методы которые сокращают число IF-ов в программе, которые программист ЛИЧНО, "ручками" должен написать. Взять к примеру повяление ЯВУ в коце 40-х годов прошлого века. Если посмотреть число IF-ов в СИ программе и сгенерированном из неё машинном коде, то можно заметить, что число IF-ов при переходе от разработки программы в машинных кодах к разработке на ЯВУ число IF-ов сократилось как минимум на порядок. За счет чего? За счет того. Что компилятор БОЛЬШИНСТВО IF-ов генерит автоматически освобождая от этой тупой работы программиста. Т.е. чем выше уровень языка - тем меньше IF-ов нужно писать программисту для решения одной и той же достаточно сложной задачи.
|
|
|
|
|
Jan 6 2017, 14:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(AlexandrY @ Jan 6 2017, 12:25)  EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер. Все надо называть своими словами. Не, без сорсов вы только зря тратите время на объяснения. AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь, так как это ни как ни опенсоурс. Только могу сказать, что это работает, хотите верьте, хотите нет. EtherCAT отличается от остальных коммуникаций тем, что работает в real-time, поэтому он и часть I/O Менеджера, и не входит в менеджер коммуникаций. Ему также выделяется отдельный Ethernet порт, в то время как менеджер коммуникаций может реализовать различные протоколы на одном и том же порте. Раньше мы вместо EtherCAT использовали Profibus.
|
|
|
|
|
Jan 7 2017, 19:05
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(syoma @ Jan 6 2017, 16:57)  AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь,... VxWorks есть в наших закромах, так что можете не выклывать раз такой жадный. А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить. Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч. Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком. VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги. Так что ваша "архитектура" совершенно не вписывается в контекст темы
|
|
|
|
|
Jan 7 2017, 19:37
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Буратино @ Jan 6 2017, 07:38)  Я с вариантами разберусь, вы уж разберитесь сначала Цитата(Буратино @ Jan 6 2017, 07:38)  а вы пож. не постите ерунду больше. ерунда == писать под восьмибитники
|
|
|
|
Guest_TSerg_*
|
Jan 7 2017, 23:11
|
Guests

|
Сложные программы.. Угу, посмотрел бы я на любителей MCU после того как их ознакомили с современными БИУС.
|
|
|
|
|
Jan 8 2017, 04:16
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(TSerg @ Jan 7 2017, 23:11)  Угу, посмотрел бы я на любителей MCU после того как их ознакомили с современными БИУС. Ну ознакомились бы, перестали б в цирке смеяться. Делов-то, не они первые, не они последние...
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Jan 8 2017, 08:27
|

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

|
Огурцов, не хамите. Я в этом деле первый после Бога и шансов у Вас ноль в данной плоскости общаться. Что касается 8ми битников, то для меня этот вопрос на столько же очевиден как и для всех остальных в этой теме. Не нужно открывать глаза на истину, о которой уже всем известно. Однако, во-первых мои задачи с легкостью размещаются в рамках 8ми битников, а во-вторых куда собственно денутся все проблемы о которых я пишу при переходе на кортекс? И еще раз персонально для Вас: я ничего не имею против кортекс и понимаю что это неотъемлемый атрибут современного мира контроллеров. Но не нужно ими тыкать. Это совершенно иной уровень задач: стеки протоколов, ОС, экраны, сложные вычисления.
Что касается данной темы, то я думаю, что максимум для 8ми битника (в моем случае) это: 1. Разбивка кода на части с разделением функциональности в отдельных с файлах. 2. Структуры массивы и указатели 3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда. 4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное. 5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jan 8 2017, 08:57
|

Местный
  
Группа: Участник
Сообщений: 201
Регистрация: 28-07-16
Пользователь №: 92 747

|
Цитата(Буратино @ Jan 4 2017, 06:47)  Смотрю в сторону объектно ориентированных принципов построения ПО Про ООП думаю так: https://electronix.ru/forum/index.php?showt...p;#entry1445527Цитата(Буратино @ Jan 4 2017, 06:47)  а также подумываю над идеями из теории ОС Зависит от требований к изделию. В определенных случаях ОС и ее элементы хороши, в других это может вредить делу. Где целесообразно, там применял ОС-образные подходы для МК и ПЛИС. Цитата(Буратино @ Jan 8 2017, 08:27)  Что касается данной темы, то я думаю, что максимум для 8ми битника это: 1. Разбивка кода на части с разделением функциональности в отдельных с файлах. 2. Структуры массивы и указатели 3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда. 4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное. 5. Объекты. Эти программные конструкции состоят из всего вышеперечисленного и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства. Пункты 1 и 2 для меня инвариантны относительно выбранного МК. Об организационно-технологических пунктах 3-5 я бы думал после изучения ТЗ на конкретное изделие.
Сообщение отредактировал BackEnd - Jan 8 2017, 08:59
--------------------
"Классики марксизма говорили, что общественно-экономическая формация меняется с изменением средств производства, которые всегда принадлежали имущему классу. И сейчас мы находимся в системе координат капитализма, когда самые передовые средства производства принадлежат уже не капиталистам. Люди, у которых нет обуви, имеют гаджеты. Сейчас создана такая информационная паутина, что вместо коллективного бессознательного можно говорить о коллективном сознании. Если иметь мозги и гаджеты, можно перевернуть весь мир. Коллективное сознание будет управлять миром! Это исторический путь, который нельзя миновать." Вячеслав Мальцев
|
|
|
|
|
Jan 8 2017, 09:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(AlexandrY @ Jan 7 2017, 22:05)  А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить. Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч. Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком. VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги. Так что ваша "архитектура" совершенно не вписывается в контекст темы Вы понимаете вообще разницу между архитектурой и реализацией? Я привел I/O менеджер как некую абстракцию - часть ПО системы управления. Как он будет реализован на практике в конкретной платформе - зависит от множества факторов и я специально этого не касался. Примеры I/O менеджеров для различных систем управления: 8-и битный контроллер - да, обыкновенный маппер с дефайнами и функциями Система с RTOS, как у меня - описал выше Промышленный ПЛК - смотри Codesys и МЭК 61131-3 - там есть свой I/O менеджер. Контроллер управления умным домом - вам непонятный OpenHAB. І/O менеджер как раз очень платформозависимый, но на уровне архитектуры- абстракции он служит для выполнения одних и тех-же задач, что доя 8-и, что для 64-х битника Цитата(Буратино @ Jan 8 2017, 11:27)  Что касается данной темы, то я думаю, что максимум для 8ми битника (в моем случае) это: 1. Разбивка кода на части с разделением функциональности в отдельных с файлах. 2. Структуры массивы и указатели 3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда. 4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное. 5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства. Это нужно для вашей "бизнес-логики"? Что же это за штука такая? Ну дайте понять где нужно давать имена таймерам и широковещательные сообщения. Напоминает автоматы состояний.
|
|
|
|
|
Jan 8 2017, 10:07
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Буратино @ Jan 8 2017, 09:27)  Огурцов, не хамите. не говорите, что мне делать и я не укажу вам путь Цитата(Буратино @ Jan 8 2017, 09:27)  Я в этом деле первый после Бога каким образом, если вы даже не врубаетесь, что это позволяет не напрягаясь реализовать: Цитата(Буратино @ Jan 8 2017, 09:27)  1. Разбивка кода на части с разделением функциональности в отдельных с файлах. 2. Структуры массивы и указатели 3. Подсистема таймеров. Это когда я могу дать некое имя виртуальному таймеру и работать с этим таймером. Стартовать, проверять значение, сбрасывать. Таких таймеров может быть столько сколько необходимо. ТИк - одна миллисекунда. 4. Подсистема сообщений. Это когда я могу отправить сообщение от одной части ПО к другой. Сообщение может быть "персональное" либо широковещательное. 5. Объекты. Эти программные конструкции которые поддерживают все вышеперечисленное и помогают перейти на несколько более высокий уровень абстракции. Объекты взаимодействуют с окружением используя методы и свойства.
|
|
|
|
|
Jan 8 2017, 10:26
|
Знающий
   
Группа: Свой
Сообщений: 790
Регистрация: 6-02-14
Из: Омск
Пользователь №: 80 379

|
Цитата(BackEnd @ Jan 8 2017, 07:16)  Ну ознакомились бы, перестали б в цирке смеяться. Делов-то, не они первые, не они последние... Я может не в той оборонке работал, такое впечатление... А автору советую взять AT91SAM7 установить на него операционку и тупо делать все дизайны под RTOS. Все проблемы потихоньку рассосутся сами собой.
|
|
|
|
|
Jan 8 2017, 11:32
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864

|
Цитата А автору советую взять AT91SAM7 установить на него операционку и тупо делать все дизайны под RTOS. Все проблемы потихоньку рассосутся сами собой. Под RTOS еще нужно уметь писать. Можно такое намудрить что потом не отладишь. Как на меня так совет абсолютно не имеет смысла (в плане понимания построения программы). RTOS ускоряет и облегчает разработку, но главное это понимание как и где его использовать. Как на меня так было бы очень интересно посмотреть реализацию (кода на C) как люди решают те или инные задачи. Тут уже говорили про массивы структур, указатели на функции в структурах. Если у кого есть примеры, или ссылки поделитесь плиз Приведите примеры где это все инициализировать (например массивы указателей )как его использовать (только живой код с примером кратким, но достаточным для понимания). На мой взгляд это более информативно и полезно чем тысячный раз говорить что нужно роделять код и делать всякие абстракции. Вот только как делать эти абстракции вовсе не понятно, когда их никогда не делал.
|
|
|
|
|
Jan 8 2017, 12:24
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(-SANYCH- @ Jan 8 2017, 13:32)  Приведите примеры где это все инициализировать (например массивы указателей )как его использовать (только живой код с примером кратким, но достаточным для понимания). Эт вы просите разжёванный и положенный в рот учебный материал, а не живой код. Живой код я показал в первом же ответе в этой ветке. Вот еще раз ссылка на него Там есть и RTOS, и как делается мапинг сигналов получаемых по сети CAN c массивами указателей и как сделать 100 машин состояний работающих по скриптам с тактом в 5 мс. И как при этом управлять устройставми с тактом в 62 мкс. И одновременно осциллографировать сигналы на PC по HS USB и писать в лог на SD карту и т.д. и т.п. Но что-то никто не форкает эти исходники для изучения, а смотрело всего пару человек. На самом деле чей либо код никого не интересуетА учебный материал стоит дорого. Потому и тех. поддержка RTOS стоит дороже самих RTOS. Я конечно не имею в виду здесь малофункциональные экзерсисы типа ScmRTOS
|
|
|
|
|
Jan 8 2017, 12:34
|

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

|
Огурцов, сори, но Вы не в теме. Просто не понимаете, что я пишу и о чем. Первый после Бога я в смысле навыков хамить! А вот что касается контроллеров то обратите внимание где создана тема и что в ней обсуждается. еще раз: RTOS это не эта тема. Нужна ОС там где люди работают в том числе с чужими стеками протоколов, с чужими программами и модулями. Вот представьте себе: вам нужен езернет, усб, доступ к файлам на карте памяти и работа с сенсорным экраном. Естественно вы возьмете готовые либы, но кто знает как все это внутри устроено!? А работать то должно все вместе  Вот тут то и приходит на помощь ОС. Проц занимается последовательно задачами ,ну естесна с приоритетами и прочими фишками. Мне не нужно и не интересно. Пока. Дальше видно будет. ООП тош интересно. ОЧень, но опять же не здесь и не сейчас. Я говорю о другом.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jan 8 2017, 13:27
|
Частый гость
 
Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484

|
Цитата(Буратино @ Jan 6 2017, 07:38)  меня не устраивает не только сложность с написанием ПО, но и самое главное сложности с его модификацией. Вам же сказали, что ФУНДАМЕНТАЛЬНАЯ проблема программирования (наличие большего числа "IF...THEN...ELSE" в разных вариациях и формах) пока что не решена. Отсюда код ТРУДНО модифицируемый. Отсюда баги при модификации. Нужен инструмент который будет контролировать ЦЕЛОСТНОСТЬ "бизнес-логики" при изменениях программы и синхронность+законченность этих изменений в разных взаимосвязанных частях программы. Но он пока не изобретен. Так что если Вам удасться его изобрести - Вы будете первым в мире.
Сообщение отредактировал Укушенный воблой - Jan 8 2017, 13:29
|
|
|
|
|
Jan 8 2017, 14:04
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Укушенный воблой @ Jan 8 2017, 14:27)  Вам же сказали, что ФУНДАМЕНТАЛЬНАЯ проблема программирования (наличие большего числа "IF...THEN...ELSE" в разных вариациях и формах) пока что не решена. ещё раз: выносите каждый then/else в свой камень это позволяет реализовать задачу один раз и больше к ней не возвращаться Цитата(Укушенный воблой @ Jan 8 2017, 14:27)  Но он пока не изобретен. от чего же ? бизнес-логика должна быть вынесена и скрипты уже называли
|
|
|
|
|
Jan 8 2017, 14:04
|

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

|
Цитата(SlavaV @ Jan 8 2017, 17:45)  Буратино, лично моё мнение, все Ваши проблемы решаются знанием основ системотехники (умением в принципе разрабатывать), а в частности ООП. Вот видите, Вы все обо мне знаете: И где я работаю, и чего мне не хватает. Не понял только одного: по теме то есть что сказать? ) В сотый раз: все супер с кортексами, но мне пока хватает классики. И снова подчеркиваю, что никуда вопросы которые меня лично волнуют не денутся при переходе не только на картекс но и на большого брата. А ООП это вообще отдельная тема, сомневаюсь что тут много людей способных пусть даш себе растолковать накой оно им нужно в мире мк.
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
Jan 8 2017, 14:28
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(Укушенный воблой @ Jan 8 2017, 16:27)  Нужен инструмент который будет контролировать ЦЕЛОСТНОСТЬ "бизнес-логики" при изменениях программы и синхронность+законченность этих изменений в разных взаимосвязанных частях программы. Но он пока не изобретен. Так что если Вам удасться его изобрести - Вы будете первым в мире.  Почитайте что-нибудь про юнит-тесты.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 8 2017, 17:01
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(Буратино @ Jan 8 2017, 19:34)  еще раз: RTOS это не эта тема. Нужна ОС там где люди работают в том числе с чужими стеками протоколов, с чужими программами и модулями. Вы несколько путаете следствие и причину - ОС нужна для разделения ресурсов несколькими задачами. А также она дает единый интерфейс задачам, что позволяет абстрагироваться от реализации ресурсов, что как следствие создает удобство при использовании чужих модулей/программ. Но не наоборот  Так-то чужие модули/программы отлично работают и без ОС. Я так и не увидел в чем ваши сложности, если не получается выразить словами, то приведите примеры кода. У меня сложилось впечатление, что все ваши программы это один большой main.c и вам надоело переписывать его каждый раз заново, вот и спрашиваете как упростить написание....
|
|
|
|
|
Jan 8 2017, 17:45
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682

|
Цитата(Буратино @ Jan 8 2017, 14:34)  Естественно вы возьмете готовые либы, но кто знает как все это внутри устроено!? Можно выбрать либы с открытыми исходникми, чтобы знать как внутри устроено. Цитата(Буратино @ Jan 8 2017, 14:34)  Вот тут то и приходит на помощь ОС. Проц занимается последовательно задачами ,ну естесна с приоритетами и прочими фишками. Мне не нужно и не интересно. Аналогично: взять операционку с открытими исходниками и лезвие Оккамы. И оставить лишь то, что интересно.
|
|
|
|
Guest_TSerg_*
|
Jan 8 2017, 18:47
|
Guests

|
Для меня и Windows NT - тоже RTOS.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|