Új hozzászólás Aktív témák
-
Szirty
őstag
válasz
miclucky
#5077
üzenetére
Üdv miclucky!
"igazad van,de az 1200-as széria tárolja a szimbi táblát is"
Igaz, de itt végig S7-300-ról volt szó, ami viszont nem. Hogy jön ide az S7-1200?
"A keresztref. generálása után sem a bemeneteket, sem pedig a merkereket nem listázza, csak a DB-ket."
Tudni kell, hogy a keresztreferencia csak és kizárólag az abszolút címeket képes kilistázni. Az indirekt címzéseket természetesen nem, mivel azok futás közben (run time) derülnek ki.
Ez így volt eddig is, így van most is, és ezután is így lesz.
Az kétségtelen, hogy nagy szívás ha egy géphez nincs forrás project és csak a gépről letöltött program áll rendelkezésre. Ez egy ilyen dolog, ám ez a körülmény a programfejlesztőt minősíti...
-
Szirty
őstag
válasz
miclucky
#5073
üzenetére
Helló miclucky!
"nem hiszed vagy tudod is?"
Miért kérdezed? Mit írtam oda? :-)
"egyik sem tölti le a tag-eket, nincs cross-ref"
Nem is lesz. A symbol táblát (tag list) a 300-as nem tárolja (nincs s szükség rá a program futtatásához).
A kereszt referenciákat sem tárolja, azt a fejlesztői környezet generálja bármikor, amikor akarod. -
Szirty
őstag
Helló And!
Kb. ezzel játszottam én is. Fel kellett építeni a HW konfigurációt újra a GSD-k beszerzése után.
Sajnos volt pár kb 10 éves LIKA gyártmányú (olasz) pofibuszos abszolút jeladó is rajta. Ma már nem gyártják, és a gyártónál nincsenek régi anyagok, csak újak.
Szerencsére az új GSD-jével is összejött, a CLASS1-es busz kezelésen nem fejlesztettek. Egy Lenze szervó azonban megszivatott. Volt GSD hozzá, de olyan sokféle varációban konfigolható, hogy nehéz volt kitalálni melyik a nyerő. -
Szirty
őstag
Üdv!
Ha valaki ilyen helyzetbe kerülne:
Siemens S7-300-assal működő profibuszos gép közelébe kerül, amelyhez nincs forrás project, csak az ami a PLC-ről letölthető.
Letölti a teljes tartalmát HW configgal, system DB-vel, adat és program blokkokkal, mindennel együtt (upload station to PG). És a rendszerben olyan (mellesleg működő) DP eszközök vannak, amiket a számítógépen lévő fejlesztői környezet (Step 7) nem ismer, mert nincs GSD telepítve hozzá.Akkor gondolja meg alaposan hogy visszatölti a PLC-re a HW configot ha ennek igénye merülne fel!
-
Szirty
őstag
válasz
miclucky
#5059
üzenetére
Helló miclucky!
"A fent említett vezérlőhöz nincs projekt file-om és step7 v5.5 uploadra kattintva közölte velem, hogy ezt bizony valami új csodával programozták ,melynek neve TIA."
Erről van szó?:
IM151-8 PN/DP CPU Interface Module for ET 200S Released for Delivery
IM151-8 PN/DP CPU
6ES7151-8AB00-0AB0Ha igen, ez programozható STEP7-el is.
Idézet a Siemens WEB oldaláról:"STEP 7
The new CPU can be configured with STEP 7 version 5.4 SP4 and higher.
Configuration of the CPU with older STEP7 versions is not possible." -
Szirty
őstag
Üdv Onishi!
Örülök, hogy sikerült!
Bár erre a hibára nem gyanakodhatott senki, mivel ezt írtad:"Először gyanakodtam a soros-ethernet átalakítóra, hogy az zavarodik össze, de kipróbáltam az ottani gép saját soros portján küldeni, és azon is előjön."
Ebből pedig az jön le (legalábbis szerintem) hogy nem lehetett a soros-ethernet-soros vonalon a probléma mivel ezek megkerülésekor is jelentkezett a hiba.
-
Szirty
őstag
válasz
csomorbalazs
#5016
üzenetére
Helló!
Megoldható PLC-vel is (itt ilyesmiről van szó) de nem hiszem hogy erre a feladatra szánnál kb. 800e Ft-ot.
A PLC nem erre való, de meg lehet vele csinálni, csak drága ilyen célra. -
-
Szirty
őstag
válasz
Mazsika
#5010
üzenetére
Helló!
Soha nem értem meg miért szeretnek a kérdezők információval ennyire spórolni...
Milyen windózra próbálod fel erőszakolni ezt?
- Az S7-Graph nem támogatja a Win8-at és Win8.1-et
- Az S7-Graph SP7 támogatja a Win7 32 bit, Win7 64 bit, és Win7 64 bit SP1-et
- Az S7-Graph SP6 nem támogatja a Win7 32 bit, Win7 64 bit, és Win7 64 bit SP1-et
- Az S7-Graph SP6 támogatja a Win7 32 bitet (SP nélkülit!)Talán ebből ki tudod sakkozni a kérdésedre a választ! :-)
-
Szirty
őstag
válasz
levelko
#5008
üzenetére
Szia!
Az S7 tippek között van: "Idegen nyelvű" Step7 projectek megnyitása
-
Szirty
őstag
Helló Onishi!
Elvileg az OpenTextFile használható így:
Dim fso, oPort
Set fso = CreateObject("Scripting.FileSystemObject")
Set oPort = fso.OpenTextFile("COM1:38400,N,8,1",2)
oPort.Write(Data)
oPort.CloseGyakorlatilag meg nem foglalkozik a port paraméterekkel. Próbáld ki, hátha.
Nálam egyébként azzal a sebességgel megy, amit valamilyen (bármilyen) előtt lefuttatott program beállított az illető soros porton.
Megint csak elméletileg a soros port beállítása ha semmilyen program nem nyúl hozzá, akkor az lesz, amit az eszközkezelőben beállítasz hozzá.
Gyakorlatilag meg nem biztos hogy valamelyik telepített program nem állítgatja át.
Ezzel a módszerrel mindenesetre nem puffereli a kimenő adatokat.Én tennék egy másik gépet a két eszköz közé amire bekötném a soros adatvonalat és terminál programmal monitoroznám mit is küld valójában. Sokminden kiderülhet belőle.
-
Szirty
őstag
Szia jobesz!
Annyit tudok mondani én mivel találkozok (működő berendezésekben és nem új beruházásoknál). Ezek (kb. a gyakoriság sorrendjében):
Siemens S7-300
Siemens S7-200
Siemens S5
Siemens S7-300
Omron (különböző fajták, CPM1, CP1E, C200H, CQM1, stb)Még (ritkán) találkozok Moeller Easy-vel, Siemens LOGO-val, nagyon ritkán AB-vel, stb.
-
Szirty
őstag
válasz
Dezsi82
#4965
üzenetére
Helló Dezsi82!
Ez így sajnos nem működhet, mert:
- UDT változó csak DB-ben lehet
- Az address regiszter 4 byte-os, a DB-n belül lehet csak címezni vele, a DB számát a tartalma nem címzi)Tehát ha #Pultadat egy paraméterben átadott UDT változó és pl. a DB1-ben van valahol, majd csinálsz egy ilyet:
L P##Pultadat
LAR1
L 1
T B[AR1,P#0.0]Akkor az 1-et nem a DB1 #Pultadat változód első byte-jába fogja tölteni (hanem a V stack területre).
Az ok az, hogy szerintem az L P##Pultadat eredményeképpen az accu1-ben az a cím lesz, ahol megtalálod a #Pultadat változót. Valahogy így:Ebből már össze tudsz rakni pár soros programot, ami megnyitja a DB-t és írja olvassa ahol kell.
-
Szirty
őstag
Helló zumi24!
Írd le pontosan mi a jelenlegi összeállítás és hova akarsz tenni mit!
"Eddig 42db kártya van rajta"
Az egyiken, vagy a kettőn összesen? Melyiken milyenek a kártyák? Nem mindegy hány bit és hogy ki vagy bemenet! Azt sem mindegy hogy a library-ból milyen típust akarsz rátenni (vannak kavarások a byte-okkal).
750-333 bus coupler limit:
Max input proces simage: 244 bvyte
Max output proces simage: 244 bvyte
Number of I/O modules: Max 63 -
Szirty
őstag
válasz
Shirchy
#4931
üzenetére
Helló!
Fogalmam sincs hogyan kezeli a drive ezt az esetet. Ha ilyenkor rámpázik, akkor a rámpa meredekségétől és az impulzus sebességtől függően lesz egy jó nagy követési hibád.
Ha az impulzus szám "lemaradását" kezeli, akkor a követési hibát kompenzálja, ha nem kezeli akkor megmarad.A nulla pontra állás szerintem megoldható a drive üzemmód váltásával. A leírásban említi,hogy on the fly lehet módot váltani akár a motor forgása közben is, de hogy ez alatt pontosan milyen üzemmódokat kell érteni azt nem tudom.
Tüzetesen át kell nézni a leírását. -
Szirty
őstag
válasz
Shirchy
#4929
üzenetére
Üdv Shirchy!
Igen a DIR jel az irányt határozza meg.
"Azt hogy csak adott időben menjen a szervo előre vagy hátra... úgy gondoltam megoldani,hogy a step benetet jelét vagy szakítom vagy engedem,így csak akkor kapna step jelet mikor mennie kell."
Kérdés az, hogyan reagál a szervó arra, ha 0 imp/s utéán egyszercsak kap 200 imp/s-et.
A rémpaidőket be kell tartani -
Szirty
őstag
válasz
Shirchy
#4926
üzenetére
Üdv Shirchy!
Az inkrementális jeladó jelét a step bemenetre kötve elvileg a szervó pozíció szinkronban fog forogni a jeladóval.
A két forgás közötti eltérést azonban a szervó step/dir felbontása (mennyit fordul egy lépésre) és az encoder felbontása fogja adni. Ha ez nem megfelelő, akkor sokmindent nem tehetsz (hacsak a szervóban nem paraméterezhető ez).
A dir jelet neked kell előállítani. -
Szirty
őstag
válasz
01101010111
#4924
üzenetére
-
Szirty
őstag
válasz
01101010111
#4922
üzenetére
Helló!
Fel tudok ajánlani ProSave v6.0 és 7.3.3 verziókat próbálkozás céljából...
-
Szirty
őstag
Üdv!
Azt szerettem volna elérni, hogy kissé bővebben kifejtsd mit is szeretnél, hogy lehessen rá érdemben válaszolni.
A kérdésedhez, miszerint "hogyan lehet LOGO-ból kiirtani a jelszó kérést" a következő körülményeket tudom elképzelni:
1. Írtál egy programot LOGO-ra, majd azt jelszóval levédted, így ismered a jelszót de most szeretnéd ha nem kérné a jelszót, viszont nem tudod hogyan lehet kikapcsolni a jelszavas védelmet és erre vagy kíváncsi.
2. Szereztél egy LOGO-t, de van benne egy program ami jelszót kér. Szeretnéd használni valami másra a LOGO-t nem érdekel mi van benne, meg akarsz szabadulni a jelszavas védelemtől és a benne lévő programtól, hogy tiszta lappal kezdhess.
3. Van egy LOGO, ami jelszóval védett programot tartalmaz és neked ezt a programot kellene módosítani, ám a jelszót nem ismered.
Majd legközeleb...
-
Szirty
őstag
válasz
DP_Joci
#4905
üzenetére
Helló DP_Joci!
Én ezt úgy csinálom, hogy amikor a hajtásnak forognia kell, akkor 100 ms-onként mintát veszek a számláló értékéből (pozícióból) és kivonom belőle az előzőleg vett minta értékét, majd veszem az eredmény abszolút értékét.
Így megkapom az egy tized másodperc alatt megtett út nagyságát. Ha ez néhány másodpercen keresztül túl kicsi vagy túl nagy, akkor hibát jelez.
Írtam erre egy blokkot.Azt kell jól kitalálni hogy milyen gyakoriságú legyen a mintavétel.
Ha az encoder felbontása kicsi vagy az üzemszerű mozgás nagyon lassú is lehet, akkor a tized mp lehet hogy rövid. Illetve jól kell meghatározni a határértéket amin kívül hibajelzés keletkezik.Rosszul megválasztott értékekkel hamis hibajelzéseket ad, vagy a valós meghibásodást későn veszi észre.
Ez észreveszi ha nem jönnek impulzusok az encoderről. Azt viszont nem feltétlenül, ha az encoder tengely és a hajtás kapcsolata elfordul egymáshoz képest (pl. eltörik az encoder kuplung, de egymáshoz ér még a két fele és hajt, de néha kihagy egy-egy kört).
Ezzel ugyanis keletkezik működés közben egy pozíció offset, az meg géptől függően törést is okozhat.Lehet egy ellenőrző pontot (szenzort) tenni valahova a mozgás útjába ahol gyakran halad el. Amikor a szenzor érzékel, akkor meg kell nézni, hogy az encoder pozíció szerint is ott van-e. Ezt nyilván egy pozíció ablakkal kell vizsgálni. Ha az ablakon kívül érkezik a szenzorról impulzus, vagy az ablakon belül nem érkezik róla impulzus, akkor pozicionálási hiba van.
-
Szirty
őstag
válasz
Shirchy
#4901
üzenetére
Üdv Shirchy!
Ha az unitronics-nak van nagy sebességű impulzus kimenete és a szoftvere ismer valamiféle motion control funkciót, akkor nem kell áthozni a PLC-be a motor encoder jeleit. A szervó tud STEP/DIR módot. Ezzel megoldható lenne. De ha a PLC nem tud STEP/DIR jelet kezelni, akkor nem érdemes foglalkozni vele.
A másik mód amit meg lehetne ezzel a felállással csinálni az, hogy a szervót sebesség vezérlés módban hajtod egy analóg PLC kimeneten keresztül. Ekkor a PLC nem ismerné a munkapad pozícióját. A szervónak küldött szinkron sebességet a PLC módosítaná a munkadarab mozgása közben a mért távolság és az elérni kívánt vágási pozíció közötti különbségének arányában.
Így a vágási pont közeledtével a szervónak egyre nagyobb sebességreferenciát adna és a munkapad sebessége épp akkor érné el a szinkron sebességet, amikor a vágási ponton van.
Ez valószínűleg nem lenne nagyon pontos, nem tudom mekkora pontosság kell.Amennyire láttam a szervóról szóló PDF-ekben az encoder kimenetén az jön ki ami a motor feedback encoderről bejön.
-
Szirty
őstag
válasz
Shirchy
#4899
üzenetére
Helló Shirchy!
Jól számoltál 3000rpm-hez 3000 rev/pulse jeladónál 150kHz jön ki.
Ide tehát a 10kHz-es bemenet kevés lenne.De van amit nem értek.
A szervó motoron lévő encoder 150kHz-es jelét nem a PLC-d fogadja szerintem, hanem a szervó vezérlő.Gondolom a munkadarab mozgását (az előző vágás óta megtett útját) is kell mérni és a szervóval mozgatott munkapad pozícióját is.
Ez két encoder. Egyiket a szervó vezérlő kezeli (munkapad helyzete) a másikat a PLC, de nem írtad ez milyen enecoder lenne. Na az nem lehet olyan ami 10kHz-nél nagyobb frekvenciájú jelsorozatot ad.Melyik eszköz pontosan milyen szerepet kap a műveletben?
-
Szirty
őstag
Helló!
Ha SF van, akkor van hiba is szerintem.
A diag buffer egyébként sem lehet üres, mert minimum az benne kell hogy legyen, amikor a CPU elindult (hacsak nem törli a program).Ha van lehetőség törölj minden hibakezelő OB-t a CPU-ból az OB1 első sorába meg tegyél egy BE-t

Nyisd meg online-ban a HW configot. Az eszközöknek van saját diag bufferük, nézd meg azokat is.
Sok DP eszköznél lehet állítani a diagnosztikát hogy mi történjen amikor... Lehet hogy ez van tiltva.De ha maga az eszköz nem is szól (nem okoz interruptot) SFC hívásokkal akkor is le lehet kérdezgetni tőlük hogy érzik magukat. Én ebbe az irányba nézelődnék...
-
Szirty
őstag
válasz
Mazsika
#4893
üzenetére
Helló Mazsika!
Az LMN_PER jó lehet, de az azt feltételezi, hogy az értékeket százalékra normalizáltad, mivel:
Kimenő érték = Beavatkozó érték * (27648 / 100)
számítást végzi.Ami miatt az eredmény akkor ad 100%-os analóg jelet, ha a beavatkozó értéked 100.
Ez akár jó is lehet, de nem árt átgondolni."Az I és D tagot időzítve kapcsoljam, vagy valamilyen feltételhez kellene kötni?"
Nem! Én arról beszélek, hogy a hibakeresés során kapcsold ki őket.
Egyébként szerintem nem szükséges őket kapcsolgatni, a szabályzás felfüggeszthető az INT_HOLD bemenettel is, ha használod az I tagot.
De ha azt akarod, hogy nulla legyen a beavatkozó érték bizonyos esetben, akkor ez is egy megoldás. -
Szirty
őstag
válasz
Mazsika
#4888
üzenetére
Helló!
Szerintem először csak a P tagot kapcsold be! A D-t és I-t ne!
"A blokkon a PV_IN-en keresztül etetem egyből a hőfokkal"
A PID kimenetén megjelenő értéket hogyan használod fel?
Ha ugyanis (mint írtad) nem normalizálod a hőmérsékletet a bemeneten (nyilván annak érdekében hogy a beállított értéket is hőmérsékletben lehessen megadni neki) akkor a beavatkozó érték is hőmérséklet lesz, ami nem biztos hogy megfelelő értéktartomány egy propszelep vezérléséhez... :-) -
Szirty
őstag
válasz
Mazsika
#4883
üzenetére
Üdv Mazsika!
Nem írtad le konkrétan melyik PID szabályzót használod (van ám sok), de ha jól értem akkor a standard PID controllerek közül a FB41 “CONT_C”-t.
Erre fog vonatkozni a válaszom is. Ha nem ezt a PID controllert használod, akkor így járás, de utálok fölöslegesen irkálni.A szabályzó újraindítására a COM_RST (complete restart) paraméter szolgál. Ha ez TRUE értékű. Ez mindössze annyit csinál, hogy a belső változók és kimenő paraméterek értékét visszaállítja alapértékre.
Hogy melyiknek mi az alap értéke az kiderül az FB41 instance DB-jéből. Megnyitod és megnézed mi van a DB "Initial value" oszlopban. Erre áll be. A COM_RST nem élvezérelt, az init value mindaddig benne lesz a változókban amíg állapota TRUE. Természetesen amint FALSE lesz, az összes olyan változó aminek a programban értéket adsz azonnal felülíródik!!!Erre írok egy példát.
Ha a beállított értéked 20 (SP_INT) a mért értéked pedig 50 (PV_IN) és az integráló tag be van kapcsolva (P_SEL=TRUE) az erősítés 1 (GAIN) akkor lesz egy -30-as hibajeled és természetesen egy ezzel azonos beavatkozó értéked (LMN).
Ha most a COM_RST taposod (TRUE) akkor minden nulla lesz amíg ez TRUE, de abban a pillanatban ahogy felengeded (FALSE) minden azonnal visszaáll a fenti értékekre, mert kívülről (az FB41 paramétereivel) azonnal felülíródik. Tehát ez teljesen természetes, más nem is történhet, ezen nem kell csodálkozni!
Ami nem íródik felül azonnal az az integráló tag aktuális értéke, ami szintén 0 lesz egy COM_RST alatt. Hiszen üzem közben az LMN_I szépen ballag lefele a padlóig, vagy felfele a plafonig a hibajel és az integrálási idő által meghatározott mértékben, vagy beáll valahova. A COM_RST hatására nulláról újrakezdi ezt a "ballagást". Ez persze nagyon gyors is lehet rövid integrálási idő beállítása mellett vagy extrém hibajel esetén. Az integráló tag egyébként külön is alaphelyzetbe állítható az I_ITLVAL=0 és I_ITL_ON=TRUE állapottal.A legjobban úgy lehet tetten érni hogy a szabályzód miért akad ki, ha figyeled a hibajelet, és a 3 beavatkozó értéket (LMN_P. LMN_I ás LMN_D). Azonnal látni fogod melyik tag viszi el a beavatkozó értéket.
Egyébként PID élesztést lépésenként érdemes csinálni. ELőször kis GAIN (akár 0-val kezdve) és csak a P tag legyen bekapcsolva, az I lés D kikapcsolva!Van pár alapszabály a PID blokk paraméterezését és használatát illetően. Pl. hogy az értékeket normalizálni kell (vagy legalábbis célszerű) kézenfekvően %-ra.
Nagyon sok helyen elbukhat a dolog kezdve azzal, hogy pl. bekapcsolod a PVPER_ON-t, de a PV_IN-en eteted nem a PV_PER-en keresztül. EZ nagyon ostoba hiba szokott lenni.
Vagy a PV_PER-en eteted, de rosszul (vagy sehogy) van megadva a normalizáláshoz szükséges PV_FAC, PV_OFF értéke. Ha már a hibajel kiakad valamelyik végtelenbe (+ vagy -), akkor bizony itt van a baj!Ráadásul a PID blokkot nem, tudom hogyan hívtad meg, de ha P vagy D tagot is használod benne, akkor nagyon fontos hogy pontos időközönként legyen meghívva és ezt az időközt pontosan közölni kell vele a CYCLE paraméterben. ha ezek közül egyik feltétel sem teljesül, akkor a D és az I tag hülyeséget fog csinálni, mert a blokknak fogalma sem lesz arról mennyi idő telt el az előző lefutása óta.
-
Szirty
őstag
Helló And!
"A gond akkor van, amikor az ember egy csomó olyan, PLC vezérelte gépet 'örököl', amelyekhez sosem volt meg a gyári program"
Igen, ez sajnos gyakori. Még inkább sajnos, hogy sokszor az új berendezésekhez sem adják át a forrás anyagot szerzői jogi okokra hivatkozva. A háttérben (szerintem) valójában inkább az van, hogy szeretnék ha probléma esetén őket hívná a megrendelő a géphez.
Az meg teljesen általános, hogy használtan vásárolt, régi géphez nincs ilyen."Sajnos néha hajmeresztő dolgokra kényszerülünk a működőképesség fenntartásához egy-egy alkatrész vagy HMI cseréjekor, apróbb módosítási igényeknél. Gondolom, ezzel nem vagyunk egyedül."
Nem vagy egyedül.
Sajnos ha egy termelő üzemben meghibásodik egy "mission critical" gép, akkor azzal azonnal csinálni kell valamit hogy működjön. Ha ez a gép valami hibiszkusz HMI-vel van ellátva (főleg ha az halmozottan hátrányos helyzetű vagyis olasz gyártmány) amihez nem hogy forrás project nincsen, de fejlesztői program sem és tartalék készülék sincs, de már a cég sem létezik amelyik gyártotta, akkor bizony születnek "érdekes" megoldások... -
Szirty
őstag
válasz
Peddy789
#4864
üzenetére
Helló Peddy789!
Nos igen, a nagyobb programok visszafejtése amiben se szimbólum név, se komment nincs és ráadásul még STL is, nem könnyű.
Főleg ha tele van indirekt címzésekkel és DP eszköz kezeléssel :-)
A legjobb ha ezt egy sőt három-négy operátor panel is fűszerezi amiknek szintén nincs meg a forrás anyaga és arról letölteni sem lehet a PC-re :-)Épp ezért nem szabad soha senkitől olyan gépet, berendezést, gyártósort vásárolni amihez nem adják mellékelve a teljes aktuális forrás anyagot kommentekkel, mindennel együtt. Még ha azok nem is magyarul vannak.
10 vagy akár 100 milliókat lehet ilyenen bukni és NEM túlzok! -
Szirty
őstag
Sziasztok!
Szerintem öntsünk tiszta vizet a pofámba (az upload után STL lesz vagy sem témával kapcsolatban).
Nem akarok okoskodni, csak leírom az én verziómat...Nem lesz STL minden ha a PLC-ről töltöd vissza egy üres projectbe!
De nem is jön vissza feltétlenül minden pont azon a nyelven amin a blokkot (vagy network-öt) írták.Ha a NW-öket LAD-ban és FBD-ben írták, és nem nyúltak bele, akkor az LAD-ban jön vissza ami LAD volt és FBD-ben ami FBD volt. Amit STL-ben toltak rá az pedig STL-ben jön vissza.
De:
Szándékosan lehet olyat csinálni, hogy a létrában írt blokkot átváltják STL nézetre és network-öket összemásolnak (esetleg az egész blokkot egybe, láttam már olyat) vagy NOP 0-kat írkálnak bele.
Ettől ugyanúgy fog működni, viszont innentől kezdve nem lehet sem létrában, sem FBD-ben megjeleníteni.Továbbá:
Bizonyos létrában készült logikai sort nem lehet megjeleníteni FBD-ben és bizonyos FBD-ben írt logikai sort nem lehet létrában ábrázolni. Ez a kettő közötti különbségből adódik. Ha valaki akarja, akkor írok erre konkrét program példát. Az ilyet mindig meg lehet jeleníteni STL-ben.
Néha a fordító maga is belegabalyodik a történetbe és gondol egyet, és lesz olyan network, amit eddig mutatott létrában, de onnantól soha többé nem fog. Ez olyankor van, amikor egy blokk másik blokkok paraméteres hívásait tartalmazza és logikai bemenetei elé inverz feltételt vagy több logikai kapcsolatból álló sort írunk, majd oda-vissza váltogatjuk az STL/LAD/FBD nézet között a szerkesztőt és TEMP változókkal is operálunk.
Ezt nehezebb reprodukálni és valószínűleg szoftver hiba okozza (Step7 V5.4 SP4+HF6), pontosan le tudom írni milyen helyzetben történik meg, de nem tartozik most szorosan a tárgyhoz.És van még egy ide vágó eset:
Ha a blokk magasabb szintű programozási nyelven készült (Graph, HighGraph vagy SCL) akkor azt sem fogjuk a PLC-ről letöltve az eredeti nyelven látni még akkor sem, ha a Step7-ünk rendelkezik azzal a modullal ami kezeli az adott nyelvet.
Pl. ha SCL-ben írt blokkot töltünk vissza, hiába van S7-SCL a gépünkön akkor is csak STL-ben fog megjelenni. Ennek oka az, hogy a PLC csak az SCL-ből STL-re lefordított kódot tartalmazza, az eredeti SCL forrásprogramot nem (mivel a program futtatásához arra nincsen semmi szüksége).A LAD, FBD átjárhatóbb, mert az nem magas szintű nyelv, inkább csak az STL kód egy speciális megjelenítési formája.
Ezért lehet STL-ben is olyan programot írni amit meg lehet jeleníteni létrában vagy FBD-ben, csak szigorú szabályokat kell betartani hozzá. Általában ilyesmit nem csinálunk mert fölösleges, de lehetséges megcsinálni. -
Szirty
őstag
válasz
#34322688
#4854
üzenetére
Helló devergo74!
Ajajj...
No mindegy:
Zelio Logic 2 Felhasználói kézikönyv 2004
Kiválasztási útmutató 0 Zelio Logic vezérlômodulok 0 Kompakt és moduláris vezérlômodulok -
Szirty
őstag
válasz
RochaShade
#4848
üzenetére
Helló RochaShade!
Nem egészen világos, hogy ez a project amin dolgozol mi célt szolgál.
Ez valami iskolai feladat, diploma munka vagy ilyesmi?Meg kell jegyeznem,hogy olyan berendezésre elméletben programot írni amilyet még soha még csak nem is láttál és csak a leírások alapján próbálod megismerni és nem is fogsz vele találkozni rettentő kockázatos.
A siker esélye rendkívül kicsi (siker alatt működő megoldást értek és nem sikeres vizsgát).
-
Szirty
őstag
válasz
RochaShade
#4848
üzenetére
Hi!
"mi takar a megfelelő terület?"
Nyilván kell a szervónak egy célpozíció ahova majd el kell mennie ha kap egy start parancsot és megvannak a mozgás egyéb feltételei.
Nyilván ez a célpozíció egy koordináta (szám).
Nyilván ezt közölni kell vele valamiféleképpen
Nyilván bizonyos memóriaterület az amin keresztül ezt közölni lehet.
Nyilván ez az a szóbanforgó "terület"
:-)
-
Szirty
őstag
válasz
13128814
#4841
üzenetére
Üdv 13128814!
"Gyártásban milyen PLC-ket használnak túl nyomó részt? Vagy ez teljesen véletlenszerű?"
Elég véletlenszerű, de vannak elterjedtebb típusok.
A nagyobb cégek általában tudatosan törekszenek arra, hogy az automatizálási rendszerük lehetőleg homogén legyen. Tehát lehetőleg egy gyártó PLC-it használják. Ennek gyakorlati oka van. Az, hogy kevesebb különböző fajtára kell felkészülni, kevesebb fajta tartalék alkatrészt kell raktáron tartani, kevesebb különböző és drága szoftvert kell vásárolni és kevesebb szakemberrel is megoldható az üzemben tartásuk. Ez nem csak a PLC-re igaz, hanem mondjuk a szenzorokra, pneumatikára, frekvenciaváltókra, szervóhajtásokra hidraulikára is.De vannak kisebb cégek is, ahol összevásárolnak mindenféle, főleg nyugaton leselejtezett öreg gépet. Ezekben a legelképzelhetetlenebb megoldások is összejöhetnek egy helyen. Nem hogy azt nem tudják milyen PLC vagy vezérlő van bennük, de sokszor dokumentáció és rajz sincsen ezekről.
Aztán amikor kimerül a PLC-ben az elem ami miatt törlődik belőle a program, akkor jön a hoppá.Én a legtöbb helyen Siemens és Omron vezérlőkkel találkozok nagy számban. Pl. AB-vel nagyon ritkán.
Előfordul néhány Moeller, Telemecanique (Schneider) és Mitsubishi is. -
Szirty
őstag
válasz
13128814
#4841
üzenetére
Helló 13128814!
"Azt hittem, hogy egységes dolog ez. Pl. ha én létrában programozok, akkor az minden PLC-n ugyanaz."
Maga a létra bizonyos fokig ugyanaz, mivel kitaláltak egy szabvány ami meghatározza, de nem túlságosan szigorúan.
De pl. a címzésmódok, címtartományok teljesen eltérőek lehetnek egyes PLC-knél. Omronnál pl. nincs betűjel a kimenetek, bemenetek és a CIO terület nem használt bitjei előtt amiket belső változónak használhatunk, mert ugyanaz a memóriaterület. Az hogy egy bizonyos cím Pl. 2.06 az éppen kimenet bemenet vagy belső változó lesz az a hardver kiépítéstől függ, került-e arra a címre valami. Ezért itt nem lehetséges hogy ugyanaz legyen a címe egy bemenetnek és egy kimenetnek.Ugyanakkor pl. Siemensnél külö, egymástól független terület a bement, a kimenet és a belső változó. Hogy melyikről van szó az a cím elé írt betű mutatja. Pl. I6.0, Q4.1, M80.2.
Ebből kifolyólag lehet ugyanazon a címen egyszerre mindhárom is akár, mert másik terület. Pl. I6.0, Q6.0 és M6.0 teljesen más bitet címez az azonos cím ellenére.
Az omron 16 bites címekkel dolgozik, így pl. egy bemenet címe lehet 2.11 is a siemens byte címekkel dolgozik, így a pont utáni bit cím csak 0-7 tartományba eshet, 11 nem lehet.
És akkor csak kettőt említettem. A különbségek elsősorban a rendszerközeli eltérésekből adódik, de az utasítás készlet is eltérő.
Ha vizuális típus vagy, akkor nézd meg ezt a linket. Itt összegyűjtöttem pár PLC programozói környezet screenshotját."S7 200-at, ha minden igaz. Ha én erre fókuszálok, akkor a többi S7 is menne?"
Ezt a típust már nem gyártják. Indulásnak jó lehet, mert van hozzá magyar nyelvű rendszer leírás. (528 oldal)
Ráadásul a programozása és tulajdonságai jelentősen eltérnek a többi S7-től, teljesen más program kell a kezeléséhez pl.
A Siemens az S7-1200-at szánta az utódjának."Anno mintha szóba jött volna az egyik órán, hogy vannak virtuális PLC-k, amivel lehet szimulálni a programot. Ez helytálló?"
Igen, néhány PLC fejlesztői környezete tartalmaz PLC szimulátort. Ilyen pl. az Omron CX-One szoftvercsomagja is (de nem képes az összes típus szimulációjára).
Ilyen a Siemens LOGO programozható relé java-s Logosoft programja is, illetve létezik szimulátor az S7-300, S7-400 és S7-1500 sorozathoz is.
Az oldalamon van néhány project ami kimondottan szimulátorra épülő gyakorló feladat, kidolgozott megjelenítő felülettel:Tartály töltés
Fúrógép szimuláció
Mártódaru szimuláció
Lift szimuláció
Tolópad szimulációNagyjából a nehézségi szint sorrendjében felsorolva (némelyikhez video is van), Sajnos a szükséges szoftverek beszerzése gond lehet, mert kereskedelmi programok...
-
Szirty
őstag
válasz
13128814
#4832
üzenetére
Helló 13128814!
"Kerestem a neten, de szinte mindenhol kivétel nélkül 2000-es évek elejei anyagok vannak fent."
Mélyebben csak akkor tudsz belemerülni a témába, ha konkrét típus programozásával ismerkedsz.
Ezért a gyártók dokumentumait keresd. Azokból van friss is. Sajnos magyar nyelvű nem nagyon.Esetleg ajánlom ezt: http://szirty.taviroda.com/
és ezt: http://ob121.com/ -
Szirty
őstag
válasz
RochaShade
#4818
üzenetére
Helló RochaShade!
Hogyan "vezérled" azt a motort?
Mágneskapcsolóval? Amíg bekapcsol addig megy?
Meddig megy, milyen visszacsatolás van? Véghelyzet?
Vagy ez egy szervó motor szervó vezérlővel?
vagy frekvenciaváltós hajtás útmérő encoderrel?
Vagy az de útmérő encoder nélkül?
Vagy nem az de útmérő encoderrel?5mm a mozgás teljes úthossza, vagy 5mm-es pontossággal szeretnéd pozicionálni?
-
Szirty
őstag
válasz
TotoThomas
#4816
üzenetére
Helló TotoThomas!
"Nincs valakinek valami doksija, amit olvasgathatnék?"
STEP 7 Professional V12.0 SP1 System manual: 10066 oldal
WinCC Basic V12.0 SP1 System manual: 4296 oldal
WinCC Comfort/Advanced V12.0 SP1 System manual: 6394 oldal
WinCC Professional V12.0 System manual: 6290 oldalLesz mit olvasgatni...
-
Szirty
őstag
válasz
Bakareszia
#4810
üzenetére
Helló Bakareszia!
Tényleg leírhattad volna milyen PLC-n milyen fejlesztői környezetben. S5, S7, 200? 300? 1200? 1500? Step7? TIA portal? Miért olyan nagyon nehéz pontosan kérdezni?
Mindegy nem találgatok, ha nem arra válaszolok amire szeretnéd, akkor így jártál:
S7-300/400-ra STEP7 5.4-ben pl. így lehet "léptetni" (ha egyáltalán ugyanazt érted léptetés alatt, mint amire én gondoltam, de ha nem, akkor megint egy így járás a kérdésed "javára").A DB szerkezete (a kép nem mutatja az egész blokkot).

