Új hozzászólás Aktív témák
-
Szirty
őstag
Helló Onishi!
De így minek ide Win7? Hogy virtuális géppel zabáltasd fel az erőforrásokat? Nem értem.
A 24 órás naplózást nyilván nem a tablettáddal gondoltad megcsinálni, nyilván nem járatnád 24 órában.
Akkor mégiscsak kell egy PC.Egy kis teljesítményű atomos gép esetén passzív hűtéssel és flash diszkkel 5-10W-al gondolom meg lehet úszni.
-
Szirty
őstag
Persze, csak hát akkor megint pont ugyanott vagy, ahol eddig.
Te a tablettával etherneten keresztül akarod elérni a PLC, amin azonban NINCS ethernet! Nemde?A kis teljesítményű PC szolgálná azt a célt, hogy a PLC-vel kommunikáljon és a PLC-t etherneten keresztül elérhetővé tegye!
Ráadásul a PC-s megoldással a tablettádra nem kell runtime szoiftvert telepíteni és Win7/Win8 alatt virtuális géppel szarakodni ha éppen nem is fut az RT Win7/8-on.
Továbbá bármilyen más gépről is elérheted, csak VNC/TW kell. Sőt az se, csak egy böngésző. -
Szirty
őstag
Helló Onishi!
Csinálhatod azt is, hogy közbe iktatsz egy PC-t. Odateszed a PLC mellé. Azt összekötöd a PLC-vel. telepítesz rá WinCC Flixible RT-t, megalkotod a kívánt felületet, ami szem-szájnak ingere. Teszel rá VNC szervert, vagy használod a WinCC beépitett SmartAccess szerverét (ami VNC kompatibilis) vagy teszel rá teamviewert.
Innentől kezdve a tablettel bármit meg tudsz csinálni.Lehet kapni ilyen kis tenyérnyi panel PC-ket Egy Atom processzoros kis PC már elviszi. 1GB RAM-mal, minimál video kártyával, stb. Vagy szerzel egy kiszuperált celeronos notebookot.
Mondjuk nem mint ha a WinCC RT pár szézezres ára nem lenne sok....
-
Szirty
őstag
Hi!
Szinte teljesen esélytelen!
A netcomware nyilván saját protokolt használ a két eszköz között, ami feltehetőleg semmilyen szabványnak nem felel meg. Mivel semmilyen motiváció nem kényszeríti őket ilyesmire.
Az ilyen 3rdparty megoldásokat kerülni kell ha etherneten akarsz kommunikálni.
Kivéve persze ha netcomware nyílt és ingyenes protocolt használ, amit igen erősen kétlek.Natív megoldást kell használni ha ilyen igényed van!
-
Szirty
őstag
válasz
moseras
#4618
üzenetére
Üdv moseras!
Azt még nem próbáltam ki.
De érdekes kérdés, mert ha igazán korrekten akarnak működni akkor így.
De mivel az IEC blokk ciklusonként (amikor meghívják) kap vezérlést, gyanítom hogy nem.Ez utóbbi esetben az IEC timer időzítésében lesz egy 0-ciklus idő intervallumú pontatlanság.
Ez a legtöbbször nem számít, de amikor igen, akkor nagyon :-) -
Szirty
őstag
Üdv!
Aki Siemens S7-300/400-akkal foglalkozik és volt már hogy azt gondolta az időzítők nem úgy működtek ahogy kellene, annak talán hasznos lehet:
-
Szirty
őstag
Üdv coco2!
Kicsit olyan mint ha azt kérdezted volna hány órakor indul a vonat.
Ha erre azt írják, hogy 16:06-kor, mit kezdesz az információval?Szóval szerintem egy ilyen művelethez köthető változó paraméterek száma néhányszor tíztől néhány százig, esetleg 1-2 ezerig terjed, azt mondanám, hogy ha az illető file bináris és kizárólag a vezérlés számára hasznos információt tartalmazza, akkor egy ilyen adathalmaz mérete kb 0.5-10 kbyte-ra tehető.
-
Szirty
őstag
válasz
DasBoot
#4604
üzenetére
Helló DasBoot!
"Abban kérném segítségeteket, hogy az RSLogix 500-ban miként lehet kikapcsolni a .BAK fájlok automatikus mentését."
Hányszor fogod ezt még megkérdezni az összes PLC fórumon? Már vagy hatszor botlottam bele.
Az a válasz amit már kaptál nem felel meg, vagy write only módban tolod? :-)Június 14.én írták neked, idézem:
"Madman
jún. 14.Szia,
Tools->Options-> bal felső srokból az AUTO SAVE pipát kiveszed.
De sokszor jó ha van. rajtam már segített, hogy elszállt a rendszer és nem kellett újra írnom mindent. sajnos nem vagyok egy megrögzött mentegető.Üdv,
KPéter" -
Szirty
őstag
válasz
n0rbert0
#4611
üzenetére
Az bizony kellemetlen!
Én is jártam már úgy, hogy a rajzban olyan címet "blöfföltem" kimenetnek, amit aztán nem engedett beállítani.
Nekem azért volt érvágás, mert nálam a rajz oldalszámához van kötve az I/O byte címe. Más cím miatt a kimenet más oldalra került. Az eszközök (amiket a kimenetek kapcsolnak) meg az oldalszám alapján kapják a tervjelet, ami szintén megváltozott amiatt hogy a kimenet másik oldalra került.Szóval lavinát kellett lapátolni :-/
Azóta először mindig a HW konfigot rakom össze... -
Szirty
őstag
válasz
Dezsi82
#4609
üzenetére
"Lehetséges, hogy az S7-400 ilyen? A netes leírásokból úgy tűnik"
Úgy fest.
Ha ugyanezt az ET200S DP node-ot feldobálod egy S7-300-ra, akkor byte-onként is engedi címezni.Bár a tartalék képzés nem túl erős érv, a 300-ason nem kell tartalék? vagy csak nagyobb az address space ezért bátrabban lehet pocsékolni :-)
Vagy az ok hasonló ahhoz, hogy PC magas szintű nyelvek ma már 64 biten tárolják a boolean adatot. Ez csak hatvannégyszer több a kelleténél, de könnyebb címezni. :-)
(Mottó: A mértéktelen jólét mértéktelen pazarlással jár)
-
Szirty
őstag
Üdv joci9!
"Minden file szövegfile! :-)"
Hogyne! Csupán definíció kérdése. Ahogy sok minden más is. Pl. hogy minden ehető.
Ennek szellemében azt javaslom olvass fel hangosan egy 720P-s video file-t, utána egyél meg az egészségemre egy dízelmozdonyt!
:-)A szövegfile hagyományos értelemben vett (általam elfogadott) definíciója szerint azonban nem minden szövegfile, de a CSV történetesen az.
-
Szirty
őstag
válasz
Dezsi82
#4597
üzenetére
Üdv Dezsi82!
"- hova kellene kötni a lámpát? Ha jól sejtem az R2 be nem rajzolt kontaktjára"
Igen, jól sejted. Illetve be lehet kötni az S1 nyomógomb 13-as és R1 relé 11-es pontját összekötő vezetékre is, így hogy a lámpa egyi kivezetése ide, a másik a 0V-ra kapcsolódik.
Így a lámpát az R2 relé 11-12-es kontaktusa fogja kapcsolni."Ha elengedem a gombot, és nem ejt ki az R2 akkor a két relé egymással sorba van kötve. Ilyenkor meg kellene húznia R1-nek, és tartásban maradnia?"
Így van, pontosan ez történik! :-)
"Aztán amikor meghúz R1, akkor az R2 két pontja kerül ugyanarra a potenciálra, és kiesik?"
Igen kiesik, de nem azért mert ugyanarra a potenciálra kerül, hanem mert nem kap feszültséget.
Az egész kapcsolás amiatt a trükk miatt tud ilyen egyszerű lenni, hogy kihasználja azt a tényt, hogy a relék fél feszültséggel is bekapcsolnak, és úgy maradnak.
Ez egyúttal a működés feltétele is, tehát olyan relé kell aminek a behúzó feszültsége alacsonyabb a névleges fesz. felénél és a két relének egyformának kell lennie.A kapcsolásnak négy állopota van:

-
-
Szirty
őstag
Hi skul0!
"Ennek a scheduler funkciónak viszont még utána nézek, nem hallottam róla."
A KTP600 nem tud olyat. Felejtsd el!
"A PLC-ből való váltást próbáltam én is: a képernyőn lévő, képernyőváltó gombok indítottak volna újra egy számlálót, aminek letelésével váltott volna az adott képernyőre a HMI az általad említett módon, de a HMI tag-ek csak set-eltek, resetelni nem voltak hajlandóak úgy"
Kezdjük elölről!
1. A panel (a KTP600 is) alapól tud képernyőt kímélni! Képernyő kímélőt akartál, ott van benne. Nem jó?
2. A képernyőváltást integer tag event-jéhez rendelt "Activatescreen" funkcióval oldod meg? Nincs set reset, nem setelődik resetelődik semmi, nincs gomb se. A PLC-ben ítrod a TAG értékét és jön a screen saver.
De PLC JOB-okkal is válthatsz képernyőt, vagy TAG exceed limit eseményre is.
Továbbá van olyan funkció is, hogy "ActivateScreenByNumber" aminek egy változót is megadhatsz. Ezzel arra a számú képre vált, amelyiket a változó tartalmával kijelölöd (minden alkalommal lehet másik képernyő a kímélő :-)Azt, hogy mikor kell bekapcsolnod a képernyő kímélő képet (azaz mennyi ideje nem nyomtak gombot) kissé nehezebb ügy, de a képernyőváltásokat (amit a panel gombjaival a menüben navigálva pl. elkövetnek) figyelheted a "Screen bumber" nevű areapointer használatával. A panel ebbe írja bele mindig melyik képernyőt mutatja éppen, és figyelheted PLC-ből.
-
Szirty
őstag
válasz
dave0825
#4588
üzenetére
Helló dave0825!
"ezeket a jeleket föl sem ismerem "
Most komolyan nem értelek!
Ugyanazokat a rajzjeleket használtam, amik a te rajzodban is vannak!
Kettő darab relé van a rajzon, egy darab közönséges egy záró érintkezős nyomógomb, még a tervjele is ugyanaz mint a te rajzodban (S1) és teljesen ugyanúgy néz ki attól eltekintve, hogy 90 fokkal el van fordítva!
A relé érintkezői váltó (morze) érintkezők. Ez eltérés, de ugyanúgy nyitó és záró érintkezők, mint a te rajzodban. A relé tekercse pont ugyan úgy egy téglalap, mint a te rajzodban!
Még érintkező tükör is van (a tekercsek alatt) mint a te rajzodban!!Melyik rajzjelet nem ismered fel?
Az zavar, hogy a rajzban a kivezetés számok (piros számok) is fel vannak tüntetve? Nem értelek!"jó lesz az, amit mutattam,"
Azt írtad a "legegyszerűbbet" Ez a rajz kb. fele olyan bonyolult mint amit te mutattál. Akkor mégsem az egyszerű kell?
"én egy egyszerű nyomógombra gondoltam, ami csak akkor zár, ha nyomod"
Én pedig nem vagyok gondolat olvasó és nem tudhatom hogy te mire gondolsz. Csak azt látom amit le is írsz. Leírsz valamit ami számodra teljesen egyértelmű, hogy miről van szó, másnak meg a leírtakra teljesen más a legalább annyira (vagy még inkább) egyértelmű. Mivel feltehetőleg teljesen más környezetben van és teljesen más problémákkal foglalkozik.
Egy nyomógombnak több érintkezője is lehet és mint mondtam van olyan "arretáló" mechanikájú is, amit egyszer megnyomsz zár, újra megnyomod nyit és így tovább (mint a golyóstoll, ki-be kapcsolható). Azzal még egyszerűbb lenne ez a kapcsolás ám!
-
Szirty
őstag
Helló skul0!
"Hogyan tudnám azt megoldani, hogy valós idejű, mozgó visszajelző animációt hozzak létre az érintőn?"
használd az objektumok Animation tulajdonságainál található Diagonal, Horizontal, Vertical vagy Direct movement lehetőséget!.
A mozgás teljesen folyamatos akkor sem lesz. Ezekkel az objektum X, vagy Y, vagy X+Y, vagy X és Y pixelkoordinátáit módosíthatod.
De ha a szállítószalagon nincs encoder, vagy valamiféle útmérés, akkor ez neked nem nagyon lesz soha "valós idejű" helyzet megjelenítés. persze manipulálhatsz időzítésekkel, órajelekkel, de az egész inkább csak látványos hókusz-pókusz lesz.
Én is csináltam már ilyet, de rendszerint nincs értelme az ilyenbe túlságosan sok energiát fektetni."hogyan lehet ugyan ezen az érintőn egy képernyőkímélőt létrehozni."
A gyártó már létrehozta. csak ki kell lépni a panelen a runtime-ból és megnyomni a "Screen saver" ikont, majd beállítani a késleltetését.
Ha mindenképp te akarsz egy képernyőre váltani adott idő után, akkor azt a PLC-ből megteheted pl. úgy,hogy egy "Cyclic continuous" adatgyújtési módra állított PLC TAG "Change value" eventjéhez beraksz egy "Activatescreen" funkciót. ha a tag megváltozik, átvált oda.A panelből is megoldhatod ha olyan a panel amelyiknek van scheduler funkciója. Az ugyanis van amelyiknek van, van amelyiknek nincs, de ugye nem tartottad fontosnak megemlíteni milyen panel, csak azt hogy Siemens (amiből van vagy 80 féle).
-
Szirty
őstag
válasz
dave0825
#4577
üzenetére
Helló dave0825!
"Elfelejtetted" leírni, hogy MILYEN relével és milyen nyomógombbal kell megoldani? Mindegy?
Mert akkor annál egyszerűbb nincs, mint: Nyomógomb egy impulzus relé tekercsét kapcsolja a relé meg a LED-et és készen is van. Itt a relé intézi a ki/be kapcsolást, az impulzus relé ilyen. Ezrével használják őket villanykapcsolásra.
De nyomógomb is van ám olyan, amit egyszer megnyomsz zárja az érintkezőt, megint megnyomod nyitja (nyomókapcsoló). Ahhoz még relé sem kell, csak sorba kötöd a gombbal a LED-et és kész.
Mennyi ideig kelljen nyomni a gombot a be és kikapcsoláshoz?
Egy egyszerű időtaggal megoldható, hogy ha röviden nyomod ki, ha hosszan nyomod bekapcsoljon egy LED-et!Azt sem írtad le, hogy az "EGY" (ki tudja milyen) nyomógombon kívül mi lehet még a kapcsolásban. Mert ha pl. egy PIC is, akkor megint csak igen egyszerű, mert a gombot bekötöd a PIC bemenetére, a LED-meg a kimenetére és írsz rá egy programot ami megfelelően ki és bekapcsolja.
De ülhet egy ember is egy széken a gomb meg a LED között, aki figyeli mikor nyomod meg a gombot. Amikor megnyomod egyszer, bekapcsol egy relét az ember egy kapcsoló segítségével, ha megint megnyomod kikapcsolja. (esetleg szólsz neki).
Vagy építesz egy egyszerű astabil multivibrátort két tranyóval, ami villogtat egy LED-et 1Hz frekvenciavál. Fogsz egy gombot (ebben az esetben ez kabátgomb is lehet) és mindig megnyomod amikor a LED világítani kezd vagy amikor kialszik.
Folytassam? :-)
-
Szirty
őstag
Helló kibor3!
"Ez a FC105 hogy skáláz?"
Ezt egyszer itt már kitárgyaltuk! HELP-et olvastad? Ott elég jól leírja, és még példaprogram is van rá.
Fordítva működik mint ami Lamasd69-nek kellett.Van egy egész típusú bemenete (IN).
Itt 0..27648 vagy -27648..27648 értéktartományt vár.
Ezt az értéket fogja OUT (real) kimeneten LO_LIM...HI_LIM értékek által meghatározott tartományba skálázni.
Hogy 0..27648 vagy -27648..27648 tartoményt fogad IN-en az a BIPOLAR állapotától függ. FALSE állapotnál lesz 0..27648.Pl ha.:
LO_LIM= 0.0
HI_LIM= 100.0
BIPOLAR= FALSE
IN= 13824Akkor OUT 50.0 lesz.
-
Szirty
őstag
válasz
Lamasd69
#4571
üzenetére
Üdv Lamasd69!
"S7 300-as plc"
A többi kérdésre is van válaszod?
"PLC-n mivel, hogyan tudnám megoldani a skálázást?"
Még mindig nem tudom, hogy TIA portal, vagy Step7.
Az utóbbi esetben: Library / Standard library / TI-S7 converting blocks / FC105 SCALE CONVERT.A témába vág:
Analóg jelek kezelése S7-300/400 PLC-vel
Analóg jelek kezeléseTovábbi javaslatom hogy itt ezen az oldalon (amit ebben a pillanatban nézel) fent jobbra ahol azt látod hogy "gyorskeresés itt" beírod hogy SCALE.
Vagy ide kattints! -
Szirty
őstag
válasz
Lamasd69
#4569
üzenetére
Helló Lamasd69!
Az első amit le kellene írni hogy miről van szó pontosan különben hogy vársz pontos választ?
Lehet sejteni hogy ez valószínűleg Siemens S7 PLC, és talán TIA portál, de! milyen S7 PLC? 1200? vagy 300/400?
És milyen analóg kimenet, az hogyan van beállítva (bipoláris, unipoláris)?Ugyanis van amelyiknél 0...27648 az értéktartomány-. van amelyiknél -27648...+27648, sőt, 0...32767, vagy éppen -32768....+32767.
"ez jó megoldás vagy nem?"
A MOVE jó megoldás abban az esetben, ha a DB1.DBW6 pont abban a tartományban van, ami az analóg kimenetnek kell.
Pl. ha a kimeneted ahogy írtad 0...27648 tartományt igényel és a HMI-vel skáláztad a 0...100-at 0...27648-ra, akkor jó. Bár én szerencsésebbnek tartom PLC-ben skálázni, de így is jó. -
Szirty
őstag
válasz
Kopri 62
#4565
üzenetére
Helló Kopri 62!
Homályos igényekre akarsz valamilyen megoldást.
Annyit tudni, hogy Schneider M221-ből akarsz PC-n "néhány paramétert" megjeleníteni és tárolni.
Erre gyakorlatilag majdnem minden HMI és SCADA szoftver alkalmas amelyik ismeri a PPLC által használt kommunikációs protokolt.
Ajánlottak is ilyet, de arra azt írtad drága de az nem jó, mert neked megfizethető kell.
Sajnos szerintem az alábbi lehetőségeid vannak:
1. Megírod magad a kívánt programot annak minden követelményével és nyűgjével együtt
2. Keresel egy gyárit ami tudja ami kell és nem sokkal tud többet és kifizeted
3. Keresel egy gyárit és lenyúlod (illegális használat)
4. Keresel valakit aki ír neked ilyet ami tudja ami kell és szerinted megfizethetőVannak köztes és alternatív megoldások is.
Pl. hagyod a francba az egészet... :-)
Vagy valamilyen open source vagy nagyon olcsó megoldást keresel (hasonéót már linkeltek is). Pl. OPC szervert és megoldod EXCEL-ben (nem mint ha az excel éppenséggel olcsó lenne) esetleg VB-ben."Egyébként ha valaki ellátna egy ilyen szoftverrel megfizethető áron"
A pénznek nincs abszolút értéke ezért nem tudni neked mi a megfizethetőként jelölt kategória számszerűen..
-
Szirty
őstag
válasz
Dezsi82
#4559
üzenetére
Üdv Dezsi82!
Nem árultál el eleget a pontos körülményekről.
Csak annyit tudunk, hogy 3 CPU van egy profibus DP hálózaton, amelyek közül kettő kvázi véletlenszerűen cserélődik. A "vándorokba" nem kell feltétlen slave DP modul ha a saját hálózatán nincsenek DP slave-ek, mivel a DP-s CPU beállítható slave-ként is a beépített DP interfészén.Persze ha vannak saját DP-s I/O-k rajta akkor master kell hogy legyen.
Viszont egy profibusz hálózatban lehet több master is. Ám azt nem tudom hogy egy hálózatban lévő két master hogyan tud egymással kommunikálni, ilyesmit még nem kellett csinálni.Mindezt csak megjegyeztem mert eszembe jutott a témával kapcsolatban. Ha a DP-DP coupleres megoldás megfelelő, akkor ezzel a problémával már nem kell foglalkozni.
-
Szirty
őstag
válasz
Dezsi82
#4557
üzenetére
Hali!
DP-DP coupler is van a világon :-)
Beraksz egyet-egyet a két "vándor" CPU elé meghatározott fix DP címmel, és a vándor CPU-k címe mind lehet teljesen azonos.
Az azonosítás meg egyszerű, mert az adott "vándor" majd megmondja magáról ki ő. Nem lesz profibusz hiba, nem kell aktiválni, lekérdezgetni vagy címekkel sakkozni. -
Szirty
őstag
válasz
Dezsi82
#4538
üzenetére
Üdv Dezsi82!
"Ezzel az a gondom, hogy nem tudom, mivel lehetne lekérdezni, hogy egy, a configban szereplő, de deaktivált eszköz állapota mivel kérhető le."
Mit értesz pontosan configban szereplő deaktivált eszközön?
Ha azt, hogy benne van a konfigban de nincs jelen a buszon, illetve ha jelen van a buszon van-e busz hibája lekérdezhető az SFC51-el.DP station állapotának lekérdezése S7 PLC-ben
Az a megoldás hogy minden szerszámnak egyedi címe van azzal jár, hogy mindig lesz busz hiba a PLC-n, mivel egyszerre az összes előre konfigurált szerszám nem lesz jelen a buszon (mindig csak max 2).
Lehet minden szerszámnak ugyanaz a címe is, ha a PLC-n két DP busz van...
-
Szirty
őstag
válasz
Mazsika
#4549
üzenetére
Üdv!
Ezeket nézd át:
− MSZ EN 201: 2001 Gumi és műanyagipari gépek. Fröccsöntő gépek. Biztonsági követelmények.
− MSZ EN 292-1-2: 1993 Gépek biztonsága. Alapfogalmak, kialakítás általános elvei. I–II. rész.
− MSZ EN 292-2: 1991/A1: 1997 Gépek biztonsága. Alapfogalmak.
− MSZ EN 294: 1994 Gépek biztonsága. Biztonsági távolságok.
− MSZ 187: 1980 Faipari termelő berendezések általános biztonságtechnikai követelményei.
− MSZ EN 860: 1998 Famegmunkáló gépek biztonsága. Vastagoló gyalugépek.
− MSZ EN 940-1998 Famegmunkáló gépek biztonsága kombinált famegmunkáló gépek.
− MSZ EN 953: 1999 Gépek biztonsága. Védőburkolatok. A rögzített és a nyitható védőburkolatok kialakításának és beépítésének általános követelményei.
− MSZ EN 954-1. 1999. Gépek biztonsága. Vezérlőrendszerek biztonságával összefüggő szerkezeti részek.
− MSZ EN 999: 2000 Gépek biztonsága. A biztonsági berendezések elrendezése.
− MSZ EN 1726-1: 2001 Targoncák biztonsága. Gépi hajtású targoncák.
− MSZ EN 12047-2: 2001 Daruk biztonsága.
− MSZ EN 60204-1:1995 Gépi berendezések biztonsága Gépek villamos szerkezetei.
− MSZ EN 1570:2001 Emelőasztalok biztonsági követelményei.
− MSZ EN 474 1.-7: 1999 Földmunkagépek biztonsága.
− MSZ 16457-1:1985 Alakítógépek biztonságtechnikai követelményei.
− MSZ EN 61310-1:1999 Gépi berendezések biztonsága. Jelzés, megjelölés és működtetés.
− MSZ EN 563:1997 Gépek biztonsága. Megérinthető felületek hőmérséklete.
− MSZ ISO 4254-1: 1992 Mezőgazdasági és erdészeti traktorok és gépek műszaki biztonsági esz-közei. Általános előírások.
− MSZ EN 1088: 1997 Gépek biztonsága. Védőburkolatokkal összekapcsolt reteszelő berendezé-sek. -
Szirty
őstag
válasz
plutokas
#4543
üzenetére
Helló plutokas!
Az igaz, hogy a step/dir motorvezérlővel ellátott léptetőmotort impulzus sorozattal lehet forgatni és a motor által megtett szögtávolság egyenesen arányos lesz az impulzusok számával.
Standard digitális kimenettel azért nem vezérelhető megfelelően egy ilyen,mert a megfelelő sebességű (több kHz) léptetési sebesség nem érhető el vele.
Az impulzus kimenet (mint amilyen a PWM) megfelelően gyors, de nem vagy csak igen nehezen tudod vele megoldani a fel és lefutó rámpa szerinti mozgást és a pontos pozicionálást.Ezért találtak ki erre a célra külön vezérlőt, amivel egyszerűen lehet pozicionálási parancsokat adni a motornak. Az elvégzi ezeket a feladatokat.
-
Szirty
őstag
válasz
plutokas
#4540
üzenetére
Üdv plutokas!
"Azt hittem sima PWM jellel meg tudom hajtani."
Miért hittél ilyet?
A motorvezéslő áram szabályzása lehet PWM-es (többnyire az is).
De a step/dir vezérlés lényege az, hogy a STEP bemeneten minden felfutó élre a motor lép egyet DIR által meghatározott irányban.
A lépés a léptető jel élénél történik, teljesen közömbös hogy a léptető jelnek milyen a kitöltési tényezője (bizonyos, de szélsőséges határok között legalábbis),
Más szóval a léptető jel kitöltési arányának nincs jelentősége.A léptetőmotort funkció modullal (S7-300 esetén ez az FM353 asszem) vagy technology CPU step/dir kimeneteivel tudod kezelni.
Szoftveres oldalról ez úgy néz ki, hogy elküldöd X pozícióra az meg odamegy. megfelelő rámpával gyorsulva lassulva stb, amiket paraméterekkel lehet neki meghatározni. -
Szirty
őstag
válasz
Mazsika
#4533
üzenetére
Üdv!
Leraksz egy screenre egy Alarm view-et és beállítod így:

Aztán raksz egy gombot pl. a menübe ami megjeleníti ezt a screent. Azzal bármikor meg lehet nézni a rendszer üzeneteit. Ha így állítod be, akkor csak azok lesznek benne.
Ez igen hasznos főleg ha 5-6 PLC-vel is kapcsolatban van a HMI, láthatod melyikel nem sikerül kommunikálnia és melyikkel igen.
Fejlesztésnél is hasznos, mert ha valami baja van pl. TAG-ekkel, (pl. nem tud olvasni egy változót) vagy baja van egy scripttel (run time hiba), nem tud írni vagy olvasni file-t (pl. arhívokat, vagy receptet) akkor azt a panaszát is ide írja. -
Szirty
őstag
válasz
plutokas
#4531
üzenetére
Üdv plutokas!
Ezzel kapcsolatban a lehetőségeid korlátozottak.
Ha felugró ablakban szeretnéd látni, akkor a Template Screen Template Alarm Window objektumának General properties-ében a Display szekciónál az Alarm classes lehetőségek között be kell kapcsolnod a System elemet:
Ezzel nem csak a kapcsolat megszakadása, de minden system üzenet is bekerül a felugró ablakba.
A kapcsolat megszakadásakor ez:
De az üzenet csak egy ideig lesz jelen, mert az üzenet idejét az Alam management / Alarm settings / System alarms / Display duration-nél beállított idő határozza meg.
Ezen kívül van lehetőséged olyan üzenetmegjelenítő ablak létrehozására, amiben csak a rendszer üzenetek szerepelnek (a megszakadás is). Nem ugrik ugyan fel magától, de bármikor megjelenítheted.
Ott már beállíthatod "Alarm events"-re, ami egy log (a korábbi üzenetek listája) és nem csak x másodpercig van benne, hanem a bekövetkezése beleíródik és addig ott van amíg a többi üzenet ki nem szorítja onnan. -
Szirty
őstag
válasz
Mazsika
#4527
üzenetére
Üdv Mazsika!
Nincs leírás. Próbáld ki!
Azt fontos tudni, hogy nem mindegyik panel tud scriptelni, ahogy CSV-be menteni sem. (Pl. KTP BASIC paneleket).
De PC RT tud.
A lényeg, hogy a scriptek a gyári funkciók közé kerülnek be és ugyanúgy eseményekkel lehet őket futtatni mint azokat.
A script funkcionalitása korlátozva van, nem lehet akármit csinálni benne (pl. win ablakot nyitni), de komplett help van erről. -
Szirty
őstag
válasz
Mazsika
#4525
üzenetére
Üdv Mazsika!
"VB skript??? Itt már elvesztettem a fonalat... "
Miért? Nem találkoztál velük?
Itt egy példa file írására:'Aprító üzemidő kiírása TXT file-ba:
Dim CSV, CSVFile
'A mentést kezdeményező érték visszaírása nullába a mentés végén
SmartTags("WinCC_Adatcsere.CSVWRT")=0
Set CSV = CreateObject("Scripting.FileSystemObject")
'csv file megnyitása.
'Ha nem létezik létrehozza és első sorba beírja a fejléc szövegeit. Ha létezik, hozzáfűzi a végéhez az adatokat.
If (CSV.FileExists(Filename)) Then
Set CSVFile = CSV.OpenTextFile(Filename, 8, True)
Else
Set CSVFile = CSV.OpenTextFile(Filename, 8, True)
CSVFile.WriteLine(Chr(34)+"Dátum (év.hó.nap. ó:p:mp)"+Chr(34)+";"+Chr(34)+"Üzemidő kifele (ó:p)"+Chr(34)+";"+Chr(34)+"Üzemidő befele (ó:p)"+Chr(34)+";"+Chr(34)+"2. r. töltések száma"+Chr(34)+";"+Chr(34)+"2/2 sz. előre irányba állás számláló"+Chr(34)+";")
End If
'Adatok kiírása a file-ba:
CSVFile.Write(Now&";"&FormatDateTime(SmartTags("WinCC_Adatcsere.HKE"),4)&";"&FormatDateTime(SmartTags("WinCC_Adatcsere.HBE"),4)&";"&SmartTags("WinCC_Adatcsere.T18")&";")
CSVFile.Write(SmartTags("WinCC_Adatcsere.T20")&";")
CSVFile.WriteLine()
CSVFile.CloseEz amikor a "WinCC_Adatcsere.CSVWRT" változó (INT) értéke nullától eltérő lesz (ezt a PLC kapcsolja be naponta egyszer) kiírja egy file-ba egy sorba 4 változó értékét.
-
-
Szirty
őstag
válasz
Mazsika
#4513
üzenetére
Üdv!
30 nem olyan sok, de nagyban függ a dolog a kódtól. Egyetlen egy blokk is el tudja használni az összes work memory-t!
Miben íródtak a blokkok pl az sem mindegy. Ha magas szintű nyelven (SCL GRAPH, HiGRaph) akkor a memóriahasználat drasztikusan nő.
Nálunk van olyan PLC, amiben 150 FB blokk van (LAD) és 171 DB blokk. Ez 330956 byte work memóriát igényel.
Meg olyan is, amiben 73 FB blokk van (SCL) 1188 DB és 1800078 byte work memóriát használ.
A CPU 315-ben (6ES7 315-2EH13-0AB0) 262144 byte work memória van.
Vegyetek 319-2 PN/DP-t. Abban ötször ennyi van: (1433600 byte) :-) -
Szirty
őstag
Üdv KLR!
Olyan változóból van a legtöbb, ami nincs fizikai ki vagy bemenethez rendelve.
Pl. a DM memória terület, vagy a CIO területen olyan címek, amikhez nem tartozik ki vagy bemenet. Vagy HR adatterület.
De ezek nem lokális, hanem globális változók. A CIO terület elveszti tartalmát kikapcsoláskor, a HR és DM terület nem veszti el. De a DM nem címezhető közvetlenül bitenként, csak word-önként, míg a HR terület igen. -
Szirty
őstag
válasz
Mazsika
#4505
üzenetére
Helló Mazsika!
Csökkenteni kell a program work memory igényét!
Hogy pontosan a te programod esetében ez mivel járna arról fogalmam sincs, mert nem láttam a programot. De van néhány hatékony módszer:- Csökkenteni kell a lokális változók számát (TEMP).
- Csökkenteni kell a blokk hívások egymásba ágyazásának mélységét -
Szirty
őstag
Szia Onishi!
"Mitől függ az, hogy egy adott screen megjelenésekor éppen melyik objektum van kijelölve?"
Az objektum számától, ami alapesetben az elhelyezés sorrendjének felel meg.
"Ezt hogyan lehet megváltoztatni, hogy melyik legyen az?"
Úgy, hogy amikor lerakod a funkciót ami az adott screenre vált, akkor megmondod neki azt is melyik objektum legyen aktív miután a screen megjelent.
Ezt a funkció Object number paraméterével teheted meg, ami alapesetben mindig nulla:
Ha pedig fogalmad sincs hogy az az objektum amelyiket aktívvá akaod tenni a screen megjelenítésekor milyen számal hivatkozható, akkor nyisd meg azt a screent és válaszd ki a View -> Tab Order menüt.
Megmutatja neked így:
Ilyenkor ezt a sorrendet egyébként meg is változtathatod ha a neked megfelelő sorrendben rámutatsz az objektumokra.
Bővebb infót itt találsz: Tab order megváltoztatása -
Szirty
őstag
válasz
moseras
#4494
üzenetére
Üdv!
Nem állítanám, hogy perfect LOGO-s vagyok, de ha csinálok egy ilyet:

