ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

Негизги пункттар же бул макала эмне жөнүндө

Макаланын темасы визуалдык PLC программалоо болуп саналат ShioTiny бул жерде сүрөттөлгөн акылдуу үй үчүн: ShioTiny: чакан автоматташтыруу, нерселердин Интернети же "эс алуудан алты ай мурун".

Абдан кыскача сыяктуу түшүнүктөр түйүндөр, байланыш, окуялар, ошондой эле визуалдык программаны жүктөө жана аткаруу өзгөчөлүктөрү ESP8266, бул PLC негизи болуп саналат ShioTiny.

Киришүү же бир нече уюштуруу суроолору

Өзүмдүн өнүгүүм тууралуу мурунку макалада мен контроллердин мүмкүнчүлүктөрү жөнүндө кыскача маалымат бердим ShioTiny.

Кызык жери, коомчулук абдан кызыгып, мага көптөгөн суроолорду беришти. Кээ бир достор дароо менден контроллер сатып алууну сунушташты. Жок, мен бир аз акча табууга каршы эмесмин, бирок менин абийирим программалык камсыздоо жагынан дагы эле өтө орой болгон нерсени сатууга жол бербейт.

Ошондуктан, мен GitHubга экилик программалык камсыздоону жана түзмөк диаграммасын жайгаштырдым: микропрограмма + кыска нускамалар + диаграмма + мисалдар.

Эми ар бир адам ESP-07 жаркылдап, микропрограмма менен өзү ойной алат. Эгерде кимдир бирөө чындап эле сүрөттөгү тактайды кааласа, анда менде алардын бир нечеси бар. Электрондук почта аркылуу жазыңыз [электрондук почта корголгон]. Бирок, унутулгус Огурцов айткандай: «Мен эч нерсеге жооптуу эмесмин!».

Ошентип, сөзгө келели: бул эмне "түйүн"(түйүн) жана"окуя"? Программа кандайча аткарылат?

Адаттагыдай эле, ирети менен баштайлы: программаны жүктөп алуу менен.

Программа кантип жүктөлөт

Биз кнопканы басканда эмне болорунан баштайлы Upload редактордо ElDraw ал эми кооз квадраттардан турган биздин схема-программабыз аппаратка учат.

Биринчиден, биз тарткан диаграмманын негизинде, анын текст түрүндө сүрөттөлүшү курулган.
Экинчиден, ал бардык түйүн кириштеринин чыгууларга туташкандыгын текшерет. Эч кандай "илинген" кире бериштер болбошу керек. Мындай киргизүү аныкталса, схема ShioTinyге жүктөлбөйт жана редактор тиешелүү эскертүүнү көрсөтөт.

Эгер баары ойдогудай болсо, редактор ShIoTinyге бирден бир түйүн боюнча схеманын тексттик сүрөттөмөсүн жөнөтөт. Албетте, ShioTinyден болгон схема алгач алынып салынат. Натыйжадагы тексттин сүрөттөлүшү FLASH эсинде сакталат.

Айтмакчы, эгер сиз аппараттан схеманы алып салгыңыз келсе, анда ага бош схеманы жүктөңүз (бир түйүн элементин камтыбайт).

Бардык схема программасы ShioTiny PLCге жүктөлгөндөн кийин, ал "аткаруу" башталат. Бул эмнени билдирет?

Кубат күйгүзүлгөндө жана редактордон схеманы алууда FLASH эс тутумунан схеманы жүктөө процесстери бирдей экендигин эске алыңыз.

Биринчиден, түйүн объекттери алардын сүрөттөлүшүнүн негизинде түзүлөт.
Андан кийин түйүндөр ортосунда байланыштар түзүлөт. Башкача айтканда, чыгуулардын кириштерге жана кириштерге шилтемелери түзүлөт.

Ошондон кийин гана негизги программаны аткаруу цикли башталат.

Мен көп убакыт жаздым, бирок бүт процесс - схеманы FLASH эс тутумунан "жүктөөдөн" баштап, негизги циклди баштоого чейин - 60-80 түйүндөрдүн схемасы үчүн секунданын бир бөлүгүн талап кылат.

Негизги цикл кантип иштейт? Өтө жөнөкөй. Алгач ал пайда болушун күтөт окуялар кандайдыр бир түйүндө, андан кийин ошол окуяны иштетет. Жана башкалар чексиз. Ооба, же алар ShioTinyге жаңы схеманы жүктөгөнгө чейин.

Буга чейин бир нече жолу мен сыяктуу нерселерди айттым окуялар, түйүндөр и байланыш. Бирок бул программалык камсыздоо жагынан эмне? Бул тууралуу бүгүн сүйлөшөбүз.

Түйүндөр, байланыштар жана окуялар

Жөн гана схемалык программалардын мисалдарын карап көрүңүз ShioTinyдиаграмма эки гана объекттен турат деп түшүнүү - түйүндөр (же элементтер) жана алардын ортосундагы байланыштар.

