+1 500 000 produkter i udbud

7000 pakker om dagen

+300 000 kunder fra 150 lande

Quick Buy Favoritter
Vogn

EasyE4 programmerbart relæ (del 3)

Dato for offentliggørelse: 18-03-2021 🕒 13 min læsning

Eaton EasyE4

Anvendelse af det programmerbare easyE4-relæ til opbygning af en rumbelægningstæller

Fra de tidligere dele af denne serie har vi allerede lært, hvordan man udvikler et program til easyE4 og sender det til relæet. Vi har også udviklet brugergrænsefladen og testet, hvordan den fungerer. Det, vi stadig mangler at gøre, er at udvikle programmet til at betjene sensorer (lysbarrierer), genkende personens bevægelsesretning og på den baggrund generere en impuls, der øger eller mindsker det viste aktuelle antal personer i lokalet. Baseret på det vil vi styre betjeningen af 2-kammersignalanordningen eller kontakten til belysning, ventilation osv.

Der er mange eksempler på bevægelsesretningsdetektorer, der anvendes i industriel automatisering. Nogle producenter af halvledere producerer integrerede kredsløb, der, når de tilsluttes en inkrementel enkoder, forsyner udgangene med bølgeformer, der angiver rotationsretningen og dens hastighed. En sådan enkoder har to udgange (A og B), hvor B-signalet er forskudt i fase i forhold til A-signalet med ±90 grader. Du kan bruge sådan et kredsløb eller en diskret løsning (bygget af gates og registre), men du skal huske, at på trods af den lignende sekvens af bølgeformer på indgangene til et programmerbart relæ, kan mennesker opføre sig på måder, der er vanskelige at forudsige.

Lad os genkalde os figur 3 og 4, som blev vist i første del af denne artikel. De viser den signalsekvens, der opstår ved lysbommenes udgange og dermed ved indgangene på det programmerbare easyE4-relæ, når en person går ind i eller forlader rummet. Begge diagrammer viser en perfekt situation, hvor hele signalsekvensen har fundet sted, men det er ikke altid tilfældet i det virkelige liv. En person, der kommer ind i sensor 1's rækkevidde, kan ombestemme sig og vende om. Personen kan også dukke op inden for sensor 2's rækkevidde uden at passere sensor 1, og så videre. Vores løsning bør være immun over for en sådan adfærd hos personer, der tælles, og bør i det mindste ikke sætte tælleren på pause, men genstarte processen og reagere korrekt, når en anden person registreres.

3_level

Sekvens af til- og afdækning af sensorerne for at øge tællerværdien

4_poziom

Sekvens af til- og afdækning af sensorerne for at mindske tællerværdien

Den simpleste bevægelsesretningsdetektor kan laves ved hjælp af et register af D-typen. Du skal forbinde barriere 1 til informationsindgangen i et sådant register og barriere 2 til clockindgangen. Sæt barriererne op tæt nok på hinanden, så et objekt, der bevæger sig fra siden af sensor 1, først kan få en logisk værdi 1 til at dukke op på informationsindgangen og derefter - når værdien 1 er til stede på D-indgangen - få en stigende flanke til at dukke op på clockindgangen, som omskriver den logiske værdi 1 fra informationsindgangen til registerets udgang. I tilfælde af bevægelse fra sensor 2-siden vil der først forekomme en clockpuls, som vil omskrive den logiske værdi 0 fra registerets D-indgang til Q-udgangen. På denne måde er det muligt at registrere bevægelsesretningen og styre tælleretningens input. Et andet problem er, at clockpulsen kun skal forekomme, når tilstanden for D-registerets udgang er blevet bestemt. Du kan bruge den puls, der opstår ved D-registerets clockindgang, men du er nødt til at tilføje en forsinkelsesvej til denne puls for at tage højde for registerets udbredelsestid. Lad os nu se på den situation, hvor en person kommer ind i sensor 1's område og derefter bevæger sig tilbage. Det burde ikke være et problem, fordi pulsen kun optræder ved registerets informationsindgang og ikke ændrer tilstanden af registerets udgang. Situationen er dog værre, fordi en sådan indgang/udgang fra sensorens driftsområde vil blive identificeret som en komplet cyklus. Derfor skal vores bevægelsesretningsdetekteringssystem ikke kun reagere på en fuld sekvens af signaler, men må heller ikke generere en plus/minus-puls til tælleren, hvis denne sekvens ikke udføres fuldt ud, dvs. at der ikke er nogen pulser ved begge indgange på det programmerbare relæ, i dette tilfælde I01 og I02.

Da bevægelsesretningsdetektoren blev implementeret, blev det antaget, at detektoren ville have to clock-udgange, som ligesom "højre"/"venstre" eller "op"/"ned" knapperne, der bruges i dette program, ville generere clock-pulser ved to separate udgange. En af disse udgange vil få tællerens værdi til at stige, og den anden til at falde. Signalet til tællerblokken vil blive genereret af logiske porte, der er placeret i et enkelt netværk sammen med tælleren. Desuden vil detektoren være ufølsom over for eventuel "flimren" af signalet ved dens indgange. Plus/minus-signalet vil kun blive genereret, når følgende sekvens er afsluttet:

  • Forøgelse af tællerværdi: puls ved I01 -> puls ved I02.
  • Fald i tællerværdi: puls ved I02 -> puls ved I01.

Den bedste måde at forhindre indgangsbølgeformen i at "flimre" er at bruge en RS-flip-flop. Fordelen er, at flip\flop'en forbliver i en stabil tilstand efter at have påført en spænding til den indgang, der indstiller output (SET), eller til reset-indgangen (RESET), uanset om det logiske niveau ved SET-indgangen ændres eller ej. I det foreslåede design af bevægelsesretningsdetektoren anvendes RS-flip-flops ved begge indgange på easyE4-relæet (I01, I02). De indstilles af et højt spændingsniveau ved den tilsvarende indgang og forbliver indstillet, indtil de nulstilles.

Ideelt set bør den puls, der nulstiller begge RS-flip-flops, være tællerens indgangspuls, da dens modtagelse vil betyde, at bevægelsesretningsdetekteringscyklussen er afsluttet korrekt, at detektoren har genereret en puls til tælleren og er klar til den næste sekvens af signaler. Men den person, der tælles, kan komme ind i driftsområdet for en af detektorerne eller området mellem dem, og i en sådan situation vil kun et af signalerne blive vist ved indgangen til det programmerbare relæ, ikke ved de to indgange, der kræves for korrekt detektering. Hvordan nulstiller man i så fald indgangsrelæerne, og hvilken af dem? Det ser ud til, at den bedste måde er at nulstille dem begge efter en kort periode, der er afsat til hele cyklussen. I software- eller hardwareløsninger kaldes en sådan periode for en timeout.

RS flip-flop - definition af brugermodulet

En af fordelene ved at programmere ved hjælp af et funktionsblokdiagram (FBD) er muligheden for at definere brugerfunktionsblokke. Takket være det kan du ikke kun definere dine egne funktionsblokke og bruge dem gentagne gange i forskellige diagrammer, men du kan også bruge blokke, der er lavet af dine kolleger, producenter af hardwareløsninger, hentet fra internetfora og andre. Til vores egne behov og som en del af øvelsen vil vi lave en sådan brugerblok, der indeholder en ukompliceret RS-flip-flop bygget af to NAND-gates. Dens diagram er vist i figur 1 I vores applikation har vi brug for en højniveau-triggeret RS-flip-flop, og derfor er vi nødt til at tilføje invertere (NOT-gates) ved dens indgange.

RS flip\-flop opbygget af NAND gates Figur 1. RS-flip-flop opbygget af NAND-gates

