+1 500 000 продукти в офертата

7000 пратки, изпращани всеки ден

+300 000 клиенти от 150 държави

Quick Buy Любими
Кошница

Програмируемо реле easyE4 (част 3)

Дата на публикуване: 18-03-2021 🕒 14 мин четене

Eaton EasyE4

Използване на програмируемото реле easyE4 за изграждане на брояч на хора в помещение

В предишните части на материала вече научихме как да подготвим програмата за easyE4 и да я изпратим в релето. Подготвихме и интерфейс на потребителя и проверихме действието му. Остава за разработване софтуер за обслужване на сензори (светлинни бариери), разпознаващ посоката на движение на човека и въз основа на тази информация генериращ импулс за увеличаване или намаляване на състоянието на брояча на хората в стаята. Въз основа на него ще управляваме действието на 2-камерна сирена или превключвател за осветление, вентилация и др.

В индустриалната автоматизация можем да намерим много примери за решения на детектори за посока на движение. Някои производители на полупроводници произвеждат интегрални схеми, които, когато са свързани към инкрементален енкодер, генерират на изходи сигнали, посочващи посоката на въртене и неговата скорост. Такъв енкодер има два изхода (A и B), където сигналът В е отместен с ±90 градуса спрямо сигнала А. По принцип може да се използва такава система или дискретно решение (изградено от портове и регистри), но трябва да се помни, че въпреки подобната последователност от сигнали на входовете на програмируемото реле, хората могат да се държат по непредсказуем начин.

Нека си припомним фигури 3 и 4 от първата част на статията. Те показват последователността на сигналите на изходите на светлинната бариера и по този начин на входовете на програмируемото реле easyE4, когато човек влиза или излиза от стаята. И двете фигури показват идеалната ситуация, при която е възникнала цялата последователност от сигнали, но в реални условия не е задължително да е така. Човек в обхвата на датчик 1 може да промени мнението си и да се върне назад. Може да се появи и в обхвата на датчик 2, заобикаляйки датчик 1 и т.н. Нашето решение трябва да бъде устойчиво на подобно поведение на преброените лица и поне да не спира работата на брояча, а да рестартира процеса и да реагира правилно при откриване на друго лице.

3_ниво

Последователност на закриване/откриване на датчици, увеличаваща показанието на брояча

4_ниво

Последователност на закриване/откриване на датчици, увеличаваща показанието на брояча

Най-простият детектор за посока на движение може да бъде направен с използване на D тригер. Свързваме бариера 1 към информационния вход на такъв тригер и бариера 2 към тактовия вход. Поставяме бариерите достатъчно близо една до друга, така че обектът, когато идва от страната на датчика 1, първо предизвиква появата на логическа единица на информационния вход, а след това - при 1 на входа D - поява на нарастващ фронт на тактовия вход, което ще копира единицата от входа към изхода на тригера. При движение от страна на датчик 2, първо ще се появи тактовият импулс, което ще доведе до прехвърляне на логическата 0 от входа на D тригера към изхода Q. По този начин можем да разпознаем посоката на движение и да управляваме посоката на броене. Отделен въпрос е, че тактовият импулс трябва да се появи само, когато е установено състояние на изхода на D тригера. Можете да използвате импулса на тактовия вход D тригера, но трябва да добавите пътека за закъснение на този импулс по такъв начин, че да отчете времето за превключване на тригера. Сега нека разгледаме ситуация, при която човек влиза в обхвата на датчик 1 и се оттегля. Това не би трябвало да представлява проблем, тъй като импулсът се появява само на информационния вход на тригера и няма да промени състоянието на изхода. Ситуацията е по-лоша от друга страна, тъй като такова влизане/излизане от работния диапазон ще бъде идентифицирано като пълен цикъл. Следователно, нашата система за откриване на посока на движение не само трябва да реагира на пълната последователност от сигнали, но също така да не генерира импулс плюс/минус за брояча, ако тази последователност не е изпълнена изцяло, т.е. няма импулси на двата входа на програмируемото реле, в този случай се използват I01 и I02.

