Új hozzászólás Aktív témák
-
attrax
aktív tag
válasz Shirchy #3940 üzenetére
Én annyit mondok neked ,hogy valóban érdemes a logoval kezdeni de az messze nem plc én azt egy programozható relének nevezném de alapnak jó.A displayes verzióknál ugye nem kell progr.szoftver Javaslom az omron kis plc-ket (cpm-1)vagy a siemens 200-as sorozatot.Azokkal kezdj.Én szivesen kölcsönadok neked logot.Bp-en Manualt le tudsz hozzá tölteni magyart is.
[ Szerkesztve ]
Unterschreiben
-
rsf
senior tag
válasz Shirchy #3944 üzenetére
A LOGO szimulátora teljesen jó. Ha a gyakorlás a cél akkor szimulátorral ismerd meg a LOGO-t és a programozását, de nehogy pénzt költs rá. Javasolnám inkább az Unitronics Jazz-t. Ingyenes a progija és soros kábelt kb. 500Ft-ból lehet hozzá készíteni.Az USB-s az már 1000Ft Bár nálam a bluetooth-os a király! Kábel gyártásban tudok segíteni ha kell.
Üdv.“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“
-
Szirty
őstag
válasz Shirchy #4363 üzenetére
Üdv Shirchy!
Ezeket ajánlom átnézésre, hátha találsz bennük számodra használható információt:
Tartály töltés
Analóg jelek kezelése
Analóg jelek kezelése S7-300/400 PLC-vel"Illetve ugye valahogy vezérelni kellene a frekvencia váltót is."
Akkor vezéreld valahogy!
Erre milyen választ lehetne adni? Mire kell vezérelni? Hogyan? Mi az igény?
Mi a célja a frekvenciaváltónak itt (mi az ok amiért van a rendszerben egy frekvenciaváltó)? -
Szirty
őstag
válasz Shirchy #4365 üzenetére
Üdv Shirchy!
Én úgy csinálnám, hogy meghatároznék egy szintet ami alatt a szivattyú 100%-al megy és egy ennél magasabb (teljesen tele) szintet amit ha elér a tartály, akkor a szivattyú leáll.
A szivattyú sebességét e két szint által meghatározott tartománnyal adnám meg.
Meg tennék egy úszókapcsolót a túltöltés figyelésére. -
sörösló
aktív tag
válasz Shirchy #4365 üzenetére
Ha ez elméleti, iskolai feladat, akkor feltétlenül a Szirty által javasolt megoldás a nyerő. Én a túltöltés figyeléséhez ebben az esetben "bevillantanék" egy ultrahangos szintmérővel is.
Ha valós, gyakorlatban használt a feladat, akkor viszont szerintem felesleges a frekiváltóval görcsölni. 200 m3-es tartály töltéséhez elég combos szivornya kell, ehhez a frekiváltó sem 2 forint. Elkezded a töltést egy szivattyúval, aztán ha adott idő alatt nem nő a kívánt mértékkel a szint, ráindítod a másikat is. 20-30 m3 víz töltése nem egy olyan rövid idő hogy a szivattyúkat túl gyakran kellene kapcsolgatni. Ez csak az én véleményem, de ha 50 m3-ig csökkenhet a szint, akkor nem lehet túlságosan igényes a fogyasztás folyamata sem.
[ Szerkesztve ]
-
Szirty
őstag
válasz Shirchy #4373 üzenetére
Üdv Shirchy!
A már ajánlott tartály töltés nem adna ötletet?
Szíveskedj megtekinteni! -
Szirty
őstag
válasz Shirchy #4373 üzenetére
Esetleg ezt is nézd meg a hibakezelés résznél!
-
Szirty
őstag
válasz Shirchy #4400 üzenetére
Helló Shirchy!
Ott követted el a hibát, hogy "összeakasztottál" két változót.
Az FC105 RET_VAL kimenetét az MW100-ba küldöd, a skálázás eredményét pedig MD100-ba!Ez azért nem jó, mert az MD100 és az MW100 két byte-ja azonos, így a két változó 2 byte átfedésben van egymással ezért részben felülírják egymást. Hogy hogyan azt az alábbi ábra személteti más címekkel:
Ez talán figyelmetlenség, de ha nem, akkor ajánlom figyelmedbe ezt:
Siemens S7 300-400 adatterületek és címzésmódokMeg kell szüntetned ezt a konfliktust.
Vagy a RET_VAL legyen MW100 helyett MW98, vagy az OUT legyen MD100 helyett MD102 (feltéve persze hogy ezzel nem kerülnek máshol használt változóval hasonlóképpen átfedésbe).[ Szerkesztve ]
-
Mazsika
őstag
válasz Shirchy #4405 üzenetére
Ez még így mindig nem világos, talán ha tennél be képet jobban megértenénk. Ki van zárva hogy egy ekkora program megtöltsön bármilyen kicsi memóriát, ráadásul azt a rátöltéskor irná, hogy nem fér fel a db! Amúgy pedig valahol online-ba lehet ellenőrizni a memóriát...
Dáccsika
-
Mazsika
őstag
válasz Shirchy #4407 üzenetére
Lehet természesen később is módosítani, menteve feltöltve tovább lehet dolgozni vele, viszont arra ügyelni kell hogy ilyenkor felülíródnak az aktuális adatok, mondhatni 'nullázódnak'.
Szerk.: csak annyi lehetett a problémád, hogy nem mentetted a DB-t igy a program nem tudott hivatkozni rá![ Szerkesztve ]
Dáccsika
-
Szirty
őstag
válasz Shirchy #4407 üzenetére
Üdv Shirchy!
"A DB változóit utólag már nem lehet módosítani csak az első megíráskor?"
A shared DB tartalmát úgy módosítod ahogy csak akarod. Bármikor akármennyi változót tehetsz bele akárhova vagy törölhetsz vagy írhatod át a nevét vagy típusát. Erre semmiféle korlátozás nincsen leszámítva hogy túlságosan nagy nem lehet.
Csakhogy az ezzel járó összes következménnyel számolnod kell ám!
Az egyik amit Mazsika írt, hogy ezzel a DB aktuális tartalma a PLC-ben elvész amikor áttöltöd (felülíródik).
A másik, hogy ha törölsz egy változót a DB-ből vagy annak nevét átírod, és arra a változóra a programod már hivatkozik valahol szimbolikus címzéssel, akkor ez a hivatkozás abban a pillanatban hibás lesz, ami nem meglepő, lévén a változó azon a néven megszűnik létezni!
A harmadik hogy ha változót illesztesz a DB-be (nem a végére) vagy törölsz vagy úgy írod át az adattípusát, hogy az új típus hossza nem azonos a régiével (pl. REAL-t INT-re módosítod) akkor az összes változó címe eltolódik ami az átírt után van. Ezért a programban minden abszolút hivatkozás ami az átírt változó utáni többi változóra vonatkozik (amelyikhez hozzá sem nyúltál) hibás lesz!
-
rsf
senior tag
válasz Shirchy #4407 üzenetére
Ez szerintem egy bug a Step 7-ben.
Én is már többször találkoztam olyannal, hogy megváltoztattam egy változó tipusát.
Majd elmentettem a DB-t. Ezután a programba a megváltoztatott változót nem tudtam beírni, mert a fordító még a régi tipust látta és nem fogadta el az újat.
Ilyenkor az egész networkot vágólapra kell tenni Ctrl-X-el (Igy megszünik a hiba a progiban) majd menteni kell egyet, ezután Ctrl-V-vel az egészet vissza.
Mentés után már frissül a compiller infója a megváltozott DB tartalmáról és igy már jó lesz.
Üdv.“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“
-
Szirty
őstag
válasz Shirchy #4417 üzenetére
Helló Shirchy!
Az STL forrást Copy-Paste módszerrel be tudod illeszteni.
Azért esik szét, mert proporcionális karakterkészlettel illeszted be. Hogy ne essen szét, válaszz monospaced készletet! Pl. Courier new.A létradiagramot, mivel grafikusan van ábrázolva nyilván képként tudod beilleszteni.
A képet elkészítheted prtscr-el is, de én inkább egy képkivágó programot vagy olyan rajzoló programot ajánlanék ami támogatja a screenshotok készítését.Megoldás lehet még a nyomtatás képbe funkció is. Ha van MS office telepítve akkor nyomtathatsz "Mocrosoft image dokument writer" eszközre ami egy MDI file-t hoz létre amit szabadon beilleszthetsz bármilyen wörd dokumentumba.
Vagy telepíted a PDF Creatort, ami egy PDF nyomtatót hoz létre, stb...
Az FC105-öt miért akarod kinyomtatni?
-
Szirty
őstag
válasz Shirchy #4422 üzenetére
Üdv!
Jó. Akkor itt az FC105 forráskódja:
FUNCTION FC 105 : WORD
TITLE =SCALING VALUES
//
AUTHOR : SEA
FAMILY : CONVERT
NAME : SCALE
VERSION : 2.1
VAR_INPUT
IN : INT ; // input value to be scaled
HI_LIM : REAL ; // upper limit in engineering units
LO_LIM : REAL ; // lower limit in engineering units
BIPOLAR : BOOL ; // 1=bipolar; 0=unipolar
END_VAR
VAR_OUTPUT
OUT : REAL ; // result of the scale conversion
END_VAR
VAR_TEMP
IN_REAL : REAL ; // input value as a REAL number
K1 : REAL ; // low limit for input value
K2 : REAL ; // high limit for input value
SPAN : REAL ; // HI_LIM - LO_LIM
TEMP1 : REAL ; // temporary result
END_VAR
BEGIN
NETWORK
TITLE =
//
// set K1 and K2 constants based upon BIPOLAR
//
SET ; // if(BIPOLAR=0)
A #BIPOLAR; // .
JC EL01; // {
L 0.000000e+000; // K1=0
T #K1; // .
JU EI01; // } else {
EL01: L -2.764800e+004; // K1=-27648.0
T #K1; // .
EI01: NOP 0; // }
L 2.764800e+004; // K2=+27648.0
T #K2; // .
//
// convert input (IN) to real
//
L #IN; // ACC1=IN
ITD ; // convert to double integer
DTR ; // convert to real
T #IN_REAL; // IN_REAL-IN as a real
//
// determine SPAN = HI_LIM - LO_LIM
//
L #HI_LIM; // SPAN=HI_LIM-LO_LIM
L #LO_LIM; // .
-R ; // .
T #SPAN; // .
//
// If the input value is outside the K1 and K2 range, the output
// is clamped to the nearer of either the LO_LIM or the HI_LIM
// and an error is logged. If the input value is exactly at a limit the
// output will be set to the computed limit with no error returned.
// changed 2/14/00 by ERI per RQ210693
L #IN_REAL; // if(IN_REAL<K1)
L #K1; // .
>=R ; // .
JC EL02; // {
L 8; // error
T #RET_VAL; // .
L #LO_LIM; // ACC1=LO_LIM
T #OUT; // OUT=ACC1
JU FAIL; // error
EL02: POP ; // } else {
L #K2; // if(IN_REAL>K2)
<=R ; // .
JC EI04; // {
L 8; // error
T #RET_VAL; // .
L #HI_LIM; // ACC1=HI_LIM
T #OUT; // OUT=ACC1
JU FAIL; // error
EI04: NOP 0; // }
NOP 0; // }
//
// scale the input
//
L #K2; // TEMP1=K2-K1
L #K1; // .
-R ; // .
T #TEMP1; // .
L #IN_REAL; // IN_REAL-K1
L #K1; // .
-R ; // .
L #TEMP1; // divide by TEMP1
/R ; // .
L #SPAN; // multiply by SPAN
*R ; // .
L #LO_LIM; // add LO_LIM
+R ; // .
T #OUT; // OUT=scale(IN_REAL)
//
// set BR bit : no error-set BR bit to 1; with error-set BR bit to 0.
//
L 0; // return error code 0
T #RET_VAL; //
SET ; // RLO = 1 (NO ERROR)
JU SVBR; //
FAIL: CLR ; // RLO = 0 (ERROR)
SVBR: SAVE ; // BR = RLO
END_FUNCTION -
Szirty
őstag
válasz Shirchy #4440 üzenetére
Helló Shirchy!
A WinCC Flexible-ben minden objektumnak neve van.
Ezt a nevet automatikusan kapja (BUTTON_1, BUTTON_2, Text_Field_34, stb).
Ezt természetesen utólag átírhatod ha akarod, de két azonos nevű objektum egy képen nem lehet.
Továbbá az objektumok neve (NAME) semmilyen formában nem jelenik meg a runtime képernyőjén!Ennek fényében kérdezném, hogy mit kell érteni nevek alatt a problémád esetében? Mert ebből azt gondolom, hogy nem az objektumok nevét!
-
Szirty
őstag
válasz Shirchy #4460 üzenetére
Hi!
"Átnéztem az objektum neveket és nincs két egyforma,szóval azzal már nem lehet probléma."
Nem kellett volna átnézni, mert nem lehet kettő egyforma! Ez alatt azt kell érteni, hogy egy screenen nem lehetséges. Tehát létre sem tudsz hozni több egyformát! Ennélfogva nem is találhatsz egyformákat.
De szerintem továbbra sem objektum nevekről van itt szó, mivel mint azt már kifejtettem a nevek NEM jelennek meg a runtime-ban! Egy text objektum kijelzett szövege NEM az objektum neve. Ezért az lehet azonos nem csak kettő, de több is!.
-
Szirty
őstag
válasz Shirchy #4463 üzenetére
Helló Shirchy!
Ebbe én is belefutottam már. Erre oda kell figyelni! :-) AMikor új projectet hozol létre az legeslegelső dolog legyen a nyelv beállítása. Akkor is ha csak egy nyelvet akarsz és az nem az angol amire eredetileg beáll.
Minden egyes szöveg ugyanis amit a nyelv beállítása előtt beleírsz a projectbe el fog veszni ha később törlöd az angolt (amibe írtál)."Na ez után jött az,hogy nem javította át a feliratokat. A megoldás tényleg az lett,hogy az angol nyelvi beállítást teljesen töröltem,így már minden klappol."
Miért javította volna? Az angol az nem magyar. Akkor lenne csak nagy a kavalkád, ha öncélúan elkezdené összekeverni a nyelveket amikor úgy adódik. Neked kell tudnod mit csinálsz, a program nem tudja mit szeretnél ha nem közlöd vele valahogyan! Egyébként nyelv törlésénél figyelmeztet, hogy a nyelvhez tartozó összes szöveged el fog veszni és megkérdezi komolyan gondoltad-e.
Egyébként van mód a nyelv átemelésére is, de neked kell csinálni nem automatikusan történik. De legalább nem kell mindent újra begépelni.
1. Mielőtt bármit is törölnél létrehozod a magyar nyelve: Megnyitod a project fában a Language settings / Project Languages-t és pipát raksz a kívánt nyelv elé (pl. Magyar)
2. Megnyitod a project fában a Project Texts-t. Kapsz egy listát, amiben benne van az összes nyelven a nprojectbe eddig beírt összes szöveg! Látod hogy melyik nyelvhez milyen szöveg tartozik. Ha a magyart most hoztad létre, akkor az az oszlop üres (nincs magyar szöveg). Az angol oszlopban meg látod a magyar szövegeket amiket véletlenül írtál be oda
3. Kijelölöd az angol oszlopban az összes szöveget (csak abban az olszlopban és ott mindet)
4. Ctrl-C, Kijelölöd az angol oszlopban az összes sort, majd Ctrl-V. Ezzel átmásolod a szövegeket az angol nyelvből a magyarba. Ezután Language settings / Project Languages-nél ki lehet venni a pipát az angol elől.
Így a szövegek nem vesznek el, de az ékezeteket neked kell egyenként utólag beírkálnod (a Project Texts-ben ezt kényelmesen megteheted, akkor nem marad ki egy sem)
-
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
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 #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 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 #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 #5232 üzenetére
Helló Shirchy!
Win7 64 bit alatt is futó MicroWin verzio a 4.0 +SP9
Siemens STEP7 Compatibility 2012 szerint is:A hdmi programozó nem tudom mi.
Szimulátor pedig nincs. Legalábbis a Siemens nem készített amennyire tudom. Valami 3rd party megoldással már találkoztam, de nem próbáltam, nem tudok róla semmit.