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 түйініндегі оқиға А түйінінің күйін, содан кейін В түйінін және т.с.с. шеңберде бірнеше рет өзгертеді. Бағдарлама оқиғаның «циклін» анықтайды және бұл карнавалды мәжбүрлі түрде тоқтатады. Осыдан кейін A және B түйіндерінің күйіндегі өзгерістер жаңа оқиға орын алғанша блокталады. Бағдарлама «шеңберде айналуды тоқтатыңыз!» деп шешетін сәт. - жалпы алғанда, ол көптеген факторларға байланысты және кездейсоқ деп санауға болады.

Түйіндерді сақинаға қосқанда абай болыңыз - әсерлер әрқашан айқын болмайды! Не және не үшін істеп жатқаныңызды жақсы түсініңіз!

Бізге қолжетімді түйіндерге генератор салу әлі де мүмкін бе? Иә болады! Бірақ бұл оқиғаларды өзі жасай алатын түйінді қажет етеді. Мұндай түйін бар - бұл «кідіріс сызығы». Төмендегі суретте периоды 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 шағын мақалалар, егер ол адамдарға қызықты болады.

Бұрынғыдай, диаграмма, микробағдарлама, мысалдар, компоненттердің сипаттамасы және бәрі қалғаны осында.

Сұрақтар, ұсыныстар, сындар - мына жерге өтіңіз: [электрондық пошта қорғалған]

Ақпарат көзі: www.habr.com

пікір қалдыру