При внедряването на детектора за посоката на движението на човека се предполагаше, че той ще има два тактови изхода, които, като бутоните "надясно"/"наляво" или "нагоре"/"надолу", използвани в тази програма, ще генерират тактови импулси на два отделни изхода. Един от тези изходи ще увеличава състоянието на брояча, а другият ще го намалява. Генерирането на сигнал за брояча ще се обработва от логически елементи, поставени в една мрежа заедно с брояча. Освен това, детекторът ще бъде нечувствителен към възможно „трептене“ на сигнала, налично на входовете му. Сигналът плюс/минус ще бъде генериран само, когато е изпълнена следната последователност:

  • Увеличаване на стойността на брояча: импулс на I01 -> импулс на I02.
  • Намаляване на стойността на брояча: импулс на I02 -> импулс на I01.

Най-добрият метод за предотвратяване на „трептенето“ на сигнала на входа е да се използва RS тригер. Той има предимството, че след подаване на напрежение към входа, който активира изхода (SET) или нулира (RESET), тригерът остава в стабилно състояние, независимо дали логическото ниво на входа SET се променя или не. В предложения детектор за посока на движение се използват RS тригери на двата входа на релето easyE4 (I01, I02). Те са включвани с високо ниво на напрежение на съответния вход и остават включени до нулиране.

В идеалния случай нулиращият импулс за двата RS тригера трябва да бъде входният импулс на брояча, тъй като приемането му би означавало, че цикълът на откриване на посоката на движение е завършил правилно, детекторът е генерирал импулс за брояча и е готов за следваща последователност от сигнали. Обаче човекът, който трябва да бъде преброен, може да влезе в обхвата на работа на един от сензорите или между тях, като в този случай на входа на програмируемото реле ще се появи само един от сигналите, а не двата, необходими за правилното откриване. Как тогава да нулираме входните тригери и кой от тях? Изглежда, че най-добре е да нулираме и двата веднага след изтичането на кратко време, предназначено за целия цикъл. Такова време в софтуерни или хардуерни решения се нарича timeout или на български - лимит на времето на операцията.

RS тригер – дефиниране на модула на потребителя

Едно от предимствата на програмирането с функционална блок-схема (FBD) е възможността за дефиниране на потребителски блокове. Благодарение на него можете не само да дефинирате собствените си блокове и да ги използвате многократно в различни схеми, но и да използвате хардуерни решения, направени от колеги, производители, достъпни на интернет форуми и други. За нашите нужди и като част от упражнението ще направим такъв потребителски блок, съдържащ несложнен RS тригер, направен от два NAND елемента. Неговата диаграма е показана на фигура 1. В нашето приложение се нуждаем от тригер, задействан от високо ниво, така че ще добавим елементи НЕ към входовете му.

RS тригер на базата на елементи NAND Фигура 1. RS тригер на базата на елементи NAND

За да подготвим модул на потребителя, избираме от менюто Програма –> Създай модул на потребителя. Можете също да използвате иконата за бърз достъп или (символ на елемент със звездичка в лентата с менюта) или да кликнете с десния бутон върху Модули на потребителя, под списъка с модулите на производителя. В резултат на избора на опция от менюто ще се покаже прозорец, както на фигура 2. Въведете името на нашия модул (напр. RS) и - което е много важно - броя и вида на входовете/изходите. Сега ни трябва само 1 бинарен изход и 2 изхода.

Прозорец със свойства на модула на потребителя Фигура 2. Прозорец със свойства на модула на потребителя

Подготвеният от нас потребителски модул ще се състои само от няколко елемента: два логически елемента, контакти на входа и бобини на изхода. Също така ще трябва да използвате маркер, за да свържете входа към изхода. Една мрежа е достатъчна за толкова малък брой компоненти.

Би било по-удобно да направите връзките, както е показано на диаграмата, но това не е възможно. Елементите са подредени един след друг от софтуера, така че трябва да планираме тяхното "плоско" подреждане. Най-добре е да започнете да подреждате потребителски блокове с началния NAND елемент. Един от неговите входове е свързан към изхода на втория NAND елемент и контакт. Свързваме два контакта към входа на първия NAND. Остава свързване на изхода - свързваме две бобини към втория NAND елемент. Сега ще се заемем със свойствата на отделните контакти и бобини:

  1. Входни контакти (първи NAND елемент отляво):
  • Тип: Бинарни входове, изходи и маркери; Описание: SET; Тип логика: Нормално затворен; Аргумент: I
    • Вход; Номер: 1.
  • Тип: Бинарни входове, изходи и маркери; Тип логика: Нормално отворен; Аргумент: M – Маркер; Номер: 1.
  1. Входни контакти (втори NAND елемент):
  • Тип: Бинарни изходи и маркери; Описание: Q; Функция на бобината: Обикновена бобина, с инвертор; Аргумент: Q
    • Изход; Номер: 1.
  • Тип: Бинарни изходи и маркери; Функция на бобината: обикновена бобина; Аргумент: M – Маркер; Номер: 1.