Түйүн, Бирок Ооба же схема элементи кээ бирлеринин виртуалдык көрүнүшү Аракети жок маалыматтардын үстүнөн. Бул арифметикалык операция, логикалык операция же биздин оюбузга келген кандайдыр бир операция болушу мүмкүн. Эң негизгиси, түйүндүн кире бериши жана чыгуусу бар.

кирүү - бул түйүн маалыматтарды кабыл алган жер. Киргизүү сүрөттөрү түйүндүн сол тарабында дайыма болгон чекиттер.

чыгуу - бул түйүндүн ишинин натыйжасы алынган жер. Чыгуу сүрөттөрү дайыма түйүндүн оң жагында жайгашкан чекиттер болуп саналат.

Кээ бир түйүндөрдө киргизүүлөр жок. Мындай түйүндөр ички натыйжаны жаратат. Мисалы, туруктуу түйүн же сенсор түйүнү: натыйжаны билдирүү үчүн аларга башка түйүндөрдүн маалыматтары керек эмес.

Башка түйүндөрдө, тескерисинче, эч кандай жыйынтык жок. Булар, мисалы, кыймылдаткычтарды (реле же ушуга окшош нерсени) көрсөткөн түйүндөр. Алар маалыматтарды кабыл алышат, бирок башка түйүндөр үчүн жеткиликтүү болгон эсептөө натыйжасын чыгарышпайт.

Мындан тышкары, уникалдуу комментарий түйүнү да бар. Ал эч нерсе кылбайт, эч кандай кириши же чыгышы жок. Анын максаты диаграмма боюнча түшүндүрмө болуп саналат.

Эмне болду "окуя"? окуя кандайдыр бир түйүндө жаңы маалыматтардын пайда болушу болуп саналат. Мисалы, окуяларга төмөнкүлөр кирет: киргизүү абалынын өзгөрүшү (түйүн кирүү), башка түзмөктөн маалыматтарды кабыл алуу (түйүндөр MQTT и UDP), белгиленген убакыттын бүтүшү (түйүн таймер и кармоо) жана башка.

Иш-чаралар эмне үчүн? Ооба, кайсы түйүндө жаңы маалыматтар пайда болгонун жана жаңы маалыматтардын келип чыгышына байланыштуу кайсы түйүндөрдүн абалын өзгөртүү керек экендигин аныктоо үчүн. Окуя, абалы текшерилиши жана өзгөртүлүшү керек болгон бардык түйүндөрдү айланып өтмөйүнчө, түйүндөр чынжырынан "өтөт".

Бардык түйүндөр эки категорияга бөлүнөт.
Келгиле, окуяларды түзө турган түйүндөрдү чакыралы "активдүү түйүндөр«.
Биз окуяларды түзө албаган түйүндөрдү чакырабыз "пассивдүү түйүндөр«.

Түйүн окуяны генерациялаганда (башкача айтканда, анын чыгышында жаңы маалыматтар пайда болот), анда жалпы учурда окуя генератор түйүнүнүн чыгышына туташтырылган түйүндөрдүн бүт чынжырынын абалы өзгөрөт.

Түшүнүктүү болушу үчүн, сүрөттөгү мисалды карап көрөлү.

ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

Бул жерде активдүү түйүндөр Input1, Input2 жана Input3 болуп саналат. Калган түйүндөр пассивдүү. Тигил же бул киргизүү жабылганда эмне болорун карап көрөлү. Ыңгайлуу болуу үчүн, натыйжалар таблицада жалпыланган.

ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

Көрүнүп тургандай, окуя болгондо, чынжыр окуянын баштапкы түйүнүнөн акыркы түйүнгө чейин курулат. Чынжырга түшпөгөн түйүндөрдүн абалы өзгөрбөйт.

Мыйзамдуу суроо туулат: эки, ал тургай, бир нече окуя бир убакта болуп кетсе, эмне болот?

Глеб Анфиловдун чыгармачылыгын суйуучу катары мен анын «Сюрпризден качуу» деген китебине кызыккан суроону жиберууге азгырылып жатам. Бул "бир эле учурда" деген эмнени билдирерин жана аны менен кантип жашоону жакшы түшүндүргөн "кичинекейлер үчүн салыштырмалуулук теориясы".

Бирок иш жүзүндө бардыгы алда канча жөнөкөй: эки же бир нече окуя болгондо, ар бир окуя булагындагы бардык чынжырлар ырааттуу түрдө курулуп, өз кезегинде иштетилет жана эч кандай керемет болбойт.

Кызыккан окурмандын кийинки толук мыйзамдуу суроосу - түйүндөр шакекчеге туташтырылса эмне болот? Же, бул акылдуу жигиттердин арасында айткандай, пикирди киргизиңиз. Башкача айтканда, түйүндөрдүн биринин чыгышын мурунку түйүндүн киришине туташтырыңыз, бул түйүндүн чыгыш абалы анын киришинин абалына таасир этет. Редактор түйүндүн чыгышын анын киришине түз туташтырууга жол бербейт. ElDraw. Бирок кыйыр түрдө, төмөндөгү сүрөттөгүдөй, муну жасоого болот.

