Čas cikla naloge je ena izmed praktičnih vrednosti, ki jih inženirji lahko uporabijo za razumevanje delovanje krmilne aplikacije med izvajanjem. Če naloga traja dlje, kot je pričakovano, lahko to vpliva na časovni razpored procesov, sinhronizacijo, odpravljanje težav in stabilnost sistema.

CODESYS je razvojno okolje za programiranje aplikacij krmilnikov v skladu z IEC 61131-3. Uporablja se v sistemih za avtomatizacijo in vodenje, kjer morajo naloge zanesljivo delovati znotraj določenih časovnih pogojev.

V projektih CODESYS lahko spremljanje dejanskega časa cikla nalog pomaga inženirjem optimizirati delovanje, prepoznati ozka grla in zaznati časovno vedenje, ki lahko vpliva na zaporedje stroja. To je še posebej pomembno, kadar morajo krmilne naloge, komunikacijske naloge ali funkcije, povezane z gibanjem, ostati znotraj določenega časovnega okna.

Ta priročnik prikazuje dva načina za merjenje dejanskega časa cikla naloge v CODESYS-u:

  • Uporaba vgrajene funkcije TIME()
  • Uporaba knjižnice CmpIecTask

Obe metodi sta lahko koristni. Prava izbira je odvisna od natančnosti, ki jo potrebujete, in od tega, kako poglobljeno želite analizirati vedenje naloge.

Čas cikla naloge opisuje, kako dolgo traja določena naloga ali operacija znotraj krmilnega sistema. V aplikaciji krmilnika vam ta vrednost pomaga razumeti, ali se koda izvaja znotraj pričakovanega časovnega okvira.

Spremljanje časa cikla izvajanja naloge lahko podpira več inženirskih nalog:

  • preverjanje, ali naloga ostane znotraj konfiguriranega časa cikla
  • identifikacija delov kode, ki podaljšuje čas izvajanja
  • zaznavanje nepričakovanih časovnih odstopanj
  • podpora pri odpravljanju težav med zagonom
  • izboljšanje sinhronizacije procesov
  • pomoč pri stabilizaciji vedenja krmilnika

Stabilen časovni cikel naloge ne reši vseh težav pri krmiljenju, vendar inženirjem ponudi koristno izhodišče. Če je dejanski čas cikla daljši od pričakovanega ali močno niha, bo morda treba aplikacijo analizirati natančneje.

V CODESYS določa naloga, kdaj in kako sta izvedeni program ali funkcija. Čas cikla naloge je čas, potreben za dokončanje te izvršitve.

Na primer, ciklično nalogo je mogoče konfigurirati za izvajanje vsakih nekaj milisekund. Če koda znotraj naloge traja predolgo, krmilnik morda ne bo dokončal naloge v pričakovanem časovnem oknu. To lahko vpliva na zmogljivost, sinhronizacijo procesov ali vedenje gibanja.

Merjenje časa cikla naloge je lahko zahtevno, saj na dejansko vrednost lahko vpliva več dejavnikov:

  • obremenitev sistema
  • zakasnitev omrežja
  • zmogljivost strojne opreme
  • konfiguracija naloge
  • programska arhitektura
  • komunikacijsko vedenje
  • količina in struktura kode znotraj naloge

Zato je metoda merjenja pomembna. Preprosta metoda merjenja časa je lahko dovolj za osnovne preglede. Ko je potreben časovni nadzor na ravni mikrosekund ali specifične informacije o nalogi, je morda potrebna natančnejša metoda.

Eden izmed preprostih načinov za merjenje pretečenega časa v CODESYS je uporaba vgrajene funkcije TIME().

Osnovna logika je preprosta:
1. Zabeležite začetni čas, preden se zažene del kode
2. Zaženite kodo, ki jo želite izmeriti
3. Zabeležite končni čas po tem, ko se je izvedel del kode
4. Odštejte začetni čas od končnega časa
5. Uporabite rezultat kot izmerjeni pretečeni čas

V primeru sta uporabljeni dve zanki FOR za simulacijo dolgotrajne naloge. Funkcija TIME() zajame čas pred delom zanke in po njej, razlika med tema vrednostma pa poda oceno časa izvajanja naloge.

Ta metoda je lahko koristna, ko želite hitro oceno, koliko časa traja določen del kode.

Primer prikazuje izmerjen čas cikla naloge, ki traja običajno od 6 do 8 milisekund. Za spremljanje merjenja spremenljivke skozi čas je mogoče dodati sled. V primeru skoči čas cikla občasno na 10 milisekund.

Ta razlika je pomembna. Če je naloga mehkega gibanja nastavljena s cikličnim časom 4 milisekunde ali manj, lahko prekoračitev tega nastavljenega cikličnega časa povzroči izjeme. Zaradi tega je časovna uskladitev opravil še posebej pomembno za aplikacije s strogimi zahtevami glede gibanja ali sinhronizacije.

Funkcija TIME() je uporabna, ker je enostavna. Zahteva malo kode, je enostavna za razumevanje in jo je mogoče hitro dodati v obstoječi projekt.

Lahko je dobra izbira, ko:

  • potrebujete hitro preverjanje časa
  • je ločljivost v milisekundah je zadostna
  • želite izmeriti določen del kode
  • Aplikacija ne zahteva zelo natančnih podatkov meritev časa

Vendar ima funkcija TIME() tudi svoje omejitve. Zagotavlja vrednosti z ločljivostjo v milisekundah. To morda ni dovolj natančno za aplikacije, ki potrebujejo analizo na ravni mikrosekund.