Остава да дефинираме свойствата на контакта, който довежда сигнал за нулиране RESET: Тип: Бинарни входове, изходи и маркери; Описание: RESET; Тип логика: Нормално затворен; Аргумент: I - Вход; Номер: 2.

Функционалният модул, който направихме, трябва да изглежда като на фигура 3.

Функционален модул на тригер RS Фигура 3. Функционален модул на тригер RS

Кликнете върху панела с името на създадения от нас модул и изберете Затвори. Средата за програмиране ще ви помоли да запишете модула на диска - потвърдете и въведете избрано име за модула. От този момент нататък дефиницията, която направихме, е налична в списъка с модули и е готова за употреба.

Възможността за дефиниране на модули е чудесен инструмент. С негова помощ можете да създадете библиотека от готови решения, която значително ще опрости създаването на нови програми, а също така може да улесни работата на нашия екип или колеги. Можете също така да разделите работата в екипа - нека всеки да направи и тества избрания елемент, който след това ще бъде комбиниран в едно цяло. В случай на просто приложение и контролер easyE4 от Eaton това не е необходимо, но е добър навик в работата, който може да бъде полезен в случай на по-сложни проекти.

Детектор за посока на движение

За да разберете действието на детектора за посока на движение, струва си да отворите програмата, достъпна в допълнителни материали към статията. Възможно е да представим снимките на всички описани мрежи, но е по-удобно да ги разглеждате (и връзките между тях) екрана в средата за разработка easySoft 7. В случай на съмнение или ако описанието стане скучно, можете да стартирате симулатора и да наблюдавате как се държи програмата, когато кликнете върху нея. Особено, тъй като не е лесно да се опише функционирането на отделни мрежи (понякога съдържащи един елемент) без свързване с действието на други части.

Изтеглете програмата

Програмата на детектора за посока на трафика започва с мрежов номер 0010. От мрежата с номер 0010 до 0016 има логически елементи, съответстващи на обработката на входа I01, а от 0017 до края до мрежата 0023, елементите, обслужващи входа I02. И двете части са симетрични и са базирани на детектор на импулсна последователност на импусли (квадратурен детектор) с тригер тип D. Тъй като квадратурните детектори работят със сигнали, които са отместени с 90 градуса, а броячът на лица трябва да реагира на секвенции „няма– I01 – няма– I02 – няма” или „няма– I02 – няма– I01 – няма”, са добавени RS тригери, които запомнят състоянията на входови, предпазват от трептене на напрежението на входовете и генерират фазово отместване, необходимо в квадратурния детектор.

Към двата тригера са добавени таймери, измерващи максималното време за операцията, генериращи нулиращ импулс на входните и изходните RS тригери и логически елементи, блокиращи входните импулси, докато тригерите бъдат нулирани, т.е. готови за следващия цикъл на детекция. Отделните елементи са подредени и свързани в диаграмите точно както е описано по-рано и няма смисъл това да се прави отново. Най-добре е да анализирате работата на детектора въз основа на симулатор, стартиран чрез натискане на бутона Симулация. За съжаление схемата в easySoft 7 трябва да бъде разделена на малки мрежи и поради това е трудна за анализиране. Ето защо е най-добре любознателните хора, които искат да изследват темата, да разпечатват отделни мрежи и да нарисуват диаграма, състояща се от логически елементи. След това ще бъде лесно да различите елементите на D-тригера и да ги отделите от добавените функции за блокиране и нулиране на тригерите.

Запаметяване на състоянието на броячите в случай на изключване на електрозахранването

От гледна точка на потребителя е удобно, че в случай на прекъсване на електрозахранването не е необходимо да въвеждате отново настройките, а само евентуално да коригирате стойността на текущото показание. В описаното приложение за тази цел трябва да запомним и възстановим съдържанието на два брояча - това са модули C01 и C02.

Производителят на средата за разработка нарича свойството запомняне и възстановяване на състоянието на модулите или маркерите remanence. За да прочетете повече за това, струва си да използвате менюто „Помощ”, което е на разположение, след като изберете „?” В лентата с менюта (можете също да натиснете F1). В панела „Търси“ въведете думата „remanence“. Можете също да се обърнете към ръководството за потребителя, налично в същото меню.

