- PHP programozás
- Milyen NAS-t vegyek?
- Milyen program, ami...?
- Aliexpress tapasztalatok
- 3 évig még biztosan nem rendelhetünk Xiaomi EV-t
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Windows 11
- Mesterséges Intelligencia topik
- Microsoft Excel topic
- Van, amit nehéz lett megtalálni a Google keresőjével
Új hozzászólás Aktív témák
-
Szirty
őstag
válasz mcwizard #2678 üzenetére
Helló mcwizard!
Én a siemens technical fórumon keresném a választ.
-
Szirty
őstag
válasz mcwizard #4110 üzenetére
Üdv mcwizard!
A lokális változók a hívás végén nem törlődnek. A rendszer nem törli őket szándékosan. Ám a tartalmukat nem szabad figyelembe venni a blokkon belül azelőtt, hogy értéket adtunk volna neki.
Az ok rendkívül egyszerű: A lokális változók tartalmát más blokkok lokális változói felülírhatják ha használnak lokális változót illetve ha írják azokat. Így minden blokkban minden lokális változó tartalma lényegében határozatlan, memória szemét van benne. Egyszerűen azért, mert minden blokk ugyanazt a stack-et (memória területet) használja a saját lokális változói tárolására.
Ezért ha csak egyetlen egy blokkod van ami ír egy lokális változót, de a többi blokkban is létrehozol változókat amik így ugyanarra a címre kerülnek, ám azokat nem írod csak olvasod, akkor azt fogod tapasztalni hogy amikor az író blokk megváltoztatja a lokális változó értékét, akkor az a többi blokkban is megváltozik. Illetve az író blokk elején is az az érték van benne amit utoljára beleír.
Ha azonban nem "steril", hanem olyan programban vizsgálnád meg ugyanezt a jelenséget ahol különböző blokkok különböző célra intenzíven használnak különböző belső változókat a saját céljukra (a gyakorlatban minden program ilyen lényegében) akkor gyökeresen mást tapasztalnál.
Ha tehát arra hagyatkozol amit most tapasztaltál, annak vége igen nagy szívás lehet. Ezért nagyon fontos szabály, hogy egy blokkban lokális változót SOHA nem használunk fel azelőtt a blokk lefutásán belül, hogy annak értéket adtunk volna!
-
Szirty
őstag
válasz mcwizard #4113 üzenetére
Üdv mcwizard!
Meggyűlhet.
Meglehetősen misztikus hibajelenségeket produkálhat az ilyen hiba. Pl. ha az a bit egy másik blokkban (ami így, hibásan kezeli a temp változóterületet) éppen egy előírt érték dint-jének a közepére esik.
Nem mindegy ám, hogy egy szervóhajtást 23430-ra vagy a 4217734 pozícióra küldi a program.
Vagy hogy a kemencét 699 fokra fűti vagy tol neki néha egy 2747-et.... -
Szirty
őstag
válasz mcwizard #4113 üzenetére
Üdv!
Erről a témáról eszembe jut még egy eset, amit szintén kegyetlenül meg lehet szívni ha nem figyelünk oda. De ennél ellentétes a helyzet, vagyis nem az van hogy azt gondoljuk jól működik és nem értjük miért nem, hanem látszólag hülyeséget csinál, mégis jól működik...
Ha lesz kedvem leírom a weblapomon egy írásban. -
rsf
senior tag
válasz mcwizard #4113 üzenetére
Az a poén, hogy használsz pl. egy Int-et és nem adsz neki értéket aztán csak azt veszed észre, hogy van benne 28534. Aztán elkezded keresni, hogy hogyan került ez a szám bele, de azt meg nem találod.
Felfutó élnek sem lehet használni a lokális változót!
Üdv.“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“
-
Dezsi82
tag
válasz mcwizard #5273 üzenetére
Üdv
Az, hogy PLC újraindítás után megmaradt a hiba, egész természetes, hiszen a Graph függvénye DBben dolgozik, így aztán az újraindítás elvileg sokat nem használ neki.
Elvileg az Init minden DB állapotot visszaállít, tehát ha minden igaz, olyan mintha újratöltenéd a DBt. -
BG*
csendes tag
-
mcwizard
tag
válasz mcwizard #7344 üzenetére
Sziasztok!
Az időszinkronizálós problémámra sikerült megtalálni a megfelelő beállítást. Gondoltam leírom, hogy megmaradjon az utókornak. A CP kártyában kell az időszervert beállítani, de a CPU ugyanezen beállítási ablakában be kell pipálni egy checkbox-ot: KÉP
A következő fórumbejegyzés vezetett rá a dologra: LINK
Őszintén szólva én eddig úgy gondoltam, hogy ha ezt a checkbox-ot bepipálom, akkor a CPU a saját idejét állítja be a többi eszköznek és a HELP sem győzött meg ennek ellenkezőjéről...
Na mindegy, mindig tanul valamit az ember.Kellemes ünnepeket mindenkinek!
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!