|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 6:15 am
Стабилно работеща програма за MCU ???
| Автор |
Съобщение |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
Малък hint: не променяй _state където ти падне, а направи за това отделна процедура. От това програмата ще стане по-тежка и по-обемна ( с малко), ще ползва малко повече код, но при дебъгване ще е по-лесно.
Написаното горе не важи за случаите, когато:
-не ползваш дебъгер;
- ползваш дебъгер, който позволява breakpoint при промяна на променлива;
- силно си ограничен откъм ресурси, най-вече стек;
|
| Пет Ное 06, 2009 11:37 am |
|
 |
|
RM
Ранг: Почетен член
Регистриран на: Нед Окт 19, 2008 7:26 pm Мнения: 673
|
Този код разбирам как работи, но за другото казано ще трябва да се поразровя за какво става дума
_________________ Вниманиене съмвишист....ИЙ.
|
| Пет Ное 06, 2009 7:38 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
еми ето ти същия код написан в 10 пъти по-малко памет:
а твоя код ще изглежда много яко при няколко стотин валидни думички 
|
| Съб Ное 07, 2009 9:30 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Зейфод, къде го вкара па в таквоз цикъл у функция ... така пак мое да увисне ...
|
| Нед Ное 08, 2009 10:12 pm |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
е може да увисне, ама кой говори за увисване. просто му показвам как да получи същата функционалност без умопомрачителни дървета.
|
| Пон Ное 09, 2009 9:44 am |
|
 |
|
Zdrav
Ранг: Форумен бог
Регистриран на: Сря Яну 26, 2005 2:01 pm Мнения: 1952 Местоположение: Варна
|
Не универсален подход, а по-скоро има добри практики. Например залитането към прекалено много проверки и защити маскира бъгове и ситуации, които е добре да се хванат още при развоя. Излишната параноя - "какво ще стане ако..." е също лош съветник особено ако нямаш опит и се опитваш да се застраховаш срещу всевъзможните страхове, които ти идват в главата. В такъв случай(когато не знаеш какво правиш) и втори и трети процесор да сложиш - все тая. По-скоро ще усложниш нещата с което ще свалиш автоматично надеждноста.
_________________ Най-опасният враг на истината и свободата е мнозинството.
|
| Пет Ное 13, 2009 10:12 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
+1
това което си казал е много вярно и далеч не всички опитни разработчици са го осъзнали.
|
| Съб Ное 21, 2009 8:40 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Абе може и така да е, зависи какво правиш, и имаш ли пари и дупе да покриеш щетите, но то е редно ако не знаеш какво правиш да не се хваща човек. В момента имам един елемнтарен контролер за 100 реда код, и този контролер е способен да разкаже играта на 50 хил тона гориво, просто защото управлява една задвижка, тя пък пуска пяна в същия този резервоар ако случайно се запали, друга защита няма защото това е система под налягане и голямата помпа само следи да падне налягането за да почне дабълва пяна и вода в нечовешки количества. Та в тоя случай е много важно да се знае какво става ако стане нещо непредвидено, щото иначе някой трябва да плаща.
Ама това е просто примерче, има контролери за машини с десетки входове и изходи, следящи много параметри, и е недопустимо да не знаеш какво става ако се случи нещо, примерно на фрезата изключи двигателя на шпиндела .....
|
| Съб Ное 21, 2009 10:56 am |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Понякога казвам на мои клиенти (пациенти са де - щом са мръднали толкова много, та се обръщат към мене  ), че на нещо дето се клати няколко милиона пъти в секундата не вярвам. Чак ги стряскам и рискувам да ги изпъдя. За отговорни неща, колкото в управлението има повече желязо (механика), толкова по-добре. Колкото е по-просто - по-добре. Стига да е възможно.
Не случайно има изискване (стандарт) за новите машини в частта защитата на хората да се осъществява от защитно реле. Това не е едно реле , а релеен модул със схема, която анализира различните опасности. И се прави анализ на схемата какво ще стане, ако едно, две, или три релета релета откажат. Излишно е да споменавам, че продукта е лицензиран и релетата също не са случайни. Та контролерчета не са лошо нещо (евтини, мобилни и удобни за работа, даже и модерни) , но опасните неща трябва да бъдат защитени с нещо желязно.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Съб Ное 21, 2009 11:38 am |
|
 |