Паметта от 400 байта е предназначена за запомняни байтове, т.е. възстановени след включване. Това вероятно е отделна интегрална схема или фрагмент от паметта на процесора, захранван от отделен източник, например супер кондензатор или батерия. Както беше написано в менюто за помощ за модула за брояч „C”, запазването/възстановяването на състоянието му изисква 4 байта памет, така че без проблеми ще поместите два брояча в 400 байта.

За да активирате запазването/възстановяването на съдържанието на брояча, щракнете върху бутона „Проект” в долния ляв ъгъл. След това изберете панела "Системни настройки". Третото поле отляво е "Remanence" (Фигура 4). В този момент си струва да обърнете внимание на стойността в полето „Достъпно:” - примерът показва стойността от 400 байта. Всеки броячен модул „C” изисква 4 байта.

Поле Remanence Фигура 4. Поле “Remanence”

За описаното приложение е важно съдържанието на модулите за броячи C01 и C02, така че в полето със стойност до „C” въведете „01”, а в следващото „02”, както е показано на фигура 5. Другите полета, като модули за бърз брояч „CH”, модул за инкрементален брояч „CI”, модул за данни „DB” и модул за таймер „T” пропускаме. На този етап също няма да се занимаваме с маркерите (MW, MB, MD). Лесно е да се забележи, че след правилното въвеждане на диапазона, стойността „Свободно” намалява с 8 байта, т.е. с толкова, колкото е необходимо да се запомнят два модула на броячите.

Полето "Remanence" след въвеждане на настройките за броячите C01 и C02 Фигура 5. Полето "Remanence" след въвеждане на настройките за броячите C01 и C02

Симулиране на действието на брояча с easySoft 7

Средата за програмиране easySoft 7 има вграден симулатор, който позволява да проверите работата на програмата, да наблюдавате състоянието на входовете, изходите и логическите нива на отделни елементи на FBD диаграмата. Използването на симулатора ни дава възможност да тестваме работата на програмата и да открием грешки, въпреки че по очевидна причина това няма да са точно условията на работа, с които нашето приложение ще се сблъска в действителност. Сега ще използваме симулатор, за да проверим работата на приложението за брояча на хора.

Симулаторът се стартира, като кликнете върху бутона „Симулация”, разположен от лявата страна, в долната част на прозореца на средата easySoft 7. Симулирайки работата на брояча, ще оставим повечето параметри без промени и няма да задаваме никакви капани, но симулаторът има много интересни възможности, които напразно се търсят в сравними конкурентни продукти. В допълнение към настройването на капани, той позволява, например, да се използва виртуален осцилоскоп, който ще представи формите на избрани сигнали. Нека опитаме възможностите му, докато проверяваме програмата, която сме създали.

С отворената програма "Брояч на хора v11.e70" кликнете върху бутона „Симулация”, след което разгънете списъка Дисплей над него и кликнете върху Прозорец с аргументи + осцилоскоп. Вдясно ще се появи празен Прозорец с аргументи + осцилоскоп. Кликнете върху звездичката (*) в колоната Аргумент и въведете M05. До него, в колоната Описание, трябва да видите ИМПУЛСИ НАГОРЕ. Кликнете върху колоната Осцилоскоп, ще покаже знак checkmark и на канала на логически анализатор в прозореца на Осцилоскоп. По същия начин добавяме: M04 (ИМПУЛСИ НАГОРЕ), I01 (ВХОД 1) и I02 (ВХОД 2). Трябва да получим ефекта, показан на фигура 4.

Екран на осцилоскопа след конфигурация Фигура 6. Екран на осцилоскопа след конфигурация

Стартираме симулатора, като натиснем F9 или изберем от менюто Симулация–> Старт. От менюто изберете Осцилоскоп-> Регистриране старт (или използвайте съответната икона в лентата с инструменти - квадрат с червен кръг). В лявата част на екрана трябва да имаме развит списъкът Дисплей. Кликнете върху него в Дисплей + бутони. В долната част на прозореца ще се покаже работният екран на нашето приложение за броене и тук задаваме стойността РАЗРЕШЕНА на по-голяма от 0 с помощта на десния/левия бутон, например 5, както е на фигура 5. Сега кликнете върху Дисплей -> Цифров вход, и след това два пъти в квадрата до 1:ВХОД 1 и 2:ВХОД 2.