Ez az egy sor minden I0.0 felfutó élénél a DB17-ben lévő 40 darab egymást követő integer értéket egyel lejjebb (a magasabb cím felé) lépteti és az elsőbe nullát ír. A léptetés után minden sor tartalma az előző sor korábbi tartalma lesz, az utolsó integer (DB17.DBW78) tartalma elvész.
A módszer a BLKMOV és a #TEMPArray megfelelő módosításával természetesen más méretű vagy más címen lévő adatok léptetésére is használható.
De ha nagyon sok adatot kell léptetni, akkor kimerülhet a data stack (nem fér el a kellő méretű TEMP tömb a memóriában). Abban az esetben más módszert kell alkalmazni. -
Szirty
őstag
válasz
Achilles83
#4807
üzenetére
Helló Achilles83!
Azt kérdezed hogyan lehet megjeleníteni, de valójában (amennyire látom) kezelni szeretnéd.
byte-by által leírt módszert gyakran használják.
Ezt hívják fix pontos ábrázolásnak. Bár én a BCD-t nem annyira javaslom erre. -
Szirty
őstag
válasz
KB.Pifu
#4797
üzenetére
Üdv!
Nehéz téma ez, amiért szinte senki nem rajong.
Miért nehéz? Sok oka van. Némelyik már elhangzott vagy történt rá utalás.Az egyik hogy ez olyan terület, ahol egymásnak ellentmondó dolgoknak egyszerre kell megfelelni. Emiatt az ellentmondás miatt van az, hogy minden munkabiztonsági intézkedés magát a munkát is akadályozza kisebb vagy nagyobb mértékben. Persze a helyzet ott élesedik ki a legjobban, ahol ez az akadályoztatás nagy mértékű. Tipikusan ilyen eset amikor a munkavégzés bizonyos műveletei fokozottan balesetveszélyesek, de azok nélkül a munka nem végezhető el.
Ez azért kellemetlen, mert ilyen esetekben a munkavédelem és munkabiztonság által rögzített alaptételekre kell kiskapukat építeni.
Mindez nagyon elbonyolítja és nehezen értelmezhetővé teszi a szabványokat is, ami már messze túl van azon a szinten hogy egyértelműnek és világosnak lehetne nevezni. Ez egyfajta "bibliai" jelleget ad az egésznek, ami arra tendál, hogy mindenki úgy értelmezi ahogy akarja.A másik ok, hogy egyre inkább úgy érzem, hogy a munkabiztonság már nem a balesetmegelőzésről és a kockázat csökkentéséről szól, hanem elsősorban a pénzről és a felelősség áthárításáról.
Most leírhatna néhány általánosságban érvényes irányelvet én vagy bárki más is, de szabványra való pontos hivatkozás nélkül égbekiáltott szó és mindig bele lehet kötni hogy az úgy milyen esetben miért nem jó. Sajnos ilyen eset szinte kivétel nélkül van ezen a területen.
-
Szirty
őstag
válasz
Mazsika
#4776
üzenetére
Helló Mazsika!
"Jo lenne valami egyértelmű szabvány ezekre a dolgokra, csak nem találok sehol."
Azért nem találtál, mert egész egyszerűen legalább 20 éve ilyen nem létezik!
A szabvány messze-messze nem egyértelmű. Sokrétű, szerteágazó, ezer feltételtől függ melyik kitétele hogyan értelmezendő és alkalmazandó.Már-már olyan, mint a biblia: úgy értelmezed ahogy akarod. Egyre inkább bármit bele lehet magyarázni utólag Csak azt nem hogy jól lett megvalósítva valami).
-
Szirty
őstag
válasz
byte-by
#4772
üzenetére
Helló byte-by!
"a kétkörös biztonsági relét nyugtázni kell."
Ilyen szabály, ami ezt így előírja szerintem nincs, Sok biztonsági relének van "automata" nyugtázás módja is.
Persze adott (konkrétan meghatározott) körülmények megléte esetén vagy magasabb biztonsági kategóriánál nyilván elő lehet írni. -
Szirty
őstag
Helló!
Használj másik skálázó blokkot. Vagy írj egyet.
Vagy itt van egy: FC109FUNCTION FC 109 : VOID
TITLE =
//Skálázás
//Az #InMin-#InMax tartományt #OutMin-#OutMax tartományra skálázza
//
//Out=((In-InMin)*((OutMax-OutMin)/(InMax-InMin)))+OutMin
//InRng=InMax-InMin
//OutRng=OutMax-OutMin
//R=OutRng/InRng
//Out=((In-InMin)*R)+OutMin
AUTHOR : Szirty
VERSION : 0.1
VAR_INPUT
In : INT ; //Skálázandó érték
InMin : INT ; //Bemenő tartomány minimuma
InMax : INT ; //Bemenő tartomány maximuma
OutMin : REAL ; //Kimenő tartomány minimuma
OutMax : REAL ; //Kimenő tartomány mximuma
END_VAR
VAR_OUTPUT
Out : REAL ; //Skálázott érték
END_VAR
VAR_TEMP
InRng : REAL ; //Bementi tartomány
R : REAL ; //Szorzó részeredmény
END_VAR
BEGIN
NETWORK
TITLE =
//
//
//
//InRng=InMax-InMin
L #InMin;
ITD ;
DTR ;
L #InMax;
ITD ;
DTR ;
-R ;
T #InRng;
//OutRng=OutMax-OutMin
L #OutMin;
L #OutMax;
-R ;
//R=OutRng/InRng
L #InRng;
/R ;
T #R;
L #In;
L #InMin;
-I ;
ITD ;
DTR ;
L #R;
*R ;
L #OutMin;
+R ;
T #Out;
END_FUNCTION -
Szirty
őstag
Helló rsf!
"A Siemensnél nincs Online edit mint pl az omronnál vagy az AB-nél."
Nem tudok róla hogy ne lenne, hiszen használom ezt a módot.
Bár ritkán. Csak olyankor, amikor az offline blokk nem azonos az online blokkal és nem akarom összehasonlítani vagy ide-oda töltögetni csak meg akarom nézni miért nem megy valami, akkor online nyitom meg.
Semmi gond nincs ezzel. Az undo meg éppen úgy működik ahogy az előző üzenetben leírtam. Igaz Step7-re vonatkozik, de megjegyzem, hogy az is SIEMENS :-)
TIA portállal nem próbáltam. Szerintem ha belenyúlsz akkor megváltozik a blokk time stamp-ja és onnantól kezdve különbözőnek tekinti.Ha lesz időm megnézem TIA-ban ezt hátha tudok neked segíteni (egyelőre ritkán TIA-zok).
De lehet hogy addig magadtól is rájössz... -
Szirty
őstag
Üdv!
"online-ban miért nem működik az undo??"
Most már megkérdezem: TIA portálra vonatkozik a kérdés?
Egyébként régi step7-ben nem lehet undozni ha a blokkot elmented. Amíg el nem mented, addig lehet.
Hha online blokk listából nyitott blokkot szerkesztesz, akkor a blokk PLC-be letöltése után nincs undo, mivel az a blokk elmentésével egyenértékű (de előtte van).Ha offline blokkot szerkesztesz, vagy offline blokkot online monitorozol és úgy kezdeményezed a szerkesztést, akkor letöltés után is van undo, mert az nem minősül a blokk mentésének (offline blokk mentése file-ba történik, nem a PLC-be). Ha azonban elmented, akkor ott sincs undo lehetőség.
(Merész dolog online blokkot szerkeszteni)Más:
Akartam írni a múltkor a P terület BLKMOV-olása kapcsán, hogy nem tudom mire kell ez neked és milyen P-ket akarsz másolni, de szerintem ha eltűnik egy P byte a másolt területről, akkor szerintem a BLKMOV hibát fog visszaadni és nem másol semmit (tehát ekkor azt sem ami megmaradt). -
Szirty
őstag
Helló!
"A TIA Portal helpjében az s7300-as CPU-knál az Input paraméter: ANY I, Q, M, D, L, P"
A "System Software for S7-300/400 System and Standard Functions Volume 1/2 Reference Manual" szerint és a Simatic STEP7 V5.4 helpje szerint a BLKMOV (SFC20) SOURCE és DESTINATION paramétere a következő területekre mutathat: I, Q, M, D, L
P-re tehát nem."És az Any tipusnál is szerepel a P terület aminek a kódja a 80."
Természetes hogy szerepel, mert az ANY pointer eredendő feladata (létezésének oka) hogy minden memóriaterületet címezni lehessen vele és nem az, hogy minden ami ANY pointert használni képes tud minden memóriaterületet címezni! (ok/okozat felcserélés).
Ezért az hogy ha valami ANY-t használ, önmagában még nem garantálja hogy az ANY lehetőségeit kötelezően ki is tudja (vagy akarja) használni. -
Szirty
őstag
válasz
plutokas
#4740
üzenetére
Üdv plutokas!
Ismét csak tudni kellene, hogy mit hogyan állítottál be. Pl. az screen number areapointert. Ugyanis az nem csak egy word, hanem rögtön öt! Ezért a DB-ben amire ráállítod 5 word (10 byte) helyet kell neki hagyni.
Ráadásul nem az első word a kép száma, hanem a második. Az elsőben meg azt közli, hogy normal screen van-e a képernyőn vagy system screen. Azt is illik figyelembe venni. Ha nem hagytál neki 5 word helyet, akkor a DB-ben szépen felülfirkálja a megadott cím utána következő 8 byte-ot. Ha éppen oda tettél valamit, netán pont azt az integert amivel át akarod vátani a screen-t, akkor baj van.Továbbá: A screen number areapointerben a panel mondja meg melyik kép van kijelezve és nem te neki hogy melyiket jelezze ki.
"Létreehoztam egy TAG-et amiben ActivateScreenByNumber eseménnyel összepárosítottam és erre az adatbázisra kapcsoltam."
Az ActivateScreenByNumber nem esemény, hanem egy funkció. A funkciót lehet eseményhez rendelni.
Milyen eseményhez rendelted tehát ezt a funkciót?
Ha netán éppen a TAG change value eseményéhez, akkor beállítottad-e a TAG acquistion cycle-jét cyclic on use-ról cyclic continuous-ra? Ha nem, akkor nem fog létrejönni az esemény, ha a TAG-et a panel nem olvassa, a TAG-et a panel márpedig nem olvassa ha nincs az aktív képen olyan in/out aktív elem, amihez ez a TAG hozzá van rendelve stb, stb...Megint találgatni kell! Kérdezz pontosabban!
Ui.:
Hasznos lenne, ha csinálnál egy olyan screent, amire tennél egy AlarmView objektumot, amit beállítanál a rendszer üzenetek megjelenítésére.(Display: Alarm events, Classes: System).
Ezt az ablakot a HMI ugyanis szépen telesírja ha valami fáj neki. Ilyenkor igen hasznos erre ránézni. Szerintem neked ott most olyasmi üzenet lenne, hogy "Invalid screen number"... -
Szirty
őstag
válasz
plutokas
#4738
üzenetére
Helló plutokas!
"Megmondom őszintén lövésem sincs mi lehetett a hiba."
Én pontosan megmondom neked mi volt a hiba ha elárulod mit hogyan állítottál be, de addig erre nincs lehetőségem! De ezt már kifejtettem.
"Esetleg valaki tudja fejből hogyan lehet beállitani azt ha megszűnik az alarm esemény akkor hogyan tűnjön el az alarm a képernyőről automatikusan?"
Igen.
A Display opciónál csak a Pendig alarm legyen bejelölve, az Unacknowledged alarms ne.
Akkor csak azok az alarmok lesznek az ablakban, amelyekhez tartozó trigger bit állapota TRUE. Ha FALSE lesz, a listából a hozzá tartozó alarm eltűnik, ha özben újabb TRUE lesz, akkor hozzá íródik.
Még mindig nem tudom, hogy Alarm view, vagy Alarm Window objektummal kapcsolatban kérdezel-e, egyszerűen nem vagy hajlandó ezt elárulni akárhányszor kérem. Nem érted a kérdést, vagy nem tartod fontosnak hogy válaszolj rá?
Alarm Window esetén maga az ablak is automatikusan eltűnik, ha a lista üressé válik. Egyébként csak akkor tűnik el ha bezárod.
Feltéve persze, hogy a Mode beállításánál az Automatic display be van jelölve (egyébként magától nem jelenik meg és nem is tűnik el). -
Szirty
őstag
válasz
plutokas
#4734
üzenetére
Helló!
Így nem tudok segíteni!
Alarmot kétféleképpen lehet megjeleníteni: Alarm view és Alarm vindow objektummal.
Az előbbit egy tetszőleges screenre lerakhatod, akkor látszik ha az a kép van megjelenítve, egyébként nem.
Az utóbbit csak template screenen lehet elhelyezni és lehet előugró ablak (amikor hiba jön megjelenik akármelyik screen van épp a kijelzőn) de ki is kapcsolható, hogy felugró legyen (automatic display).ha nem felugrónak van beállítva, akkor a ShowAlarmWindow funkcióval lehet előcsalni és eltüntetni, amit szinte bármihez hozzárendelhetsz (akár egy gombhoz is). Megjelenítés funkcióra megjelenik akármelyik screen van a képernyőn.
Az sem mindegy hogy van beállítva ez a két objektum, mert be lehet úgy állítani hogy az alarmokat nem is jeleníti meg, vagy csak bizonyos alarmokat. Teljesen beállítás függő!
Továbbá nem árt tudni, hogy a trigger bitnek legalább egy másodpercig aktívnak kell lennie,hogy a panel észrevegye, mivel az alarm word acq. ciklusa 1 sec alapesetben!
-
Szirty
őstag
válasz
Dezsi82
#4731
üzenetére
Üdv!
Elvileg nincs szükség külön állítgatni az alarm trigger bitet tartalmazó word acquistion módját, mert akármire is van beállítva abban a pillanatban ahogy a discrete alarm listába berak belőle egy bitet, átállítja cyclic continuous-ra.
Persze utólag vissza lehet állítani másra, de amikor megint berak egy másik bitet, megint átállítja.
Ha azt is visszaállítja, akkor jön a fordítási Warning, miszerint:"Acquistion mode cyclic continuous requires for trigger tag"
-
Szirty
őstag
válasz
plutokas
#4727
üzenetére
Helló plutokas!
Nem szeretnék pimasz lenni, de velem előfordul hogy olykor screenshot részletekkel is alátámasztom a válaszaimat, hogy az még jobban érthető legyen.
Megtennéd a kedvemért, hogy néhány képpel és/vagy további információval teszed érthetőbbé a kérdést?
Olyan információkra gondolok itt mint az alábbiak:- Hova rakod a triggerelő bitet, és azzal mit csinál és mikor a PLC? Ki kell hogy derüljön kevered-e az alsó és felső byte-ot a wordben vagy nem (a trigger address segít)!
- A discrete alarm-ot pontosan hogyan állítottad be?
- Milyen alarm screent állítottál be miféle eseményre? (nincs olyan hogy alarm screen. Olayn van hogy alarm window és alarm view)
- Ha ezekre gondoltál, azt pontosan hova tetted, milyen screen-re és hogyan állítottad be?
- És nem utolsó sorban: "de semmi nem történik." írd le mit szeretnél, hogy mi történjen? -
Szirty
őstag
válasz
Dezsi82
#4715
üzenetére
Üdv Dezsi82!
"De találkoztam már jó pár S7-300s CPUval, így úgy gondolom ez nem lehet De találkoztam már jó pár S7-300s CPUval, így úgy gondolom ez nem lehet nagyon gyakori.nagyon gyakori."
Az újabbak ilyenek. A 400-asok közül a régebbiek is.
Nekem a legelső CPU-n nem működött emiatt amin kipróbáltam!
Főleg hogy alacsony című merker címet írtál a példába és a retentív terület beállításánál a kezdőcím rendszerint 0!!
Tehát az alacsony címeknél a legvalószínűbb, hogy nem fog működni ez a módszer.Ez a megoldás ellenjavalt. Senkinek nem ajánlom!
A restart OB-t találták ki arra, hogy indításkor elvégzendő feladatokat az végezze el. -
Szirty
őstag
válasz
KB.Pifu
#4713
üzenetére
Üdv KB.Pifu!
Nem így működik. Abban az van leírva mekkora az adatmegtartó terület mérete.
Hogy mi tartsa meg az meg állítható (ha nem mind az). Itt egy példa. Ez egy S7-300 CPU351-2 DP (2AG10-es):
Itt azt látni, hogy enél a CPU-nál a DB-k mindegyike adatmegtartó, a merkerek közül meg MB0 címtől annyi byte amennyit megadunk neki. Illetve ugyanez a timerekre és counterekre.
Ez pedig szintén egy S7-300 CPU351-2 DP, de régebbi típus, (2AF02):
Itt összesen csak 4k retentív memória van ezért a DB-k-nél is meg kell adni melyikből, honnantól mennyi legyen adatmegtartó.
-
Szirty
őstag
válasz
Dezsi82
#4711
üzenetére
Helló Dezsi82!
Az rendben van hogy minden feladatra van sok megoldás és ezek között több megfelelően helyes.
Bár kifejezetten a megoldást nem ajánlottad, csak leírtad te hogyan csinálod, de ezt egy olyan kérdésre írtad, amiben azt kérdezik hogyan lehet first cycle impulzust létrehozni.
Ha már akkor is tisztában voltál a módszer komoly hátrányával (amikor az illető bit nem "felejt") akkor ezt nem ártott volna megemlíteni, mert akinek ilyen tipped adsz, azt bevezeted az erdőbe. Ő meg ír egy időzített bombát egy programba.
Nyilván úgy csinálod, ahogy akarod, rendben van. De mint írtam, van CPU, aminél minden retentív (kivéve a process image bitek). Az ilyennél hogy oldod meg ezt? Vagy nem találkoztál még ilyennel? -
Szirty
őstag
válasz
Dezsi82
#4707
üzenetére
Helló Dezsi82!
Azt hiszem az imént túlságosan lehengerlő voltam, elnézést!
Szóval azért nem jó az a always on bittel létrehozott impulzus mint first cycle flag, mert ha a kiszemelt bit értéke 1 marad kikapcsolás után majd újabb bekapcsolás alakalmával, az impulzus nem fog létrejönni, mert nem lesz 0->1 átmenet.
És hát az adatmegtartó terület éppen ilyen tulajdonsággal bír.Próbáltam indokolni, elnézést ha nem fejtettem ki kellő mélységben! Teszteld széleskörűen azt a módszert, látni fogod!
-
Szirty
őstag
válasz
Dezsi82
#4705
üzenetére
Helló Dezsi82!
Óha!
Sajnos nem értek egyet! Ez a megoldás nagyon szívatós!
Senkinek nem ajánlom!!!Ha az M0.0 retentív területen van, akkor nem fog működni. Márpedig van olyan CPU aminél te mondod meg melyik merker terület legyen retentív és melyik ne, és van olyan CPU amelyiknél mindenképpen mind az. Na annál fogják megszívni.
Mindenki használja azt ahol OB100-ban SET bit
OB1 utolsó sorában RESET bit.
Bomba biztos és nem kell külön merker bit sem a -(P)- miatt. -
Szirty
őstag
válasz
plutokas
#4702
üzenetére
Helló
De ide berakom, mert az írás nem erről szól, csak tartalmazza:
-----------------------------
Az elsőhöz szükség lesz egy "first scan flag" jellegű bitre, ami egy ciklus ideig bekapcsol, amikor a PLC feléled. Ilyet nekünk kell létrehozni, ami nem túl bonyolult.
Hozzunk létre egy OB100-at, egy OB101-et, és egy OB102 blokkot. Ezek a blokkok egyszer lefutnak újraindításkor. Mindegyik más-más esetben:
OB100 - Warm restart
OB101 - Hot restart
OB102 - Cold restart
Mind a három blokkba írjuk be az alábbi három STL utasítást:
SET
= M 0.4
BE
Ez a pár sor bekapcsolja az M0.4 merkert amikor a blokk lefut (vagyis újrainduláskor).
Megjegyzés: Bizonyos CPU típusokba nem tudjuk mindhárom blokkot feltölteni, mert nem mindegyik ismeri mindhárom módot. Ez nem baj, azokat töltsük fel amelyeket enged).
Az OB1 utolsó sora pedig ez legyen:
CLR
= M 0.4
Minden más utasítást (a "BE" kivételével) a fenti két sor elé írjunk (pl. a blokk hívásokat).
Ez a két sor kikapcsolja az M0.4-es merkert.
Újrainduláskor tehát az M0.4-et bekapcsolja valamelyik restart OB, az OB1 első lefutása után pedig kikapcsolódik és úgy marad.
Természetesen az M0.4 funkciója mostantól az, hogy újrainduláskor ad egy impulzust, így a programban máshol nem változtathatjuk meg az értékét (csak olvasni szabad).
----------------------------- -
Szirty
őstag
Helló!
Van néhány PLC amihez ingyen letölthető program van. Pl. Omron CX programmer is használható CP1 programozásra liszensz nélkül ha jól emlékszem.
Vagy az Unitronics U90 ladder programja.Hogy ez mennyire hasonlít Step7-hez? Háát.. Döntsd el magad (nem tudom mit neveznél hasonlónak).
-
Szirty
őstag
válasz
soldi3r
#4686
üzenetére
Helló soldi3r!
Mindenféleképpen inkorrekt dolog minden olyan szándékos időzített bomba amit a programba tudatosan beleírnak. Az ilyesmi ugyanis nagyon rosszul is elsülhet.
Persze ezt tudomására adhatod a megrendelőnek, de ez meg komolyan alááshatja az üzleti bizalmat.Korrekt dolog átadni a teljes forrásanyagot.
-
Szirty
őstag
válasz
byte-by
#4685
üzenetére
Üdv!
Attól hogy átadod nekik a forráskódot a jogi védelem változatlan marad. Az átadás célja ugyanis nem a szoftver tovább értékesítése, sokszorosítása, vagy a szellemi érték kinyerése, hanem a határozatlan ideig tartó üzemeltetés lehetőségének megteremtése.
Tehát azért mert megkapja a forrásprogramot nem rendelkezhet fölötte szabadon de tény, hogy erre a forrásprogram birtokában lehetősége nyílik.
Ahogy bármilyen embernek lehetősége nyílik egy kés birtokában másokat megölni (de ugye a kés birtoklása önmagában nem gyilkosság).Mindez elméleti faxverés, de az ügyvédek ebből élnek.
Komoly gyakorlati probléma ugyanakkor az, hogy ha egy gyártósorhoz a megrendelő nem kapja meg a PLC forrás projectet, akkor egyértelműen kiszolgáltatottá válik, ami nagyon sokba kerülhet neki. -
Szirty
őstag
válasz
Dezsi82
#4678
üzenetére
Üdv!
"Ez a módszer engem is érdekelne, mert nekünk is nagy gondot okoznak a nem fizető ügyfelek"
Megfelelően megírt hivatalos szerződés a dolog nyitja.
Ami a szerződésben van azt kell teljesíteni. Ha ez nem történik meg valamelyik fél részéről, akkor lehet pereskedéssel szarakodni.Korrekt üzlet idáig nem kellene hogy eljusson. De ha eleve cigányság van a dolog mögött, akkor rakhattok atombombát is a programjába, kit érdekel?
-
Szirty
őstag
válasz
Achilles83
#4669
üzenetére
ÍHelló Achilles83!
A PLC alapvetően ipari cucc. Ezért a hozzá való távadók, mérő, beavatkozó eszközök ennek megfelelően pontosak, megbízhatóak és drágák.
Arra is lehet használni amire te akarod használni, de nem költséghatékony és nem arra való.Egy 30 tonnás daruhoz sem árulnak kerékpár tartót, tetőcsomagtartót és kormányra plüss borítást meg rally set-et, sport kipufogót hasonló okokból.
(De ettől még járhatsz vele kirándulni ha épp úgy tartja kedved...) -
Szirty
őstag
válasz
Dezsi82
#4666
üzenetére
Helló Dezsi82!
"De ha megnézzük a másik oldalt, akkor iskolából kilépett, nulla tapasztalattal rendelkező "mérnök", aki soha életében nem programozott ipari környezetben (max. rendőrlámpát) elkér annyi fizetést, amennyi egy kisebb cég havi költségvetése."
Abszolút így van.
Attól tartok a dolog valahol ott csúszott el, hogy az azonnali elvárások az egeket ostromolják, mindenki a mának akar élni, az oktatás színvonala meg ugyanilyen meredeken zuhant a béka segge alá.
Emiatt mára kialakult az a helyzet, hogy a munkáltatók és a munkavállalók semmit nem nagyon adnak de mindent akarnak. Az önéletrajzok tele vannak halandzsával és hazugságokkal. Az álláshirdetések meg hangzatos pozíció nevekkel, homályos ígéretekkel ("versenyképes bér", "fiatalos lendület", "rugalmas munkaidő (nekik az, neked meg xopás)), Az ilyenekben szoktak felbukkanni a "specialista", "manager", "asszisztens" szavak.Sajnos egy jó álláshoz ma már a tudáson, tapasztalaton kívül jó sok szerencse is kell.
-
Szirty
őstag
válasz
Dezsi82
#4665
üzenetére
Üdv!
Annyit jegyeznék még meg, hogy ha csak feszültség fogadására képes analóg bemenet van és ahogy már "elhangzott" nem kell nagy pontosság, akkor inkább termisztort érdemes használni hídban vagy egyszerű fesz osztóban stabil tápról (szoftveresen azt is linearizálni kell ha szükséges),
Pt100-al is meg lehet csinálni, de egyrészt a Pt100 az precíziós ipari hőmérséklet mérésre való, másrészt a 100 ohm nem kedvező ilyen osztós megoldáshoz. 1k termisztor jobb.
Másrészt Pt100-al így mérni olyan mint ha valamit mikrométerrel mérne az ember aztán krétával jelölné be a mértet... -
Szirty
őstag
válasz
KB.Pifu
#4662
üzenetére
Teljes mértékben.
Több éves tapasztalattal, egyetemista, nobel díjas részecske fizikus programozó matematikus mérnököt keresnek, aki saját autóval rendelkezik, komplett szerszámkészlete van mindenre a betonkeverőtől kezdve a SMD mérőállomásig.És felveszik gépkezelőnek egy gépsor mellé minimál bérrel, ahol majd megoldja a műszaki problémát nulla állás idővel, saját költségen vállal nem fizetett ügyeletet.
És amikor nincs baj, akkor sepreget... -
Szirty
őstag
válasz
Achilles83
#4660
üzenetére
Helló Achilles83!
"De a mérőhidas megoldás is jó.Igazából nem értem miért csinálnak méregdrágán távadó átalakítókat."
A távadós, Pt100-as mérőbemenetes gyári megoldásokban is ott van benne valahol a mérőhíd.
Hogy miért kell?1. A Pt100 karakterisztikája (hőmérséklet-ellenállás összefüggése) nem lineáris, ezért azt a precíziós mérés érdekében linearizálni kell. Ha fesz bemenetre mérőhidat barkácsolsz, akkoro ezt szoftverből neked kell megcsinálni. Amiatt pedig amit nyersz a HW-en elveszted a szoftveren, ráadásul az ilyen szoftveres megoldás pontatlanabb lesz.
2. A gyári Pt100 mérő megoldások mindig 3 vagy 4 vezetékesek! Miért? Mert a Pt100 100 ohm nagyságrendű ellenállása összemérhető a vezeték ellenállásával (ami 5-10 ohm is lehet), Ha ezt nem kompenzálják valahogy, akkor nagyon nagy mérési hibával lehet számolni,
Ha mindkét problémát megoldod, akkor gyakorlatilag éppen olyan áramkört fogsz építeni, minek a létezését most kérdőjelezted meg.
-
Szirty
őstag
válasz
Achilles83
#4654
üzenetére
Helló Achilles83!
lehet. Pt100-as bemenetre. vagyis olyanra, ami ellenálláshőmérő fogadásárya is alkalmas.
Ha a bemenet nem ilyen, akkor jelátalakító (távadó) szükséges, -
Szirty
őstag
válasz
KB.Pifu
#4652
üzenetére
Üdv!
"Mi is a script-elés úgy nagyvonalakban ? A HMI-re lehet kis futtatható programokat írni?"
Gondolom találkoztál már a funkciókkal, amiket eseményekhez lehet hozzárendelni (amikor az esemény bekövetkezik, a funkció végrehajtásra kerül).
Ilyen az is, amikor egy nyomógomb Press eventjéhez hozzárendeled a képernyőváltást (tipikus menü funkció).
A Script olyan funkció, amit te magad írhatsz meg visuel basic-ben.
Tehát ugyanolyan eseményekhez rendelheted hozzá a végrehajtását, mint a gyári funkciókat.
Más szóval: kibővítheted a gyári funkció készletet sajátokkal.Itt egy példa: Objektum tulajdonságainak megváltoztatása VB scriptből
-
Szirty
őstag
Helló Onishi!
A web oldalamat nézted már? :-)
Van ott egy írás, aminek az a címe, hogy: "ProTool tippek és példák" amiben van egy "A HMI és az S7 PLC közötti kapcsolat megszakadásának kezelése" című fejezet, abban pedig egy "A kapcsolat megszakadásának érzékelése a HMI-ben" című bekezdés.
Pontosan erre a problémára ad megoldást! :-)
ProTool tipp ugyan, de teljes mértékben alkalmazható WccF-re is. -
Szirty
őstag
válasz
plutokas
#4640
üzenetére
Nem az van, hogy ha a COM-ra +24V-ot kapécsolsz akkor az összes kimenetre kötött relét bekapcsolja?
Méghozzá a kimenet programbeli állapotától függetlenül?
Mert akkor az van, hogy SOURCE helyett SINK típusú a kimeneted.A SINK kimenet a 0V-ot tudja kapcsolni, a SOURCE meg a +24V-ot tudja kapcsolni.
A SINK azért kapcsol be minden kimenetet ha a COM +24V, mert a kimeneti félvezetők védődiódái kinyitnak! -
Szirty
őstag
válasz
plutokas
#4638
üzenetére
Üdv plutokas!
"Egészen pontosan a PLC-n csak a 11-es lámpa ég, de a DC24V-ot mérni az összes mellette lévő kimeneten is ami atonos COM-on van.
Miért van ez??"Feltételezésem alapján azért, mert a kimenetek terheletlenek. Tegyél rájuk terhelést és ismételd meg a kísérletet!
Új hozzászólás Aktív témák
- ÚJ BONTATLAN Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Égkék - HUN - mc7a4mg/a 3 év gar
- Bambu Lab A1 Mini 3D nyomtató kifogástalan állapot
- Corsair Vengeance LPX 2x8GB 3000MHz DDR4 kit / Beszámítás OK!
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst mw1g3mg/a - 3 év gari - MAGYAR
- Intel I7-7700 / Beszámítás OK!
- 0perces DDR5 5600 vadiúj Ramaxel 2x16GB memória 1 év garancia
- Kingston hyperX fury 8GB 2400mhz
- RÉSZLETFIZETÉS.BANKMENTES.KAMATMENTES. Új noblechairs Epic valódi bőr FEKETE - FEHÉR 3 év garancia!
- Lenovo LEGION 5 PRO Ultra 7 255HX 32GB RAM 1TB SSD RTX 5070 8GB 16" QHD+ 3év Prémium GAR
- iKing.hu Apple MacBook Pro 14 (2021) 16GB / 1TB használt, karcmentes 83% akku
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





