De cyclustijd van een taak is een van de praktische waarden die ingenieurs kunnen gebruiken om te begrijpen hoe een besturingstoepassing zich gedraagt tijdens runtime. Als een taak langer duurt dan verwacht, kan dit de procestiming, synchronisatie, probleemoplossing en systeemstabiliteit beïnvloeden.
CODESYS is een ontwikkelingsomgeving voor de programmering van besturingstoepassingen volgens IEC 61131-3. Het wordt gebruikt in automatiserings- en controlesystemen waar taken betrouwbaar moeten worden uitgevoerd binnen gedefinieerde timingvoorwaarden.
In CODESYS-projecten kan het monitoren van de feitelijke cyclustijd van taken ingenieurs helpen om prestaties te optimaliseren, knelpunten te identificeren en timinggedrag te detecteren dat mogelijk de machinesequentie beïnvloedt. Dit is vooral belangrijk wanneer besturingstaken, communicatietaken of beweging-gerelateerde functies binnen een specifiek timingvenster moeten blijven.
Deze tutorial toont twee manieren om de werkelijke cyclustijd van een taak in CODESYS te meten:
Beide methoden kunnen nuttig zijn. De juiste keuze hangt af van de precisie die u nodig heeft en hoe diepgaand u het taakgedrag wilt analyseren.
De cyclustijd van een taak beschrijft hoe lang een specifieke taak of bewerking duurt binnen een controlesysteem. In een besturingstoepassing helpt deze waarde u te begrijpen of de code binnen het verwachte tijdbereik wordt uitgevoerd.
Het monitoren van de cyclustijd van een taak kan verschillende technische taken ondersteunen:
Een stabiele taakcyclustijd lost niet elk besturingsprobleem op, maar biedt ingenieurs wel een nuttig startpunt. Als de werkelijke cyclustijd langer is dan verwacht of sterk varieert, moet de toepassing wellicht nader geanalyseerd worden.
In CODESYS definieert een taak wanneer en hoe een programma of functie wordt uitgevoerd. De cyclustijd van een taak is de tijd die nodig is om die uitvoering te voltooien.
Een cyclische taak kan bijvoorbeeld zo worden geconfigureerd dat deze om de paar milliseconden wordt uitgevoerd. Als de code binnen de taak te lang duurt, kan de besturing de taak mogelijk niet binnen het verwachte tijdsvenster voltooien. Dit kan invloed hebben op prestaties, processynchronisatie of bewegingsgedrag.
Het meten van de cyclustijd van een taak kan een uitdaging zijn omdat de werkelijke waarde door verschillende factoren beïnvloed kan worden:
Daarom is de meetmethode belangrijk. Een eenvoudige timingmethode kan voldoende zijn voor basistesten. Een nauwkeurigere methode kan nodig zijn wanneer voor een timing op microseconde-niveau of taak specifieke informatie vereist is.
Een eenvoudige manier om de verstreken tijd in CODESYS te meten, is door gebruik te maken van de ingebouwde TIME() functie.
De basislogica is eenvoudig:
1. Registreer de starttijd voordat de code-sectie wordt uitgevoerd
2. Voer de code uit die u wilt meten
3. Registreer de eindtijd nadat de code-sectie is uitgevoerd
4. Trek de starttijd af van de eindtijd
5. Gebruik het resultaat als de gemeten verstreken tijd
In het voorbeeld worden twee FOR-lussen gebruikt om een tijdrovende taak te simuleren. De TIME()-functie legt de tijd vast vóór en na het lusgedeelte, en het verschil tussen deze waarden geeft een geschatte uitvoeringstijd van de taak aan.
Deze methode kan nuttig zijn wanneer u snel een indicatie nodig heeft van de lengte van een codegedeelte.
Het voorbeeld toont een gemeten cyclustijd van een taak die gewoonlijk varieert van 6 tot 8 milliseconden. Er kan een trace worden toegevoegd om de gemeten variabele in de tijd te monitoren. In het voorbeeld springt de cyclustijd af en toe naar 10 milliseconden.
Die variatie doet ertoe. Als een zachte bewegingstaak is geconfigureerd met een cyclustijd van 4 milliseconden of minder, kan het overschrijden van die geconfigureerde cyclustijd uitzonderingen veroorzaken. Hierdoor wordt de timing van taken bijzonder relevant voor toepassingen met strikte bewegings- of synchronisatievereisten.
De TIME() functie is nuttig omdat deze eenvoudig is. Zij vereist weinig code, is eenvoudig te begrijpen, en kan snel aan een bestaand project worden toegevoegd.
Het kan een goede optie zijn wanneer:
Echter, de TIME() functie heeft ook beperkingen. Zij levert waarden met een resolutie van milliseconden. Dat is mogelijk niet nauwkeurig genoeg voor toepassingen die analyse op microseconde-niveau vereisen.
Deze methode vereist ook handmatige tijdregistratie. U moet bepalen waar de meting begint, waar deze eindigt en hoe de verstreken tijd wordt berekend. Dit is acceptabel voor eenvoudige testen, maar kan minder praktisch zijn wanneer u taak-specifieke runtime-informatie nodig hebt binnen een groter programma.
Voor een nauwkeurigere meting van de taakcyclustijd is de CmpIecTask-bibliotheek meestal de betere optie.
De CmpIecTask-bibliotheek is inbegrepen bij CODESYS. Deze bibliotheek biedt functies voor toegang tot informatie van de IEC Task Manager.
Zodra de bibliotheek is toegevoegd aan een CODESYS-project, vereist de initialisatie slechts een kleine hoeveelheid code. Na de initialisatie kan het programma toegang krijgen tot een structuur met gedetailleerde taakinformatie, inclusief waarden zoals de actuele taakcyclustijd en de gemiddelde cyclustijd.
Deze aanpak is meer taakgericht dan het handmatig meten van de tijd voor en na een codesectie. In plaats van uw eigen tijdlogica te creëren, maakt u gebruik van de taakinformatie die via de bibliotheek wordt geleverd.
In het originele voorbeeld wordt dezelfde gesimuleerde werkbelasting gebruikt, zodat de meetmethodes kunnen worden vergeleken. Het verschil is dat de CmpIecTask-bibliotheek de cyclustijd-informatie directer verwerkt.
De CmpIecTask-bibliotheek biedt verschillende voordelen wanneer u een nauwkeurigere taaktiming nodig hebt.
Ten eerste kan het flexibel worden ingebouwd in verschillende delen van het programma. Dit maakt het eenvoudiger om toegang te krijgen tot taakinformatie zonder handmatig start- en eindtijdmetingen rond elke code-sectie te plaatsen.
Ten tweede beheert de bibliotheek de registratie en berekening van cyclustijdinformatie voor taken. Dit reduceert de handmatige inspanningen en verkleint het risico op fouten in de meetlogica.
Ten derde biedt de bibliotheek waarden met een resolutie op microsecondeniveau. Dit is nauwkeuriger dan de waarden die worden verkregen met de TIME() functie en kan belangrijk zijn voor toepassingen met strengere timingvereisten.
Het grootste nadeel is dat de bibliotheek aan het CODESYS-project moet worden toegevoegd. Voor veel toepassingen is dat echter een kleine afweging in vergelijking met de extra precisie en taakgerichte informatie die het biedt.
Beide methoden kunnen u helpen de timing van taken te begrijpen, maar ze zijn niet even geschikt voor elke situatie.
Gebruik de TIME() functie wanneer u een eenvoudige, snelle test nodig hebt en milliseconde-nauwkeurigheid voldoende is. Het is eenvoudig te implementeren en nuttig voor basisvergelijkingen van timing.
Gebruik de CmpIecTask-bibliotheek wanneer u gedetailleerdere taakinformatie nodig hebt, handmatige timinglogica wilt vermijden of microseconde-nauwkeurigheid nodig hebt voor prestatieanalyse.
Voor bewegingstaken, synchronisatietaken of besturingstoepassingen met striktere timingvereisten is de CmpIecTask-bibliotheek meestal de betere keuze.
CODESYS taak-timing is vooral relevant wanneer de besturingsprestaties, bewegingsgedrag of machine-synchronisatie moet worden geëvalueerd tijdens de inbedrijfstelling of probleemoplossing.
Binnen de Festo softwareomgeving kan CODESYS deel uitmaken van een bredere engineering- en besturingsworkflow. Festo AX Controls ondersteunt deterministische realtime besturing in norm-programmering volgens IEC 61131-3, inclusief CODESYS, en ondersteunt ook high-level programmeertalen zoals C/C++, C# en Python.
Festo Automation Suite ondersteunt inbedrijfstelling, programmering en diagnose. Het kan AX Controls-apparaten zoals CEPE overbrengen vanuit de topologie naar de CODESYS-programmeeromgeving zonder extra configuratiestappen, zodat gebruikers direct verder kunnen gaan met de machinesequentie.
Gebruik deze tutorial als een praktische CODESYS-methode voor het testen van de taak-timing. Ga daarna verder met de Festo-software, licenties of leermiddelen die passen bij uw volgende engineeringstap.