ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

Asosiy fikrlar yoki ushbu maqola nima haqida

Maqolaning mavzusi - vizual PLC dasturlash ShioTiny bu yerda tasvirlangan aqlli uy uchun: ShioTiny: kichik avtomatlashtirish, narsalar Interneti yoki "ta'tildan olti oy oldin".

Juda qisqacha kabi tushunchalar tugunlar, aloqa, tadbirlar, shuningdek, vizual dasturni yuklash va bajarish xususiyatlari ESP8266, bu PLC ning asosi hisoblanadi ShioTiny.

Kirish yoki bir nechta tashkiliy savollar

Mening rivojlanishim haqidagi oldingi maqolada men kontrollerning imkoniyatlari haqida qisqacha ma'lumot berdim ShioTiny.

Ajabo, jamoatchilik juda katta qiziqish uyg'otdi va menga juda ko'p savollar berdi. Ba'zi do'stlar mendan darhol boshqaruvchi sotib olishni taklif qilishdi. Yo'q, men ozgina pul topishga qarshi emasman, lekin mening vijdonim dasturiy ta'minot nuqtai nazaridan hali ham juda qo'pol bo'lgan narsani sotishga ruxsat bermaydi.

Shuning uchun, men GitHub-da ikkilik dasturiy ta'minot va qurilma diagrammasini joylashtirdim: proshivka + eng qisqa ko'rsatmalar + diagramma + misollar.

Endi har bir kishi ESP-07-ni miltillashi va o'zi proshivka bilan o'ynashi mumkin. Agar kimdir haqiqatan ham fotosuratdagi kabi bir xil taxtani xohlasa, menda ulardan bir nechtasi bor. Elektron pochta orqali yozing [elektron pochta bilan himoyalangan]. Ammo, unutilmas Ogurtsov aytganidek: "Men hech narsa uchun javobgar emasman!"

Shunday qilib, keling, mavzuga o'taylik: nima "tugun"(tugun) va"sobitie"? Dastur qanday amalga oshiriladi?

Odatdagidek, keling, tartibda boshlaylik: dasturni yuklab olish.

Dastur qanday yuklanadi

Keling, tugmani bosganimizda nima sodir bo'lishini boshlaylik Yuklab olish muharrirda ElDraw va chiroyli kvadratlardan iborat sxema-dasturimiz qurilmaga uchadi.

Birinchidan, biz chizgan diagramma asosida uning matn shaklida tavsifi quriladi.
Ikkinchidan, u barcha tugun kirishlarining chiqishlarga ulanganligini tekshiradi. Hech qanday "osilgan" kirishlar bo'lmasligi kerak. Agar bunday kirish aniqlansa, sxema ShioTiny-ga yuklanmaydi va muharrir tegishli ogohlantirishni ko'rsatadi.

Agar hamma narsa yaxshi bo'lsa, muharrir ShIoTiny-ga bir vaqtning o'zida bitta tugunning matn tavsifini yuboradi. Albatta, ShioTiny-dan mavjud sxema birinchi navbatda o'chiriladi. Olingan matn tavsifi FLASH xotirasida saqlanadi.

