Programstyrning
Flöde & Exekvering
Bemästra det logiska flödet i ditt program. Från villkorliga hopp till realtidsdiagnostikverktyg — optimera exekveringsstrukturen i din styrenhet.
Vad är programstyrning i TIA Portal?
Programstyrningsoperationer gör det möjligt att ändra den sekventiella exekveringsordningen för nätverk. De används för att hoppa över delar av koden (Hopp), skapa komplexa förgreningar (Fördelare) eller hantera CPU:ns interna beteende (Stop, Watchdog, Tidsmätning).
Dessa instruktioner är kraftfulla men måste användas med försiktighet, särskilt WAIT-instruktionen som blockerar cykeln, eller hopp som kan göra programmet svårt att felsöka om de är för många. TIA Portal erbjuder även moderna verktyg för att fånga upp fel lokalt i varje block.
Hopp och Flöde
Instruktioner för programomdirigering
JMP / JMPN — Villkorliga hopp
JMPVad den gör
JMP avbryter den sekventiella exekveringen och hoppar till en etikett (LABEL) om RLO är 1. JMPN gör detsamma om RLO är 0.
När den ska användas
Hoppa över en koddel som inte ska köras i ett specifikt läge, eller skapa enkla loopar i LAD/FBD.
Proffstips
Hoppmålet (LABEL) måste finnas i samma block (FC eller FB).
Använd inte bakåthopp för att skapa loopar utan villkor för avslut, eftersom du riskerar att cykeltiden överskrids.
I SCL, använd istället IF...THEN eller CASE...OF-strukturer.
SWITCH — Hoppfördelare
SWITCHVad den gör
Jämför ett ingångsvärde med flera målvärden och hoppar till det nätverk som motsvarar det första verifierade fallet. Grafisk motsvarighet till Switch/Case.
När den ska användas
Hantering av maskintillstånd (enkel Grafcet), val av driftslägen eller dirigering av delar enligt en typkod.
Proffstips
Renare och mer lättläst än en serie == komparatorer i serie.
Använd 'ELSE'-ingången för att hantera fall där inget värde matchar.
Idealisk för menystrukturer på HMI.
RET — Retur
RETVad den gör
Tvingar fram slutet på exekveringen av det aktuella blocket (FC/FB) och återgår till det anropande blocket.
När den ska användas
Tidigt avslut av en funktion om ett fel upptäcks i början av blocket, eller om ett säkerhetsvillkor inte är uppfyllt.
Proffstips
Användbart för att optimera cykeltiden genom att inte bearbeta resten av koden i onödan.
Var vaksam: blockutgångar som ännu inte bearbetats behåller sitt senaste tillstånd.
I SCL, använd instruktionen RETURN;
Runtime-kontroll
CPU-cykelhantering och prestandamätningar
RUNTIME — Mäta tid
RUNTIMEVad den gör
Mäter exekverinstiden för en del av programmet eller hela blocket i mikrosekunder (µs).
När den ska användas
Kodoptimering, diagnostik av tunga nätverk eller prestandaberäkningar för maskinen.
Proffstips
Anropa RUNTIME en gång för att initiera mätningen, sedan en andra gång för att få resultatet.
Använd datatypen LReal för att lagra mätresultatet.
Praktiskt för att kontrollera om en komplex FOR-loop närmar sig watchdog-gränserna.
WAIT — Fast fördröjning
WAITVad den gör
Pausar programexekveringen under en angiven tid i mikrosekunder. VARNING: till skillnad från en Timer blockerar WAIT CPU-cykeln helt.
När den ska användas
Vänta några mikrosekunder för att stabilisera en elektronisk signal på ett ultrasnabbt I/O-kort.
Proffstips
Använd med extrem måttfullhet. En för lång WAIT utlöser ett Watchdog-fel och stoppar PLC:n.
Använd aldrig för processfördröjningar (sekunder/minuter); använd TON-timers för det.
Endast tillgänglig på S7-1500.
STP — CPU-stopp
STPVad den gör
Tvingar CPU:n till läget STOP.
När den ska användas
Fatalt feltillstånd där maskinen inte längre får styras, eller diagnostiktest.
Proffstips
Stoppet är omedelbart. Manuellt ingrepp (HMI eller omkopplare) krävs för omstart.
Föredra larmhantering med säkert fallback-läge framför ett bryskt CPU-stopp när det är möjligt.
Användbart i drifttagningsprojekt för att 'breaka' på ett specifikt ställe.
Felhantering
Lokalt fångande av exekveringsfel
GET_ERROR / GET_ERR_ID
Vad de gör
Hämtar information om det första felet som inträffat inuti ett block (t.ex. åtkomst till ett array-index som inte finns).
När den ska användas
Göra dina block robusta genom att fånga upp programmeringsfel utan att stoppa PLC:n.
Proffstips
GET_ERROR ger en detaljerad struktur, GET_ERR_ID returnerar endast felnumret.
Placera dessa instruktioner i slutet av dina kritiska block.
Gör det möjligt att skapa en anpassad fellogg.
Hopp vs Kontrollstrukturer
Vilken metod ska användas för att omdirigera programmet?
| Du behöver... | Rekommenderad instruktion | Varför? |
|---|---|---|
| Enkelt hopp i Ladder | JMP | Hoppa över ett nätverk |
| Komplext flerval | SWITCH / CASE | Mer lättläst än 10 JMP |
| Mäta intern varaktighet | RUNTIME | Prestandaoptimering |
| Omedelbart stopp | STP | Kritiskt hårdvarufel |
| Mycket kort väntan | WAIT | Elektronisk stabilisering |
| Lokal diagnostik | GET_ERROR | Undvik CPU-STOPP |
Vanliga frågor
Vad är skillnaden mellan JMP och JMP_LIST?
JMP är ett enstaka hopp till ett mål. JMP_LIST gör det möjligt att definiera en lista med destinationer. Baserat på ett numeriskt index hoppar programmet till den 1:a, 2:a eller N:te etiketten i listan.
Är WAIT-instruktionen farlig?
Ja, vid felaktig användning. Den pausar exekveringen av HELA användarprogrammet. Om summan av dina WAIT och din kod överskrider watchdog-tiden (ofta 150ms) går CPU:n till STOP.
Hur mäter man PLC:ns totala cykeltid?
Du behöver inte RUNTIME-instruktionen för det. Du kan läsa informationen direkt i CPU-egenskaperna online eller använda systemvariablerna i OB1.
Var ska man placera LABEL-etiketter?
LABEL kan placeras i början av vilket nätverk som helst. I LAD visas de ovanför den vänstra strömskenan. Ett etikettnamn måste vara unikt inom blocket.