Akkor a kijelzőn megjelenik a "Masik" szöveg ha az M1=0 és az "Egyik" szöveg ha az M1=1, ami kísértetiesen hasonlít ahhoz, amit te szeretnél megvalósítani.
(Olyan lehetőség amit te emlegetsz nálam nincs is (ez egy Logosoft 7))"Érdekes, hogy a te "Message texts" képeden nem látok prioritást."
Pedig ott van az!

-
Szirty
őstag
válasz
moseras
#4492
üzenetére
Helló!
Sajnos én nem tudom mit jelent az hogy "lerakni egy ON/OFF-ot".
"Még valami, amit lehet, hogy nem mondtam: nekem egy képernyőn kellene 1 bit állapotától függően kiírni hogy fűtés vagy hűtés."
Persze. A LOGO-n összesen egy képernyő van

Szóval a special functions közül a "Message texts" neked nem jó?
Attól tartok nem tudok segíteni.
-
Szirty
őstag
válasz
plutokas
#4484
üzenetére
Helló!
Ha nem használsz semmilyen impulzus kimenetet csak standard digitális tranzisztoros kimenetet és a kimenet elbírja a motor áramát (ami alapból nem valószínű,mert az ilyen kimenet 0.5A-es általában) akkor igen, de csak nagyon lassan.
5-10 fordulat percenként egy 1.8 fok/lépéses motorral.Nem szerencsés megoldás azért sem, mert a léptetőmotorok tekercs áramát PWM-es ármszabályozással illik meghajtani.
-
Szirty
őstag
Helló!
Pontosan mit szeretnél elérni?
A kérdés nem úgy értendő, hogy hova ne tudjon kattintani, hanem úgy, hogy mi az a cél, amit ezzel a korlátozással kívánsz megvalósítani?
Nem szeretnéd, hogy illetéktelenek lássák, hogy XY rokordban mi van beállítva? Vagy azt hogy nehogy átállítsák?
(Qrvára nem mindegy melyik) -
Szirty
őstag
válasz
moseras
#4475
üzenetére
Szevasz!
Funkcionálisan nincs sok különbség. Igazából szerintem koncepció kérdése.
Én a beállításokat, statisztikai adatokat, méréseket, részeredményeket, DB-be szoktam tenni.
A berendezés belső állapotait (Pl. RS tárolók) és bináris változóit pedig merkerekben.A DB-k tartalmát könnyebb elmenteni, továbbá szerkezetük rugalmasan módosítható. A merker memóriaterület mérete fix (és rendszerint kisebb), csak a létrehozott változótípusok meghatározására van lehetőség.
-
Szirty
őstag
válasz
plutokas
#4473
üzenetére
Üdv plutokas!
A válasz: Igen!
A következő írásokat ajánlom figyelmedbe a kérdéseddel kapcsolatban:
- A hibakezelő OB-k
- Hibakezelés: az OB86 (Rack Failure)
- DP station állapotának lekérdezése S7 PLC-ben -
-
Szirty
őstag
-
Szirty
őstag
válasz
Shirchy
#4463
üzenetére
Helló Shirchy!
Ebbe én is belefutottam már. Erre oda kell figyelni! :-) AMikor új projectet hozol létre az legeslegelső dolog legyen a nyelv beállítása. Akkor is ha csak egy nyelvet akarsz és az nem az angol amire eredetileg beáll.
Minden egyes szöveg ugyanis amit a nyelv beállítása előtt beleírsz a projectbe el fog veszni ha később törlöd az angolt (amibe írtál)."Na ez után jött az,hogy nem javította át a feliratokat. A megoldás tényleg az lett,hogy az angol nyelvi beállítást teljesen töröltem,így már minden klappol."
Miért javította volna? Az angol az nem magyar. Akkor lenne csak nagy a kavalkád, ha öncélúan elkezdené összekeverni a nyelveket amikor úgy adódik. Neked kell tudnod mit csinálsz, a program nem tudja mit szeretnél ha nem közlöd vele valahogyan! Egyébként nyelv törlésénél figyelmeztet, hogy a nyelvhez tartozó összes szöveged el fog veszni és megkérdezi komolyan gondoltad-e.
Egyébként van mód a nyelv átemelésére is, de neked kell csinálni nem automatikusan történik. De legalább nem kell mindent újra begépelni.
1. Mielőtt bármit is törölnél létrehozod a magyar nyelve: Megnyitod a project fában a Language settings / Project Languages-t és pipát raksz a kívánt nyelv elé (pl. Magyar)
2. Megnyitod a project fában a Project Texts-t. Kapsz egy listát, amiben benne van az összes nyelven a nprojectbe eddig beírt összes szöveg! Látod hogy melyik nyelvhez milyen szöveg tartozik. Ha a magyart most hoztad létre, akkor az az oszlop üres (nincs magyar szöveg). Az angol oszlopban meg látod a magyar szövegeket amiket véletlenül írtál be oda

