Управљање у реалном времену/Питања
- Овај рок није решен. Помозите СИ Wики тако што ћете га решити.
На овој страници су сакупљена питања са претходних рокова без нарочите организације по роковима.
Ладдер програмирање
Јун 2020
(9) Применом ладдер програмирања реализовати програм који има следеће функционалности:
- Притиском па тастер који је на локацији И0.0 ресетују се излази Q0.0 и Q0.1 и у наредних 5 секунди се броје импулси са дигиталног улаза И0.1. Када прође 5 секунди престаје се са бројањем и чека се следеци притисак на тастер И0.0.
- Уколико се у току времена од 1 секунде од притиска на тастер изброји мање од 20 импулса сетовати излаз Q0.0.
- Уколико се у току времена од 2 секунде од притиска на тастер детектује више од 50 импулса сетовати излаз Q0.1.
- Уколико се тастер притисне после мање од 5 секунди од претходног притиска тастера, игнорисати ово и наставити бројање импулса.
Фебруар 2020
(10) Поседујете машину која поседује два тастера за старт (И0.0 и И0.1), један тастер за стоп (И0.2) и тастер ресет (И0.3). Да би се систем стартовао потребно је истовремено притиснути оба тастера старт (у максималном временском интервалу од 100мс) и тада се укључује секвенца. Она садржи: укључити мотор (Q0.0), сачекати 20 секунди и затим укључити грејач (Q0.1) који је 10 секунди укључен, а затим 30 секунди искључен и ову секвенцу (10сек ОН/30сек ОФФ) поновити пет пута. Пре почетка секвенце уколико се притисне неки од тастера старт, а не оба у току од 100мс временске разлике, бројати овакве догађаје у бројачу Ц0. Када он изброји 6 оваквих узастопних догађаја систем иде у стање стоп (сви актуатори искључени) и да би се систем стартовао мора се притиснути тастер ресет. Тастером стоп, систем се зауставља (сви актуатори се искључују) и да би се поново покренуо систем мора се притиснути тастер ресет. Реализовати применом ладдер (лествичастог) програмирања програм који има наведену функционалност.
Јул 2020
(9) Реализовати аутоматизацљу рада семафора у ладдер програмском језлку. Постоји 5 дигиталнлх излаза (Q0.0, Q0.1, Q0.2 су адресе зеленог, жутог и црвеног светла па семафору, респективно, а Q1.0 и Q1.1 су адресе зеленог и црвеног светла за пешаке, респективно) и 2 длгитална улаза (И0.0 је адреса тастера за пешаћки прелаз, а на адресл И0.1 се генерише импулс сваки пут кад прође аутомобил поред семафора). Програм треба да има следећу функционалност:
- У номиналном режиму укључено је зелено светло за аутомобиле и црвено светло за пешаке. Сва остала светла су искључена. У току номиналног режима броји се колико је аутомобила прошло поред семафора.
- Ако смо у номиналном режиму, кад се притисне пешачки тастер започиње следећа секвенца
- Чека се да се испуни барем један од следецих услова: прошло је 10 секунди од притиска тастера или је прошло 15 аутомобила поред семафора.
- Пос1е тога искључује се зелено и укључује се жуто светло за аутомобиле.
- Чека се 3 секунде.
- Пос1е тога укључује се црвено светло за аутомобиле и зелено светло за пешаке (сва остала светла су искључена).
- Чека се 15 секунди
- Поновни притисак пешачког тастера се игнорише у току извршавања секвенце.
- Пос1е извршења ове секвенце врши се повратак у номинални режим и ресетује се бројач аутомобила.
Јун 2019
(10) Поседујете машину која поседује два тастера за старт (И0.0 и И0.1), један тастер за стоп (И0.2) и тастер ресет (И0.3). Да би се систем стартовао потребно је истовремено притиснути оба тастера старт (у максималном временском интервалу од 100мс) и тада се укључује секвенца. Она садржи: укључити мотор (Q0.0), сачекати 20 секунди и затим укључити грејач (Q0.1) који је 5 секунди укључен, а затим 30 секунди искључен и ову секвенцу (5сек ОН/30сек ОФФ) поновити три пута. Пре почетка секвенце уколико се притисне неки од тастера старт, а не оба у току од 100мс временске разлике, бројати овакве догађаје у бројачу Ц0. Када он изброји 6 оваквих догађаја систем иде у стање стоп (сви актуатори искључени) и да би се систем стартовао мора се притиснути тастер ресет. Тастером стоп, систем се зауставља (сви актуатори се искључују) и да би се поново покренуо систем мора се притиснути тастер ресет. Реализовати применом ладдер (лествичастог) програмирања програм који има наведену функционалност.
Јул 2019
(10) Реализовати применом ладдер (лествичастог) програмирања програм који има следећу функционалност:
- Потребно је поставити меморијску локацију М0.0 на вредност 1, када се појаве четири узастопна импулса трајања мање од 50мс па дигиталном улазу И0.0
- Уколико се у секвенци импулса појави импулс дужи од 150мс, а краћи од 200мс или притиском на тастер И0.1, потребно је бројати као да су се појавила два импулса
- Уколико се у секвенци импулса појави импулс дужи од 200мс потребно је ресетовати бројање
- Меморијска локација М0.0 се поставља на нулу притиском на тастер који се налази на дигиталном улазу И0.3
Јун 2018
(10) Реализовати применом ладдер (лествичастог) програмирања програм који има следећу функционалност:
- Потребно је поставити меморијску локацију М100.0 па вредност 1, када се појави пет узастопних импулса трајања мање од 50мс на дигиталном улазу И0.1
- Уколико се у секвенци импулса појави импулс дужи од 100мс, а краћи од 150мс или притиском на тастер И0.2, потребно је поново започети бројање
- Уколико се у секвенци импулса појави импулс дужи од 150мс такав импулс се рачуна као два импулса
- Меморијска локација М100.0 се поставља на нулу притиском на тастер који се налази на дигиталном улазу И0.3
Јул 2018
(10) Реализовати применом ладдер (лествичастог) програмирања програм који има следећу функционалност:
- Потребно је поставити меморијску локацију М100.0 на вредност 1, када се појави осам узастопних импулса трајања мање од 50мс па дигиталном улазу И0.1
- Уколико се у секвенци импулса појави импулс дужи од 150мс или притиском на тастер И0.3, потребно је поново започети бројање
- Меморијска локација М100.О се поставља на нулу притиском на тастер који се налази на дигиталном улазу И0.3
Септембар 2018
(10) Реализовати применом ладдер (лествичастог) програмирања програм који има следећу функционалност:
- Потребно је поставити меморијску локацију МБ100 на вредност 2, када се појави осам узастопних импулса трајања мање од 50мс па дигиталном улазу И0.1
- Уколико се у секвенци импулса појави импулс ду3и од 150мс или притиском па тастер И0.3, потребно је поново започети бројање
- Меморијска локација М8100 се поставља на нулу притиском па тастер који се налази на дигиталном улазу И0.3
Индустријске мреже
Савети
1) уколико је нагласено у тексту да је потребно "управљање уредјајима у реалном времену", онда одмах знам да не треба МОДБУС протокол да искористим јер није довољно поуздан за тако несто
2) уколико је нагласено у тексту да је потребан само "надзор уредјаја", као нпр. оцитавање температуре у резервоарима, онда одмах знам да нема потребе за ПРОФИБУС или ПРОФИНЕТ протоколима, вец да мозе МОДБУС протокол да се искористи јер није потребно никакво управљање у реалном времену (под условом да има до 32 уредјаја у мрези, јер толико уредјаја МОДБУС протокол мозе максимално да подрзи, као и да је растојање од централне станице до удаљене локације максимално око 1км, јер толики домет има МОДБУС протокол) - тада су само потребни паметни сензори у удаљеним локацијама
3) уколико је у удаљеним локацијама потребно управљање (пумпа, вентилатор, грејац, итд.) то ми одмах говори да је потребно да свака удаљена локација има по ПЛЦ - много је боље тако него да постоји само један ПЛЦ у центру и да он обавља целокупно управљање свим уредјајима у удаљеним локацијама; такодје, треба нацртати и тоуцх панел (ХМИ) у свакој удаљеној локацији када је у њима потребно управљање (наравно, ако нема управљања него само нпр. паметних сензора, онда нема потребе за тоуцх панелом (ХМИ-јем) као ни за ПЛЦ-ом у удаљеној локацији)
4) уколико сам закљуцио да треба да искористим ПРОФИНЕТ протокол са оптицким кабловима за повезивање свица из централне станице са свицевима у удаљеним локацијама, онда су на улазу у централну станицу неопходни оптицки претвараци који конвертују оптицке сигнале у електрицне - ово је потребно зато сто унутар централне станице нема потребе користити оптицке каблове посто су мале удаљености, па су за повезивање уредјаја довољни бакарни каблови који проводе електрицне сигнале - исто вази и за улаз у удаљену локацију, и ту су потребни претвараци; медјутим, постоје Сиеменс свицеви са улазима за оптицке каблове, па у том слуцају цак и не треба претварац
5) ако је удаљена локација удаљена од централне просторије око 100м, одмах знам да могу да искористим ПРОФИНЕТ и то са бакарним кабловима (наравно, под условом да је потребно управљање у реалном времену, дакле ако имамо некакве пумпе, вентилаторе или грејаце у удаљеним локацијама, и такодје ако имамо велики број уредјаја у мрези (преко 128), јер у супротном нема потребе за овако скупим ресењем ако нема - ако има преко 32 а мање од 128 могао би ПРОФИБУС да се искористи са бакарним кабловима, а ако има мање од 32 уредјаја могао би МОДБУС да се искористи са бакарним кабловима уколико није потребно управљање)
6) ако се трази најјефтиније могуце ресење, треба имати у виду да је МОДБУС најјефтинији, па онда ПРОФИБУС, а затим ПРОФИНЕТ, а по квалитету је исти редослед ако се гледа од најгорег ка најбољем протоколу
7) ПРОФИБУС са бакарним кабловима се најцесце користи ако је потребан домет до 1.2км и ако има до 128 уредјаја у мрези, а такодје вец постоји нека стара постојеца инфраструктура коју зелимо да искористимо, медјутим ако се гради нека мреза од нуле у данасње време, у 90% ситуација це се искористити ПРОФИНЕТ (са бакарним кабловима ако је удаљеност до око 100м, а са оптицким ако је веца)
8) код МОДБУС и ПРОФИБУС је најцесца даисy цхаин (линеарна) топологија мрезе, док је код ПРОФИНЕТ најцесца стар (звездаста) топологија заједно са ринг (прстенастом) топологијом, при цему се цесто користи и дупли прстен ради редундансе
9) ако се тразе "визуелизација и белезење" информација, то ми одмах говори да у централној станици треба да нацртам ПЦ са СЦАДА-ом јер је у СЦАДА-и база података где се ти подаци цувају - уколико није потребно белезење података, онда нема потребе за СЦАДА-ом, вец је довољан тоуцх панел (ХМИ) у централној станици тада
10) уколико је удаљеност измедју централне собе и удаљених локација огромна (реда велицине стотина километара), тада комуникација измедју њих мора да се одвија преко интернета (WАН) - ради сигурности позељно је користити и ВПН како би комуникација била застицена
11) цим има огроман број уредјаја (преко 128), одмах знам да треба ПРОФИНЕТ да искористим, само је питање да ли са бакарним или оптицким кабловима у зависности од удаљености измедју централне собе и удаљених локација
12) ако је потребан само надзор (без управљања у реалном времену) и ако бас није могуце повезати централну собу са удаљеним локацијама кабловима из неког разлога, онда се мозе прибеци корисцењу ГСМ или радио везе за комуникацију и тада је потребан модем како у централној соби (предајник), тако и у свим удаљеним локацијама (пријемници) - треба имати у виду да овај вид комуникације није поуздан и никако није реал тиме; такодје треба имати у виду да је ово могуце као ресење само ако је нагласено у тексту да је у питању "мој објекат", јер су само тада контролисани услови, инаце ако се преко јавних поврсина одвија комуникација преко ГСМ или радио везе, онда постоји веца опасност од напада
13) ако користим МОДБУС или ПРОФИБУС, само повезем све уредјаје једном истом линијом (магистралом) јер се тада користи даисy цхаин (линеарна) топологија, а ако користим ПРОФИНЕТ, онда је потребан по свиц како у централној соби, тако и у удаљеним локацијама и они могу бити повезани у стар или ринг (а мозе и доубле ринг) топологије
14) уколико је потребан само надзор уредјаја, а не управљање, ПЛЦ-ови нису потребни нити у централној соби, нити у удаљеним локацијама, вец је довољан ПЦ са СЦАДА-ом у централној соби за визуелизацију и белезење података, док из удаљених локација одговарајуце вредности могу слати паметни сензори; такодје нису потребни ни ХМИ-јеви нити у централној соби нити у удаљеним локацијама ако је само надзор уредјај потребан
Јун 2020
(12) Главни сте електро пројектант и треба да направите систем унутар вашег објекта који има централну станицу (у центру круга) и пет удаљених локација (на замишљеној кружници) на једнаком растојању од централне станице од 2км и једнаком међусобном растојању. Свака удаљена локација има систем који пумпа воду у 1окални резервоар и из тог резервоара пумпа воду у централни резервоар системом цевовода. Треба да пројектујете централни систем и локалне станице тако да целокупан систем функционише у реалном времену, и који поседује могућности да се у централној станици визуализују и бележе сви параметри (нивои, температуре, протоци...) практично неограничено. Детаљно пројектовати дати систем, нацртати распоред опреме, тако да неко може на основу вашег пројекта да набави сав потребан хардwаре и софтwаре, предложити тип протокола комуникације, као и врсту мреже...
Решење
- Посто је удаљеност измедју централне собе и удаљених локација 2км, не могу да се употребе нити МОДБУС (домет му је око 1км) нити ПРОФИБУС (домет му је око 1.2км), вец мора ПРОФИНЕТ (и то са оптицким кабловима јер је са бакарним домет око 100м).
- Посто користимо ПРОФИНЕТ протокол, могуце је употребити или стар или ринг (мозе и доубле ринг ради редундансе) топологију мрезе - станице су медјусобно повезане преко свицева, тј. свицеве повезујемо у одговарајуце топологије мрезе.
- Посто је рецено у тексту да су у удаљеним локацијама пумпе које пумпају воду у локални резервоар итд., а и нагласено је после да је потребно да "целокупан систем функционисе у реалном времену" оцигледно је неопходно управљање у реалном времену, па је потребан ПЛЦ како у централној соби, тако и у удаљеним локацијама (ради сигурности, како не би целокупно управљање зависило од једног ПЛЦ из централне собе); такодје, потребно је додати и ХМИ како у централну собу, тако и у удаљене локације како би било могуце управљање преко тоуцх панела.
- Посто смо закљуцили да су пумпе наси уредјаји којима управљамо у реалном времену, њих повезујемо бакарним кабловима унутар станица са ПЛЦ.
- Посто је рецено у тексту да је потребно да се у централној станици визуелизују и белезе подаци, потребан је ПЦ са СЦАДА-ом у централној соби.
- Посто нема потребе да се унутар удаљених локација као и унутар централне собе користе оптицки каблови јер су ту мале удаљености, потребно је на улазима у све станице поставити претварац који конвертује оптицки сигнал у електрицни, и обрнуто - на овај нацин се унутар свих станица могу користити бакарни каблови, а оптицки се користе само за повезивање удаљених локација са централном собом.
Јул 2020
(10) Главни сте пројектант и треба да направите систем и пројектујете мрежу која има по 150 сензора нивоа (који имају излазе 0-10В) у резервоарима у две просторије које су међусобно и од просторије где се налазл систем управљања удаљене по 300м. Код централне просторије налазл се централни резервоар са сензорима нивоа и пумпама. У свакој просторији потребно је обезбедити могућност праћења нивоа, али рад пумпи које се налазе у тим просторијама, у завлсности од нивоа у резервоарима. Треба да направите систем који поседује могућност да визуелизује и бележи нивое резервоара практично неограничено. Детаљно пројектовати дати систем, поставити и скицирати мрежу, предложити тип протокола комуникације, тип мреже, ПЛЦ, ПЦ рачунар. Пројектовати економски најповољније решење.
Решење
- Посто је рецено да постоје две удаљене просторије и у свакој има по 150 сензора нивоа, а такодје постоје и пумпе у овим просторијама, то нам говори да има преко 300 уредјаја у овој мрези, одакле одмах закљуцујемо да не могу да се искористе нити МОДБУС (подрзава највисе 32 уредјаја) нити ПРОФИБУС (подрзава највисе 128 уредјаја) протоколи, вец мора ПРОФИНЕТ протокол јер он подрзава неограницен број уредјаја.
- Цим имамо пумпе у удаљеним просторијама, то знаци да је потребно управљање у реалном времену, па је потребан ПЛЦ како у централној соби, тако и у удаљеним просторијама; такодје, потребно је додати и ХМИ у све станице; све се повезује са свицевима - ПЛЦ, ХМИ, ПЦ са СЦАДА и станице онда медјусобно повезујемо тако сто повеземо њихове свицеве.
- Посто је рецено у тексту да су у удаљеним локацијама пумпе које пумпају воду у локални резервоар итд., а и нагласено је после да је потребно да "целокупан систем функционисе у реалном времену" оцигледно је неопходно управљање у реалном времену, па је потребан ПЛЦ како у централној соби, тако и у удаљеним локацијама (ради сигурности, како не би целокупно управљање зависило од једног ПЛЦ из централне собе); такодје, потребно је додати и ХМИ како у централну собу, тако и у удаљене локације како би било могуце управљање преко тоуцх панела.
- Посто је потребна визуелизација и памцење података, у централној соби је потребан ПЦ са СЦАДА.
- Посто је удаљеност измедју централне станице и удаљених просторија 300м, није могуце искористити ПРОФИНЕТ са бакарним кабловима јер је њима домет 100м, тако да су неопходни оптицки каблови за повезивање централне просторије са удаљеним - такодје су онда потребни и претвараци на улазима у све станице који конвертују оптицки сигнал у електрицни и обрнуто јер нема потребе користити оптицке каблове унутар самих станица, вец је могуце ту искористити бакарне каблове - то је свакако јефтиније ресење и рационалније а и тразено је у тексту задатка да испројектујемо најекономицније ресење.
- Могуце је повезати станице било у ринг (мозе и доубле ринг ради редундансе) било у стар топологију.
Јун 2019
(10) Главни сте електро пројектант и треба да направите систем који има 400 сензора нивоа у 400 резервора на 10 удаљених локација, равномерно распоредених, тј. по 40 резервоара по локацији. Треба да направите систем који поседује могућности да визуелизује и бележи нивое резервоара практично неограничено. Детаљно пројектовати дати систем, нацртати распоред опреме, одабрати сву опрему, дати распоред комплетне опреме, тако да неко може на основу вашег пројекта да набави сав потребан хардwаре и софтwаре, предложити тип протокола комуникације, као и врсту мреже...
Решење
- Посто има укупно 400 сензора нивоа који треба да буду у мрези, то одмах говори да морамо да користимо ПРОФИНЕТ протокол за комуникацију јер МОДБУС протокол подрзава до 32 уредјаја, а ПРОФИБУС до 128, док ПРОФИНЕТ подрзава неограницен број уредјаја.
- Из текста задатка видимо да није потребно обезбедити никакво управљање у реалном времену, вец само надзор, тј. оцитавање вредности из свих ових сензора нивоа. Ово знаци да нам уопсте није потребан ПЛЦ ни у једној станици, као ни ХМИ. Довољно је да свих 400 сензора буду паметни сензори који це слати вредности које оцитају преко мрезе до централне просторије.
- У централној просторији је потребан ПЦ са СЦАДА како би могли да се визуелизују и белезе подаци које саљу паметни сензори из удаљених локација.
- Посто је потребна визуелизација и памцење података, у централној соби је потребан ПЦ са СЦАДА.
- Посто није дата удаљеност измедју централне станице и осталих станица, претпоставицемо да це оптицки каблови одрадити посао и њих цемо онда искористити за повезивање станица.
- У свакој станици је потребно нацртати по сwитцх, и станице медјусобно повезујемо тако сто повеземо сwитцх-еве. Посто је у питању ПРОФИНЕТ протокол, моземо их повезати у стар или ринг (мозе и доубле ринг ради редундансе) топологију.
- Да бисмо оптимизовали троскове, додацемо и претвараце који конвертују оптицке сигнале у електрицне и обрнуто на улазу сваке станице јер нема потребе да се унутар станица користе оптицки каблови, вец могу бакарни.
Јун 2018
(10) Главни сте пројектант и треба да направите систем и пројектујете мрежу која има по 150 сензора нивоа у резервоарима у две просторије које су међусобно и од просторије где се налази систем управљања удаљене по 300м. У свакој просторији потребно је обезбедити могућност праћења нивоа, а1и рад пумпи које се налазе у тим просторијама, у зависности од нивоа у резервоарима. Треба да направите систем који поседује могућности да визелизује и бележи нивое резервоара практично неограничено. Детаљно пројектовати дати систем, поставити и скицирати мрежу, предложити тип протокола комуникације, врсту мреже, ПЛЦ, ПЦ рачунар...
Решење
- Посто је рецено да постоје две удаљене просторије и у свакој има по 150 сензора нивоа, а такодје постоје и пумпе у овим просторијама, то нам говори да има преко 300 уредјаја у овој мрези, одакле одмах закљуцујемо да не могу да се искористе нити МОДБУС (подрзава највисе 32 уредјаја) нити ПРОФИБУС (подрзава највисе 128 уредјаја) протоколи, вец мора ПРОФИНЕТ протокол јер он подрзава неограницен број уредјаја.
- Цим имамо пумпе у удаљеним просторијама, то знаци да је потребно управљање у реалном времену, па је потребан ПЛЦ како у централној соби, тако и у удаљеним просторијама; такодје, потребно је додати и ХМИ у све станице; све се повезује са свицевима - ПЛЦ, ХМИ, ПЦ са СЦАДА и станице онда медјусобно повезујемо тако сто повеземо њихове свицеве.
- Посто је рецено у тексту да су у удаљеним локацијама пумпе које пумпају воду у локални резервоар итд., а и нагласено је после да је потребно да "целокупан систем функционисе у реалном времену" оцигледно је неопходно управљање у реалном времену, па је потребан ПЛЦ како у централној соби, тако и у удаљеним локацијама (ради сигурности, како не би целокупно управљање зависило од једног ПЛЦ из централне собе); такодје, потребно је додати и ХМИ како у централну собу, тако и у удаљене локације како би било могуце управљање преко тоуцх панела.
- Посто је потребна визуелизација и памцење података, у централној соби је потребан ПЦ са СЦАДА.
- Посто је удаљеност измедју централне станице и удаљених просторија 300м, није могуце искористити ПРОФИНЕТ са бакарним кабловима јер је њима домет 100м, тако да су неопходни оптицки каблови за повезивање централне просторије са удаљеним - такодје су онда потребни и претвараци на улазима у све станице који конвертују оптицки сигнал у електрицни и обрнуто јер нема потребе користити оптицке каблове унутар самих станица, вец је могуце ту искористити бакарне каблове - то је свакако јефтиније ресење и рационалније а и тразено је у тексту задатка да испројектујемо најекономицније ресење.
- Могуце је повезати станице било у ринг (мозе и доубле ринг ради редундансе) било у стар топологију.
ГРАФЦЕТ програмирање
Јун 2018
(10) Дат је ГРАПХЦЕТ[сиц] дијаграм система. Шта ради овај систем и објаснити речима како ради.
Јун 2020
(9) Нацртати ГРАФЦЕТ дијаграм за задатак 1.
Јул 2020
(10) Нацртати ГРАФЦЕТ дијаграм за задатак 1.
Регулатори
void sleep(int seconds)
{
// simulation of thread sleep
}
int main()
{
float r; // referenca
float y; // merenje
float y_max = 40.0; // maksimalna prava digitalna vrednost merenja
float y_scaled_max = 1023; // maksimalna skalirana digitalna vrednost merenja koju moze da vrati analogno-digitalni konvertor
float e_current; // greska u trenutnoj periodi odabiranja
float e_previous; // greska u prosloj periodi odabiranja
float u; // upravljanje
float u_max = 100.0;
float u_scaled_max = 4095;
float u_man; // upravljanje u rucnom rezimu rada
float u_p = 0; // upravljanje poteklo od proporcionalnog dejstva
float u_i = 0; // upravljanje poteklo od integralnog dejstva
float u_d = 0; // upravljanje poteklo od diferencijalnog dejstva
float k_p = 4.0; // konstanta proporcionalnog dejstva
float t_i = 0.5; // vremenska konstanta integralnog dejstva
float t_s = 0.1; // perioda odabiranja (u sekundama)
float k_i = (k_p / t_i) * t_s; // konstanta integralnog dejstva
float t_d = 2.0; // vremenska konstanta diferencijalnog dejstva
float k_d = (k_p / t_s) * t_d; // konstanta diferencijalnog dejstva
bool auto_current = false; // da li je sistem u trenutnoj periodi odabiranja u automatskom rezimu rada
bool auto_previous = false; // da li je sistem u prosloj periodi odabiranja bio u automatskom rezimu rada
while (true)
{
// simulacija izvrsenja prekidne rutine
// trenutno se u promenljivoj y nalazi skalirana digitalna vrednost koju je izracunao analogno-digitalni
// konvertor, pa je neophodno prvo izracunati pravu digitalnu vrednost y
y = (y / y_scaled_max) * y_max;
if (auto_current == true)
{
// automatski rezim rada
// obezbedjivanje bumpless prelaza pri prelazu iz rucnog u automatski rezim rada
if (auto_previous == false)
{
r = y; // ovo garantuje da ce u_p biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
u_i = u_man; // ovo garantuje da ce u_i biti u_man sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
e_previous = 0; // ovo garantuje da ce u_d biti 0 sto zelimo da bismo obezbedili bumpless prelaz iz rucnog u automatski rezim rada
}
// automatsko azuriranje upravljanja
e_current = r - y;
u_p = k_p * e_current;
u_i = u_i + k_i * e_current;
u_d = k_d * (e_current - e_previous);
u = u_p + u_i + u_d;
// obezbedjivanje bumpless prelaza pri prelazu iz automatskog u rucni rezim rada
u_man = u;
// obezbedjivanje zastite od navijanja (anti-windup)
if (u > 100.0)
{
u = 100.0;
u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju maksimalnu vrednost
}
if (u < 0.0)
{
u = 0.0;
u_i = u_i - k_i * e_current; // integralno dejstvo ne treba akumulirati kada je upravljanje dostiglo svoju minimalnu vrednost
}
// pamcenje greske iz tekuce periode odabiranja da bi se u narednoj periodi odabiranja sacuvala ta informacija zbog racunanja diferencijalnog dejstva
e_previous = e_current;
}
else
{
// rucni rezim rada
// rucno azuriranje upravljanja
u = u_man;
// ova dodela se radi kako bi se dodatno potvrdilo da je sistem u rucnom rezimu rada time sto ce grafik reference biti isti kao grafik merenja
r = y;
}
// trenutno se u promenljivoj u nalazi prava digitalna vrednost upravljanja, pa je potrebno izracunati skaliranu
// digitalnu vrednost upravljanja kako bi se ona dovela na ulaz digitalno-analognog konvertora
u = (u / u_max) * u_scaled_max;
// simulacija prekidne rutine pomocu beskonacne while petlje i thread sleep tako sto uspavamo glavnu nit na t_s sekundi, sto je upravo perioda odabiranja
// inace bi se prekidna rutina automatski izvrsavala periodicno sa razmakom od t_s sekundi izmedju dva uzastopna izvrsavanja
sleep(t_s);
}
return 0;
}