Hirdetés

2024. április 25., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#5251) Szirty válasza norbert100 (#5249) üzenetére


Szirty
őstag

Ez az a doksi?

FC 44 Function for ASM 450 With Supplements for FB 240
ASM450_FC44_FB240_e.pdf

(#5252) norbert100 válasza Szirty (#5251) üzenetére


norbert100
csendes tag

Igen, ez az.

(#5253) Szirty válasza norbert100 (#5252) üzenetére


Szirty
őstag

A 42. oldalon elakadtam. Milyen PLC-re való példaprogram van ott? :)

(#5254) norbert100 válasza Szirty (#5253) üzenetére


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 command

Doksi 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!! :C :C

(#5255) Szirty válasza norbert100 (#5254) üzenetére


Szirty
őstag

Ü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 MW

L DBW 0
S5-ben viszont ez DW lenne, nem DBW

Persze 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

(#5256) Dezsi82 válasza norbert100 (#5249) üzenetére


Dezsi82
tag

Ü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 ]

(#5257) Szirty válasza Dezsi82 (#5246) üzenetére


Szirty
őstag

Ü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.

(#5258) Dezsi82 válasza Szirty (#5257) üzenetére


Dezsi82
tag

Üdv!
Sajnos nem (bár ha nem találok más utat, akkor ezt kell alkalmaznom), mivel ezek vándorolnak gépről gépre, és az adott gép hardver konfigjához illeszkednek, így aztán sajnos több ilyen egységnek is ugyanaz a címe.

(#5259) Shirchy válasza aky01 (#5242) üzenetére


Shirchy
tag

Köszönöm szépen a segítséget!

"jobb adni,mint kapni" mondta a boxoló... :P

(#5260) norbert100 válasza Dezsi82 (#5256) üzenetére


norbert100
csendes tag

Így hogy meghívom az FC44-et minden írás és olvasás után (teszt jelleggel 2 írás, 2 olvasás van). A DB 21-be az első írást (DB11-ből) beírja a második olvasásnál (DB21-be). Hogy tudnám egy körben írni? ^^
Köszönöm a hozzászólásodat!

(#5261) Szirty válasza Dezsi82 (#5258) üzenetére


Szirty
őstag

Üdv!

Vegyél 50 MMC kártyát, mindegyiken állíts össze egy HW configot, tedd rá a programot is és mindig helyezd be azt amelyik az aktuális összeállításhoz való. :-)

(#5262) Dezsi82 válasza Szirty (#5261) üzenetére


Dezsi82
tag

Üdv!
Az ötlet alapvetően nem elvetendő, jobb, mint a címek állítgatása.
B tervnek tökéletes, köszönöm

(#5263) Dezsi82 válasza norbert100 (#5260) üzenetére


Dezsi82
tag

Ü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

(#5264) norbert100 válasza Dezsi82 (#5263) üzenetére


norbert100
csendes tag

Kommentet én írtam.
Most hogy olvasom amit írtál fogom a fejem hogy tényleg. :))
Kösziii :R

(#5265) aky01


aky01
tag

Sziasztok!

Egy kis segítségre lenne szükségem Wincc Flex-ben.
Arra lennék kíváncsi, hol tudom megnézni, hogy az alábbi képen látható Tag-ek hányas számú DB-hez vannak rendelve.

Amint az a képen is látható, a DB száma nincs feltüntetve, csak az adat területe.
Előre is köszi a segítséget.

[ Szerkesztve ]

(#5266) Dezsi82 válasza aky01 (#5265) üzenetére


Dezsi82
tag

Üdv!
Ezt hívják indirekt címzésnek. Keressd meg a DB_Masch_dat.Progw_Berechnet taget. Annak ez értéke adja meg a DB számát. De ezt csak monitorozva fogod megtudni, offline nem.
Hacsak nem a PLC programban fixen van írva az érték

[ Szerkesztve ]

(#5267) aky01 válasza Dezsi82 (#5266) üzenetére


aky01
tag

Köszi a segítséget.
Szégyellem magam, hogy ezen elvéreztem, pedig már használtam ilyen címzést. :)

[ Szerkesztve ]

(#5268) bodnarg


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

(#5269) Dezsi82 válasza bodnarg (#5268) üzenetére


Dezsi82
tag

Üdv!
Beállítottad a "proba" taged, hogy az olvasás folyamatos legyen?

(#5270) mcwizard


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!

(#5271) Dezsi82 válasza mcwizard (#5270) üzenetére


Dezsi82
tag

Üdv
Próbáltad az init bemenetét a blokknak?

(#5272) bodnarg válasza Dezsi82 (#5269) üzenetére


bodnarg
csendes tag

Szia Dezsi 82!

Azt hiszem igen beállítottam, Cyclic continouson van. 1 s ciklussal

BG

(#5273) mcwizard válasza Dezsi82 (#5271) üzenetére


mcwizard
tag

Hali!
Köszönöm válaszod.
Még PLC újraindítása után is maradt a hiba. Az oldotta meg, hogy törölve lett a graph-hoz tartozó DB, újra generáltam és letöltöttem. Csak még sosem találkoztam ilyen esettel, hogy beragadt volna valahol egy lépés.
Üdv,

[ Szerkesztve ]

(#5274) rsf válasza mcwizard (#5273) üzenetére


rsf
senior tag

Azért egy lépés sosem magától ragad be!
Vmi olyan esemény történt amire nincs felkészítve a progi...
Üdv.

“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“

(#5275) Szirty válasza bodnarg (#5272) üzenetére


Szirty
őstag

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 = TRUE

Vagy:
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é.

(#5276) Dezsi82 válasza mcwizard (#5273) üzenetére


Dezsi82
tag

Ü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.

(#5277) bodnarg válasza Szirty (#5275) üzenetére


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.

:C :R

BG

BG

(#5278) Szirty válasza bodnarg (#5277) üzenetére


Szirty
őstag

Ü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.

(#5279) norbert100


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 ]

(#5280) Szirty válasza norbert100 (#5279) üzenetére


Szirty
őstag

+AR1 P#6.0

(#5281) norbert100 válasza Szirty (#5280) üzenetére


norbert100
csendes tag

Ez okés, de a következő körben felül fogja írni az L P#0.0 és azt fogja betölteni az AR1-es accuba. Vagy neeem? :DD :))

(#5282) Szirty válasza norbert100 (#5281) üzenetére


Szirty
őstag

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 ]

(#5283) Dezsi82 válasza norbert100 (#5281) üzenetére


Dezsi82
tag

Ü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ő

(#5284) soldi3r


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)

(#5285) Szirty válasza soldi3r (#5284) üzenetére


Szirty
őstag

Üdv!

Mivel az S7-1200-on alapból van ethernet csatlakozási lehetőség, nem értem miért akarsz mellé tenni egy RS232-es GSM/GPRS modemet.

Mit szeretnél pontosan?

(#5286) soldi3r válasza Szirty (#5285) üzenetére


soldi3r
veterán

Igen tudom, de nincs a kornyeken kabeles net. Tavolrol szeretnek neha hozzaferni.

E30 (oo=[][]=oo)

(#5287) Szirty válasza soldi3r (#5286) üzenetére


Szirty
őstag

Ú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?

(#5288) soldi3r válasza Szirty (#5287) üzenetére


soldi3r
veterán

Nem tudtam, hogy ennyi lehetoseg van. :) Rendszertelenul, remelhetoleg soha, de ha megis, akkor programozni kellene. Kb 10.000km tavolsagbol.

E30 (oo=[][]=oo)

(#5289) joci9 válasza soldi3r (#5288) üzenetére


joci9
tag

SZia!

Mobilnetes router, sztem olcsóbb és egyszerűbb mint több kütyü.
A beállításokhoz nem értek :-)

ü

(#5290) Szirty válasza soldi3r (#5288) üzenetére


Szirty
őstag

Hi!

Akkor nézd meg ezt: CP 1242-7-et (6GK7242-7KX30-0XE0)

Ez lehetővé teszi a távoli programozást (is).

[ Szerkesztve ]

(#5291) soldi3r válasza Szirty (#5290) üzenetére


soldi3r
veterán

Koszonom! Megnezem.

(#5289) joci9, Gondoltam arra is.

E30 (oo=[][]=oo)

(#5292) Flei


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

(#5293) And válasza Flei (#5292) üzenetére


And
veterán

Szoftver: PL7 Pro, kábel: van többféle USB-s, de sima RS232-es is, utóbbi elég könnyen utánépíthető, rajzom is van róla (mondjuk USB-re sem sokkal bonyolultabb, MAX232 helyett FT232-eshez kell tervezni).

(#5294) Flei


Flei
csendes tag

Köszönöm a segítséget.
Esetleg a progit hol tudom beszerezni?

ÜdV:

Fleischi

(#5295) Szirty válasza And (#5293) üzenetére


Szirty
őstag

Üdv And!

"mondjuk USB-re sem sokkal bonyolultabb, MAX232 helyett FT232-eshez kell tervezni"

Kell oda azért még egy s más... Hacsak nem éri be a 3.3V-os jelekkel a TSX micro...

(#5296) And válasza Szirty (#5295) üzenetére


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.)

(#5297) Peddy789


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)

(#5298) Szirty válasza Peddy789 (#5297) üzenetére


Szirty
őstag

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.

(#5299) KB.Pifu


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 ]

(#5300) Szirty válasza KB.Pifu (#5299) üzenetére


Szirty
őstag

Ü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.

Útvonal

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