For at udvikle et brugermodul skal du vælge Program -> Create user function block. Du kan også bruge genvejsikonet (gatesymbolet med en stjerne i menulinjen) eller klikke med højre museknap på Brugerfunktionsblokke under listen over producentfunktionsblokke. Der vises et vindue som vist i figur 2. Her skal du indtaste navnet på din blok (f.eks. RS) og - dette trin er meget vigtigt - antallet og typen af ind- og udgange. Indtil videre har du kun brug for 1 bit-output og 2 outputs.

Vindue med funktionsblokkens egenskaber Figur 2. Vindue med funktionsblokkens egenskaber

Vores brugerfunktionsblok vil kun bestå af få komponenter: to gates, kontakter ved indgangen og spoler ved udgangen. Du skal også bruge en markør til at koble indgangen til udgangen. Med så få komponenter er det tilstrækkeligt med et enkelt netværk.

Det ville være mere praktisk at føre forbindelserne som vist i diagrammet, men det er ikke muligt. Komponenterne placeres af softwaren en efter en, så vi er nødt til at planlægge deres "flade" arrangement. Det er bedst at begynde at arrangere brugerblokkene fra NAND-udgangselementet. Forbind udgangen fra det andet NAND-element og en kontakt til en af indgangene på NAND-udgangselementet. Tilslut derefter to kontakter til indgangen på det første NAND-element. Det, der er tilbage, er udgangene - tilslut to spoler til den anden NAND-gate. Lad os nu se på egenskaberne for de enkelte kontakter og spoler:

  1. Kontakter ved indgangen (første NAND fra venstre):
  • Type: Bit-input/output og markører; Kommentar: SET; Bitlogik: Break; Operand: I
  • Input; Nummer: 1.
  • Type: Bit-input/output og markører; Bit-logik: Make; Operand: M - Markør; Nummer: 1.
  1. Kontakter ved udgangen (anden NAND):
  • Type: Bitindgange/udgange og markører; Kommentar: Q; Spolefunktion: Negeret kontaktor; Operand: Q
  • Udgang; Nummer: 1.
  • Type: Bit-udgange og markører; Spolefunktion: Kontaktor; Operand: M - Markør; Antal: 1.

Nu er det tid til at indstille egenskaberne for den kontakt, der føder RESET-signalet: Type: Bitindgange/udgange og markører; Kommentar: RESET; Bitlogik: Break; Operand: I - Input; Antal: 2.

Den funktionsblok, du lige har lavet, bør se ud som den, der er vist i figur 3.

RS flip\-flop funktionsblok Figur 3. RS flip-flop funktionsblok

Klik på fanen med navnet på den blok, du har oprettet, og vælg Luk. Softwaren vil bede dig om at gemme blokken på disken - bekræft og navngiv blokken. Fra nu af er definitionen tilgængelig på listen over blokke og klar til brug.

At definere brugerfunktionsblokke er et fantastisk værktøj. Med dets hjælp kan du oprette et bibliotek med færdige løsninger, som vil forenkle udviklingen af efterfølgende programmer betydeligt, og som også kan lette arbejdet for dit team eller dine medarbejdere. Du kan også opdele arbejdet i dit team - lad alle skabe og teste et udvalgt element, som derefter kombineres til en sammenhængende helhed. I tilfælde af et simpelt program og easyE4 controller by Eaton er dette ikke nødvendigt, men det er en god arbejdsvane, der kan vise sig at være meget gavnlig, når man beskæftiger sig med mere komplekse projekter.

Detektor for bevægelsesretning

For at forstå bevægelsesretningsdetektorens funktionsprincip anbefaler vi at åbne den software, der er tilgængelig i det supplerende indhold til artiklen. Det er muligt at placere tegninger af alle de beskrevne netværk, men det er mere praktisk at se dem (og forbindelserne mellem dem) på skærmen i programmeringsmiljøet easySoft 7. Hvis du er i tvivl, eller hvis beskrivelsen er for lang, kan du køre simulatoren og se, hvordan programmet opfører sig, når du klikker dig igennem det - især i betragtning af, at det ikke er let at beskrive, hvordan netværk (som nogle gange kun indeholder en enkelt gateway) fungerer isoleret set.

