- Milyen NAS-t vegyek?
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Microsoft Excel topic
- Crypto Trade
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- MinDig TV
- Rendszergazda topic
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Proxmox VE
- Kapnak egy rakás reklámot a Roblox játékosai
Új hozzászólás Aktív témák
-
Szirty
őstag
Helló tibi-d!
Valószínű, hogy nem megfelelő valamilyen beállítás.
Azonban mivel a beállításokról semmilyen információt nem közöltél, nem lehet megmondani melyikkel van a baj.
Szerintem nem raktad bele az I/O-kat a process image-be.
Vagy nem a megfelelő címen próbálod elérni modulon lévő I/O-kat. -
rsf
senior tag
90-70 a kedvenc PLC-m, de már nem mai darab már a supportja is megszünt.
Én Genius busszal csak egyszer találkoztam de ott különálló Genius egységek voltak.Nem úgy mint pl. a Siemensnél ahol van egy fejegység aztán mellette normál PLC bővítő modulok vannak.
Ezt azért kérdezem, mert számlálókártyát irtál.
Ha ez egy kártya akkor vedd ki a kártyát és ellenőrizd a csatlakozó kontaktjait. De igazából az összes kötést ellenőrizd az egységnél.
Üdv.“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“
-
Szirty
őstag
Szevasz tibi-d!
Egy "reset to factory settings"-el egybekotott "Operating system update"-re lesz szükség. Illetve ezzel érdemes próbálkozni.
Az alábbi doksiban megtalálod hogyan kell csinálni:
SIMATIC HMI HMI Device TP 177A, TP 177B, OP 177B (WinCC flexible) Operating InstructionsVan két hártánya a dolognak:
- RS232 vagy USB PPI multi master kábel kell hozzá
- A panelre töltött licenszek elvesznek -
Szirty
őstag
Üdv tibi-d!
"Egy 32 bites memória területet elkülönítettek a vezérlés állapotnak."
Ismerős ez a megoldás is.
Gyönyörű, amikor egy ilyen (vagy számlálós-léptetős) szekvenciális programot újabb lépésekkel kell bővíteni.
Vagy átírod az egészet más számokhoz rendelve ugyanazokat a lépéseket, vagy a nem használt számokat veszed igénybe. Innentől 1,2,3,4,5,6,7,8,9 helyett majd az 1,2,10,11,3,4,12,13,5,6,7,8,9 fog egy sornak számítani.
De van olyan is, ahol erre gondoltak és egy integer mondja meg az aktuális lépés számát, amit nem egyesével növel, hanem tízesével. Így lehetőség van új lépések beszúrására. A rend így is felborul, mert kevésbé lesz követhető melyik lépés után melyik jön. Ráadásul az integer léptetése tele lesz komparátorokkal, mert 10 után 20 jön, de 20 után 21, majd 22, és csak utána 30. -
Szirty
őstag
Üdv!
Olyan ábrát rajzolsz amilyet akarsz.
De ezt csak külön rajzoló programmal teheted, nem kell feltétlenül a meglévőeket átrajzolgatni.
Annyi a megkötés, hogy 2 színű legyen és BMP formátumú és férjen el a képernyőn.
Közvetlenül a képernyőre rajzolni nem lehet, mert nem tud kört, vonalat poligont stb.Állapotot megjeleníteni ezekkel meg úgy lehet, hogy a láthatóságához rendelsz változót, vagy graphic list-be rakod a grafikákat.
-
Szirty
őstag
Tudomásom szerint nem, de az OSCAT LIB-ben van.
Igaz SCL-ben készült. Itt a forrása:
FUNCTION GRAY_TO_BYTE : BYTE
TITLE = 'GRAY_TO_BYTE'
//
//this function converts a gray code into binary
//
VERSION : '1.0'
AUTHOR : hugo
NAME : GRAY2BY
FAMILY : GATE
VAR_INPUT
IN : BYTE;
END_VAR
BEGIN
GRAY_TO_BYTE := SHR(IN:=IN,N:=4) XOR IN;
GRAY_TO_BYTE := SHR(IN:=GRAY_TO_BYTE,N:=2) XOR GRAY_TO_BYTE;
GRAY_TO_BYTE := SHR(IN:=GRAY_TO_BYTE,N:=1) XOR GRAY_TO_BYTE;
(* revision history
hm 9. nov. 2009 rev 1.0
original version
*)
END_FUNCTION -
Szirty
őstag
Milyen adattípusra kell azt nem írtad.
Itt egy, aminek INT a bemenete és REAL a kimenete.
Ha más típusra kell nem nehéz átírni.
Ezt valósítja meg: Out=((In-InMin)*((OutMax-OutMin)/(InMax-InMin)))+OutMin
Az egyik (bemenő) tengely két pontját InMin, InMax, a másik (kimenő) tengely két pontját OutMin és OutMax határozza meg. A bemeneti (skálázandó) értéket az In-ben várja a kimeneti (skálázott) értéket az Out-ba teszi.FUNCTION 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.2
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;
SET
SAVE
END_FUNCTIONVagy itt van létrában is:
-
Szirty
őstag
-
Szirty
őstag
Helló tibi-d!
"Az "Area Pointers" menüben hozzá kell adni a "Function Key Assign." funkciót. Ehhez kell rendelni egy változót, amit egy TAG-be el kell menteni. Ha ennek a változónak az értékét módosítom a képernyőszámnak megfelelően, akkor átvált a megfelelő képernyőre."
Szerintem összekevertél valamit.
A "Function key Assignment" areapointernek semmi köze nincsen a képernyő váltáshoz vagy a kijelzett kp számához. Abban a panel funkció gombjaihoz vannak bitek hozzárendelve."A képernyőváltás rendesen működik, de a "screen number" változó nem a képernyő számát adja vissza, hanem, ha volt képernyőváltás, bármi volt az előző érték, mindig 1-re vált a változó értéke."
A "Screen number" areapointer 5 szó hosszúságú!!!!
Az első szó benne pont nem a képernyő száma, hanem annak a típusa (rendszer vagy user screen van-e kijelezve).
Ajánlom figyelmedbe ezt az írást...
Meg ezt is...(látom hogy utálod ezeket olvasni, de később gyakran kiderül hogy hasznos lett volna)
[ Szerkesztve ]
-
Szirty
őstag
Helló!
Én nem akartam kötekedni, csak szeretném megjegyezni, hogy az S7-300-as sorozaton belül jelentősebb eltérések vannak, nem csak az adatterületek méretében és a CPU sebességében!
Ráadásul még típuson belül is. Pl. CPU315-ből van vagy kilenc fajta.
Van olyan amelyiknél az összes DB retentív, van amelyiknél neked kell megmondani hogy melyik számú DB melyik kezdőcímétől hány byte adatot szeretnél megőrizni.
Van típus amelyiknél egy ilyen bejegyzés lehet, van amelyiknél 8 különböző DB területet adhatsz így meg.
Tehát még típuson belül is eltérhet a CPU memória koncepciója. Főleg amikor az egyikben RAM+elem van, a másikban meg MMC (flash) kértya.Ezeket a beállításokat a HW konfigban lehet megtenni a CPU tulajdonságainál.
Olyan eltérések is akadnak, hogy nem ugyanannyi run time meter van a CPU-ban, vagy bizonyos rendszerhívásokat nem ismer az egyik típus, másik meg ismeri.A 313-5BF03-0AB0 esetén az összes DB megőrzi a tartalmát kikapcsoláskor.
-
Szirty
őstag
Szerintem minden dokumentáció beszerezhető mindenféle herkentyűjükről.
Legalábbis eddig még sikerült. Azt nem mondom hogy mindig egyszerű volt, de ezt nem a dokumentumok hiánya hanem épp ellenkezőleg a gigantikusan sok dokumentáció okozta, meg az hogy rossz helyen kerestem.Hasonlót tudok mondani omronnal kapcsolatban is, bár ott nagyságrenddel kevesebb automatizálási eszköz van (szerintem) mint a siemensnél.
Legutóbb pl. nem kis nehézséget okozott egy Omron analóg modul doksijának a beszerzése.
Előtte meg omron MX2 frekvenciaváltó pulse train kimenetével gyűlt meg a bajom, ugyanis csak a sokadik doksi és sokadik teszt alapján derült ki, hogy ez a típus nyomatékkal arányos impulzus kimenetén csak PWM formában tud jelet adni, pulse train formában nem, a hozzá kapcsolt PLC bemenet meg csak az utóbbit tudta fogadni, az előbbit nem. Analóg bemenet meg nem volt.
A problémát sikerült megkerülni.Sajnos ilyesmi előfordul.
Nézzük a jó oldalát. Mindkettő gyártó sokkal jobb (szerintem) mint bármelyik olasz cég bármilyen elektronikus herkentyűjének a dokumentálása és a doksihoz való hozzáférés. -
Szirty
őstag
A DB változó tartalma nem lesz határozatlan. Az inital value értéket kapja minden változó amikor először feltöltöd a PLC-re. Illetve amikor változót adsz hozzá a DB blokkhoz, akkor az újonnan hozzáadott változó az init value-t kapja.
Abban a CPU típusban amelyikben van nem retentív DB, bekapcsoláskor nem tudom milyen értéket vesznek fel a változók, de szerintem nullát.
-
Szirty
őstag
Helló tibi-d!
Nem támogatott oprendszer. A Siemens 2015-ös compatibility listájában nem is szerepel Win8 Win8.1 Win10.
Ettől még lehet hogy fut, ki kell próbálni.
Mindenképpen a Micro/Win V4.0 SP9 változattal tegyél próbát, mert a lista szerint az támogatja a Win7 sok változatát, beleértve a 32 és 64 biteseket is.
Konkrétan:Enterprise (32-Bit)
Enterprise (32-Bit) SP1
Enterprise (64-Bit)
Enterprise (64-Bit) SP1
Home Premium (32-Bit)
Home Premium (32-Bit) SP1
Home Premium (64-Bit)
Home Premium (64-Bit) SP1
Professional (32-Bit)
Professional (32-Bit) SP1
Professional (64-Bit)
Professional (64-Bit) SP1
Ultimate (32-Bit)
Ultimate (32-Bit) SP1
Ultimate (64-Bit)
Ultimate (64-Bit) SP1 -
miclucky
tag
-
Szirty
őstag
"sak a legvégső lépcső, amikor a PLC nyelvére lefordított kódot írja meg az ember. Az utolsó fázist ha tehetném, szívesen átruháznám másra, mert az már a feladat "kulimunka" része"
Érdekes...
Én ezt tartom a legkreatívabb résznek ez a legkevésbé kuli munka ez igényli a legtöbb tudást, tehetséget és tapasztalatot. -
rsf
senior tag
Az ANY Adattipussal kell tisztában lenni.
Pl:CALL SFC 21
BVAL :=P#DB100.DBX0.0 BYTE 28
RET_VAL:=#RetVal_SFC21
BLK :=P#DB200.DBX358.0 BYTE 28Ez DB100.DBX0.0-tól másol 28Byte-ot DB200.DBX358.0-tól kezdődő területre.
Ha az adat string akkor az másolás után is az marad!
Persze a forrás és a cél területnek egyezőnek kell lennie.
Üdv.[ Szerkesztve ]
“Az a baj a világgal, hogy a buták mindenben holtbiztosak, az okosak meg tele vannak kételyekkel.“
-
Szirty
őstag
Szevasz tibi-d!
Én az SFC20 (BLKMOV)-ot javaslom.
Könnyebbséget jelent ebben az esetben hogy stringből stringbe kell másolni, hogy szimbolikusan is megadhatod a címeket.
Feltéve persze ha stringnek deklaráltad a DB-ben azt a két stringet.
Írok egy példát:Így néz ki a DB, amiben a két 20 karakter hosszú string van:
Itt mindenféle egyéb, jelen kérdés szempontjából lényegtelen dolog is van, de azt akartam hogy ne kizárólag csak a két string legyen a DB blokkban.
Így néz ki a másolás:
Persze megadhatod a közvetlen címet is, ami itt a forrás (SRCBLK) tekintetében DB1.DBX26.0 BYTE 22 lenne, a cél (DSTBLK) meg DB1.DBX60.0 BYTE 22.
A lényeg, hogy ha így adod meg, akkor tudnod kell, hogy a string 2 byttal hosszabb mint amennyi karaktert tud tárolni, m ert az első byte magadja a string hosszát, a második byte pedig hogy hány értékes karakter van benne.Itt látható a két string tatalma az SFC20 végrehajtása után.
rsf megoldása is jó, a másolás FILL hívással is működik, de ott megadható a forrásnál kisebb vagy nagyobb méretű célterület ami itt (ennél a feladatnál) kavarodást okozhat.
[ Szerkesztve ]
-
Szirty
őstag
-
Szirty
őstag
Természetesen ki kell hozni a legjobbat abból ami van. Amíg a befektetés nem kerül többe mint amennyit az eredmény nyújt.
Sajnos a kívánalmak, amik "felülről" jönnek sokszor túllövik a lehetőségeket.
Legyen olcsó készüljön el gyorsan és mindent tudjon.Ez épp annak a háromszögnek a három csúcsa, amin belül manőverezhetünk.
(Cégünk jól, olcsón és gyorsan dolgozik, ön ebből kettőt választhat)"azt szokták mondani, hogy abból kell főzni ami van."
Azt szokták válaszolni, hogy azt főzünk amit lehet abból ami van...
-
Szirty
őstag
Nem kell annak többször változnia egy cikluson belül hogy ne lásd mi van benne.
Akkor sem látod ha minden ciklusban csak egyszer változik.Nem is nagyon volna értelme kijelezni, tekintve hogy a ciklus idő ms nagyságrendű.
Ha kijelezné akkor látnál egy számot ami pár ezredmásodpercenként változik, de leolvasni nem tudnád.Ilyenkor azt szoktam csinálni, hogy ahol az illető változó értékére kíváncsi vagyok, a programban átmásolom egy szabad helyre és azt monitorozom.
Később ezt a másolást a végleges programból kiveszem. -
Szirty
őstag
Helló!
Pár tipp:
A WccF project tárolja a transfer (kommunikációs) beállításokat. Lehet az van eltérően beállítva a régebbi és az újabb projectben.Nagyon fontos a PG/PC interface beállítása és azon belül is az, hogy melyik access pointhoz vannak azok beállítva! Erre nagyon oda kell figyelni.
Szintén fontos, hogy milyen állapotban van a panel amikor küldeni akarod neki a projectet. Transfer módban van? Ha nem, akkor fontos, hogy a panelen az az interface amelyikre csatlakozol a PC-vel "remote" engedélyezve legyen.
Szintén fontos, hogy amennyiben nem RS232 a kapcsolat, akkor a WccF transfer settings-ben be legyen állítva a panel címe! Ha az interface beállítás a PC-n jó, a panelen engedve van az adott interface, a megfelelő access pointhoz van belőve a PC-n a kapcsolat, DE a panelnek más a címe mint ami a WccF projectben van, akkor nem kapcsolódik.
Végül egy kérdés:
Azt írod PPI interface-n megy.
Mihez kapcsolódik ez a panel (milyen PLC-hez)? A PPI-t S7-200 használja! -
Dezsi82
tag
Üdv.
Nem vagyok benne biztos, hogy értem mire gondolsz.Az elv az, hogy a vezérlő küld egy utasítást az IOnak, hogy küldje el az IO állapotokat. Az elküldi, a vezérlés megnézi, hogy a korábban kapott állapothoz képest van-e eltérés. Ha van, és az új állapot igaz, akkor növeljük a számláló értékét.
Persze ha a munkadarabok gyártásának sebessége összemérhető a hálózati kommunikáció sebességével, akkor más megoldást kell találni és/vagy trükközni kell. (Pl a legtöbb általam ismert adatgyűjtő modulnak van beépített számlálója)
Úgy gondolod, hibás gyakorlat lenne terepi IOkról le/felfutó éleket figyelni?
-
Dezsi82
tag
Természetesen képezhetsz számot az IOkból, és meg ezen kívül sok egyéb módon is ábrázolhatod, de az hogy bitekből áll, nem változik, így ugyanannyira érzékeny mintha csak egy bitet küldenél
Ugyanakkor képezhetsz egy ellenörző összeget a kapott számra (vagy akármire) és így már üzembiztosabb az adatátvitel.
De pont erre valók a kommunikációs protokollok, ezekkel neked már nem kell bajlódni. Teljesen mindegy hogy egy darab, vagy egy rakat bitet küldesz.
Ráadásul egy "darab kész" jel miatt ellőni egy CNC gép összes lehetséges kimenetét elég "drága" mulatság -
Dezsi82
tag
Üdv
kommunikációs vonalon jobb folyamatosan küldeni valamilyen jelet, és az értékét változtatni ha esemény van, mint addig nem küldeni semmit, míg nincs esemény, mert, azt nem tudom detektálniEz az alapelv meg is állja magát. Annyira hogy nem csak kommunikációs vonalon, de a digitális bemeneteknél is. Pl egy tartály minimum szintkapcsolója akkor ad jelet, amikor érzékel folyadékot, a maximum pedig akkor ha nem érzékel folyadékot. Így ha elszakad a vezeték akkor biztos nem fut a szivattyúd szárazon, és nem semmikép sem töltöd túl a tartályt (kivéve persze zárlat esetén, de mindenre szinte lehetetlen felkészülni). De a 4-20mA jeleknél is azért jó hogy 4mA a minimum, mert egyből detektálható a szakadás.
Kommunikációs vonalon külön szokás a kommunikáció épségét ellenőrizni, amire rengeteg módszer van, többnyire a protokollba beépítve.
Ha egy nagyon egyszerű kommunikációt nézek, mondjuk egy mezei RS232-t, ami mondjuk csak akkor küld adatot, amikor a bemenet igaz, ott előfordulhat az az eset, amit felvetettél. Mert ebben az esetben a küldő megnyitja a portot, és elküldi az adatot, és nem is tudja hogy a fogadó megkapta-e. Ilyen esetben is a kommunikációt kell kicsit módosítani. Vagy úgy, hogy a küldő kap visszajelzést, hogy a vevő megkapta az adatot, de ettől még csak a küldő fogja tudni a hibát. Vagy a küldő fix időközönként elküldi a bemenet állapotát, annak állapotától függetlenül. Esetleg a vevő szólítja meg először a küldőt. Ezekben az esetekben ha nincs válasz, vagy nem jött adat x időn belül, akkor gond van.
Mindenesetre ezek mind kommunikációs finomságok, nem az értékes adatot érintik.
De természetesen folyamatos kommunikáció szükséges, hogy meg tudd állapítani, hogy a kommunikációs csatornád működik-e. -
Szirty
őstag
Az OP27 manual szerint lehet.
-
Szirty
őstag
Az automatikus összehasonlításra semmilyen lehetőség nincs, mivel a panel nem tárolja a forrás projectet, csak a lefordított, RT által futtathatót.
Persze elvileg megtehetnéd, hogy lemented ProSave-vel az eredeti image-et, majd rátöltöd a kérdéses projectet, majd azt is lemented ProSave-vel és bináris file összehasonlító programmal megnézed eltér-e a két bináris file egymástól.
Gyanítom azonban, hogy még ugyanazon project is mutatna eltérést, így ez a módszer aligha használható.
Új hozzászólás Aktív témák
- Megjelent az iOS 17.4, minden idők egyik legfontosabb iPhone-frissítése
- gban: Ingyen kellene, de tegnapra
- Autós topik
- Óra topik
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- DIGI Mobil
- CASIO órák kedvelők topicja!
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...