Programmabesturing
Flow & Uitvoering
Beheers de logische flow van uw programma. Van conditionele sprongen tot realtime diagnosetools — optimaliseer de uitvoeringsstructuur van uw controller.
Wat is programmabesturing in TIA Portal?
Programmabesturingsoperaties maken het mogelijk de sequentiële uitvoeringsvolgorde van netwerken te wijzigen. Ze worden gebruikt om codegedeelten over te slaan (Sprongen), complexe vertakkingen te maken (Verdelers) of het interne gedrag van de CPU te beheren (Stop, Watchdog, Tijdsmeting).
Deze instructies zijn krachtig maar moeten met zorg worden gebruikt, met name de WAIT-instructie die de cyclus blokkeert, of sprongen die het programma bij te grote aantallen moeilijk debugbaar kunnen maken. TIA Portal biedt ook moderne tools om fouten lokaal in elk blok te onderscheppen.
Sprongen en Flow
Instructies voor programma-omleiding
JMP / JMPN — Conditionele sprongen
JMPWat het doet
JMP onderbreekt de sequentiële uitvoering en springt naar een label (LABEL) als de RLO 1 is. JMPN doet hetzelfde als de RLO 0 is.
Wanneer te gebruiken
Een codegedeelte overslaan dat in een specifieke modus niet mag worden uitgevoerd, of eenvoudige lussen maken in LAD/FBD.
Pro Tips
De sprongbestemming (LABEL) moet zich in hetzelfde blok (FC of FB) bevinden.
Gebruik geen achterwaartse sprongen om lussen te maken zonder afloopvoorwaarde, omdat u dan risico loopt op een cyclustijdoverschrijding.
Gebruik in SCL liever IF...THEN of CASE...OF structuren.
SWITCH — Sprungverdeler
SWITCHWat het doet
Vergelijkt een ingangswaarde met verschillende doelwaarden en springt naar het netwerk dat overeenkomt met de eerste geverifieerde case. Grafisch equivalent van Switch/Case.
Wanneer te gebruiken
Beheer van machinetoestanden (eenvoudige Grafcet), selectie van bedrijfsmodi of het routeren van onderdelen volgens een typecode.
Pro Tips
Schoner en leesbaarder dan een reeks == vergelijkers in serie.
Gebruik de 'ELSE' ingang om gevallen af te vangen waarbij geen enkele waarde overeenkomt.
Ideaal voor menustructuren op HMI.
RET — Terugkeer
RETWat het doet
Forceert het einde van de uitvoering van het huidige blok (FC/FB) en keert terug naar het aanroepende blok.
Wanneer te gebruiken
Voortijdige beëindiging van een functie als er aan het begin van het blok een fout wordt gedetecteerd, of als er niet aan een veiligheidsvoorwaarde wordt voldaan.
Pro Tips
Nuttig voor het optimaliseren van de cyclustijd door de rest van de code niet onnodig te verwerken.
Wees alert: blokuitgangen die nog niet zijn verwerkt, behouden hun laatste toestand.
Gebruik in SCL de RETURN; instructie.
Runtime-besturing
CPU-cyclusbeheer en prestatiemetingen
RUNTIME — Tijd meten
RUNTIMEWat het doet
Meet de uitvoeringstijd van een programmagedeelte of het hele blok in microseconden (µs).
Wanneer te gebruiken
Code-optimalisatie, diagnose van zware netwerken of prestatieberekeningen van de machine.
Pro Tips
Roep RUNTIME eenmaal aan om de meting te initialiseren, en een tweede keer om het resultaat te verkrijgen.
Gebruik het LReal datatype om het meetresultaat op te slaan.
Handig om te controleren of een complexe FOR-lus de watchdog-limieten niet nadert.
WAIT — Vaste vertraging
WAITWat het doet
Onderbreekt de programma-uitvoering gedurende een opgegeven duur in microseconden. LET OP: in tegenstelling tot een Timer blokkeert WAIT de CPU-cyclus volledig.
Wanneer te gebruiken
Enkele microseconden wachten om een elektronisch signaal te stabiliseren op een ultrasnelle I/O-kaart.
Pro Tips
Met uiterste mate gebruiken. Een te lange WAIT zal een Watchdog-fout veroorzaceren en de PLC stoppen.
Nooit gebruiken voor procesvertragingen (seconden/minuten); gebruik daar TON Timers voor.
Alleen beschikbaar op S7-1500.
STP — CPU-stop
STPWat het doet
Forceert de overgang van de CPU naar de STOP-modus.
Wanneer te gebruiken
Fatale foutconditie waarbij de machine niet meer mag worden bestuurd, of diagnosetest.
Pro Tips
De stop is onmiddellijk. Handmatige tussenkomst (HMI of schakelaar) is vereist om te herstarten.
Geef waar mogelijk de voorkeur aan alarmbeheer met veilige terugvalwaarde boven een harde CPU-stop.
Nuttig in inbedrijfstellingsprojecten om op een specifieke plek te 'breaken'.
Foutafhandeling
Lokale onderschepping van uitvoeringsfouten
GET_ERROR / GET_ERR_ID
Wat ze doen
Halenn informatie op over de eerste fout die is opgetreden binnen een blok (bijv. toegang tot een niet-bestaande array-index).
Wanneer te gebruiken
Uw blokken robuust maken door programmeerfouten te onderscheppen zonder de PLC te stoppen.
Pro Tips
GET_ERROR levert een gedetailleerde structuur, GET_ERR_ID retourneert alleen het foutnummer.
Plaats deze instructies aan het einde van uw kritieke blokken.
Maakt het mogelijk een aangepast foutenlogboek te maken.
Sprongen vs Besturingsstructuren
Welke methode gebruiken om het programma om te leiden?
| U heeft nodig... | Aanbevolen instructie | Waarom? |
|---|---|---|
| Eenvoudige sprong in Ladder | JMP | Een netwerk overslaan |
| Complexe meerkeuze | SWITCH / CASE | Leesbaarder dan 10 JMP's |
| Interne duur meten | RUNTIME | Prestatie-optimalisatie |
| Onmiddellijke stop | STP | Kritieke hardwarefout |
| Zeer kort wachten | WAIT | Elektronische stabilisatie |
| Lokale diagnose | GET_ERROR | CPU-STOP voorkomen |
Veelgestelde Vragen
Wat is het verschil tussen JMP en JMP_LIST?
JMP is een enkele sprong naar een doel. JMP_LIST maakt het mogelijk een lijst met bestemmingen te definiëren. Op basis van een numerieke index springt het programma naar het 1e, 2e of N-de label in de lijst.
Is de WAIT-instructie gevaarlijk?
Ja, bij onjuist gebruik. Het onderbreekt de uitvoering van het GEHELE gebruikersprogramma. Als de som van uw WAIT's en uw code de watchdog-tijd overschrijdt, gaat de CPU naar STOP.
Hoe meet ik de totale cyclustijd van de PLC?
Daar heeft u de RUNTIME-instructie niet voor nodig. U kunt de informatie direct in de CPU-eigenschappen online aflezen of de systeemvariabelen van OB1 gebruiken.
Waar labels (LABEL) plaatsen?
Labels kunnen aan het begin van elk netwerk worden geplaatst. In LAD verschijnen ze boven de linker stroomrail. Een labelnaam moet uniek zijn binnen het blok.