Download softwaren

Diagrammet over bevægelsesretningsdetektoren starter fra netværksnummer 0010. Fra netværksnummer 0010 til 0016 er der logiske elementer, der svarer til driften af input I01, mens der fra 0017 til slutningen, op til netværksnummer 0023, er elementer, der understøtter input I02. Begge dele er symmetriske, og de er modelleret ud fra en pulssekvensdetektor (kvadraturdetektor) med en D-type flip-flop. Da kvadraturdetektorer arbejder med signaler, der er forskudt i fase med 90 grader, og den i folketælleren skal reagere på sekvenser "ingen - I01 - ingen - I02 - ingen" eller "ingen - I02 - ingen - I01 - ingen", er der tilføjet RS-flip-flops for at huske indgangstilstande, for at beskytte mod spændingsflimmer ved indgangene og for at opnå den faseforskydning, der er nødvendig i en kvadraturdetektor.

Der er tilføjet timere til begge latches for at tage tid på operationen og generere en nulstillingspuls til input- og output-RS-flip-flops samt gates til at blokere inputpulserne, indtil flip-flops er nulstillet, dvs. klar til den næste detektionscyklus. De enkelte komponenter er arrangeret og forbundet i diagrammerne på samme måde som beskrevet tidligere, og der er ingen grund til at beskrive det igen. Analyse af detektorens funktion gøres bedst ved hjælp af en simulator, der startes med knappen Simulation. Desværre skal diagrammet i easySoft 7 deles op i små netværk og er derfor vanskeligt at analysere. Derfor anbefales de nysgerrige, der vil gå i dybden med emnet, at printe de enkelte netværk ud og tegne et diagram, der består af logiske gates. Det vil så være let at skelne mellem flip-flops af D-typen og adskille dem fra de ekstra funktioner, der blokerer og nulstiller flip-flops.

Gemme tællerens værdier i tilfælde af strømafbrydelse

Fra brugerens synspunkt ville det være praktisk ikke at skulle genindtaste indstillingerne i tilfælde af strømsvigt, men kun at justere værdien af den aktuelle indikation, hvis det er nødvendigt. Til dette formål skal vores program kunne gemme og hente indholdet af to tællere - C01- og C02-blokkene.

Udbyderen af udviklingsmiljøet kalder egenskaben for at gemme og gendanne tilstanden for blokke eller markører retention. Hvis du vil læse mere om det, skal du bruge menuen "Hjælp", som du finder ved at klikke på symbolet "?" på menulinjen (du kan også trykke på F1). Skriv ordet "retention" i fanen "Search". Du kan også bruge brugervejledningen, som du finder i samme menu.

Til retention bytes, dvs. bytes, der hentes efter power-on, er der en hukommelse på 400 bytes. Det er sandsynligvis en separat chip eller en del af CPU-hukommelsen, som får strøm fra en separat kilde, f.eks. en superkondensator eller et batteri. Som det fremgår af hjælpemenuen, kræver det 4 bytes hukommelse at gemme/gendanne tilstanden for "C" tællerblokken, så to tællere kan nemt rummes i 400 bytes.

For at aktivere lagring/genoprettelse af tællerindholdet skal du klikke på knappen "Project" i nederste venstre hjørne. Vælg derefter fanen "System settings". Det tredje felt fra venstre er "Retention" (figur 4). På dette tidspunkt er det værd at være opmærksom på værdien i feltet "Free:" - i vores eksempel er den viste værdi 400 bytes. Hver "C" tællerblok kræver 4 bytes.

Retention-felt Figur 4. feltet "Retention"

