Hirdetés

2024. április 27., szombat

Gyorskeresés

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás

Hozzászólások

(#6751) Bazs87 válasza n0rbert0 (#6750) üzenetére


Bazs87
tag

sajnos nem.

Ugye step7-ben tudtál tetszőlegesen váltogatni kop-fup-awl (bocsi, a német megfelelő megy fejből) nézetet.
A siemens viszont az awl-t ki akarja hajítani az abszolút címzéssel együtt.

Ezért van az 1200asban már csak scl awl nélkül, megyünk a rendes programozás irányába.
Jelen pillanatban a kop és fup kompatibilis, lehet is váltogatni, továbbá 1500asnál befúzhetsz a kop/fup blokkokhoz awl "netzwerk"-et, de egymással nem kompatibilisek, külön fordítójuk van már.

Ez azért tűnt fel, mert awl-ben dolgoztunk, amit úgy írtunk meg h FUP-ba forgatható legyen s7 alatt. (gyors írás, könnyű tesztelés a vizuális kód miatt) Ez a lehetőség elveszett, de legalább tudunk drag/droppal változókat behúzogatni...:p

(#6752) Bazs87 válasza BG* (#6749) üzenetére


Bazs87
tag

mi számít komplexnek?
Első olvasásra már a te kódodra is azt mondanám, mert valahol a határokat súrolgatod ftp-vel és rfid loginnal.
Nekem csak kis cellákkal van tapasztalatom (forgóasztal + 1-2 robot), de mi min 315 pn/dp-t vagy 15xxasokat használunk(a tia most indul be, enyém az egyik első full tiás projekt, ezért nem tudom még a kiváltó típust).

Kis plc-khez eddig nem kerültem közel, de tervezem, mert érdekelne, ezért is kérdeztem a basic tia-ban rejlő lehetőségeket.

(#6753) n0rbert0 válasza Bazs87 (#6751) üzenetére


n0rbert0
senior tag

Igen sejtettem, hogy nem teljesen úgy működik, mint a 300-as.
De az állításomat továbbra is fenntartom, hogy a ciklusidőt nem befolyásolja nagyban, hogy miben írod a kódot. Én úgy tudom elképzelni, hogy egy közös nyelvre/kódra/stb. fordítja le a compiler a felírt kódot (LAD/FBD/SCL) és az töltődik le (az most lényegtelen, hogy milyen módszerrel fordít).
Sajnos nem találtam semmilyen hivatalos forrást ennek bizonyítására, nyugodtan javítsatok ki, ha tévedek.

[ Szerkesztve ]

(#6754) Szirty válasza n0rbert0 (#6750) üzenetére


Szirty
őstag

Minél magasabb szintű nyelvből jön létre az STL kód, annál komplexebb és szószátyárabb lesz. (Lassabb nem feltétlenül lesz)

(#6755) Szirty válasza Bazs87 (#6751) üzenetére


Szirty
őstag

"Ezért van az 1200asban már csak scl awl nélkül, megyünk a rendes programozás irányába."

TIA Professional-ban már oda is értünk.
Ugyanis kivezették belőle a multiplex tag-et, az index tag-et és az array tag-et.
Remek, kiváló. Így ha egy struktúra 1400 eleme közül kell választani, akkor faragni kell hozzá 1400 tag-et, 4 helyett.
Had' fogyjon az a power tag, vegyék a 65535-ös licencet kétmilláért....

(#6756) joci9 válasza n0rbert0 (#6747) üzenetére


joci9
tag

Szia!

Basic. az egyik szó benne van :-)
Túl gyorsan olvastam... :-)

üdv
J

(#6757) n0rbert0 válasza Szirty (#6754) üzenetére


n0rbert0
senior tag

Ebben egyetértünk. "(Lassabb nem feltétlenül lesz)" De gyorsabb biztosan nem lesz...

(#6758) BG*


BG*
csendes tag

Üdv!

Sajnos még nem sikerült megoldani az FTP problémát, és közben újabb akadályokba ütköztem.
Ha valahogy össze tudom hozni az FTP kapcsolatot, hova tudom menteni a file-t?
Azt hiszem a PLC-ben nincs annyi saját memória, SD foglalat van ugyan, de úgy tudom csak Siemens-es SD- vel működik, ami horrorisztikus árban van. A HMI kezel USB pendrive-ot, aod tudok menteni a PLC-n keresztül?

Sajnos a forrás CSV is más formátumú mint amit a HMI exportál. Ami az egyikben oszlopokban következik, a másikban sorban. Ezt is át kéne valahogy formázni.

BG

(#6759) Bazs87 válasza BG* (#6758) üzenetére


Bazs87
tag

én anno a fw update-tel szívtam (24 megás tia sd kellett hozzá, szerencsémre a cégnél véletlenül pont 1 ilyet rendeltek egy 1500-ashoz tesztnek)
ha jól emlékszem az 1200as 2 megáig támogat tia sd-t, nem kell siemenst venned minden áron, Helmholz is van pl, meg gondolom még 1 rakás "utángyártó" valamivel kedvezőbb áron. Már ezen is elfér párezer sor a csv-n, főleg ha ciklikusan "körbe" íratod. Pl 5000 adatot mentesz és a legutolsót mindig kidobod, a többit pedig eltolod és az újat pedig legelőre illeszted(mint az Audit Trail).

Esetleg a Tia vizu Archive funkciója nem lenne használható?
Onnan már csak azt kéne megszülni, hogy script nélkül lehet-e továbbcopyzni szerverre fájlt. (scriptbebn megoldható, de fontos korlátozás, hogy WinCe-be nem latsz bele, csak te tudsz onnan kiírni, így megosztott mappás lehetőség sajnos nem játszik, ezzel már én is szívtam)

Nekem az nem teljesen tiszta, hogy adott az 1200-nál vmennyi programmemória és "ram", aztán adott valamennyi "tárhely", ami kártyával bővíthető valameddig.
Oda tudsz menteni csv-t, amit a webserver oldalán is le tudsz tölteni.
PLC-n az ilyen irányú korlátozott tudásomből fakadóan nem biztos, hogy belkezdenék saját szakállra. Inkább pc-vel vagy pc-plc kombóval oldanám meg, persze ha van erre lehetőség.

Ha van mellette egy folyamatosan vagy ciklikusan PC-n futó program le lehetne tölteni csv-ben a fájlt automatizáltan, majd a program felrakja ftp-re (vbs v bármi jo lenne ra).

Korrekciót, véleményt szívesen veszek

(#6760) Szirty válasza Bazs87 (#6759) üzenetére


Szirty
őstag

"ha jól emlékszem az 1200as 2 megáig támogat tia sd-t"

Nem giga az a mega?

"Nekem az nem teljesen tiszta, hogy adott az 1200-nál vmennyi programmemória és "ram", aztán adott valamennyi "tárhely", ami kártyával bővíthető valameddig."

Az S7-1200 easy book segíthet részleteket megtudni.

(#6761) Bazs87 válasza Szirty (#6760) üzenetére


Bazs87
tag

jogos, gondolatindítónak szántam...

a másik opció a program start funkció tia vizuban, onnan pedig bat fájllal ftp műveleteket végezni.
A wince bat is elég korlátolt, talán tudja még ezt is.

Onnan már csak a textmanipulálás/beolvasás-szétvágás marad, de azt tiában lehet már blokkban is.

(#6762) zolizozo80


zolizozo80
tag

Sziasztok!

Siemens szakértőt keresnék...Lenne 2db S5 program, amit át kellene konvertálni STEP7-be...
Tudna valaki segíteni?

(#6763) Bazs87


Bazs87
tag

nincs valakinek tapasztalata ABB robotokkal az irc5-ös előtti időkből?

(#6764) moseras


moseras
tag

Üdv!

Akit érdekel:

Megjelent a Tia Portal V14 SP1

Újdonságok(pl. Win10 Support):

PDF

Imi.

(#6765) zolizozo80


zolizozo80
tag

Senki?

(#6766) Szirty válasza zolizozo80 (#6765) üzenetére


Szirty
őstag

Ennyi információ nem elég szerintem ahhoz hogy kecsegtető legyen az ajánlat.

(#6767) crucified


crucified
tag

Sziasztok, Allen Bradley Logix5555-höz RSLogix 500 vagy a Studio 5000 szükséges, hogy elérjem?

Köszi a választ előre is.

Üdv.

(#6768) aboutterms válasza crucified (#6767) üzenetére


aboutterms
csendes tag

RS Logix 5000 / Studio 5000

(#6769) crucified válasza aboutterms (#6768) üzenetére


crucified
tag

Szia, köszi. Nekem csak 1747-CP3-as soros kábelem van. Azzal hozzáférek? Amennyiben igen, kell az Rslinx is? Az ok LED villog pirosan, a hibát akarom megkeresni. Stúdió 5000-em is van, de nem használtam soha.

Köszi előre is.

Üdv.

(#6770) aboutterms válasza crucified (#6769) üzenetére


aboutterms
csendes tag

Konkrétan ezt a soros kábelt nem használtam, de egy sima (lehet hogy fordítós) soros kábel kell csak. Mi saját magunk által forrasztottat használunk.
RSLinx kell, ott kell felvenni egy új kommunikációs kapcsolatot (RS232 DF1) és beállítani. Ha jó a kábel az Auto-configure megtalálja a PLC-t, ha a soros port nem lett átállítva programban user-portnak (ha nincs ráakasztva valami spéci soros cucc). Ha itt látja a PLC-t, akkor a Studio 5000 is fogja, mivel az is a Linx-en keresztül kommunikál.

(#6771) crucified válasza aboutterms (#6770) üzenetére


crucified
tag

Szia, köszönöm, sikerült csatlakozni.

Amikor online-ba akarok menni, firmware update-et akar. Ezt hogyan kell? Az eszköz nem található meg a standard eszközök között új project definiálásakor. Ez ugyan olyan, mint a GSD file a Siemens-nél? Hogyan tudom update-elni, hogy online mehessek és megnézhessem a hibakódot, amiért a piros LED villog? Gondolom ezzel semmit nem lehet elfuserálni a PLC-ben.





Köszi és üdv.

(#6772) crucified válasza aboutterms (#6770) üzenetére


crucified
tag

Szia, nagyobb képen.

Üdv

(#6773) aboutterms válasza crucified (#6772) üzenetére


aboutterms
csendes tag

Az a fura, hogy azt írja, hogy a controllernek nincs firmware-e. De ha az nincs akkor program sem lehet benne.
Ha lenne, de régi, akkor azt is írnia kellene. Olyan mintha elfelejtette volna a firmware-t is. Csak az OK led piros? Ha program fault lenne, akkor a RUN led is pirosan villogna úgy rémlik.
Firmware updatehez a Controlflash progi kell, ezt keresi is nalad. Lehet hogy fel is van rakva valamilyen verzió, de mivel ez régi plc, lehet hogy ezt már nem tartalmazza. A rockwell honlapon elvileg letölthető Controlflash progi, szedd le aztán próba...
Ha sikerül, nem kell kivalasztanod uj projectet, hanem mehet a egyből online a connecting to controller kepernyőn a Select file, ott adsz nevet, aztán abba leuploadolja neked majd.
Mégegy: a Studio 5000 a legujabb szoftver (aka TIA), a regebbi az RSLogix 5000. Lehet az is, hogy ehhez a régi PLC-hez csak azzal lehet csatlakozni. Nem tudom, hol tartanak most rockwellék a szoftverkompatibilitással...

(#6774) crucified válasza aboutterms (#6773) üzenetére


crucified
tag

Szia, köszönöm.

Szépen lefutott, újraindítás után teljes halál.

Előtte csak az OK LED villogott, most a RUN zöld, az RS232 és az OK LED piros és nem villog. Nem látja a CPU-t újraindítás után sem COM-on, sem Etherneten. Előtte látta.

Mi lehet a baja? Tudok adni teljes resetet?

Megpróbáltam megint elérni a ControlFlash-el, sikertelenül.

Köszi és üdv.

(#6775) aboutterms válasza crucified (#6774) üzenetére


aboutterms
csendes tag

A Linx sem látja? Soroson biztos, hogy nem éred el? Esetleg a Bootp-DHCP progi látja?

(#6776) crucified válasza aboutterms (#6775) üzenetére


crucified
tag

Szia, sajnos azzal sem. Érdekes, hogy a firmware update előtt elértem RSLinx-el sorosan és IP-n is, az RS232 LED az update után pirosan világít az OK LED-el egyetemben, a RUN LED zöld. Előtte csak az OK LED villogott, minden más LED sötét volt. Feltöltés előtt a 00-ás rackben látta a redundáns PLC-t, most nem. A 1756-L55-ös firmware-val updateltem, rendben lefutott, a boot után lett ilyen. A furcsa, hogy nem írta ki a firmware verzióját az update előtt, ahogy mondtad olyan mintha nem lett volna rajta firmware. A main PLC szépen kiírja a firmware változatát, szépen tudok hozzá csatlakozni RSLinx-el sorosan és IP-n is.

Találkoztál már hasonlóval?

Köszi

Üdv,

(#6777) Bazs87


Bazs87
tag

Sziasztok!

TIA SCL programozásbeli kérdésem lenne.
Adott 2 DB, aminek saját UDT változói vannak több szinten egymás alatt.
A db150-ben szerepel 1 program udt, a forrás db101-ben pedig ugyanez az udt 0...32-ig.
Dinamikus funkciót szeretnék ahhoz építeni, hogy tudjam mindkét irányban másolgatni azt a durván prog udt-nként 800 byte-ot. (Adatbank van felépítve a db-ben, amiknek a csv exportját és importját kell megoldanom, sajnos csak scriptből nem tudom, mert ha DW-ben szeretném ciklikusan kopizni akkor 6600 változó kell, és nekem nem csak db101-em van, hanem 102,103,104)

Első körben a blockmove irányába mentem el, de ahhoz pedig dinamikusan kellene pointert építenem, ami tud onnan ki-be pakolni. Ezt Szirty írásaiból láttam, hogy nem egyszerű, noha ennek ő nagymestere. Én nem:/
Második körben arra gondoltam, hogy a vbs-ből ismert eval() (vagy delphi getparameter) funkcióval szeretnék dolgozni. Ergo stringként karakterekből felépítem a változó nevét, és utána set-get párossal írok bele, vagy veszem ki az értékeit.
Ez már eléggé felsőbb nyelves megoldás, továbbá nem tudom, hogy tud-e ilyet a tia scl-je.
Maradék megoldásnak még STL vagy scl megoldásként egy ciklust, ami abszolút adresszálással lemásolgatja a 800 byte-ot, de az meg gondolom nem lesz jó hatással a ciklusidőre.
Ha érthető volt a kérdésem várom tanácsaitokat a megoldást illetően!

Köszönöm előre is!
Szép napot (még ha hétfő is)!
Bazs87

(#6778) Szirty válasza Bazs87 (#6777) üzenetére


Szirty
őstag

Szia!

Ha ezt az utat követed nem érsz célt?

[ Szerkesztve ]

(#6779) Bazs87 válasza Szirty (#6778) üzenetére


Bazs87
tag

a feltevés tökéletes. Ez volt az első irány. A gond, a 32 prog az nekem ugyanúgy struct. (s7 standard migrálása után valami túlfutott a tiá-s kereteket, ezért vissza kellett állnunk struct típusokra)
Így array-ekkel nem tudok dolgozni.

Vagy favágok 2*32 move tologatást amit semmiképp sem szeretnék, vagy dinamikus pointert építek, amiben további változó a kezdeti offset és a db szám + valami tiás sfc20(blk move), vagy scl-ben dinamikus megoldással áttologatom egy for ciklussal a paramétereket, a "szép" a dologban, hogy a siemens megint remekelt V13-ban és az egyszerű megoldást sikerült bonyolítania. [link]

A paraméter beolvasása stringből valszeg már nem az a kategória, amit a tia tudhat.

Persze a dbd-k ciklikus írogatása stl-ben is mehetne, de akkor már inkább scl...már ha megy egyáltalán.

Példám szerint így lehet egy egyszerű feladatból nagy szívást kanyarintani:)

(#6780) Bazs87


Bazs87
tag

végül mérgemben visszamentem s7-es felületre és megnéztem mi a baj a logikámmal (pa pedig már ott voltam Szirty régi any-s mintájából visszafelé generáltam dinamikusan 2 pointert, ami sfc20-szal működik, de az viszonylag helyigényes, ezért nem kopizom be):

FOR i:=0 TO 10 DO
j:= i*4;
WORD_TO_BLOCK_DB(DB_No2).DD[j] := WORD_TO_BLOCK_DB(DB_No1).DD[j];
END_FOR;

A tiás megoldás pedig így néz ki (tesztelve):
#tmp_Offs := #i_PrgNr * 800 + 800;

for #i:=0 to 199 do
#j := 4 * #i;
#state := PEEK_DWORD (area:=16#84, dbNumber:=#i_DBNr, byteOffset:=#j+#tmp_Offs);
POKE (area:=16#84, dbNumber:=150, byteOffset:=#j, value:=#state);
end_for;

(a szintax érdekes, nem a konkrét címzés, az előbbi 1 teszt, az utóbbi a feladat 1 részfeladatára lett írva)

[ Szerkesztve ]

(#6781) bozig


bozig
tag

Sziasztok!

Azt szeretném kérdezni, hogy áramúttervekben Ti milyen betűjelet szoktatok használni a vezérlő eszközökhöz (PLC, I/O modulok, komm. modulok)? WSCAD-ben terveztem sokáig, ami alapból K-t rendel ezekhez az eszközökhöz, a jelenlegi munkahelyemen viszont A-val jelölik (itt mondjuk csak AutoCad van).

Egy másik kérdés, hogy a mágneskapcsolókat ugye Ti is Q-val szoktátok jelölni, mert most erőltetik a kollégáim a K-t, de azt még a 10 évvel ezelőtti szakirodalom is elavult jelölésnek minősíti.

A válaszokat előre is köszönöm.

Déjà vu: Állapotfüggő asszociatív paradoxon.

(#6782) n0rbert0 válasza bozig (#6781) üzenetére


n0rbert0
senior tag

Szia,

Mi általában így szoktuk használni:

Motorvédők: Q
Mágneskapcsolók, relék: K
Kismegszakítók: F
Motor: M
PLC, IO, Switch,stb.: A
Szenzorok, nyomógombok: S
Lámpák, ledek, stb.: H

Ezek változhatnak megrendelői standard szerint.

(#6783) Szirty válasza bozig (#6781) üzenetére


Szirty
őstag

Német rajzokban nálunk:

Motorvédők: -Q
Teljesítmény mágneskapcsolók: -KM
Segédkapcsolók: -K
Relék: -KA
Készülékek (műszer, PLC, tápegység stb): -G vagy -A
Induktív, kapacitív szenzorok, végállások: -B
Optikai érzékelők: -BF
Nyomógombok, kezelőszervek: -S
Motorok: M
Jelzőkészülékek, lámpák: -H
Szelepek: -Y

Ilyeneket lehet látni.

(#6784) bozig válasza Szirty (#6783) üzenetére


bozig
tag

Köszönöm szépen mindkettőtöknek a választ :)
Ebben az esetben én is A-val fogom jelölni a vezérlést.

Déjà vu: Állapotfüggő asszociatív paradoxon.

(#6785) Watchdog válasza bozig (#6781) üzenetére


Watchdog
aktív tag

Szia!

Hivatalosan az IEC 81386 szabvány van érvényben MSZ EN 81346-2:2010 néven (angol nyelvű).
Eszerint a "K" jelfeldolgozást, a "Q" energia áramlás módosítást jelent, az "F" pedig közvetlen védelem nem kívánt hatások ellen.
Elvileg a jelölésnél a készülék fő funkcióját kell figyelembe venni az adott alkalmazásban.*
Eszerint:
–FA túlfeszültség elleni védelem; túlfeszültség levezető
–FB hibaáram elleni védelem; hibaáram védőkapcsoló
–FC túláram elleni védelem: biztosító, kismegszakító, túláram kioldó
–QA villamos energia kapcsolás; megszakító, mágneskapcsoló, motorindító, teljesítmény-félvezető
–QB villamos energia leválasztás; szakaszoló, biztosítós szakaszolókapcsoló, teljesítményszakaszoló-kapcsoló
–QC áramkör földelés; földelő kapcsoló
–K jelfeldolgozás (kapcsolás, vezérlés, időzítés, szinkronizálás)
–KF elektromos jelfeldolgozás; relé, időrelé, analóg- és digitális elektronikus eszközök, PLC, számítógép, adó-vevő
–S kézi művelet jellé alakítása
–SF villamos jel előállítása; vezérlő kapcsoló, nyomógomb, alapjeladó, billentyűzet
Az =, +, – előjelek külön téma, az MSZ EN 81346-1:2010 tárgyalja
Nem csak a villamos tervjelek vannak benne, hanem "objektum orientált" alapon elvileg minden...

*A motorvédő kapcsoló egy érdekes állat:
- ha közvetlenül a motor kézi indítására-megállítására szolgál, akkor a jele QA
- ha a motor leágazás túláramvédelmére szolgál, és a motort üzemszerűen mágneskapcsoló (vagy más) kapcsolja, akkor a jele FC
(Gyakorlati szempontból nem túl szerencsés, pl. a "KF" alá elég sok mindent begyűrtek, de állítólag a szabványnak kidolgozták a 2017-es verzióját, ami már 3 betűvel jelöl, és mindent egyértelműen lefed...)

(#6786) Szirty válasza Watchdog (#6785) üzenetére


Szirty
őstag

"állítólag a szabványnak kidolgozták a 2017-es verzióját, ami már 3 betűvel jelöl, és mindent egyértelműen lefed..."

Sajnos ezzel szemben a gyakorlat inkább azt igazolja, hogy most lett csak igazán zavaros és érthetetlen, követhetetlen az egész.
EU-s módra szénné maszturbálták ezt a témát is. Sajnos felnőtt az a bizonyos "mérnök" nemzedék és már keményen "dolgoznak"...
(Persze ez csak a privát véleményem és mint olyan nemigen befolyásolja az univerzum működését...)

(#6787) Szirty válasza Szirty (#6786) üzenetére


Szirty
őstag

kieg.: Occamnak szakálla nőtt :-/

(#6788) Watchdog válasza Szirty (#6787) üzenetére


Watchdog
aktív tag

Ehhez jön, hogy a különböző tervező programok különbözőképpen értelmezik és használják.
Az EPLAN jár legelöl, ott már a tervlapokat is ebben a rendszerben jelölik.
Az alkatrészlistában meg jönnek a 10-20-30 karakteres jelölések egy-egy betű vagy szám eltéréssel a 22. pozícióban... fel lehet adni a Füles magazinban, hogy ki találja meg az eltérést :DDD
A szerelő pedig címkézze csak fel a szekrényben a 6 mm vastag túlfeszültség levezetőre - ha lelóg róla, akkor is...

(#6789) Bazs87


Bazs87
tag

Sziasztok!

TIA V13 SP1 UPD9 Visu script-es témám van, amiben ismét a hozzáértők tanácsát szeretném kérni.
33x800 byte-ot kell importálnom/exportálnom.
A megoldás egy lépéslánc blockmove-val, ami a mintadb-ből a db150be pakolja a plc meghívására az adott területet. Eztán startol egy scriptet:

Sub SpuelPrg_Export(ByRef StNr, ByRef PNr)

'Declarations
Dim Fn
Dim fso
Dim arc
Dim varname
Dim offs
Dim strt
Dim i

If SmartTags("M 597.7") = True Then

Fn = CStr(StNr) + "_" + CStr(PNr) + ".csv"

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set arc = fso.CreateTextFile( Fn , True )

varname= "DB 150 DBD "

For i = 0 To 799 Step 4
arc.WriteLine varname + CStr(i) + ";" + cStr(SmartTags(varname))
Next

arc.Close

Set arc = Nothing
Set fso = Nothing

SmartTags("M 597.7") = False
End If

End Sub

A gondom, hogy a SmartTags úgy néz ki nem kezel dinamikus nevet. (hiba nincs, minden értéknek nullát ad meg)
Valaki futott már bele hasonló történetbe? Hogyan tudom esetlegesen kikerülni?
Persze be tudom írni a 200 dbd statikus meghívását, de az nem túl elegáns. Sajnos lassan már tényleg csak ezt a lehetőséget látom.

(#6790) Szirty válasza Bazs87 (#6789) üzenetére


Szirty
őstag

For i = 0 To 799 Step 4
arc.WriteLine varname + CStr(i) + ";" + cStr(SmartTags(varname))
Next

Kiírod ugyanazt 800x sorszámozva?

[ Szerkesztve ]

(#6791) Bazs87 válasza Szirty (#6790) üzenetére


Bazs87
tag

800/4=200*, igen

A symbolok is automatán lettek létrehozva, amire hivatkozom, nincsen elütési hiba sem ebből kifolyólag.
A vicc, hogy nem dob hibát, hanem 0-val jön vissza a smarttags.
(statikusan 200 sorban működik csak, dinamizálni nem tudom, pedig szeretném, mert ez így igen ótvar)

(#6792) Bazs87 válasza Bazs87 (#6789) üzenetére


Bazs87
tag

ennyivel javítanám a bemásolt kódom. Ez 1 régebbi verzió volt, ezt már javítottam, de ez se vezetett eredményre.
cStr(SmartTags(varname+cstr(i)))

(#6793) Szirty válasza Bazs87 (#6792) üzenetére


Szirty
őstag

Szia!

Szerintem közel jársz a megoldáshoz.
Valószínűleg konzisztencia probléma van.
Tehát kiírja ő a HMI tag-ek tartalmát a file-ba, csak épp azokat még nem olvasta be a PLC-ből.

Csináltam egy kisebb próba projectet ami változókat olvas scriptben és kiírja file-ba, ahogy nálad is.
Nekem is nullákat rak a file-ba. De ha az adatgyűjtést cyclic continuous-ra állítom, akkor a valós PLC-beli érték kerül a file-ba.

Sajnos ez nagyon sok változónál megint csak nem elegáns (ciklikusan olvastatni mindet).
De megoldást jelenthet az acquistion mode On demand-ra állítása és az UpdateTag funkció.
Ez utóbbit nem próbáltam.

(#6794) joci9 válasza Szirty (#6793) üzenetére


joci9
tag

Szia!

Bocsánat, már megint kicsit off leszek, ESAnál van a scriptben változó kiolvasó függvény, és az akkor olvassa ki, és utána megy a következő sorra.
Siemensnél?

üdv
J

(#6795) Szirty válasza joci9 (#6794) üzenetére


Szirty
őstag

Alapvetően az itt a gond, hogy lehet funkció ami kiolvas változót, de a változók tényleges kiolvasása és a script futása aszinkron módon működik egymáshoz képest.

Tehát írok egy 1-1000-ig futó ciklust, ami ki akar olvasni 1000 változót.
A ciklus lefut a HMI-ben 5-6ms alatt.
Ám 1000 változó kiolvasásához szükséges idő másodpercekben mérhető.

Persze elvileg lehetne késleltetni (várakoztatni) a kiolvasáskor hogy addig nem megy tovább amíg nincs meg az adat.
Az viszont okozna sok más problémát. Pl. nagyon könnyű lenne befagyasztani a HMI-t.

(#6796) Bazs87 válasza Szirty (#6795) üzenetére


Bazs87
tag

a ciklikus olvasás beállítás megválaszolta a 0 kiement kérdésem.
A program, igaz statikus 200 soros meghívással, de működik.

A nagyobb gond úgy néz ki olvasásnál van.
Perpill ez a kód:

Sub SpuelPrg_Import(ByRef StNr, ByRef PNr)

'Declarations
Dim Fn
Dim fso
Dim arc
Dim tmp
Dim var
Dim valu
Dim list

If SmartTags("M 595.7") Then

Fn = "D:\testscript\" + CStr(StNr) + "_" + CStr(PNr) + ".csv"

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set list = CreateObject( "System.Collections.ArrayList" )

If Not fso.FileExists(Fn) Then
ShowSystemAlarm Fn + " not exists"
Exit Sub
End If

Set arc = fso.OpenTextFile( Fn , 1 )

Do
tmp = arc.ReadLine
'var = Left ( tmp, InStr( tmp , ";" ) - 1 )
'valu = Right ( tmp, Len( tmp ) - InStr( tmp , ";" ) - 1 )

list.add Right ( tmp, Len( tmp ) - InStr( tmp , ";" ) - 1 )

On Error Resume Next

' SmartTags(""&var&"")= valu

SmartTags("DB 150 DBD 0")=list(0) --> a din megoldás kommentezve, ezt próbálom

If Err.Number <> 0 Then
ShowSystemAlarm "Error in write process"
Exit Sub
End If
On Error GoTo 0

Loop Until arc.AtEndOfStream

arc.Close

Set arc = Nothing
Set fso = Nothing

SmartTags("M 595.7") = False
End If
End Sub

a bemeneti adat 1 sora:
DB 150 DBD 0;555

A stringvágás vbs-ben működött, előbb ott teszteltem. Csak utána ültettem át tiába.

2 komolyabb gondom van perpill:
- a "kisebb", hogy a notin amint rányitok az import scriptre a tia összeomlik és bezár
- a nagyobbik az, h "error write process" hibával elszáll a script és nem ír semmit vissza a DB-be

valszeg a konvertálással van a gond, mert ugye a beolvasott változó string, az vagdosva is lett ráadásul, majd nekem DWord-be kellene konvertálnom.

Itt jön be, hogy siemensék integere <> vbs integer, ezáltal hibáa akarok én cInt-et v cDbl-t használni a végeredmény ugyanez. Igaz, konvertálgatási próbálkozásaim alatt konvertálási hibát is kiírt. Ha nem konvertálok akkor azt nem sérelmezi, csak írni nem tudom...

A dinamikus problémát még meg tudom oldani a léhűtő kívül generál és bemásol témával, de az írási problémámra az sem jelent megoldást.

a változó is már folyamatosan meghívódik. Mi lehet még?

(visszatérve az exportra vagyok olyan perverz, hogy az általad javasolt megoldással is futok egy kört, mert sokkal igényebess az általad leírt)
továbbá újratelepítek egy tiát, de sztem előtte csinálok egy videót és elküldöm egy cirkusznak, mert ez már kritikán aluli....

a kódra úgy tekintsetek, hogy egy megírt de változtatott logika, még nincs tisztázva, a teszt közepén áll.

[ Szerkesztve ]

(#6797) molntomi


molntomi
csendes tag

Sziasztok!

Egy olyan kérdésem lenne, hogy a SIEMENS-nél ügye a Hardware configban megtalálható, hogy melyik modul milyen címet kap.

Ugyanez az OMRON-nál megnézhető?? És ha igen hol, vagy esetleg egy szabály van rá?
Digitális input-output még rendben, de az analóg csatornáknak a címét vagy vannak a TC modulok hol tudom megadni, változtatni, megnézni?

A kérdésem nem csak a gyártó által megkapott programokra érvényesek, de a PLC-ről leszedettre is vonatkozik.

CX-Programmert használok.

Ez eltér PLC-nként, nem mindegy,hogy mondjuk CQM1 vagy CJ1M?

Előre is köszönöm a válaszokat!

(#6798) bozig


bozig
tag

Sziasztok!

Az adott feladatot kellene megvalósítanom Tia Portal-ban:

Van egy hajlítógép, aminek mindkét oldalán (A/B) van HMI ugyanarra a PLC-re kötve. Az operátor az A oldalon elindítja a hajlítást, majd átmegy B oldalra. A probléma ott van, hogy B oldalon nem lesz információja róla, hogy az A oldali folyamatból még mennyi idő van hátra, mennyire kell igyekeznie. Erre azt a megoldást találták ki, hogy az A oldali START gomb megnyomására én indítsak el a B oldali HMI-n egy visszafelé számlálót, amin látszik, hogy mennyi idő van még hátra, mire az A oldal végez.

Először egy TON ET-jét gondoltam kiiratni, de az felfelé számol. Szerintetek milyen blokkal lehetne ilyen visszafelé számlálást kiiratni Idő formátumban?

Déjà vu: Állapotfüggő asszociatív paradoxon.

(#6799) Bazs87 válasza bozig (#6798) üzenetére


Bazs87
tag

szia

van 1 inted másodpercben, ameddig a folyamat tart->taktmerkerből pluse-t csinálsz flaggel (igy masodpercenkent van 1 egy ciklus hosszu szignálod) ->es pl így:

u p_1Hz
spbn aa
l szamlalo
l 1
-I
t szamlalo

a szamlalot irathatod is ki.

Vagy fogod es az idozitod akt erteket "megforditod". teljes idő = 100, letelt 70(ami épp fut)->30 van hátra

ergo teljes ido-letelt = ami neked kell

(#6800) bozig válasza Bazs87 (#6799) üzenetére


bozig
tag

Közben én is rájöttem a második megoldásra, pofon egyszerű :)

Nagyon köszönöm a gyors választ!

Déjà vu: Állapotfüggő asszociatív paradoxon.

Útvonal

Fórumok  »  Egyéb hardverek  »  PLC programozás
Copyright © 2000-2024 PROHARDVER Informatikai Kft.