Анда бул учурда эмне болот? Жооп абдан "анык" болот: кайсы түйүндөргө жараша. Сүрөттөгү мисалды карап көрөлү.

ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

Input1дин кириш контакттары ачык болгондо, А түйүнүнүн жогорку кириши 0. А түйүнүнүн чыгышы да 0. В түйүнүнүн чыгышы 1. Жана, акырында, А түйүнүнүн төмөнкү кириши 1. Баары ачык. Ал эми түшүнүксүз болгондор үчүн "ЖАНА" жана "ЭМЕС" түйүндөрүнүн кантип иштээрин ылдыйдан караңыз.

Эми Input1 киришинин контакттарын жабабыз, башкача айтканда А түйүнүнүн үстүнкү киришине бирин колдонобуз. Электроника менен тааныштар чындыгында логикалык элементтерди колдонуу менен классикалык генератор схемасын алабыз деп билишет. Ал эми теориялык жактан алганда, мындай схема А жана В элементтеринин чыгышында 1-0-1-0-1-0… ырааттуулугун чексиз чыгарышы керек. жана 0-1-0-1-0-1-…. Анткени, окуя 2-3-2-3-... тегерекчесинде чуркап, А жана В түйүндөрүнүн абалын дайыма өзгөртүшү керек!

Бирок иш жүзүндө мындай болбойт. Схема туш келди абалга түшүп калат - же реле күйүп же өчүк бойдон калат, же бир нече жолу катары менен бир аз ызылдап күйүп-өчүшү мүмкүн. Мунун баары Марстын түштүк уюлундагы аба ырайынан көз каранды. Ошондон улам ушундай болуп жатат.

Input1 түйүнүндөгү окуя А түйүнүн, андан кийин В түйүнүнүн абалын бир нече жолу тегерете өзгөртөт. Программа окуянын "укуруктарын" аныктайт жана бул карнавалды мажбурлап токтотот. Андан кийин, А жана В түйүндөрүнүн абалынын өзгөрүшү жаңы окуя болгонго чейин бөгөттөлөт. Программанын чечими кабыл алынган учурда, "тегеректерде айланууну токтот!" - жалпысынан алганда, бул көптөгөн факторлорго көз каранды жана кокустук катары каралышы мүмкүн.

Түйүндөрдү шакекчеге туташтырууда этият болуңуз - эффекттер дайыма эле айкын боло бербейт! Эмнени жана эмне үчүн кылып жатканыңызды жакшы түшүнүңүз!

Бизге жеткиликтүү түйүндөрдө генератор куруу дагы деле мүмкүнбү? Ооба болот! Бирок бул окуяларды өзү түзө ала турган түйүндү талап кылат. Жана мындай түйүн бар - бул "кечиктирүү сызыгы". Төмөнкү сүрөттө 6 секунд мезгили бар генератор кандай иштей турганын карап көрөлү.

ShioTiny: түйүндөр, байланыштар жана окуялар же чийүү программаларынын өзгөчөлүктөрү

Генератордун негизги элементи А түйүнү болуп саналат - кечигүү сызыгы. Эгерде сиз кечигүү сызыгынын кириш абалын 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 секунд) болуп саналат.

Бирок, реалдуу схемаларда, адатта, бул мисалды колдонуунун кереги жок. Өзгөчө таймер түйүндөрү бар, алар эң сонун жана тышкы жардамсыз импульстардын ырааттуулугун генерациялайт. Бул импульстардагы "нөлдүн" жана "бирдин" узактыгы мезгилдин жарымына барабар.

Мезгилдүү аракеттерди коюу үчүн таймер түйүндөрүн колдонуңуз.

"Нөл" менен "бирдин" узактыгы барабар болгон мындай санариптик сигналдар "меандр" деп аталат.

Түйүндөр ортосунда окуялар кандайча жайылат жана эмне кылуу керектиги жөнүндө суроону бир аз түшүндүрдүм деп үмүттөнөм?

Корутунду жана шилтемелер

Макала кыска болуп чыкты, бирок бул макала түйүндөр жана окуяларга байланыштуу келип чыккан суроолорго жооп болуп саналат.

Микропрограмма өнүгүп, жаңы мисалдар пайда болгондо, мен кантип программалоо керектиги жөнүндө жазам ShioTiny кичинекей макалалар, эгерде ал адамдар үчүн кызыктуу болот.

Мурдагыдай эле, диаграмма, микропрограмма, мисалдар, компоненттердин сүрөттөлүшү жана бардыгы калганы ушул жерде.

Суроолор, сунуштар, сын - бул жерге кириңиз: [электрондук почта корголгон]

Source: www.habr.com

Комментарий кошуу