- Magyarországon is kapható a Honor 200 Lite, ennyibe kerül
- DIGI Mobil
- iPhone topik
- Honor Magic V2 - origami
- Apple iPhone 15 - a bevált módszer
- Yettel topik
- Apple iPhone 13 - hízott, de jól áll neki!
- Samsung Galaxy Watch6 Classic - tekerd!
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Fotók, videók mobillal
Hirdetés
-
A két Poco F6 mellett érkezik a Poco Pad is
ma A Poco első táblagépe is egy Redmi termék más néven.
-
Folyamatosan hazudott a bitcoin állítólagos feltalálója
it Egy brit bíró szerint Craig Wright, a bitcoin állítólagos feltalálója folyamatosan hazudott és bizonyítékot hamisított.
-
Bemutatkoztak a Microsoft aktuális Surface gépei
ph A Surface Laptop és Pro hamarosan megjelenő iterációi a 45 TOPS-os NPU-val érkező Snapdragon X platformra épülnek.
Új hozzászólás Aktív témák
-
Szirty
őstag
válasz norbert100 #5249 üzenetére
Ez az a doksi?
FC 44 Function for ASM 450 With Supplements for FB 240
ASM450_FC44_FB240_e.pdf -
Szirty
őstag
válasz norbert100 #5252 üzenetére
A 42. oldalon elakadtam. Milyen PLC-re való példaprogram van ott?
-
norbert100
csendes tag
Az szerintem ilyen általános, mi 314c-2dp-t használunk.
Én programom:
WRIT: L W#16#B00 //DB11-bol ir 0 eltolassal
T DBW 2 //db101 2-es dbw-jében meg kell adnom hogy hova írok/olvasok
L W#16#102 //ir (01) 2 Byte
T DBW 6
L 0 //kezdeti cím MDS
T DBW 8
S DB101.DBX 1.1 // Start commandDoksi 29. oldal:
DBW2 - Pointer to the user data to be written to the MDS. The data are located in DATDB starting at “address”
DATDW.DBW6 - Command code = 01HEX (ez az írás, a 02 az olvasás). Length in bytes of the data to be written
DBW 8 - The data are to be written to the MDS starting at this address.S DB101.DBX 1.1: Itt adom ki a start commandot (Doksi 22. oldal)
Köszönöm a munkásságod, nagyon hasznos az oldalad!!
-
Szirty
őstag
válasz norbert100 #5254 üzenetére
Üdv!
Én most ebbe nem mélyedek bele, de meglepett a PDF-ben lévő példaprogram, ami így kezdődik:
C DB 100
Szerintem ilyen utasítás S5-ön van, S7-en ez OPN.T FW 250
FW is S5-ben van S7-ben MWL DBW 0
S5-ben viszont ez DW lenne, nem DBWPersze bekavarhat még a mnemonikok nyelve is, a német mnemonikokkal keveset dolgozok, de ez nem német, mert:
A F 250.6
S5-ön U F 250.6 lenne, S7-en viszont U M 250.6 -
Dezsi82
tag
válasz norbert100 #5249 üzenetére
Üdv
Valószínű azért látod csak a második adatot, mert az első írási parancsot lényegében ki sem adod. Attól, hogy beállítod a DB adott bitjét, attól még nem fog történni semmi.
Nem tudom az okát, miért két körben akarod írni, de próbáld ki, hogy minden írás/olvasás parancsod után meghívod az FC44-t
A programod így most az első parancsnál beírja az adatokat, utána rögtön felülírja a másodiknak gondolt írási parancsoddal, és a következő PLC ciklusban végrehajtja az írást/olvasást[ Szerkesztve ]
-
Szirty
őstag
válasz Dezsi82 #5246 üzenetére
Üdv Dezsi82!
Az nem oldható meg, hogy az összes esetben eltérő DP címe legyen minden bekerülhető eszköznek?
Akkor egy buszra a HW configban felpakolhatnád az összes lehetséges eszközt.A CPU megnézné melyik eszköz elérhető és az el nem érhető eszközöket deaktiválná az SFC 12 "D_ACT_DP" funkcióval.
-
Dezsi82
tag
válasz norbert100 #5260 üzenetére
Üdv
Még bele is írtad a kommentbe (vagy valaki): L W#16#102 //ir (01) 2 Byte
Tehát ha jelen esetben 4 byte-ot akarsz, akkor: L W#16#104 //ir (01) 4 Byte
Olvasásnál hasonlóan.
Bár nem olvastam a manualt, csak a kommentedből indulok ki -
aky01
tag
-
bodnarg
csendes tag
Sziasztok!
A segítségeteket szeretném kérni az alábbiakban. PLC-ből szertnék indítani egy recept betöltési folyamatot. S7 300-as rendszer MP 277 10" panel Wincc flexible 2008 sp3 a rendszer. Ha egy adott bit logikai 1 lesz akkor szeretném indítani a folyamatot. Ha "proba" logikai 1 esetén szeretném meghívni a scriptet. Proba high limit -> event -> scrip1.
A script írásban nincs igatán tapasztalatom ,ezért a script editor beépített funkicióiból állítottam össze. A PGn futó runtime -al kipróbáltam de sajnos nem működik.
Ha a scriptben lévő rendszerfunkciókat nyomógombokhoz kötöm és először a LoadDataRecord majd a SetDataRecordToPLC funkció fut le a megfelelő paraméterekkel a recept betöltődik úgy ahogy szeretném. Viszont pont ezt szeretném elkerülni hogy ne az operátornak keljen indítani a recept betöltést hanem az önműködő legyen.
Van valami ötletetek miért nem működik a script? Az MP 277 panelra még nem töltöttem rá, csak a PC- próbáltam runtime - al...
A runtime with script debbugger indításakor az a hibaüzenetet kapom hogy nincs debugger telepítve, ezért a "sima" runtime volt elindítva, ekkor nyomógombokhöz kötött változat működött, a scriptes nem.Köszönöm előre is.
Üdv.: BG
BG
-
mcwizard
tag
Sziasztok!
Graph-ban szeretnék egy kis segítséget kérni tőletek:Az alapvető lefutása a graphnak a zöld nyíllal jelölt ág. Alkalomadtán a másik ág feltétele is teljesül és akkor az fut le. Viszont most valamiért "beragadt" a pirossal jelzett lépésben és egyszerűen sehogy nem tudom törölni. Gondolom ha egyszer lefutna a hibát tartalmazó ág akkor törlődne a hiba, de az elég ritkán történik meg. Viszont a beragadt lépés 10s után hibát dob, ezért 10 másodpercenként hibát kell törölni. Próbáltam a graph DB-jében, az ehhez a lépéshez tartozó változókat nullázni, de nem segített az sem.
A DB újragenerálásán és letöltésén kívül más mód lehet a hiba megszüntetésére?
Előre is köszönöm a válaszokat!Üdv, Zoli!
-
mcwizard
tag
-
Szirty
őstag
válasz bodnarg #5272 üzenetére
Helló BG!
Ha egy tag limit eventre akarsz valamit (pl. scriptet indítani) annak három feltétele van:
1. A változónak meg kell haladnia a limitet
2. Be kell állítani a limitet (tag Propeties/Limits). Ha nincs beállítva limit, akkor fogalma sem lesz mit kell meghaladni az eseményhez (alapesetben nincs tag limit beállítva)
3. Az esemény lefutásának további feltétele hogy a runtime észrevegye a limit átlépését amire csak akkor van lehetősége ha a TAG-et olvassa.Azt írtad hogy neked folyamatos olvasásra van állítva, tehát a 3. feltétel teljesül.
Mivel a proba nevű változód boolean, a második feltételnek már nem tudsz eleget tenni, mert logikai változóhoz nem lehet limitet hozzárendelni.
Ennek az az oka, hogy mivel az esemény a limit meghaladása (átlépése) esetén futna le, de felső limitnek csak 1-et adhatsz meg, a logikai változó meg nem lehet 1-nél nagyobb így a limitet nem tudja meghaladni ami miatt ez esemény nem jöhet létre. Így a boolean esetén a limit beállítás is tiltott.Azt javaslom hogy:
Ne egy változóval indítsd a recept betöltését a PLC-ből, hanem a HMI-ből indítsd. Pl. a screen
Vagy használ integer változót a Screen Loaded nevű eseményével azon a screenen amelyikre a kezelő lapoz amikor a receptekkel akar foglalkozni. Így a screen megjelenítésekor lefut a töltögetés, nem kell külön gombot nyomkodnia.Vagy:
Használd a proba tag High limit eseménye helyett a Change value eseményt, a script elejére meg tegyél egy feltételt hogy csak akkor hajtódjon végre amikor proba = TRUEVagy:
boolean helyett használj pl. integer tag-et. Akkor használhatod a limit eseményét, de be kell állítanod neki 1-es felső limitet. Amikor a PLC 1-nél nagyobb értéket ír bele amikor egynél kisebb volt, le fog futni az esemény.
Persze gondoskodnod kell arról, hogy az esemény lefutása után visszaírjon bele "valaki" 1-nél kisebb értéket.Az első módszer javaslom legjobban az utolsót legkevésbé.
-
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. -
bodnarg
csendes tag
Szia Szirty,
Köszönöm a segítséget azt hiszem a második módszert fogom választani. A scriptbe kell esetleg valami késleltetés az adatrekord betöltés és az adatrekord PLC -be töltés utasítás közé? Az nem lehet esetleg olyan gond hogy a betöltés még nem zajlott le ezért nincs is még mit betölteni? Az egyik WinCCflexible vel kapcsolatos írásodnál említettél valami hasonlót amikor a betöltés lefutás kiértékelést mutattad be, ennek azt hiszem az volt a lényege hogy a script alapból gyorsabban fut le mint mondjuk a HMI bemásolja a PLC -be az adatot ezért ha scripten belül akaruk kiértékelni az output tag et alapból nem lehetséges mert a másolás még tart...
Mindenesetre kipróbálom.Köszönöm még 1x.
BG
BG
-
Szirty
őstag
válasz bodnarg #5277 üzenetére
Üdv BG!
Ha azzal kapcsolatban vannak kétségek, hogy a script tényleg mindig lefut-e amikor kell, akkor tegyél ideiglenesen bele egy változó növelést. A változó értékén fogod látni lefut-e vagy sem.
Ha lefut de nem teszi a dolgát, lehet keresni ott a hibát, az átmeneti változót meg kiveszed ha készen van és jól működik.Igen amikor sok adatot kell PLC-ből áthozni vagy az áthozott adatot ugyanabban a scriptben kell feldolgozni akkor előfordulhat inkonzisztencia.
Ritkán használom a beépített recept kezelést és most nem néztem utána, de mintha lenne a receptek mozgatásánál valamiféle segítség arra vonatkozóan hogy megtörtént a művelet vagy sem. -
norbert100
csendes tag
Tartományon belüli indirekt címzésnél cimző regiszterek segítségével hogy csinálom meg a következőt?
Van egy DB-m, amelyben intigerek vannak: a1,b1,c1,a2,b2,c2... és így tovább
Azt szeretném megvalósítani hogy beolvassa az a1-et összehasonlítja az MW4-ben található számmal, majd beolvassa az b1-őt amit összehasonlít az MW8-ban található számmal, és ha az a1=MW4 és b1 MW8 feltétel megvalósul akkor a c1-ben lévő intiger értéket rakja ki a QB37-re mondjuk, utána növelje a pointer értékét és hajtsa végre ezt a vizsgálatot az a2,b2 re és írja a QB37-re a c2-őt, és így továbbb.
Problémám: Hogy tudom a inicializálni a pointert, majd mindig mikor íráss történt növelni a pointer értékét. (Bemásoltam a kód többi részét, hátha abban is van hiba )
OPN DB 8
L P#0.0
Inicializálom a pointert, de a következő körben ez mindig átírja 0-ra
kezd: LAR1
L DBW [AR1,P#0.0]
L MW4
A(
==D
)
L DBW [AR1,P#2.0]
L MW8
A(
==D
)
JCN vege
L DBW [AR1,P#4.0]
T QB 124
Itt kéne növelni a pointert
vege: nop 0[ Szerkesztve ]
-
Szirty
őstag
válasz norbert100 #5279 üzenetére
+AR1 P#6.0
-
Szirty
őstag
válasz norbert100 #5281 üzenetére
Helló norbert100!
Persze hogy felülírja ha rátöltesz mást.
A válasz arra vonatkozott, hogy hogyan lehet növelni az address regiszter értékét.
Hogy megmaradjon el kell menteni
A végén egy változóba
TAR1
T valamilyenduplaszóaz elején meg visszatölteni.
L valamilyenduplaszó
LAR1[ Szerkesztve ]
-
Dezsi82
tag
válasz norbert100 #5281 üzenetére
Üdv!
Különben szándékosan lépteted a címregisztered plc ciklusonként egyet?
Mert ha ciklusba szervezed, akkor nem kell elmenteni, mert egy PLC ciklus alatt megcsinálja, csak a kezd label-t tedd egy sorral lejjebb.
Persze ha kivitlezhető -
soldi3r
veterán
Hello!
S7-1200-nak milyen modjai vannak a vezetek nelkuli netre csatlakoztatasanak? Talaltam egy ilyet, ezen kivul lehetseges mas modon is?
E30 (oo=[][]=oo)
-
Szirty
őstag
válasz soldi3r #5286 üzenetére
Úgy kell minden szó információt erőszakkal kiimádkozni belőled! :-/
Mit jelent neked a "hozzáférni" ebben az esetben?
Változókat kiolvasni? Változókat kiolvasni és változtatni? Programot monitorozni? A PLC Web szerveréhez hozzáférni? Programozni? Jelzéseket fogadni vagy küldeni?
Állandó online kapcsolattal vagy rendszeres kapcsolódással vagy rendszertelenül?"Tavolrol szeretnek neha hozzaferni."
És mennyire távolról?
10 méter?
100?
1000?
Több? -
Szirty
őstag
válasz soldi3r #5288 üzenetére
Hi!
Akkor nézd meg ezt: CP 1242-7-et (6GK7242-7KX30-0XE0)
Ez lehetővé teszi a távoli programozást (is).
[ Szerkesztve ]
-
Flei
csendes tag
Sziasztok!
Szeretnék segítséget kérni.
Lenn egy telemecanique tsx micro plc.
Mivel és hogy tudok rácsatlakozni?
Gondolok itt spec. kábel, szoftver.
Segítséget előre is köszönöm.Fleischi
-
Flei
csendes tag
Köszönöm a segítséget.
Esetleg a progit hol tudom beszerezni?ÜdV:
Fleischi
-
And
veterán
(Az RS485 interfész IC - a PLC felé - persze egyik esetben sem kerülhető meg, de a két integrált áramkörön kívül egyetlen tranzisztor meg néhány passzív alkatrész kell hozzá: [link]. A soros verziót több példányban megépítettem, és egyszer az FT232-est is kipróbáltam próbapanelen. Az is működött.)
-
Peddy789
őstag
Sziasztok, van valamiféle hivatalos lista hogy s7-300 plc milyen események hatására mehet STOP-ba? pl, milyen OB-k kellenek hogy lelegynek töltve (OB 86, 121)
-
Szirty
őstag
válasz Peddy789 #5297 üzenetére
Helló!
Azt mondanám, hogy olyankor megy STOP-ba, amikor egy nem kezelt hiba keletkezik (nem létező OB-t akar meghívni).
Ennélfogva a hibakezelő OB-k tanulmányozása javasolt.
Illetve ha már megtörtént, akkor a diag buffer nézegetése (ott mindig leírja milyen OB-t nem sikerült meghívni).
...és még ott van az STP hívás is, ami programból teszi szándékosan stopba a CPU-t. -
KB.Pifu
tag
sziasztok!
Olvasom az angol weboldalakat a témában és ott is megoszlanak a vélemények.
Ha a vevő nem specifikálja, akkor ti a plc-nél a földelitek a tápfeszültséget (24 dc)?
üdv
Pifu[ Szerkesztve ]
-
Szirty
őstag
válasz KB.Pifu #5299 üzenetére
Üdv!
SELV, PELV, FELV szavak irányába keresgélj!
SELV esetén nem lehet földelt a szekunder oldal.
("SELV olyan villamos rendszer, amelyben nem léphet fel az ELV értéket meghaladó feszültség normál állapot mellett továbbá egyetlen hiba állapotra, beleértve más áramkörök földzárlatának esetét.")
SELV-et ipari automatizálásban csak különleges esetben alkalmaznak.
Új hozzászólás Aktív témák
- -70% HP EliteBook 850 G7:i7 10610U,32GB RAM,512GB SSD,15.6" FHD,vil.MAGYAR numeri.bill,WWAN 4G,Win11
- ASUS TUF Gaming GeForce RTX 4070 Ti 12GB
- Hama Ultraslim Fali konzol (TV)
- ÉRKEZETT Legújabb Bontatlan Új M2 IPAD PRO 2022 12,9 128GB - 256GB Wi-Fi Azonnal DEÁK TÉRNÉL Átvehe
- Női városi bringa (Sierra City)
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen