Hirdetés
-
Homeworld 3 - Amit a játéktól várhatunk
gp Akik a drágább verziót vették meg, már játszhatnak a teljes változattal.
-
Enduro változatot kapott a Mobvoi TicWatch Pro 5
ma WearOS 3.5 rendszerrel és kettős FSTN és AMOLED kijelzővel érkezik az új modell.
-
A Corsair égisze alá kerül a Fanatec
ph A szimulátorrajongók körében nem épp ismeretlen név követi a a Drop, az Elgato, az Origin PC és a SCUF Gaming által kitaposott ösvényt.
Új hozzászólás Aktív témák
-
Dezsi82
tag
válasz Szabest #2823 üzenetére
Szia!
A WinCC-t én sem nagyon ismerem, de gondolom az ő scriptjei is VBA alapú, így aztán elvileg kell lennie egy ilyen utasításnak: WriteLine. Ez írja a tartalmat a fájlba. Ha jól sejtem, akkor ha kikeresed a megfelelő sort, és elé teszel egy komment jelet (') akkor nem fogja naplózni. -
byte-by
tag
válasz Szabest #3313 üzenetére
halo Szabest !
" beadnak egy 4 jegyű számot(db, mw, akárhova), "
itt esetleg gondolom egy HMI-ről lehet szó.
ez esetben egy "tag" -be kerül az érték ami valóban lehet valamilyen DB.
ezt Te is összehasonlíthatod egy általad létrehozott DB-vel.
ha jól gondolom a feladatot.a kép csak példa.
hozzáteheted a netwok-öt egy FB-hez is, de olyan DB kell Neked ami megtartja az értékét, ciklusonként lefut.
ha a comparátor , illetve a reláció igaz lesz a kimenet 1.byte-by
-
byte-by
tag
válasz Szabest #3313 üzenetére
halo Szabest!
lejárt az időlimit, de hozzá akartam irni.
tehát a kép csak erős példa.
létrehozva egy FC1 és egy DB1, a DB -ben DB1.DBW10 (pl. HMI tag) DB1DBW12 (beállított érték) és összehasonlítva.
az általad beállított értéknél a DB létrehozásánál az "Initial Value" oszlopban tudod megadni azt az értéket amit össze akarsz hasonlítani a "beadott" értékkel.Ha rosszul gondolom Szirty majd kijavít
byte-by
[ Szerkesztve ]
-
Szirty
őstag
válasz Szabest #3319 üzenetére
Helló Szabest!
Ha pontosabban is leírhattad volna mit szeretnél, akkor egyből arra válaszoltam volna...
Szóval igen ha DWORD-ként adod meg a keresendő patternt az FC86-nak, akkor is megkeresi.
Említettem egyébként, az adattípust az E_TYPE paramétertartalma adja meg a blokknak:
B#16#02 = BYTE
B#16#04 = WORD
B#16#05 = INT
B#16#06 = DWORD
B#16#07 = DINT
B#16#08 = REAL
Ez esetben a PATTRN is DWORD kell hogy legyen.
Viszont ha DWORD-ként adod meg a négy karaktert, akkor négy karakterenként és nem egy karakterenként fogja keresni a mintát.
Pl. ha négy karakterenként keresel, akkor nem mindegy hol kezded a keresést.
Tehát továbbra is kérdés, hogy hogyan is akarsz pontosan keresni. -
Szirty
őstag
válasz Szabest #3326 üzenetére
Helló Szabest!
A fő kérdés az, hogy milyen típusú tömbben milyen típusú adatot akarsz keresni milyen módon honnantól meddig :-)
A "milyen típusú tömbben" kérdésre elvileg van válasz:
sorte fuer camera.sorteR4:Array˙[0..29] Of Int
Tehát integer típusú adatokat tartalmazó tömbben akarsz keresni ha jól értem, ami 30 elemű."milyen típusú adatot akarsz keresni" kérdésre nincs, mert egyrészt "4jegyű számokat, és mindig 4 jegyű számra szeretnék keresni benne", másrészt korábban négy darab CHAR típusú elemet emlegettél itt.
Integer tömbben integer adatot tudsz keresni, másnak nagyon nincs értelme. Az INT típus pedig nem ismer olyat, hogy "mindig 4 jegyű" szám. Az 1-999-ig nem négyjegyűek. Tulajdonképpen az INT-ben lévő érték számjegyeiről nincs is értelme beszélni, mert azok csak leírva (ASCII karakterekké vagy BCD digitekké alakítva nyer értelmet, hiszen az integert alapvetően nem is decimálisan, hanem binárisan tárolja te pedig nyilvánvalóan decimális számok számjegyeire gondolsz).
Más szóval, ha a bemenő adat (amit keresni akarsz) nem INT típusú, akkor először azzá kell alakítani. A korábbiakból úgy tűnik, hogy neked négy CHR karakter formájában jön a keresendő érték ASCII-ban kódolva vagy binárisan. Ez nekem még nem világos."milyen módon" kérdésre részben válaszoltál. De kérdés, hogy milyen eredményt szeretnél a kereséstől.
Az nyilvánvaló, hogy szeretnéd tudni, hogy benne van-e (vagy nincs benne). De érdekel-e, hogy ha benne van, akkor hol (hanyadik tömbelemben) vagy nem.
Illetve mi legyen ha nem csak egyszer van benne, hanem többször is? Vagy az nem érdekel?"honnantól meddig" ezt csak feltételezni tudom, hogy az említett tömb elejétől a végéig szeretnéd a keresést elvégezni.
Amit mellékeltél képet az hasznos, de sokkal több kérdést vet fel, mint amennyire választ ad, mivel szimbolikus címzésmódot használ és UDT-t is, vagy/vagy instance DB-t is használ. Így nem lenne rossz tudni milyen blokkban van ez és annak a blokknak pontosan hogy néz ki az interface része.
Addig biztosat annyit tudok mondani, hogy az a DB blokk, amiben az a tömb van, amiben keresni akarsz fix, már kész blokk, azaz a programot amihez a keresés kell nem most te készíted (ezt nem írtad, de a képekből úgy tűnik, hogy egy programot módosítani akarsz, nem te írtad) akkor romlik kissé a helyzet.
Mivel a TBL_FIND a keresés forrását jelentő, SRC paraméterben adott kezdőcímű E_TYPE típusú adathalmaz első elemének egy WORD típusú adatnak kell lennie (az E_TYPE által meghatározott típustól függetlenül) ami megadja az adatterület hosszát.
Ha a kérdéses DB nem módosítható, akkor ez a feltétel nyilván nem teljesíthető.Ebben az esetben azt lehet tenni, hogy létrehozol az INT tömbbel azonos elemszámú tömböt a TEMP változóterületen, ami elé teszel egy WORD változót. A WORD változóba beírod a tömb elemszámát (MOVE), majd az azt közvetlenül követő TEMP tömbbe blokk másolás BLKMOV funkcióval belemásolod a DB-ből az egész tömböt, végől az FC 86 SRC paraméterének megadod TEMP tömb előtt lévő WORD-re mutató pointert.
(Írnék erre példát, de nem akarok minden vakvágányt kidolgozni, az én időm sem végtelen... Majd ha a függő kérdések is tisztázódnak)
-
Szirty
őstag
válasz Szabest #3340 üzenetére
Helló Szabest!
Annyit tudok biztosan mondani, hogy amit szeretnél azt meg lehet csinálni a TBL_FIND függvénnyel.
Sajnos nem annyira egyszerűen, hogy megadsz neki pár paramétert és pont azt a DB-t pont úgy fogja használni ahogy te szeretnéd, kell egy kicsit gépészkedni hozzá. A feladat amit meg akarsz oldani elég specializált, ez a függvény pedig meglehetősen nagyvonalúan általános. Meg is írhatod a kereső függvényt magad is, ez a másik lehetőség. Nem nagy ördöngösség, de kell hozzá egy kis gyakorlat.
De hát éppen ez adja a szakma szépségét (szerintem)A TBL_FIND bárhonnan kezdheti a keresést és bármennyi adatot át tud nézni (már ami a DB-k és struktúrák méretének korlátain belül van).
Én a hasonló feladatot (amikor általam nem ismert blokkot kell használni) először ismerkedés céljából egy külön teszt programot készítek és szimulátorral (vagy teszt célra összeállított PLC-vel) kipróbálom hogyan működik, hogy kell használni. -
Szirty
őstag
válasz Szabest #3342 üzenetére
Helló Szabest!
"azt irod hogy bárhonnan tud keresni, de akkor jól látom, hogy a bármeddig adatot, hogy pl 60byte hosszan keressen, azt nem tudom megadni neki?"
A TBL_FIND SRC paramétere által adott struktúra első eleme a keresés hatásköre, azaz hogy mennyi elemen belül kell a keresést végrehajtani.
-
Szirty
őstag
válasz Szabest #3344 üzenetére
Helló Szabest!
Itt egy példa.
Ez a DB100-ban lévő IttKeres nevű 50 elemű tömb első 29 byte-jában keresi a 7426-os számot.
Mivel mint írtam a keresés hosszát a keresés forrását adó pointer első elemében kell megadni, ami a DB módosítását kívánná, a keresés előtt a program átmásol a DB-ből annyi adatot lokális változóba, amennyiben keresni kell, elé rakja a keresés hosszát meghatározó 29-et és azután ebben a lokális változóban keres:
Nem magyarázom szénné, kérdezz ha valami nem érthető benne:
A program bekapcsolja a Q4.0 kimenetet ha megtalálta a számot és kikapcsolja ha nem találta meg.Ha ez van a DB-ben:
A PLCSIM-en látható, hogy a 7426-ot megtalálta a 28-as táblaelemben:
Ha a 7426-ot átrakom a 29. elem utáni valamelyik címre, akkor nem találja meg, mert csak az első 29 elemet nézi át...
-
Szirty
őstag
válasz Szabest #3464 üzenetére
Helló Szabest!
Az okéra nem jön ilyen ablak.
Nálad van a labda ezzel így én semmit nem tudok kezdeni.Nálad az információ és a harapófogó kézenfogva járnak :-)
Mindig az az érzésem, mint ha semmilyen erőfeszítést nem lennél hajlandó tenni a problémád megoldása érdekében. Ez nekem nagyon nem szimpatikus.
Sajnálom, ez van![ Szerkesztve ]
-
Szirty
őstag
válasz Szabest #3468 üzenetére
Helló Szabest!
Ebben sajnos nem tudok segíteni, ethernetes CP-vel nem volt dolgom még.
Van leírás biztosan, a Siemens technical forum-on érdemes szétnézni, onnan kiindulni.Egyszer már próbáltam utalni rá, kérdeztelek is, de nem válaszoltál! Jól nézd meg mit hogyan csinálsz, mert a sok kapcsolat miatt hamar kifuthatsz az erőforrásokból. A PLC nem tud végtelen sok kapcsolatot tartani egyszerre. Pl. ha azt akarod, hogy az egyik PLC kommunikáljon a többi 25-el, ebbe a korlátba biztosan belefutsz. Ilyenkor azt a megoldást kell választani, hogy felépíted és bontod a kapcsolatokat. Ez viszont nem tezs lehetővé túl gyors adatcserét stb, stb...
Új hozzászólás Aktív témák
- MECHANIC PCB repair PAD - 2. generációs kialakítás
- DC csatlakozós ventilátor kábel - 1 utas vagy 3 utas változat
- ÚJ, bontatlan iPad PRO 13 (2024) M4 CHIP! 256GB WIFI asztrofekete, 1 év Apple garancia!
- Samsung Galaxy S22 Ultra 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- HP Victus 16-r1019nt - ÚJ 16" FullHD IPS GAMER notebook - i7-14700HX, 32GB, RTX 4070
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest