СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

Главне тачке или о чему је овај чланак

Тема чланка је визуелно ПЛЦ програмирање СхИоТини за паметну кућу описану овде: СхИоТини: мала аутоматизација, Интернет ствари или „шест месеци пре одмора“.

Врло кратко појмови као што су чворови, свази, развој, као и карактеристике учитавања и извршавања визуелног програма на ЕСПКСНУМКС, који је основа ПЛЦ-а СхИоТини.

Увод или пар организационих питања

У претходном чланку о мом развоју дао сам кратак преглед могућности контролера СхИоТини.

Чудно, јавност је показала прилично велико интересовање и постављала ми је доста питања. Неки пријатељи су чак одмах понудили да купе контролер од мене. Не, нисам против да зарадим мало новца, али ми савест не дозвољава да продам нешто што је још увек веома сирово у погледу софтвера.

Стога сам поставио бинарне датотеке фирмвера и дијаграм уређаја на ГитХуб: фирмвер + најкраћа упутства + дијаграм + примери.

Сада свако може да флешује ЕСП-07 и да се игра са фирмвером. Ако неко заиста жели потпуно исту плочу као на фотографији, онда их имам неколико. Пишите путем е-поште [емаил заштићен]. Али, како је говорио незаборавни Огурцов: „Ни за шта нисам одговоран!

Дакле, пређимо на ствар: шта је "чвор" (чвор) и "догађај"? Како се програм извршава?

Као и обично, почнимо редом: преузимањем програма.

Како се програм учитава

Почнимо са оним што се дешава када притиснемо дугме отпремање у уреднику ЕлДрав и наш програм кола, који се састоји од прелепих квадрата, улети у уређај.

Прво, на основу дијаграма који смо нацртали, гради се његов опис у текстуалном облику.
Друго, проверава да ли су сви улази чвора повезани са излазима. Не би требало да постоје "висећи" улази. Ако се открије такав улаз, коло се неће учитати у СхИоТини, а уредник ће приказати одговарајуће упозорење.

Ако је све прошло добро, уредник шаље текстуални опис кола један по чвор у СхИоТини. Наравно, прво се уклања постојеће коло из СхИоТини. Резултујући текстуални опис се чува у ФЛАСХ меморији.

Успут, ако желите да уклоните коло са уређаја, онда једноставно учитајте празно коло у њега (који не садржи ниједан елемент чвора).

Када се цео програм кола учита у СхИоТини ПЛЦ, он почиње да се „извршава“. Шта то значи?

Имајте на уму да су процеси за учитавање кола из ФЛАСХ меморије када је напајање укључено и приликом пријема кола из едитора идентични.

Прво, објекти чвора се креирају на основу њиховог описа.
Затим се успостављају везе између чворова. То јест, генеришу се везе излаза са улазима и улаза са излазима.

И тек након свега овога почиње главни циклус извршавања програма.

Дуго сам писао, али цео процес - од "учитавања" кола из ФЛАСХ меморије до покретања главног циклуса - траје делић секунде за коло од 60-80 чворова.

Како функционише главна петља? Врло једноставна. Прво чека појаву развој на неком чвору, затим обрађује тај догађај. И тако у недоглед. Па, или док не учитају нову шему у СхИоТини.

Већ неколико пута сам поменуо ствари као што су развој, чворови и свази. Али шта је ово са софтверске тачке гледишта? Причаћемо о овоме данас.

Чворови, везе и догађаји

Само погледајте примере кола програма за СхИоТинида разумемо да се дијаграм састоји од само два ентитета – чворова (или елемената) и веза између њих.

Кнот, али да или елемент кола је виртуелна репрезентација неких активност преко података. Ово може бити аритметичка операција, логичка операција или било која операција која нам падне на памет. Главна ствар је да чвор има улаз и излаз.

улаз - ово је место где чвор прима податке. Улазне слике су тачке које се увек налазе на левој страни чвора.

Излаз - ово је место где се преузима резултат операције чвора. Излазне слике су тачке које се увек налазе на десној страни чвора.

Неки чворови немају улазе. Такви чворови интерно генеришу резултат. На пример, константни чвор или сензорски чвор: нису им потребни подаци из других чворова да би пријавили резултат.

Други чворови, напротив, немају излазе. То су чворови који приказују, на пример, актуаторе (релеје или нешто слично). Они прихватају податке, али не генеришу рачунски резултат који је доступан другим чворовима.

Поред тога, постоји и јединствени чвор за коментаре. Не ради ништа, нема улазе или излазе. Његова сврха је да буде објашњење на дијаграму.

Шта се десило "догађај"?" Евент је појава нових података у било ком чвору. На пример, догађаји укључују: промену стања уноса (чвор Улазни), примање података са другог уређаја (чворови МКТТ и УДП), истека одређеног временског периода (чворови Тајмер и Кашњење) и тако даље.

Чему служе догађаји? Да, да би се утврдило у ком чвору су настали нови подаци и чија стања треба променити у вези са пријемом нових података. Догађај, такорећи, „пролази“ дуж ланца чворова док не заобиђе све чворове чије стање треба проверити и променити.

Сви чворови се могу поделити у две категорије.
Хајде да позовемо чворове који могу да генеришу догађаје "активни чворови'.
Назваћемо чворове који не могу да генеришу догађаје “пасивни чворови'.

Када чвор генерише догађај (то јест, нови подаци се појављују на његовом излазу), тада се у општем случају мења стање целог ланца чворова повезаних са излазом чвора генератора догађаја.

Да би било јасно, размотрите пример на слици.

СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

Активни чворови овде су Инпут1, Инпут2 и Инпут3. Преостали чворови су пасивни. Хајде да размотримо шта се дешава када се један или други улаз затвори. Ради практичности, резултати су сажети у табели.

СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

Као што видите, када дође до догађаја, ланац се гради од изворног чвора догађаја до крајњег чвора. Стање оних чворова који не спадају у ланац се не мења.

Поставља се легитимно питање: шта ће се догодити ако се два или чак неколико догађаја догоде истовремено?

Као љубитељ дела Глеба Анфилова, у искушењу сам да пошаљем радозналог испитивача у његову књигу „Бекство од изненађења“. Ово је „теорија релативности за малишане“, која добро објашњава шта значи „симултано“ и како са тим живети.

Али практично је све много једноставније: када се догоде два или чак неколико догађаја, сви ланци из сваког извора догађаја се редом граде и обрађују и не дешавају се чуда.

Следеће сасвим легитимно питање радозналог читаоца је шта ће се десити ако се чворови повежу у прстен? Или, како кажу међу овим вашим паметњацима, унесите повратне информације. То јест, повежите излаз једног од чворова са улазом претходног чвора тако да стање излаза овог чвора утиче на стање његовог улаза. Едитор вам неће дозволити да директно повежете излаз чвора са његовим улазом. ЕлДрав. Али индиректно, као на слици испод, то се може учинити.

Па шта ће се десити у овом случају? Одговор ће бити врло „дефинитивни“: у зависности од тога који чворови. Погледајмо пример на слици.

СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

Када су улазни контакти Инпут1 отворени, горњи улаз чвора А је 0. Излаз чвора А је такође 0. Излаз чвора Б је 1. И, коначно, доњи улаз чвора А је 1. Све је јасно. А за оне којима није јасно, испод потражите опис како функционишу чворови „И“ и „НЕ“.

Сада затварамо контакте улаза Инпут1, односно примењујемо један на горњи улаз чвора А. Они који су упознати са електроником знају да ћемо у ствари добити класично коло генератора користећи логичке елементе. И у теорији, такво коло би требало бесконачно производити низ 1-0-1-0-1-0... на излазу елемената А и Б. и 0-1-0-1-0-1-…. На крају крајева, догађај мора стално да мења стање чворова А и Б, трчећи у круг 2-3-2-3-...!

Али у стварности се то не дешава. Коло ће пасти у насумично стање - или ће релеј остати укључен или искључен, или ће се можда лагано укључити и искључити неколико пута заредом. Све зависи од времена на јужном полу Марса. И зато се ово дешава.

Догађај из чвора Инпут1 мења стање чвора А, затим чвора Б, и тако даље у круг неколико пута. Програм детектује „петљу” догађаја и насилно зауставља овај карневал. Након овога, промене у стању чворова А и Б су блокиране док се не догоди нови догађај. Тренутак у којем програм одлучује „престани да се врти у круг!“ - генерално, зависи од многих фактора и може се сматрати случајним.

Будите пажљиви када повезујете чворове у прстен - ефекти неће увек бити очигледни! Имајте добру идеју о томе шта и зашто радите!

Да ли је још увек могуће изградити генератор на чворовима који су нам доступни? Да можете! Али ово захтева чвор који може сам да генерише догађаје. И постоји такав чвор - ово је „линија кашњења“. Да видимо како ради генератор са периодом од 6 секунди на слици испод.

СхИоТини: чворови, везе и догађаји или карактеристике програма за цртање

Кључни елемент генератора је чвор А – линија кашњења. Ако промените улазно стање линије кашњења са 0 на 1, онда се 1 неће појавити на излазу одмах, већ тек након одређеног времена. У нашем случају то је 3 секунде. На исти начин, ако промените улазно стање линије кашњења са 1 на 0, онда ће се 0 на излазу појавити након исте 3 секунде. Време кашњења је подешено у десетинкама секунде. То јест, вредност 30 значи 3 секунде.

Посебна карактеристика линије кашњења је да генерише догађај након што време кашњења истекне.

Претпоставимо да је иницијално излаз линије кашњења био 0. Након проласка чвора Б - претварача - ова 0 се претвара у 1 и иде на улаз линије одлагања. Ништа се не дешава одмах. На излазу линије кашњења остаће 0, али ће почети одбројавање времена кашњења. Прође 3 секунде. А онда линија кашњења генерише догађај. На свом излазу се појављује 1. Ова јединица, након проласка кроз чвор Б - претварач - претвара се у 0 и иде на улаз линије одлагања. Пролазе још 3 секунде... и процес се понавља. То јест, сваке 3 секунде стање излаза линије кашњења се мења са 0 на 1, а затим са 1 на 0. Релеј шкљоцне. Генератор ради. Период импулса је 6 секунди (3 секунде на излазу нула и 3 секунде на излазу један).

Али, у стварним колима, обично нема потребе да се користи овај пример. Постоје посебни тајмер чворови који савршено и без помоћи споља генеришу низ импулса са датим периодом. Трајање „нула“ и „један“ у овим импулсима је једнако половини периода.

Да бисте подесили периодичне радње, користите чворове тајмера.

Напомињем да се такви дигитални сигнали, где је трајање „нула“ и „један“ једнако, називају „меандер“.

Надам се да сам мало разјаснио питање о томе како се догађаји пропагирају између чворова и шта не треба радити?

Закључак и референце

Испоставило се да је чланак кратак, али овај чланак је одговор на питања која су се појавила у вези са чворовима и догађајима.

Како се фирмвер буде развијао и појављивали нови примери, писаћу о томе како програмирати СхИоТини мале чланке све док ће људима бити занимљиво.

Као и раније, дијаграм, фирмвер, примери, опис компоненти и све остало је овде.

Питања, сугестије, критике - идите овде: [емаил заштићен]

Извор: ввв.хабр.цом

Додај коментар