3. Kijelölöd az angol oszlopban az összes szöveget (csak abban az olszlopban és ott mindet)
4. Ctrl-C, Kijelölöd az angol oszlopban az összes sort, majd Ctrl-V. Ezzel átmásolod a szövegeket az angol nyelvből a magyarba. Ezután Language settings / Project Languages-nél ki lehet venni a pipát az angol elől.
Így a szövegek nem vesznek el, de az ékezeteket neked kell egyenként utólag beírkálnod (a Project Texts-ben ezt kényelmesen megteheted, akkor nem marad ki egy sem)
-
Szirty
őstag
válasz
Shirchy
#4460
üzenetére
Hi!
"Átnéztem az objektum neveket és nincs két egyforma,szóval azzal már nem lehet probléma."
Nem kellett volna átnézni, mert nem lehet kettő egyforma! Ez alatt azt kell érteni, hogy egy screenen nem lehetséges. Tehát létre sem tudsz hozni több egyformát! Ennélfogva nem is találhatsz egyformákat.
De szerintem továbbra sem objektum nevekről van itt szó, mivel mint azt már kifejtettem a nevek NEM jelennek meg a runtime-ban! Egy text objektum kijelzett szövege NEM az objektum neve. Ezért az lehet azonos nem csak kettő, de több is!.
-
-
Szirty
őstag
válasz
moseras
#4437
üzenetére
Üdv moseras!
"hogy szimulálni tudjak, de egyébként S7-1200 CPU lesz, csak sajnos az S7-1200-at nem lehet szimulálni)."
Szerintem lehet. TIA portal 12-vel...
"Elolvastam a [multiple instance] írásod, ott is így van, ha jól értettem."
Az egész multiple instances lényege az, hogy ha egy level1 FB-ből másik FB-t hívsz (level2) akkor level1 FB instance DB-jében a level2 idbje struktúraként beilleszthető.
Mindez többszörös mélységig megtehető. -
Szirty
őstag
-
Szirty
őstag
válasz
Shirchy
#4440
üzenetére
Helló Shirchy!
A WinCC Flexible-ben minden objektumnak neve van.
Ezt a nevet automatikusan kapja (BUTTON_1, BUTTON_2, Text_Field_34, stb).
Ezt természetesen utólag átírhatod ha akarod, de két azonos nevű objektum egy képen nem lehet.
Továbbá az objektumok neve (NAME) semmilyen formában nem jelenik meg a runtime képernyőjén!Ennek fényében kérdezném, hogy mit kell érteni nevek alatt a problémád esetében? Mert ebből azt gondolom, hogy nem az objektumok nevét!
-
Szirty
őstag
válasz
KB.Pifu
#4432
üzenetére
Helló KB.Pifu!
Annyi FC105 lehetséges amennyi library van. Hogy melyik mit csinál az teljesen fakultatív.
A blokk neve egyébként AE_464_2. Az S5_Cnvrt a family, amihez tartozik, ez alá sok blokk tartozik.
Szerintem ez a blokk akkor használatos, amikor S7 PLC-n S5 PLC-ről konvertált programot akarunk futtatni (migráció), mert az S5 másképpen kezeli az analóg bemeneteket (sok egyéb különbség mellett). -
Szirty
őstag
Üdv rsf!
A DBk számát csökkentheted ha az IEC timereket egy FB-ből hívod és használod a multiple instance lehetőséget.
Akkor csak egyetlen DB-kell akárhány IEC timert használsz.
-
Szirty
őstag
válasz
zoli147
#4427
üzenetére
Üdv zoli147!
Így blöffre (tehát anélkül hogy pontos adatnak utána néztem volna) azt mondanám, hogy igen.
Nem tudom mennyi egy Logo ciklus ideje (átlagos felhasználásnál), de ciklus időnyi és kimenet (főleg ha relés) késleltetésnyi pontatlansággal valószínűleg számolni kell. Ez a pontatlanság nagyságrendileg (szintén blöffre) szerintem max. 10-20ms.
Ha ilyen pontatlanság (tehát ez esetben a fél másodpercet 10-20ms szórással hozza) még megfelel, akkor érdemes utánanézni a pontosabb adatoknak.
Nagyon kicentizni azért nem érdemes... -
Szirty
őstag
válasz
Shirchy
#4422
üzenetére
Üdv!
Jó. Akkor itt az FC105 forráskódja:
FUNCTION FC 105 : WORD
TITLE =SCALING VALUES
//
AUTHOR : SEA
FAMILY : CONVERT
NAME : SCALE
VERSION : 2.1
VAR_INPUT
IN : INT ; // input value to be scaled
HI_LIM : REAL ; // upper limit in engineering units
LO_LIM : REAL ; // lower limit in engineering units
BIPOLAR : BOOL ; // 1=bipolar; 0=unipolar
END_VAR
VAR_OUTPUT
OUT : REAL ; // result of the scale conversion
END_VAR
VAR_TEMP
IN_REAL : REAL ; // input value as a REAL number
K1 : REAL ; // low limit for input value
K2 : REAL ; // high limit for input value
SPAN : REAL ; // HI_LIM - LO_LIM
TEMP1 : REAL ; // temporary result
END_VAR
BEGIN
NETWORK
TITLE =
//
// set K1 and K2 constants based upon BIPOLAR
//
SET ; // if(BIPOLAR=0)
A #BIPOLAR; // .
JC EL01; // {
L 0.000000e+000; // K1=0
T #K1; // .
JU EI01; // } else {
EL01: L -2.764800e+004; // K1=-27648.0
T #K1; // .
EI01: NOP 0; // }
L 2.764800e+004; // K2=+27648.0
T #K2; // .
//
// convert input (IN) to real
//
L #IN; // ACC1=IN
ITD ; // convert to double integer
DTR ; // convert to real
T #IN_REAL; // IN_REAL-IN as a real
//
// determine SPAN = HI_LIM - LO_LIM
//
L #HI_LIM; // SPAN=HI_LIM-LO_LIM
L #LO_LIM; // .
-R ; // .
T #SPAN; // .
//
// If the input value is outside the K1 and K2 range, the output
// is clamped to the nearer of either the LO_LIM or the HI_LIM
// and an error is logged. If the input value is exactly at a limit the
// output will be set to the computed limit with no error returned.
// changed 2/14/00 by ERI per RQ210693
L #IN_REAL; // if(IN_REAL<K1)
L #K1; // .
>=R ; // .
JC EL02; // {
L 8; // error
T #RET_VAL; // .
L #LO_LIM; // ACC1=LO_LIM
T #OUT; // OUT=ACC1
JU FAIL; // error
EL02: POP ; // } else {
L #K2; // if(IN_REAL>K2)
<=R ; // .
JC EI04; // {
L 8; // error
T #RET_VAL; // .
L #HI_LIM; // ACC1=HI_LIM
T #OUT; // OUT=ACC1
JU FAIL; // error
EI04: NOP 0; // }
NOP 0; // }
//
// scale the input
//
L #K2; // TEMP1=K2-K1
L #K1; // .
-R ; // .
T #TEMP1; // .
L #IN_REAL; // IN_REAL-K1
L #K1; // .
-R ; // .
L #TEMP1; // divide by TEMP1
/R ; // .
L #SPAN; // multiply by SPAN
*R ; // .
L #LO_LIM; // add LO_LIM
+R ; // .
T #OUT; // OUT=scale(IN_REAL)
//
// set BR bit : no error-set BR bit to 1; with error-set BR bit to 0.
//
L 0; // return error code 0
T #RET_VAL; //
SET ; // RLO = 1 (NO ERROR)
JU SVBR; //
FAIL: CLR ; // RLO = 0 (ERROR)
SVBR: SAVE ; // BR = RLO
END_FUNCTION -
Szirty
őstag
válasz
Shirchy
#4417
üzenetére
Helló Shirchy!
Az STL forrást Copy-Paste módszerrel be tudod illeszteni.
Azért esik szét, mert proporcionális karakterkészlettel illeszted be. Hogy ne essen szét, válaszz monospaced készletet! Pl. Courier new.A létradiagramot, mivel grafikusan van ábrázolva nyilván képként tudod beilleszteni.
A képet elkészítheted prtscr-el is, de én inkább egy képkivágó programot vagy olyan rajzoló programot ajánlanék ami támogatja a screenshotok készítését.Megoldás lehet még a nyomtatás képbe funkció is. Ha van MS office telepítve akkor nyomtathatsz "Mocrosoft image dokument writer" eszközre ami egy MDI file-t hoz létre amit szabadon beilleszthetsz bármilyen wörd dokumentumba.
Vagy telepíted a PDF Creatort, ami egy PDF nyomtatót hoz létre, stb...
Az FC105-öt miért akarod kinyomtatni?
-
Szirty
őstag
Hali!
Én úgy szoktam megkerülni a hibát (workaround) hogy átmenetileg megadok egy általa helyesnek vélt típust és kimentem, majd bezárom a szerkesztőt.
Újra megnyitva megint átírom a hibás típusú változót jóra (mert ekkor derül ki, mint a videón is hogy még mindig hibás, nem íródott át). Megint elmentem és bezárom, harmadszor megnyitva már jó a típus és visszaírom a változót az utasításnál. -
Szirty
őstag
Hát van ilyen bug is...
Nyilván erre gondolsz... -
Szirty
őstag
válasz
Shirchy
#4407
üzenetére
Üdv Shirchy!
"A DB változóit utólag már nem lehet módosítani csak az első megíráskor?"
A shared DB tartalmát úgy módosítod ahogy csak akarod. Bármikor akármennyi változót tehetsz bele akárhova vagy törölhetsz vagy írhatod át a nevét vagy típusát. Erre semmiféle korlátozás nincsen leszámítva hogy túlságosan nagy nem lehet.
Csakhogy az ezzel járó összes következménnyel számolnod kell ám!
Az egyik amit Mazsika írt, hogy ezzel a DB aktuális tartalma a PLC-ben elvész amikor áttöltöd (felülíródik).
A másik, hogy ha törölsz egy változót a DB-ből vagy annak nevét átírod, és arra a változóra a programod már hivatkozik valahol szimbolikus címzéssel, akkor ez a hivatkozás abban a pillanatban hibás lesz, ami nem meglepő, lévén a változó azon a néven megszűnik létezni!
A harmadik hogy ha változót illesztesz a DB-be (nem a végére) vagy törölsz vagy úgy írod át az adattípusát, hogy az új típus hossza nem azonos a régiével (pl. REAL-t INT-re módosítod) akkor az összes változó címe eltolódik ami az átírt után van. Ezért a programban minden abszolút hivatkozás ami az átírt változó utáni többi változóra vonatkozik (amelyikhez hozzá sem nyúltál) hibás lesz!
-
Szirty
őstag
válasz
Shirchy
#4400
üzenetére
Helló Shirchy!
Ott követted el a hibát, hogy "összeakasztottál" két változót.
Az FC105 RET_VAL kimenetét az MW100-ba küldöd, a skálázás eredményét pedig MD100-ba!Ez azért nem jó, mert az MD100 és az MW100 két byte-ja azonos, így a két változó 2 byte átfedésben van egymással ezért részben felülírják egymást. Hogy hogyan azt az alábbi ábra személteti más címekkel:

Ez talán figyelmetlenség, de ha nem, akkor ajánlom figyelmedbe ezt:
Siemens S7 300-400 adatterületek és címzésmódokMeg kell szüntetned ezt a konfliktust.
Vagy a RET_VAL legyen MW100 helyett MW98, vagy az OUT legyen MD100 helyett MD102 (feltéve persze hogy ezzel nem kerülnek máshol használt változóval hasonlóképpen átfedésbe). -
Szirty
őstag
Helló rsf!
"Temp változókat nem nagyon szoktam használni és most teljesen elvitte a gondolataimat, hogy az STL-ben van elrontva vmi. Ugyanis STL-ben totál kezdő vagyok ez az első "művem"."
Nem gond amíg baj nem lesz belőle, ezért érdemes kipróbálni amit lehet.
Legalább megjegyzed. Mit gonolsz én hogy tanultam meg ennyire a TEMP tulajdonságait, hogy ezt mindenkinek az orra alá tolom? :-) -
Szirty
őstag
Üdv!
"> FB1 NW11-en a #PLC_Msg_Count_Tmp -be mindig belekerül a 35 (Ha elötte az
> olvasás át van ugorva akkor is)
> FB1 NW13-on a #PLC_Msg_RCount_Tmp -be mindig belekerül a 416(Ha elötte az
> olvasás át van ugorva akkor is)"Az ökölszabályt be kell tartani! Mindig! Nincs kivétel!
1. Avagy a TEMP változók tartalmát nem szabad felhasználni az értékadás előtt a blokk lefutása során!
2. A TEMP változók tartalma minden alkalommal elveszettnek tekintendő, amikor a blokk lefutott!Ok.: Minden blokk ugyanazt a memóriaterületet használja a TEMP változók tárolására (Stack).
Volt már róla szó.Ha egy TEMP változót olvasol értékadás előtt, akkor az azelőtt lefutott blokk memória szemetét találod benne! Ha nem fut másik blokk vagy az nem használja azt az L címet, akkor ugyanaz van benne amit a blokk beleírt, de ez igen csalóka és rettentő nagy szívás oka lehet!
Hiába adtál te valamikor értéket az FB1-ben #PLC_Msg_Count_Tmp-nek, ahogy a blokk lefutott, huss, az értéknek annyi lesz, elvész. Amikor az FB2 megint fut, már szemét van benne!
Az #PLC_Msg_Count_Tmp az FB1-ben történetesen a 4-es lokális címen van:
Az FB2-ben a 4-es címet az S_ANY pointer 4. byte-ja foglalja el, ami a DB száma:
L #PC_DBNum // Source DB
T LW 4#PC_DBNum meg az FB2 inputja, aminek éppen 35-ös értéket adsz híváskor:

Az LW4 tartalma marad az LW4-ben amikor az FB2 lefut, legközelebb fut az FB1, ahol az LW4-re épp a #PLC_Msg_Count_Tmp változó kerül. Ezért amíg az FB1 nem írja (nem ad neki értéket) a 35 ott ül benne!
Soha, de SOHA nem szabad TEMP változó értékét felhasználni azelőtt, hogy értéket adtunk neki amikor a blokk lefut. Az előző futáskori értékadás itt nem számít. Ahogy a blokk kilép, le van futva, TEMP változó el van veszve!
Emiatt arra is nagyon kell figyelni, hogy ha egy TMP változó értékadása feltételtől függ (pl. elágazás van előtte) de az tartalmának a feldolgozása feltételtől független vagy más feltételtől függ, akkor az elágazás(ok) teljesülésétől fog függni a szívás, vagyis az hogy épp szemét van benne vagy hasznos érték!
Erre NAGYON oda kell figyelni! -
Szirty
őstag
Üdv KLR!
Így már jónak kellene lennie!
Annyit még, hogy az első ciklusban az n+1 és n+2 címekre küldött konfigurációs #80CC után mindenképpen várj minimum 200ms-ot mielőtt elküldöd ugyanide a konverziós adatokat!Különben előfordulhat, hogy kimegy ugyan a CIO word-be a #80CC, hiszen kiírja a program, de ha már azelőtt írsz oda mást, pl. a következő programsorban (#1770-et) akkor csak azt fogja megkapni a modul és "azt hiszi" hogy az a konfigurációs beállítás!
Új hozzászólás Aktív témák
- Milyen billentyűzetet vegyek?
- Formula-1
- Szolnok és környéke adok-veszek-beszélgetek
- PlayStation 3
- Gaming notebook topik
- MWC 2026: Könnyen megmarkoltuk a Lenovo Legion Tab ötödik generációját
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Debrecen és környéke adok-veszek-beszélgetek
- Háremet tartana az adattárolókból a Chieftec letisztult dizájnú háza
- Új Toshiba notebook-modellek
- További aktív témák...
- Használt Apple A1243 EMC2171 német kiosztású vezetékes billentyűzet / 12 hónap jótállás
- Beszámítás! Asus TUF A16 FA608UH FHD Gamer notebook - R7 260 16GB DDR5 512GB SSD RTX 5050 8GB
- Apple iPhone 16 Pro Max 256GB Black Titanium használt, szép állapot 96% akku (247 ciklus) 6 hó
- HIBÁTLAN iPhone 15 Pro 128GB Black Titanium-1 ÉV GARANCIA - Kártyafüggetlen, MS4660
- Új! AKRacing Premium Master gamer szék
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



[/P