Ta metoda prav tako zahteva ročno beleženje časa. Določiti morate, kje se meritev začne, kje se konča in kako se izračuna pretečen čas. To je sprejemljivo za preproste preglede, vendar je lahko manj priročno, ko potrebujete specifične zagonske informacije o opravilih znotraj večjega programa.

Za natančnejše merjenje časa cikla opravil je knjižnica CmpIecTask običajno boljša možnost.

Knjižnica CmpIecTask je vključena v CODESYS. Ta knjižnica ponuja funkcije za dostop do informacij iz upravitelja opravil IEC.

Ko je knjižnica dodana v projekt CODESYS, inicializacija zahteva le majhno količino kode. Po inicializaciji lahko program dostopa do strukture s podrobnimi informacijami o opravilih, vključno z vrednostmi, kot sta dejanski čas cikla opravila in povprečen čas cikla.

Ta pristop je bolj specifičen za posamezne naloge kot ročno merjenje časa pred delom kode in po njem. Namesto ustvarjanja lastne logike časovnega usklajevanja uporabite informacije o nalogah, ki jih zagotavlja knjižnica.

V prvotnem primeru se uporablja enaka simulirana delovna obremenitev, da se merilne metode lahko primerjajo. Razlika je v tem, da knjižnica CmpIecTask neposredno upravlja z informacijami o času cikla opravila.

Knjižnica CmpIecTask ponuja več prednosti, ko potrebujete natančnejše časovno usklajevanje opravil.

Prvič, lahko se prilagodljivo vgradi v različne dele programa. To olajša dostop do informacij o opravilih brez ročnega dodajanja meritev začetnega in končnega časa okoli vsakega odseka kode.

Drugič, knjižnica upravlja beleženje in izračun podatkov o času ciklov opravila. To zmanjšuje ročni trudi in zmanjšuje tveganje za napake v logiki merjenja.

Tretjič, knjižnica zagotavlja vrednosti z ločljivostjo a ravni mikrosekund. To je natančnejše od vrednosti, pridobljene s funkcijo TIME(), in je lahko pomembno za aplikacije s strožjimi časovnimi zahtevami.

Glavna pomanjkljivost je, da je treba knjižnico dodati v projekt CODESYS. Vendar pa je to za številne aplikacije majhen kompromis v primerjavi z dodatno natančnostjo in specifičnimi informacijami za opravilih, ki jih zagotavlja.

Obe metodi vam lahko pomagata razumeti časovni okvir opravila, vendar nista enako primerni za vsako situacijo.

Funkcijo TIME() uporabite takrat, ko potrebujete hitro in preprosto preverjanje ter zadošča ločljivost na ravni milisekund. Enostavno ga je implementirati in je uporaben za osnovne primerjave časov.

Uporabite knjižnico CmpIecTask, ko potrebujete natančnejše informacije o opravilih, ko se želite se izogniti ročni logiki merjenja časa ali ko za analizo delovanja potrebujete ločljivost na ravni mikrosekund.

Za naloge gibanja, naloge sinhronizacije ali aplikacije krmilnikov s strožjimi časovnimi zahtevami je knjižnica CmpIecTask običajno boljša izbira.

Časovno načrtovanje opravil v sistemu CODESYS je še posebej pomembno takrat, ko je treba med zagonom ali odpravljanjem napak oceniti zmogljivost krmilnika, gibanje osi ali sinhronizacijo stroja med.

V programskem okolju Festo je CODESYS lahko del širšega inženiringa in krmilnega delovnega procesa. Festo AX Controls podpira deterministično krmiljenje v realnem času pri standardnem programiranju v skladu z IEC 61131-3, vključno s CODESYS-m, prav tako pa podpira višje nivojske jezike, kot so C/C++, C# in Python.

Festo Automation Suite podpira zagon, programiranje in diagnostiko. Naprave AX Controls, kot je CEPE, lahko prenese iz topologije v programsko okolje CODESYS brez dodatnih konfiguracijskih korakov, tako da lahko uporabniki neposredno nadaljujejo s strojno sekvenco

Uporabite ta priročnik kot praktično metodo v okolju CODESYS za preverjanje časovnega izvajanja opravil. Nato nadaljujte s programsko opremo Festo, licenciranjem ali učnimi viri, ki ustrezajo vašemu naslednjemu inženirskemu koraku.

  • Čas cikla opravila prikazuje, kako dolgo traja določeno opravilo ali operacija znotraj krmilnega sistema.
  • Spremljanje časa cikla opravil pomaga inženirjem optimizirati delovanje, zaznati ozka grla in izboljšati stabilnost sistema
  • Funkcija TIME() je enostavna za uporabo in hitro za implementacijo, vendar zagotavlja ločljivost na ravni milisekund
  • Knjižnica CmpIecTask zagotavlja informacije o specifičnih pravilih in ločljivost na ravni mikrosekund
  • Za preproste preglede uporabite funkcijo TIME(), za natančnejšo analizo cikličnega časa pa knjižnico CmpIecTask
  • Opravila z natančnim nadzorom gibanja ali sinhronizacijo pogosto zahtevajo podrobnejši premislek o dejanskem časovnem usklajevanju opravil
  • Programska oprema Festo in viri za podporo lahko uporabnikom pomagajo preiti od odpravljanja težav v okolju CODESYS do zagona, licenciranja in uvedbe robnega krmiljenja