Aytgancha, agar siz qurilmadan kontaktlarning zanglashiga olib tashlamoqchi bo'lsangiz, unga bo'sh sxemani yuklang (bitta tugun elementini o'z ichiga olmaydi).

Butun sxema dasturi ShioTiny PLC ga yuklangandan so'ng, u "bajarish" ni boshlaydi. Bu nima degani?

Quvvat yoqilganda va muharrirdan kontaktlarning zanglashiga olib kelganda FLASH xotiradan kontaktlarning zanglashiga olib yuklash jarayonlari bir xil ekanligini unutmang.

Birinchidan, tugun ob'ektlari ularning tavsifi asosida yaratiladi.
Keyin tugunlar o'rtasida ulanishlar amalga oshiriladi. Ya'ni, chiqishlarning kirishlarga va kirishlarning chiqishlarga havolalari hosil bo'ladi.

Va faqat bularning barchasidan so'ng asosiy dasturni bajarish sikli boshlanadi.

Men uzoq vaqt yozdim, lekin butun jarayon - kontaktlarning zanglashiga olib FLASH xotirasidan "yuklash" dan asosiy tsiklni ishga tushirishgacha - 60-80 tugunli kontaktlarning zanglashiga olib kirishi uchun soniyaning bir qismini oladi.

Asosiy halqa qanday ishlaydi? Juda oddiy. Avval u paydo bo'lishini kutadi tadbirlar ba'zi tugunlarda, so'ngra bu hodisani qayta ishlaydi. Va hokazo cheksiz. Xo'sh, yoki ular ShioTiny-ga yangi sxemani yuklamaguncha.

Men shunga o'xshash narsalarni bir necha bor aytib o'tganman tadbirlar, tugunlar и aloqa. Ammo dasturiy ta'minot nuqtai nazaridan bu nima? Bu haqda bugun gaplashamiz.

Tugunlar, ulanishlar va hodisalar

Faqat elektron dasturlarning misollarini ko'rib chiqing ShioTinydiagramma faqat ikkita ob'ektdan iborat ekanligini tushunish - tugunlar (yoki elementlar) va ular orasidagi bog'lanishlar.

Tugun, lekin ha yoki sxema elementi ba'zilarining virtual ifodasidir harakatlari ma'lumotlar ustida. Bu arifmetik operatsiya, mantiqiy operatsiya yoki xayolimizga kelgan har qanday operatsiya bo'lishi mumkin. Asosiysi, tugunning kirish va chiqish joyi bor.

kirish - bu tugun ma'lumotlarni qabul qiladigan joy. Kirish tasvirlari har doim tugunning chap tomonida joylashgan nuqtalardir.

chiqish - bu tugun ishining natijasi olinadigan joy. Chiqish tasvirlari har doim tugunning o'ng tomonida joylashgan nuqtalardir.

Ba'zi tugunlarda kirishlar yo'q. Bunday tugunlar natijani ichki hosil qiladi. Misol uchun, doimiy tugun yoki sensorli tugun: natija haqida xabar berish uchun ularga boshqa tugunlardan ma'lumotlar kerak emas.

Boshqa tugunlarda, aksincha, chiqish yo'q. Bu, masalan, aktuatorlarni (o'rni yoki shunga o'xshash narsalarni) ko'rsatadigan tugunlar. Ular ma'lumotlarni qabul qiladi, lekin boshqa tugunlar uchun mavjud bo'lgan hisoblash natijasini yaratmaydi.

Bundan tashqari, noyob sharh tugunlari ham mavjud. U hech narsa qilmaydi, kirish yoki chiqish yo'q. Uning maqsadi diagramma bo'yicha tushuntirishdir.

Nima bo'ldi "sobitie"?" Voqealar har qanday tugunda yangi ma'lumotlarning paydo bo'lishidir. Masalan, hodisalarga quyidagilar kiradi: kirish holatini o'zgartirish (tugun kirish), boshqa qurilmadan ma'lumotlarni qabul qilish (tugunlar MQTT и UDP), ma'lum bir muddatning tugashi (tugunlar taymer и Delay) va hokazo.

Tadbirlar nima uchun? Ha, qaysi tugunda yangi ma'lumotlar paydo bo'lganligini va yangi ma'lumotlarni olish bilan bog'liq holda qaysi tugunlarning holatini o'zgartirish kerakligini aniqlash uchun. Hodisa, go'yo, holatini tekshirish va o'zgartirish kerak bo'lgan barcha tugunlarni chetlab o'tmaguncha, tugunlar zanjiri bo'ylab "o'tadi".

Barcha tugunlarni ikki toifaga bo'lish mumkin.
Hodisalarni yarata oladigan tugunlarni chaqiraylik "faol tugunlar".
Biz hodisalarni yarata olmaydigan tugunlarni chaqiramiz "passiv tugunlar".

Tugun hodisa hosil qilganda (ya'ni uning chiqishida yangi ma'lumotlar paydo bo'ladi), u holda umumiy holatda hodisa generatori tugunining chiqishiga ulangan butun tugunlar zanjirining holati o'zgaradi.

Buni aniqroq qilish uchun rasmdagi misolni ko'rib chiqing.

ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

Bu yerda faol tugunlar Input1, Input2 va Input3 hisoblanadi. Qolgan tugunlar passivdir. Keling, u yoki bu kirish yopilganda nima sodir bo'lishini ko'rib chiqaylik. Qulaylik uchun natijalar jadvalda umumlashtiriladi.

ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

Ko'rib turganingizdek, voqea sodir bo'lganda, hodisaning manba tugunidan oxirgi tugungacha zanjir quriladi. Zanjirga tushmaydigan tugunlarning holati o'zgarmaydi.

Qonuniy savol tug'iladi: bir vaqtning o'zida ikkita yoki hatto bir nechta hodisa sodir bo'lsa nima bo'ladi?

Gleb Anfilov ishini sevuvchi sifatida men uning "Ajablanishdan qochish" kitobiga qiziquvchan savol yubormoqchiman. Bu "kichkintoylar uchun nisbiylik nazariyasi" bo'lib, u "bir vaqtning o'zida" nimani anglatishini va u bilan qanday yashashni yaxshi tushuntiradi.

Ammo amalda hamma narsa ancha sodda: ikki yoki hatto bir nechta hodisa sodir bo'lganda, har bir hodisa manbasidan barcha zanjirlar ketma-ket qurilgan va o'z navbatida qayta ishlanadi va hech qanday mo''jizalar sodir bo'lmaydi.

Qiziquvchan o'quvchining keyingi to'liq qonuniy savoli, agar tugunlar halqaga ulangan bo'lsa nima bo'ladi? Yoki bu aqlli yigitlaringiz orasida aytganidek, fikr-mulohazalaringizni kiriting. Ya'ni, tugunlardan birining chiqishini oldingi tugunning kirishiga ulang, shunda bu tugunning chiqish holati uning kirish holatiga ta'sir qiladi. Tahrirlovchi tugunning chiqishini uning kirishiga bevosita ulashga ruxsat bermaydi. ElDraw. Ammo bilvosita, quyidagi rasmda bo'lgani kabi, buni amalga oshirish mumkin.

Xo'sh, bu holatda nima bo'ladi? Javob juda "aniq" bo'ladi: qaysi tugunlarga qarab. Keling, rasmdagi misolni ko'rib chiqaylik.

ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

Input1 ning kirish kontaktlari ochiq bo'lsa, A tugunining yuqori kirishi 0 ga teng. A tugunining chiqishi ham 0 ga teng. B tugunining chiqishi 1 ga teng. Va nihoyat, A tugunining pastki kirishi 1 ga teng. Hammasi aniq. Va tushunarsiz bo'lganlar uchun "VA" va "YO'Q" tugunlari qanday ishlashi haqida quyida ko'rib chiqing.

Endi biz Input1 kirishining kontaktlarini yopamiz, ya'ni A tugunining yuqori kirishiga bittasini qo'llaymiz. Elektronika bilan tanish bo'lganlar, aslida biz mantiqiy elementlardan foydalangan holda klassik generator sxemasini olishimizni biladilar. Nazariy jihatdan, bunday sxema A va B elementlarining chiqishida 1-0-1-0-1-0... ketma-ketligini cheksiz hosil qilishi kerak. va 0-1-0-1-0-1-…. Axir, hodisa doimiy ravishda 2-3-2-3-... aylana bo'ylab ishlaydigan A va B tugunlarining holatini o'zgartirishi kerak!

Ammo aslida bu sodir bo'lmaydi. O'chirish tasodifiy holatga tushadi - yoki o'rni yoqilgan yoki o'chirilgan bo'lib qoladi yoki ketma-ket bir necha marta biroz jiringlaydi va o'chiriladi. Bularning barchasi Marsning janubiy qutbidagi ob-havoga bog'liq. Va shuning uchun bu sodir bo'ladi.

Input1 tugunidagi hodisa A tugunining holatini, so'ngra B tugunini va boshqalarni aylanada bir necha marta o'zgartiradi. Dastur hodisaning "loopini" aniqlaydi va bu karnavalni majburan to'xtatadi. Shundan so'ng, A va B tugunlari holatidagi o'zgarishlar yangi hodisa yuzaga kelguncha bloklanadi. Dastur "aylanalarda aylanishni to'xtating!" Deb qaror qilgan payt. - umuman olganda, bu ko'plab omillarga bog'liq va tasodifiy deb hisoblanishi mumkin.

Tugunlarni halqaga ulashda ehtiyot bo'ling - effektlar har doim ham aniq bo'lmaydi! Nima va nima uchun qilayotganingizni yaxshi tasavvur qiling!

Bizda mavjud bo'lgan tugunlarda generator qurish hali ham mumkinmi? Ha mumkin! Lekin bu hodisalarni o'zi yarata oladigan tugunni talab qiladi. Va shunday tugun bor - bu "kechikish chizig'i". Keling, 6 soniya davriga ega generator qanday ishlashini quyidagi rasmda ko'rib chiqaylik.

ShIoTiny: tugunlar, ulanishlar va hodisalar yoki chizma dasturlarining xususiyatlari

Jeneratorning asosiy elementi A tugunidir - kechikish chizig'i. Agar siz kechikish chizig'ining kirish holatini 0 dan 1 ga o'zgartirsangiz, u holda 1 darhol chiqishda paydo bo'lmaydi, faqat belgilangan vaqtdan keyin. Bizning holatlarimizda bu 3 soniya. Xuddi shu tarzda, agar siz kechikish chizig'ining kirish holatini 1 dan 0 ga o'zgartirsangiz, chiqishda 0 xuddi shu 3 soniyadan keyin paydo bo'ladi. Kechikish vaqti soniyaning o'ndan bir qismiga o'rnatiladi. Ya'ni, 30 qiymati 3 soniyani bildiradi.

Kechikish chizig'ining o'ziga xos xususiyati shundaki, u kechikish vaqti tugaganidan keyin hodisa hosil qiladi.

Faraz qilaylik, dastlab kechikish chizig'ining chiqishi 0. B tugunidan o'tgandan so'ng - inverter - bu 0 1 ga aylanadi va kechikish chizig'ining kirishiga o'tadi. Hech narsa darhol sodir bo'lmaydi. Kechikish chizig'ining chiqishida u 0 bo'lib qoladi, lekin kechikish vaqtini ortga hisoblash boshlanadi. 3 soniya o'tadi. Va keyin kechikish chizig'i voqea hosil qiladi. Uning chiqishida u paydo bo'ladi 1. Bu birlik, B tugunidan o'tgandan so'ng - inverter - 0 ga aylanadi va kechikish chizig'ining kirishiga o'tadi. Yana 3 soniya o'tadi ... va jarayon takrorlanadi. Ya'ni, har 3 soniyada kechikish chizig'ining chiqishi holati 0 dan 1 ga va keyin 1 dan 0 ga o'zgaradi. O'rni chertadi. Generator ishlayapti. Puls davri 6 soniya (chiqish nolda 3 soniya va chiqishda 3 soniya).

Ammo, haqiqiy sxemalarda, odatda, bu misoldan foydalanishning hojati yo'q. Maxsus taymer tugunlari mavjud bo'lib, ular mukammal va tashqi yordamisiz ma'lum bir davr bilan impulslar ketma-ketligini hosil qiladi. Ushbu impulslardagi "nol" va "bir" ning davomiyligi davrning yarmiga teng.

Davriy harakatlarni o'rnatish uchun taymer tugunlaridan foydalaning.

Shuni ta'kidlaymanki, "nol" va "bir" davomiyligi teng bo'lgan bunday raqamli signallar "meander" deb ataladi.

Umid qilamanki, tugunlar o'rtasida voqealar qanday tarqalishi va nima qilish kerakligi haqidagi savolga biroz aniqlik kiritdim.

Xulosa va havolalar

Maqola qisqa bo'lib chiqdi, ammo bu maqola tugunlar va hodisalar bilan bog'liq yuzaga kelgan savollarga javobdir.

Mikrodastur ishlab chiqilishi va yangi misollar paydo bo'lishi bilan men qanday dasturlash haqida yozaman ShioTiny odamlar uchun qiziqarli bo'ladi ekan, kichik maqolalar.

Avvalgidek, diagramma, proshivka, misollar, komponentlarning tavsifi va hamma narsa qolgani shu yerda.

Savollar, takliflar, tanqidlar - bu yerga kiring: [elektron pochta bilan himoyalangan]

Manba: www.habr.com

a Izoh qo'shish