For vores program er værdierne for tællerblokkene C01 og C02 vigtige. Indtast "01" i feltet ved siden af "C" og "02" i det næste felt, som i figur 5. Du kan udelade de andre felter, f.eks. højhastighedstæller "CH", inkrementaltæller "CI", datafunktionsblok "DB" og tidsrelæ "T". På dette tidspunkt behøver du heller ikke at bekymre dig om markørerne (MW, MB, MD). Det er let at se, at når området er indtastet korrekt, falder værdien af "Free:" med 8 bytes, hvilket er den mængde, der kræves for at gemme værdier for de to tællerblokke.

Retention-feltet efter indtastning af indstillingerne for C01- og C02-tællerne Figur 5. feltet "Retention" efter indtastning af indstillingerne for C01- og C02-tællere

Simulering af tællerdrift med easySoft 7

Udviklingsmiljøet easySoft 7 har en indbygget simulator, der giver dig mulighed for at kontrollere programmets funktion, se tilstanden af indgange, udgange og logiske niveauer for individuelle komponenter i FBD-diagrammet. Brug af simulatoren giver os mulighed for at teste programmets funktion og finde fejl, selv om simulatoren af indlysende grunde ikke skaber de faktiske driftsforhold, som vores applikation vil møde i virkeligheden. Lad os nu bruge simulatoren til at kontrollere driften af vores persontæller.

Simulatoren startes ved at klikke på knappen "Simulation" til venstre i bunden af easySoft 7-vinduet. Mens vi simulerer tællerens arbejde, lader vi de fleste parametre være, som de er, og vi indstiller heller ikke nogen fælder, men simulatoren har alligevel meget interessante muligheder, som ikke findes i sammenlignelige konkurrerende produkter. Ud over at indstille fælder giver den f.eks. mulighed for at bruge et virtuelt oscilloskop, som viser bølgeformerne for udvalgte signaler. Lad os afprøve dens muligheder, mens vi tester vores program.

Når programmet "People counter v11.e70" er åbent, skal du klikke på knappen "Simulation", derefter udvide listen Display over den og klikke på Operand window + oscilloscope. Et tomt Operand-vindue + oscilloskop vises til højre. Klik på stjernesymbolet (*) i kolonnen Operand og skriv M05. Ved siden af vises meddelelsen PULSE UP i kolonnen Comment. Klik på kolonnen Oscilloscope, så kommer der et flueben frem sammen med en slags logic state analyser-kanal i oscilloskopvinduet. Tilføj på samme måde: M04 (PULSE UP), I01 (INPUT 1) og I02 (INPUT 2). Resultatet bør være som vist i figur 4.

Konfigurerede oscilloskopvinduer Figur 6. Konfigureret oscilloskop-vindue

Start simulatoren ved at trykke på F9 eller vælge Simulation -> Start i menuen. Vælg Oscilloscope -> Recording on i menuen (eller brug det relevante ikon på værktøjslinjen - en firkant med en rød cirkel). I venstre side af skærmen bør du se den udvidede Display-liste. Klik på knapperne Display +. Nederst i vinduet vises driftsdisplayet for vores tæller. Her skal du bruge højre/venstre-knapperne til at indstille PERMITTED til en værdi, der er større end 0, for eksempel 5, som i figur 5. Klik nu på Display -> Digital input, og dobbeltklik derefter successivt på firkanten ud for 1:INPUT 1 og 2:INPUT 2.

Tællervisning under simulering Figur 7. Tællervisning under simulering (med det maksimalt tilladte antal personer i lokalet indtastet).

Effekten af oscilloskopets funktion er vist i figur 6. Man kan se, at den første puls opstår ved indgangen I01 og den næste ved I02. Samtidig med den stigende flanke ved I02 genereres der en puls ved udgangen M05:PULSE UP, hvilket får tællerens værdi CURRENT til at stige med én, og denne værdi vises på displayet. Hvis impulserne tilføres i omvendt rækkefølge, genereres der en impuls ved udgangen M04:PULSE DOWN, og værdien CURRENT falder. Det er stadig muligt at tilføje f.eks. udgange til oscilloskopskærmen og observere, hvordan I/O-niveauerne ændrer sig i forhold til impulserne på I01 og I02, men i denne situation synes det at være overflødig information. Status for udgangene kan lige så godt observeres ved at klikke på Display -> Digital outputs.

