Vreme ciklusa zadatka je jedna od praktičnih vrednosti koje inženjeri mogu koristiti da bi razumeli kako se aplikacija za programabilni logički kontroler ponaša tokom izvršavanja. Ako zadatak traje duže od očekivanog, to može uticati na vremenski okvir procesa, sinhronizaciju, rešavanje problema i stabilnost sistema.

CODESYS je razvojno okruženje za programiranje aplikacija za programabilni logički kontroler prema standardu IEC 61131-3. Koristi se u sistemima automatizacije i kontrole gde zadaci moraju pouzdano da se izvršavaju u okviru definisanih vremenskih uslova.

U CODESYS projektima, praćenje stvarnog vremena ciklusa zadatka može pomoći inženjerima da optimizuju performanse, identifikuju uska grla i otkriju vremensko ponašanje koje može uticati na sekvencu mašine. Ovo je posebno važno kada zadaci kontrole, komunikacioni zadaci ili funkcije povezane s kretanjem moraju ostati unutar određenog vremenskog prozora.

Ovaj vodič pokazuje dva načina za merenje stvarnog cikličnog vremena zadatka u CODESYS-u:

  • Koristeći ugrađenu funkciju TIME()
  • Korišćenje biblioteke CmpIecTask

Obe metode mogu biti korisne. Pravi izbor zavisi od preciznosti koja vam je potrebna i od toga koliko duboko želite da analizirate ponašanje zadatka.

Vreme ciklusa zadatka opisuje koliko dugo određeni zadatak ili operacija traje unutar kontrolnog sistema. U aplikaciji programabilnog logičkog kontrolera, ova vrednost vam pomaže da razumete da li kod radi u okviru očekivanog vremenskog opsega.

Praćenje vremena ciklusa zadatka može podržati nekoliko inženjerskih zadataka:

  • Proveravanje da li zadatak ostaje u okviru svog podešenog ciklusa vremena
  • Identifikacija sekcija koda koje povećavaju vreme izvršavanja
  • Otkrivanje neočekivanih vremenskih varijacija
  • Podrška rešavanju problema tokom puštanja u rad
  • Poboljšanje sinhronizacije procesa
  • Pomoć pri stabilizaciji ponašanja programabilnog logičkog kontrolera

Stabilno vreme ciklusa zadatka ne rešava svaki problem u kontroli, ali pruža inženjerima koristan početni osnov. Ako je stvarno vreme ciklusa duže od očekivanog ili znatno varira, aplikacija može zahtevati detaljniju analizu.

U CODESYS-u, zadatak definiše kada i kako se program ili funkcija izvršava. Vreme ciklusa zadatka je vreme potrebno za dovršavanje tog izvršenja.

Na primer, ciklički zadatak može biti konfigurisan da se pokreće svakih nekoliko milisekundi. Ako kod unutar zadatka traje predugo, programabilni logički kontroler možda neće dovršiti zadatak u očekivanom vremenskom okviru. Ovo može uticati na performanse, sinhronizaciju procesa ili ponašanje u pokretu.

Meriti vreme ciklusa zadatka može biti izazovno jer na stvarnu vrednost može uticati nekoliko faktora:

  • Sistemsko opterećenje
  • Kašnjenje mreže
  • Performanse hardvera
  • Konfiguracija zadatka
  • Softverska arhitektura
  • Ponašanje u komunikaciji
  • Količina i struktura koda unutar zadatka

To je razlog zašto je metoda merenja važna. Jednostavna metoda merenja vremena može biti dovoljna za osnovne provere. Preciznija metoda može biti potrebna kada je potrebno merenje na nivou mikrosekundi ili specifične informacije o zadatku.

Jednostavan način za merenje proteklog vremena u CODESYS-u je korišćenje ugrađene funkcije TIME().

Osnovna logika je jednostavna:
1. Zabeležite vreme početka pre nego što sekcija koda počne da radi
2. Pokrenite kod koji želite da izmerite
3. Zabeležite vreme završetka nakon što je sekcija koda izvršena
4. Oduzmite vreme početka od vremena završetka
5. Koristite rezultat kao izmereno proteklo vreme

U primeru se dve FOR petlje koriste za simulaciju zadatka koji zahteva puno vremena. Funkcija TIME() beleži vreme pre i posle odeljka petlje, a razlika između tih vrednosti daje procenjeno vreme izvršavanja zadatka.

Ova metoda može biti korisna kada želite brz indikator koliko dugo traje određeni deo koda.

Primer pokazuje izmereno vreme ciklusa zadatka koje obično varira od 6 do 8 milisekundi. Trag se može dodati za praćenje izmerene promenljive tokom vremena. U primeru vreme ciklusa povremeno skače na 10 milisekundi.

Ta varijacija je važna. Ako je zadatak sa mekim pokretom konfigurisan sa vremenom ciklusa od 4 milisekunde ili manje, prekoračenje tog konfigurisanog vremena ciklusa može izazvati izuzetke. Ovo čini vremensko planiranje zadataka posebno relevantnim za aplikacije sa strogim zahtevima za pokret ili sinhronizaciju.

Funkcija TIME() je korisna jer je jednostavna. Zahteva malo koda, laka je za razumevanje i može se brzo dodati postojećem projektu.

Može biti dobra opcija kada:

  • Kada vam je potrebna brza provera vremena
  • Rezolucija u milisekundama je dovoljna
  • Želite da izmerite određeni deo koda
  • Aplikacija ne zahteva podatke o vremenu visoke preciznosti