Екран на брояча по време на симулацията Фигура 7. Екран на брояча по време на симулацията (с въведения допустим брой хора в помещението).

Ефектът от действието на осцилоскопа е показан на фигура 6. Той показва, че първият импулс се появява на вход I01, а следващият на I02. Едновременно с нарастващия фронт на I02 се генерира импулс на изхода M05: ИМПУЛСИ НАГОРЕ, което прави, че стойността на брояча ТЕКУЩО ще се увеличи с едно и показване на тази стойност на дисплея. Ако импулсите се дават в обратен ред, на изхода M04 се генерира импулс M04: ИМПУЛСИ НАДОЛУ и стойността на брояча ТЕКУЩО се намалява. Можете също да добавите изходи към екрана на осцилоскопа и да наблюдавате как нивата им се променят в ритъм с импулсите I01 и I02, но в тази ситуация това изглежда по-скоро излишък от информация. Състоянието на изходите може да се наблюдава и чрез кликване върху Дисплей –> Цифрови изходи.

Входни и изходни сигнали на брояча Фигура 8. Входни и изходни сигнали на брояча по време на симулация

Благодарение на осцилоскопа може да се види, че следващите лица ще бъдат открити само след дефинираното време за превишаване на операцията (тук това е 2,5 секунди), така че ако бариерите са поставени близо една до друга, това време може да бъде съкратено. Също така може да се види, че в последователността на импулсите, при която броячът работи правилно, те също могат да се припокриват. Това е в случай, че бариерите са монтирани твърде близо една до друга. След проверка на работата на програмата е достатъчно да я изпратите на контролера easyE4, да свържете сигнали към входовете за датчици и да свържете сигнализатора. Снимка 7 показва готовото приложение, поставено в пластмасова кутия, обикновено използвана за жилищни разпределителни табла. До контролера е инсталиран бутон за нулиране под капака.

Брояч на хора Снимка 9. Брояч на хора на базата на програмируемо реле easyE4

Контролер easyE4 – обобщение

В три статии сме подготвили приложение за брояч на хора. Може да се използва по два начина: или да сигнализира за превишаването на разрешения брой в стаята, въведен поради изискванията за безопасност, или за включване/изключване на осветлението или вентилацията в помещение, където те трябва да работят само когато някой е там. Устройството използва свойството поддържане на паметта при изключено захранване, така че софтуерът работи по такъв начин, че блоковете от измервателни уреди, съдържащи настройките и текущото състояние, се съхраняват в енергонезависимата памет и се възстановяват при включване на захранващото напрежение. От тук в случай на прекъсване на електрозахранването не е необходимо повторно да въвеждате параметрите на брояча - ако е необходимо, просто пребройте хората в стаята и коригирайте показанието.

Независимо от това контролерът easyE4 е огромен скок напред в сравнение с по-старите продукти. Вече много добрата среда за програмиране easySoft 7 със сигурност ще бъде допълнително подобрена.

В миналото в различни приложения са доминирали контролерите, проектирани за конкретна задача. Сега, на примера на easyE4, не е трудно да се забележи, че не си струва да ги разработвате въз основа на наличните микроконтролери. За сравнително ниска цена получаваме контролер с бърз процесор, в здрав корпус, монтиран на шина, с вграден дисплей и клавиатура. Той може лесно да се свърже в мрежа и да комуникира с околната среда, да разшири своята функционалност и - което е изключително важно за всяко професионално приложение - той отговаря на изискванията на многобройни хармонизирани стандарти, включително за индустриална среда. Така можем да бъдем сигурни, че предоставяме на потребителя устройство, чието ядро ​​е тествано в сертифицирана лаборатория, за което се намира марката и репутацията на производителя.

Transfer Multisort Elektronik (TME) е един от най-големите световни дистрибутори на електронни компоненти, електротехнически части, работилно оборудване и индустриална автоматизация. Каталогът включва над 1 500 000 продукта от 1 300 водещи производители. Модерните логистични центрове на TME в Лодз и Рзгов (Полша), с обща площ над 40 000 м², изпращат почти 6 000 пакета ежедневно до клиенти в над 150 държави.

TME също така инвестира в развитието на знанията и уменията на млади инженери и ентусиасти по електроника чрез проекта TME Education, както и подкрепя технологичната общност чрез серията TechMasterEvent, насърчавайки иновациите и обмена на опит.

rightColumnPicture rightColumnPicture

ПРОЧЕТЕТЕ СЪЩО