|
RM
Ранг: Почетен член
Регистриран на: Нед Окт 19, 2008 7:26 pm Мнения: 673
|
Решил съм да направя така. В една процедура "State Machine"  това дето ще ми приема командите с разделянета на аргументите, ще ми променя само FLAGS структура, без да прави каквито и да било действия.
А друга процедура ще ми следи състоянието на флаговете и ще прави каквото трябва.
_________________ Вниманиене съмвишист....ИЙ.
|
| Съб Ное 21, 2009 2:26 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 |  |  |  | sthx написа: Понякога казвам на мои клиенти (пациенти са де - щом са мръднали толкова много, та се обръщат към мене  ), че на нещо дето се клати няколко милиона пъти в секундата не вярвам. Чак ги стряскам и рискувам да ги изпъдя. За отговорни неща, колкото в управлението има повече желязо (механика), толкова по-добре. Колкото е по-просто - по-добре. Стига да е възможно. Не случайно има изискване (стандарт) за новите машини в частта защитата на хората да се осъществява от защитно реле. Това не е едно реле , а релеен модул със схема, която анализира различните опасности. И се прави анализ на схемата какво ще стане, ако едно, две, или три релета релета откажат. Излишно е да споменавам, че продукта е лицензиран и релетата също не са случайни. Та контролерчета не са лошо нещо (евтини, мобилни и удобни за работа, даже и модерни) , но опасните неща трябва да бъдат защитени с нещо желязно. |  |  |  |  |
Прав си, абсолютгно съгласен, и тия контролерчета за които говоря не бих ги изпозлвал ако не се налага, зад всяко едно стои I/O модул с 10 пъти по висока цена, и цената му е такава просто зашщото е минал всички възможно сертификации и лаборатории че може да се изпозлва в животоспасяващи инсталации, уви тъпите задвижки не могат да работят с постоянен сигнал, т.е. пуска трябва да е импулс, освен това излезе едно изискване за междинно състояние. Та това наложи слагането на това контролерче с две реленца към него. Това което мен най-много ме тревожи не е това че реленцето може да не сработи, защото след като онова I/O каже че задвижката трябва да отвори започва да следи дали е отворила, и ако не е алармира, по ме притеснява да не би това контролерче да реши да я отвори от самосебе си, смущение, някакво непредвидено състояние и др. подобни.
Иначе чисто статистически контролера е доста по надежден от релето, т.е. ако реализираш подобна схема с две релета, надеждноста ще е много по-ниска от тази с контролер, ститистически пресметнато. Изпозлвнето на логика с реле, в зависимост от схемата също може да се получи с по-ниска надеждност.
Практиката показва че много от релетта, дори на реномирани производители дават проблеми, та за съжаление винаги има опасност, без значение има или няма контролерче, тук вече идва и цялостният замисъл, защото ограничавайки се само до съответното контролерче и съответния I/O модул, стигаме до точката в която имаме провал на контролера или на И/О модула, и каквото и да стане няма да се изпълни това което трябва, но планирайки цялостната система се предвиждатг начини това да бъде открито и вероятноста за липса на реакция минимизирана. Като пример се следят задвижките, ако не отворят се известявят значително повече лица, верно стига се до човешки фактор, но пак е по добре от колкот да мислиш че нещо е станало а то да не е. Отделно едн задвижка може да се командва от един, а да се следи от съвсем друг контролер, с цел ако пусковия има провал, следящия да не е същия, но така или иначе при тези системи всяко състояние извън нормата се сигнализира, така че няма как нещо да остане повредено, т.е. релето може да не е сработило, но пък входовете би следвлао да работят.
Както и да е, нещата не са само до писането на софтуера, а до цялостното решение на системата. Има случаи в които както и да се напише, системата винаги да има възможности за провал, които не са под контрола на този който прави конкретен модул, а и винаги има вероятност т провал, въпросът само е каква е тази вероятност.
|
| Съб Ное 21, 2009 3:10 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Зависи за каква надеждност иде реч. Ако надеждността е за брой комутационни цикли, транзисторът, или контролерът печелят. Даже и да няма електрическо натоварване релето, пружинките му не издържат след няколко милиона цикъла.
За защита обаче, надеждността се гледа от друга страна - възможност за погрешна комутация и то обикновено - за грешно включване, както е и в твоя случай. Сигурно е възможно, но в моята практика не ми се е случвало скапан силов транзистор да не дава накъсо. При релето обикновено това не е така. Ако нагорят контактите , то не включва. Случвало се е пъпките на контакторите да се завярят при външно късо, но това е съвсем друга ситуация.
Енергията способна да смути процесора, или включи транзистор, осоено МОS е много по-малка от тази за включване на едно реле. Съответно това е отношението на вероятностите за погрешно включване на едната и другата система. Виждал съм светещи светодиоди с две педя жици покрай инветори за асинхронии двигатели.
Твоето устройство е особено. Като се изключат тестовете, то трябва да сработи около един път през живота си. Ако аз го проектирах, за да не се стряскам на сън и да не ме стиска сърцето при всяка гръмотевична буря, бих постъпил поне по следния начин. Изходите за включване на пяната да са поне два, инверсни един спрямо друг. Сумират се с външна логика, може и схемна, може и релейна. Една rc закъснителна верика от порядъка на няколко десети от секундата няма да навреди на работоспособността . Ако системата позволява, едно външно куче не би било излишно да съобщава на който трябва , че устройството е живо. Резервирането на контролера с още един последоватателно или парарелно вързан изход не би подобрило надеждността чувствително - при светкавица и двата вероятно ще се прецакат.
И помисли пак - импулси могат да се цъкат и с релета.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Съб Ное 21, 2009 7:06 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Импулси могат, ама като сложиш всички подробности става сложно, не са само импулсите, трябва да генерира и средно положение, т.е. функция стоп по сигнал. И това става с релета но ... цялата история там по проект е обречена на много мъки, някои сигнали, и то контролни минават по 1 км кабели, като удари гръмотевица тия задвижки най вероятно ще се задействат дори и нищо да не дойде от релетата. Самите релета дори и да щракнат няма да стане нищо, за да стане трябва да щракне още едно релекоето е локално и е свързано директно с централата.
Тия релета да се цъкнат от смущение през процесора няма как, в смисъл там си има филтри, цифрови, няма как процесора да се ошашави и да сработи релето, в смисъл ако процесора забие някъде няма как да стане, освен ако не скочи там където се цъка, но както казах това само по себе си не може да задейства клапана. Аз лично се притеснявах повече от това че входа на задвижката е оптрон, мойто реле няма да щракне, ама всяка гръмотевица а там раьона хич не е лесен, ще го светка сигурно, а акакво има вътре в тая задвижка еидн господ знае. Аз съм виждал малки релета да се задействат от смущения, верно беше в ретранслатор ама по сериозна гръмотевижа е същото.
За външно куче нямаше как, имаше вариант всеки контролер да се следи, но и това, както и резервираното захранване останаха в историята, както се казва с трици маймуни не се ловят, орязаха ги. В момента ако контролер се преебе по някаква причина никой няма да разбере, единственото успокояващо е че всеки месец всичко се проверява напълно, и освен всичко по важно е да се отчете сигнала от детектора, дори да не сработи автоматично, системата може да се запусне и ръчно, което все пак увелиава надеждността .. ако дежурния не е пиян под масата ...
Вероятноста от фалшиво сработване е по голяма от това да не сработи, старал съм се основно от това да се защитя. Като цяло тия контролери не им е изобщо там мястото, не са сертифицирани за тия цели, и няма нищо сертифицирано, освен това което е в системата, да ама със задвижките ни разказаха играта .... хубавото е че в момента има голяма вероятност да сменят управлението им, т.е. мога и да ги разкарам тия контролери .... лошото е че това което ще сложат също няма да е сертифицирано, и по лошо че за това дето ние сме сложили имам идея какво мога да очаквам, а това което юще го сложи някой друг .......
|
| Съб Ное 21, 2009 8:04 pm |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 20, 2009 11:54 pm Мнения: 11338 Местоположение: "Занзибар"
|
Релета в 21-и век
Вие проектирате ама аз оправям и затова ще ви кажа: никакви релета! Контактори в краен случай, без тях все още е трудно, ама те са друга свирка. Най-малко защото съвременните разработчици и хабер си нямат как работи релето.
Пак да напомня най-често срещаните от мен повреди по платките (оправям професинални машини за ресторант/хотел):
1. Близки пътечки за 220В: от мръсотия/влага прави едно "бум" и няколко сантиметра от пистата просто се изпаряват. Пада голямо търкане но обикновено нищо друго не е изгоряло.
2. Контактите на релетата: заради цената им никога не ги презапасяват, пък дори да държат мнооо повече и да имат RC група в паралел при управление на индуктивен товар са бита карта.
3. Необезопасени входове на MCU-то които мерят нещо си.
4. Варисторите поставени за защита и всички останали недообмисляния при проектирането.
5. Дефектни елементи  - това при новите машини взе да се появява достатъчно често.
За управление от MCU на изход-реле за 220В БЕЗОТКАЗНО е: преоразмерен симистор (евтин е), паралелно му се слага варистор (да не изгори и той!) и RC група от сорта на 220 Ома/0.5Вт и кондензатор 100нФ/630В. Симисторът се управлява през фотосимисторен оптрон с детекция на нулата.
Горната схема я бях споменал някъде из форума, ще я начертая ако има интерес.
А блокирало MCU в машина все още не сьм видял. Напоследък и пикльовци се срещат и все тая...
Едит да не цапам (напр. sthx отдолу): знам, че е леко офтопик и още по-знам за оставените ръчички в програмирането. Ама аз казах!
Последна промяна bongo_x2 на Съб Ное 21, 2009 11:10 pm, променена общо 2 пъти
|
| Съб Ное 21, 2009 10:20 pm |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Не си гледал достатъчно.
Пък и съвсем друг проблем чепкаме.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Съб Ное 21, 2009 10:49 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: Google [Bot] и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|