Međutim, funkcija TIME() takođe ima ograničenja. Ona pruža vrednosti sa rezolucijom na nivou milisekundi. To možda neće biti dovoljno precizno za aplikacije koje zahtevaju analizu na nivou mikrosekundi.

Ova metoda takođe zahteva manuelno praćenje vremena. Morate definisati gde merenje počinje, gde se završava i kako se izračunava proteklo vreme. Ovo je prihvatljivo za jednostavne provere, ali može biti manje praktično kada su vam potrebne informacije specifične za zadatke u okviru većeg programa.

Za preciznije merenje vremena ciklusa zadatka, biblioteka CmpIecTask je obično bolja opcija.

CmpIecTask biblioteka je uključena u CODESYS. Ova biblioteka pruža funkcije za pristup informacijama sa IEC menadžera zadataka.

Kada se biblioteka doda u CODESYS projekat, inicijalizacija zahteva samo malu količinu koda. Nakon inicijalizacije, program može pristupiti strukturi sa detaljnim informacijama o zadacima, uključujući vrednosti kao što su stvarno vreme ciklusa zadatka i prosečno vreme ciklusa.

Ovaj pristup je više specifičan za zadatke nego ručno merenje vremena pre i posle sekcije koda. Umesto da kreirate sopstvenu logiku merenja vremena, koristite informacije o zadatku koje pruža biblioteka.

U originalnom primeru koristi se isto simulirano radno opterećenje kako bi se metode merenja mogle uporediti. Razlika je u tome što biblioteka CmpIecTask direktnije upravlja informacijama o vremenu ciklusa zadatka.

Biblioteka CmpIecTask nudi nekoliko prednosti kada vam je potrebno preciznije vreme zadatka.

Prvo, može se fleksibilno ugraditi u različite delove programa. To olakšava pristup informacijama o zadatku bez ručnog postavljanja merenja početnog i krajnjeg vremena oko svakog dela koda.

Drugo, biblioteka upravlja beleženjem i izračunavanjem informacija o vremenu ciklusa zadatka. Ovo smanjuje ručni trud i smanjuje rizik od grešaka u logici merenja.

Treće, biblioteka pruža vrednosti sa rezolucijom na nivou mikrosekundi. Ovo je preciznije od vrednosti dobijenih pomoću funkcije TIME() i može biti važno za aplikacije sa strožim zahtevima za vremensko usklađivanje.

Glavni nedostatak je što biblioteka mora biti dodata CODESYS projektu. Međutim, za mnoge aplikacije, to je mala cena u odnosu na dodatnu preciznost i informacije specifične za zadatke koje pruža.

Obe metode vam mogu pomoći da razumete vremensko usklađivanje zadataka, ali nisu podjednako pogodne za svaku situaciju.

Koristite funkciju TIME() kada vam je potreban jednostavan i brz pregled, a rezolucija na nivou milisekunde je dovoljna. Lako je za implementaciju i korisno za osnovna poređenja vremena.

Koristite biblioteku CmpIecTask kada vam je potrebna preciznija informacija o zadacima, želite da izbegnete ručnu logiku vremenskog određivanja ili vam je potrebna rezolucija na nivou mikrosekunde za analizu performansi.

Za zadatke kretanja, zadatke sinhronizacije ili primene programabilnog logičkog kontrolera sa strožim zahtevima za vreme, biblioteka CmpIecTask je obično bolji izbor.

Vreme izvršavanja zadataka u CODESYS-u je posebno važno kada se mora proceniti performansa programabilnog logičkog kontrolera, ponašanje pokreta ili sinhronizacija mašine tokom puštanja u rad ili rešavanja problema.

U okviru Festo softverskog okruženja, CODESYS može biti deo šireg inženjerskog i upravljačkog radnog toka. Festo AX Controls podržava determinisanu kontrolu u realnom vremenu u standardnom programiranju prema IEC 61131-3, uključujući CODESYS, a takođe podržava i programske jezike visokog nivoa kao što su C/C++, C# i Python.

Festo Automation Suite podržava puštanje u rad, programiranje i dijagnostiku. Može preneti AX Controls uređaje poput CEPE iz topologije u okruženje za programiranje CODESYS bez dodatnih koraka konfiguracije, tako da korisnici mogu direktno nastaviti sa sekvencom mašine.

Koristite ovaj vodič kao praktičnu metodu u CODESYS-u za proveru tajminga zadataka. Zatim nastavite sa Festo softverom, licenciranjem ili obrazovnim resursom koji odgovara vašem sledećem inženjerskom koraku.

  • Vreme ciklusa zadatka pokazuje koliko dugo traje određeni zadatak ili operacija unutar kontrolnog sistema
  • Praćenje vremena ciklusa zadatka pomaže inženjerima da optimizuju performanse, otkriju uska grla i poboljšaju stabilnost sistema
  • Funkcija TIME() je laka za korišćenje i brza za implementaciju, ali pruža rezoluciju na nivou milisekundi
  • CmpIecTask biblioteka pruža informacije specifične za zadatke i rezoluciju na nivou mikrosekundi
  • Koristite funkciju TIME() za jednostavne provere, a CmpIecTask biblioteku za precizniju analizu vremena ciklusa
  • Precizna kontrola pokreta ili zadaci sinhronizacije često zahtevaju pažljivije razmatranje stvarnog vremena zadatka
  • Festo softver i resursi za podršku mogu pomoći korisnicima da pređu od rešavanja problema u CODESYS-u do puštanja u rad, licenciranja i implementacije granične kontrole