Waveforms at counter inputs/outputs Figur 8. Bølgeformer ved tællerindgange/udgange under simulering

Takket være oscilloskopet kan man nemt se, at den næste person først registreres efter et forudindstillet timeout (her er det 2,5 sekunder), så hvis barriererne er placeret tæt på hinanden, kan man reducere denne tid. Oscillogrammet viser også, at inden for en sekvens af impulser, hvor tælleren fungerer korrekt, kan disse impulser også overlappe hinanden. Det er tilfældet, hvis barriererne er monteret for tæt på hinanden. Når du har kontrolleret, at programmet fungerer, skal du bare uploade det til easyE4-controlleren, sende signalerne fra sensorindgangene og tilslutte signalanordningen. Figur 7 viser et færdigt program indkapslet i en plastkasse, som typisk bruges til eltavler i boliger. Ved siden af controlleren, under et hængslet dæksel, er der en reset-knap.

Persontæller Figur 9. Persontæller baseret på det programmerbare relæ easyE4

easyE4-controller - oversigt

I en serie på tre artikler har vi diskuteret designet af en persontæller. Den kan bruges på to måder: enten til at signalere, at det tilladte antal personer i et rum, i henhold til den grænse, der er indført i forbindelse med sikkerhedskrav, er overskredet, eller til at tænde/slukke for belysning eller ventilation i et rum, hvor disse systemer kun skal fungere, når der er nogen inde. Enheden bruger retention-egenskaben, så softwaren fungerer på en sådan måde, at tællerblokkene, der indeholder indstillingerne og den aktuelle status, gemmes i ikke\flygtig hukommelse og gendannes, når forsyningsspændingen tændes. I tilfælde af strømsvigt er det derfor ikke nødvendigt at indstille tællerparametrene igen - hvis det er nødvendigt, er det nok at tælle de personer, der er til stede i lokalet, og justere værdien.

Ikke desto mindre er easyE4-controlleren et stort skridt fremad i forhold til ældre produkter. Udviklingsmiljøet easySoft 7, som allerede er meget godt, vil helt sikkert blive yderligere forbedret.

Tidligere var det sådan, at applikationsspecifikke controllere var mest almindelige. Nu er det, som eksemplet med easyE4 viser, let at se, at det ikke kan betale sig at udvikle dem baseret på tilgængelige mikrocontrollere. For en relativt lav pris kan man få en controller med en hurtig processor, i et robust skinnemonteret kabinet med indbygget display og tastatur. Den er nem at netværke og kommunikere med, dens funktioner kan opgraderes, og - hvilket er ekstremt vigtigt i enhver professionel applikation - den er i overensstemmelse med adskillige harmoniserede standarder, herunder dem for industrielle miljøer. Derfor kan du være sikker på, at du får en enhed, hvis kerne er blevet testet i et certificeret laboratorium, og som bakkes op af producentens brand og omdømme.

Transfer Multisort Elektronik (TME) er en af verdens største globale distributører af elektroniske komponenter, elektrotekniske dele, værkstedsudstyr og industriel automatisering. Kataloget omfatter over 1.500.000 produkter fra 1.300 førende producenter. TME's moderne logistikcentre i Łódź og Rzgów (Polen), med et samlet areal på over 40.000 m², sender dagligt næsten 6.000 pakker til kunder i mere end 150 lande.

TME investerer også i udviklingen af viden og færdigheder hos unge ingeniører og elektronikentusiaster gennem TME Education-projektet og støtter teknologisamfundet ved at organisere TechMasterEvent -serien, der fremmer innovation og erfaringsudveksling.

rightColumnPicture rightColumnPicture

LÆS OGSÅ