Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#4201) Szirty válasza KB.Pifu (#4200) üzenetére


Szirty
őstag

Üdv!

Mutasd a kódot amit írtál!
És azt is ahol feldolgozod az OB-ban növelt értéket!

Valami byte mellécímzés lesz... 256 ugyanis épp a byte ábrázolási tartományának határa.

(#4202) KB.Pifu válasza Szirty (#4201) üzenetére


KB.Pifu
tag

Szia!

Gyanakvás helytálló, szép kerek szám, legalábbis számunkra.
Azt hogy néha stop-ba megy a CPU még nem is feszegettem.

OB38 hívja Fc8-at, Ob35 FC9-et, mindkettő helytelenül működik és mindkettő a DB8-at használja.
Először memóriaszavakat használtam, de az sem volt jó

a kód messze nincs még kész, valószínű akad benne bug elég.

Ob35

CALL FC 9
inout:=DB8.DBW10

FC9 (=ez csak a teszt, ami szintén 255-ig megy, aztán újrakezdi)
inout változó, egy integer az In_Out paraméterek között

L #inout
INC 1
T #inout

OB38
CALL FC8
bit :=DB8.DBX6.0
Pre_state:=DB8.DBW4 //integer az In_Out paraméterek között
Inc_val :=DB8.DBW0 //integer az In_Out paraméterek között
Calc_val :=DB8.DBW2 // integer az In_Out paraméterek között

FC8 ahol a csodának kellene történnie

VAR_OUTPUT
bit : BOOL ;
END_VAR
VAR_IN_OUT
Pre_state : INT ;
Inc_val : INT ;
Calc_val : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
//
//

L #Inc_val; //határértékfigyelés
L 0;
>=I ;
JCN end;

L #Inc_val;
L 2000;
<=I ;
JCN end;

L #Calc_val; //előző állapot mntése, hogy eldönthető legyen, hogy csökken-e vagy nő
T #Pre_state;


A "hist_up"; // i1.0
JCN end2;


L #Inc_val;
INC 1;
T #Inc_val;

end2: A "hist down"; // i1.1
JCN end3;

L #Inc_val;
DEC 1;
T #Inc_val;

end3: L 10;
/I ; // ezt lehet real-ben fogom ha eljutok odáig
T #Calc_val;


L #Calc_val;
L 120;
>I ;
JCN end1;

SET ;
= #bit;

end1: L #Calc_val; //azt már látom, hogy ez mivel integeren számolok a legtöbbször meg fog egyezni,
L #Pre_state;
<I ;
JCN end;
L #Calc_val;
L 108;
<I ;
CLR ;
= #bit;



end: BE ;

ez pedig az adatmegjelenítésre használt DB8

DATA_BLOCK DB 8
TITLE =
VERSION : 0.1


STRUCT
Inc_Val : INT ; //Temporary placeholder variable
Calc_Val : INT ;
pre_state : INT ;
bit : BOOL ;
dummy : INT ;
Obb35 : INT ;
END_STRUCT ;
BEGIN
Inc_Val := 0;
Calc_Val := 0;
pre_state := 0;
bit := FALSE;
dummy := 0;
Obb35 := 0;
END_DATA_BLOC
K

Ezekkel csak azt szerettem volna megmutatni, hogy sehol sincs byte, és mivel nem memóriaszót használok, még a keresztbecímzés sem fordul elő
Remélem elég olvashatóra sikerült ez a kis bejegyzés

Üdv
Pifu

(#4203) moseras


moseras
tag

Sziasztok!

Frekvenciaváltóhoz, motor fordulatszám alapjel állításhoz keresek potmétert, ami mondjuk valamilyen kultúrált forgatógombbal rendelkezik, és műanyag előlappal, valamilyen skálával (mondjuk 0...10 vagy 0...100), tud valaki ilyent ?

Köszi.

Imi.

(#4204) KB.Pifu válasza Szirty (#4201) üzenetére


KB.Pifu
tag

szia!

Időközben kipróbáltam egy másik projektben, ott úgy működött ahogy elvárható tőle.

Az amit írtam, ahol nem működött, az egy elég vegyes projekt, azért hogy minden szépen egy helyen legyen ne kelljen ugrálni a különböző projektek között, meg így legalább van értelme a szimbólumtáblának és a "go to location" használatának.

De a kérdés még mindig nyitott és nem értem hogy miért csak 256-ig számol, mikor a többi FC nincsen aktiválva a PLCSIM bemenetein, de ha aktiválva lennének elvileg akkor sem lenne keresztbecímzés.

Tudom, hogy valahol én rontottam el, de ez nagyon nem egyértelmű.

(#4205) Szirty válasza moseras (#4203) üzenetére


Szirty
őstag

Helló!

most azt akarod tudni van-e valakinek ilyen eladó éppen, vagy azt hogy honnan lehet beszerezni?
Eaton pl. gyárt ilyet...

(#4206) Szirty válasza KB.Pifu (#4204) üzenetére


Szirty
őstag

Helló Pifu!

Ott rontottad el, hogy az INC utasítást használod egy integer növeléséhez és nem olvastad el hogyan működik az INC:

Az ugyanis csak 8 bittel (byte) dolgozik és 255-ig számlálhatsz vele (utána túlcsordul és nullától újrakezdi).

Ezért azt javaslom, hogy az alábbi utasítások helyett:
L #Inout
INC 1
T #Inout

Ezeket használd:
L #Inout
+ 1
T #Inout

A + 1 is inkrementál, de 16 vagy 32 biten!

(#4207) moseras válasza Szirty (#4205) üzenetére


moseras
tag

Üdv!

Azt akartam tudni, hogy ki gyárt ilyent, és honnan lehet beszerezni. Pontosan ilyenre gondoltam.

Köszönöm!

Imi.

(#4208) KB.Pifu válasza Szirty (#4206) üzenetére


KB.Pifu
tag

köszönöm!

Ezzel is okosabb lettem, nem olvastam el, annyira egyértelműnek tűnt, mivel ez már a második eset úgy néz ki csak-csak bele kell nézni abba is amiről azt hiszem ,hogy tudom.

üdv
Pifu

(#4209) mediumgecso


mediumgecso
őstag

Üdv Mindenki!

Tudna valaki segíteni Siemens Simatic-ot felvarázsolni Win 8-ra vagy 8.1-re??
Sajnos csak ezzel a két op.rendszerrel kompatibilis a gép (2 napja vettem), sajnos Win 7 nem érhető el rá.
Ha valakinek van ezzel kapcsolatban bármiféle tapasztalata, kérem, ossza meg velem.
Remélem tudtok segíteni.
Köszönöm.

[ Szerkesztve ]

iPhone 15 Pro Max 256GB Natur Titanium // Garmin Venu 2 // Canyon Grail CF SL + Garmin Edge 840

(#4210) Szirty válasza mediumgecso (#4209) üzenetére


Szirty
őstag

Helló mediumgecso!

Kissé felületesen adtál információkat. Mit értesz azon, hogy "Siemens Simatic-ot felvarázsolni Win 8-ra"?
Step7-et, vagy TIA portalt, vagy mit akarsz rátenni?
Milyen laptop az amin megy win8, de nem megy win7? :-)

Ha meghatározott céljaid vannak bizonyos szoftverek használatát illetően, akkor laptop vásárlás során miért nem vetted figyelembe a támogatást?
Más szóval ha XY programot akarsz használni, akkor olyan rendszert kell beszerezni amit a kérdéses szoftver támogat.

[ Szerkesztve ]

(#4211) Teuton99 válasza mediumgecso (#4209) üzenetére


Teuton99
csendes tag

Szia!

Ha a STEP7-et akarod használni (TIA portállal nincs tapasztalatom), akkor próbálj meg virtuális gépet használni. Ehhez telepítened kell egy virtuális gép lejátszó alkalmazást: VM Player vagy Oracle Virtual Box - én ezeket használom win7 alatt.

(#4212) Szirty válasza Teuton99 (#4211) üzenetére


Szirty
őstag

A Microsoftnak saját virtuális gép megoldása van Win7 alatt!

(#4213) mediumgecso válasza Teuton99 (#4211) üzenetére


mediumgecso
őstag

Küldtem PÜ-t

iPhone 15 Pro Max 256GB Natur Titanium // Garmin Venu 2 // Canyon Grail CF SL + Garmin Edge 840

(#4214) Szirty válasza Szirty (#4210) üzenetére


Szirty
őstag

Üdv!

Ha valakit az érdekel, hogy milyen siemes software milyen operációs rendszert támogat hivatalosan, az nézze meg ezt a compatibility list-et.

(#4215) Mazsika


Mazsika
őstag

Sziasztok!
Tudna valaki segiteni profibus halozatokkal kapcsolatban? Valami rovid leiras, stb kellene nekem.
Az egyik gepegysegnel van egy kis profibusos hiba, de nem tudunk rajonni, hogy mi okozza. (S7-300as plcrol es nehany et200b eszkozrol van szo) Egy amprolyzer nevu progirol hallottam, azt tudja vlalaki hogyan kell hasznalni?
Valaszokat elore is koszonom!

Dáccsika

(#4216) Szirty válasza Mazsika (#4215) üzenetére


Szirty
őstag

Heló Mazsika!

Ez egy eddig zavartalanul működő berendezés volt, vagy új telepítésű, ami még nem működött hibátlanul?
Ha az előbbi, akkor szerintem a következőket lehet tenni:
- Diag buffer nézegetése, melyik eszköz okozza a hibát
- A busz lezárások ellenőrzése, le van-e zárva mindkét végpont és csaj az van-e lezárva.
- A kábelezés vizsgálata. Lekötni összes eszközt, méréseket végezni
- ET200 állomások cseréje (esetleg egymással,hogy a hiba átmegy-e másikra)
- Busz sebesség átmeneti felezése, hibajelenség figyelése
- Repeater ideiglenes beépítése, szegmentálás. hibajelenség figyelése
- Profibusz diagnosztikai készülékkel a a busz megfigyelése

(#4217) Mazsika válasza Szirty (#4216) üzenetére


Mazsika
őstag

Egy ideig szepen ment a gep, bar mikor a laptopot radugtuk mindig volt, hogy emiatt leesett egy-egy eszkoz a busrol, ugyhogy uj koraba sem volt mar 100as a bus kor.
Diag buffert megneztuk termeszetesen de hiaba csereltuk az et200akat, amit hibasnak irt nem javult a helyzet. Bus csatik ellenorizve, vegelzaro ellenallasok csak a bus vegeken van lezarva. A csatikat is csereltuk mar igazabol a kabelre gyanakodok, Hetfon megprobalom a sebesseg csokkentest, de valahogy meg kellene talalni a problema forrasat... :W

Dáccsika

(#4218) Szirty válasza Mazsika (#4217) üzenetére


Szirty
őstag

Üdv!

Mekkora busz kábel teljes hossza és mekkora a beállított busz sebesség?
Van-e rajta T elágazás? Hány eszköz van a busz szegmensen (összesen) és hány szegmensből áll a busz (van-e repeater beiktatva)?

(#4219) byte-by válasza Mazsika (#4217) üzenetére


byte-by
tag

halo !

a profibus jó, ha minden jó.
de ha valami nem jó akkor kicsinálja az embert.

csak tapasztalat , illetve eset megosztás:

a cégnél 4 kuka robot egységből álló raklapozó , görgősor, zsugorfóliázó , cim kéző , kirakó egység.
jó nagy terület elkerítve. minden profibuson.állandó hibaüzeneteket kaptunk , de hiába nézegettük a diag -ot nem volt egyértelmű.
vezetékek ellenörzése, csatlakozók átvizsgálása, stb.
kínunkban gondoltuk visszavágunk minden vezetéket 50 mm-rel. akkor szembesültünk vele. csak akkor látszott amikor jelentősen megtörtük a vezetékeket.szinte az összes ilyen volt.,

németek rakták össze a sorokat, de ilyen trehány munkát ritkán látni.
át kellett vizsgálni a rendszerhez tartozó összes szekrényt és jól tettük, mert sok helyen teláltuk ilyen és ehhez hasonló problémákat.
az összes vezeték meg volt vágva. kicseréltük az összes csatlakozót és újra kötöttünk mindent.most már használható a rendszer.

byte

[ Szerkesztve ]

(#4220) SLY89


SLY89
újonc

Sziasztok!

Az utóbbi 1-2 hónapban kezdtem el érdeklődni az PLC programozás iránt és szeretnék minél többet megtudni róla ha lehet. Elsősorban az érdekelne, hogy miket lehet pl PLC programozással megvalósítani, illetve a nyelvek mennyire térnek el egymástól.
Tanárom jóvoltából Phoenix PLC-vel kezdtem az ismerkedést, de sajnos a dolog már ott megakadt, hogy nem tudom lehet-e szimulációs módot használni benne.

Köszönöm a segítséget előre is! :R

(#4221) Mazsika válasza Szirty (#4218) üzenetére


Mazsika
őstag

A teljes hossz kb 10 méter, a sebesség az alap ami szokott lenni beállítva. 5 db et200 van rajta + 2 panel. Két irányba indul el a bus, ha jól emlékszem. T elágazás, repeater nincs. Sajnos pontos adatokat nem tudok, ma egy másik bus hibával szívtunk egy másik gépen. De holnap megnézem ezeket pontosan!
Köszönöm!

Dáccsika

(#4222) Szirty válasza SLY89 (#4220) üzenetére


Szirty
őstag

Szia SLY89!

"Elsősorban az érdekelne, hogy miket lehet pl PLC programozással megvalósítani, illetve a nyelvek mennyire térnek el egymástól."

Megvalósítani komplett gyártósorokat is lehet.
A nyelvekkel kapcsolatban indulj ki ebből.

(#4223) KB.Pifu


KB.Pifu
tag

Szia Szirty!

ezt írtad nekem régebben

"- Készíts olyan blokkot, ami analóg bemenetről érkező (0-27648) értéket beállítható fizikai mennyiséggé skáláz. Pl. ha az analóg bemeneten egy 200 bar-os távadó van, akkor a 0-27648-at alakítsa 0-200 tartományra. Ilyesmire gyakran van szükség.
- Valósíts meg az előző blokkal (vagy azt egészítsd ki) olyan küszöb érték kapcsolót, aminek állítható hiszterézise van. Tehát beállítasz 114 bar nyomást, az legyen a hiszterézis tartomány fele. Ha a mért érték átlépi hiszterézis tartomány tetejét, akkor kapcsoljon be egy bitet, és csak akkor kapcsolja ki, ha a mért érték a hiszterézistartomány alja alá esik"

a múltkori segítséged az INC parancsnál ennek a megvalósításának az első lépései.
Mivel nincs PLC-m nem tudok analóg bemenetet szimulálni csak tizedmásodpercenként változtatom az integer értékét.

Nem foglalkoztam még élőben olyan folyamattal ami hiszteréziskapcsolót használt volna ezért nem minden tiszta nekem.

tehát tizedmásodpercenként (ob38) növelem az értéket vagy csökkentem, 1200-nál bekapcsol egy bitet 1080-nál pedig ki.
Első megoldásomban a bit resetelése előtt figyeltem, hogy tényleg csökkenő tendenciát mutat-e az integer. De szükséges ez? Mert 1200 felett mindig 1 a bit értéke, 1080 alatt pedig mindig 0.

1. eset: szimulátor 0-ról indul fel 2000-ig aztán vissza, akkor OK

2. eset: mondjuk rögvest az érték 1195-ről indul, és csökken, akkor a bitnek 0 -nak kell lennie? Gondolok arra, hogy mivel fizikai folyamat aminek idő kell a megváltozásához, akár mondjuk át is léphette a küszöbértéket, csak akkor mi nem mértük.

Az ilyen hiszterézis kapcsolóra mondanál egy példát? A feladat alapján a nyomás figyelése, de azt az idő vagy hőmérséklet függvényében történik?

üdv
Pifu

(#4224) Szirty válasza KB.Pifu (#4223) üzenetére


Szirty
őstag

Szia!

"Első megoldásomban a bit resetelése előtt figyeltem, hogy tényleg csökkenő tendenciát mutat-e az integer. De szükséges ez? Mert 1200 felett mindig 1 a bit értéke, 1080 alatt pedig mindig 0."

Nem kell figyelni hogy a az érték milyen tendenciát mutat. Egyszerűen be kell kapcsolni (SET) a hiszterézistartomány teteje fölött és ki kell kapcsolni a hiszterézistartomány alja alatt.
A hiszterézistartományon belül pedig nem bántjuk. Ha be van kapcsolva bekapcsolva marad, ha ki van kapcsolva kikapcsolva marad mindaddig amíg ezen a tartományon kívül nem kerül.

"2. eset: mondjuk rögvest az érték 1195-ről indul, és csökken, akkor a bitnek 0 -nak kell lennie?"

Nem. Mivel 1195 a hiszterézistartományon belül van a bithez nem nyúlunk.
Az egész történet lényege két összehasonlítás és egy RS tároló. Az egyik összehasonlítás a SET a másik a RESET ágban. :-)

Hogy mire jó?
Képzelj el egy szint mérést. A szintet mérjük. Ha egy adott szint alá csökken a szint, elkezdjük tölteni úgy, hogy bekapcsolunk egy szivattyút. Ha a szint elég nagy, kikapcsoljuk.
Ezt egyetlen összehasonlítással is megoldhatjuk (tehát hiszterézis nélkül) hogy ha a szint 60%-nál kisebb akkor szivattyú start, ha egyenlő vagy nagyobb, akkor szivattyú stop.
Ezzel két baj biztosan lesz.

1. A szint lassan csökkenve felülről közelít a 60%-hoz 60.2%...60.1% stb. Analóg mérés soha nem stabil. mindig billeg ide-oda legalább egy bitet, de inkább többet. Tudod mi fog történni, amikor a szint elkezd 59.99-60.01 között mérni...
2. Amikor töltés közben az emelkedő szint kezdi megközelíteni a kikapcsolási 60%-ot és lötyög :-)

Mind a két dolog következménye az, hogy a szivattyút túl gyakran és véletlenszerűen ki-be kapcsolgatja.
Ettől függetlenül is túl gyakran kapcsolgatná.

A gyakorlatban még a legegyszerűbb szobatermosztátnak is van hiszterézise, vagy éppen a festő kompresszor nyomáskapcsolójának

(#4225) KB.Pifu válasza Szirty (#4224) üzenetére


KB.Pifu
tag

Szia!

Köszi a választ, én következetesen erre gondoltam mikor a hiszterézis járt a fejemben.

itt ugye már van értelme az előző állapotnak is.

(#4226) Szirty válasza KB.Pifu (#4225) üzenetére


Szirty
őstag

Üdv!

Igen, ez a hiszterézis.
Erről volt szó eddig is :-)

(#4227) rsf


rsf
senior tag

Most futottam bele abba a hibába, hogy egy network az RLO-t 0-ba rakta és ezért a következő network-ben irt rutin nem futott le. (STL-ben vannak irva persze)
Szerencsére megtaláltam a hiba okát, nem kéne kezdő STL-es létemre mindent STL-ben írni. :)
Ez első networkban a műveletnek nem volt eredménye.
Van erre vmi általános szabály, hogy ilyenkor mire kell figyelni?
Üdv.

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

(#4228) Szirty válasza rsf (#4227) üzenetére


Szirty
őstag

Üdv!

A hívásnál egymás után raktad őket és a másodikat nem engedte lefutni az első?
Tehát az egyik hívás ENO-ja után jött a másik EN-je így?:

Erre a szabály (szerintem) a következő:

Ha a blokk nem ad vissza semmilyen logikai eredményt illetve ha ad akkor azt nem az ENO "kimeneten" teszi, hanem OUT vagy INOUT paraméterben, vagy a blokkon belül címzett biten, akkor a blokk ENO kimenetét a blokkon belül 1-be kell beállítani közvetlenül kilépés előtt.

Erre a legegyszerűbb a

SET
SAVE

utasítások alkalmazása.

(#4229) Mazsika válasza Szirty (#4228) üzenetére


Mazsika
őstag

Vagy lehet külön NWbe írni!? Ha ENOt irja trueba akkor egy másik híváskor problémát okozhat nem?
A profibusos problémámra: furcsa mód csak bizonyos termék gyártásánál jön elő a hiba, más termék gyártásakor abszolút nem! :F

Dáccsika

(#4230) rsf válasza Szirty (#4228) üzenetére


rsf
senior tag

Hali,
két egymás utáni network volt ezért lepődtem én is meg.
Eddig amikor a 9.networkban lévő programkód lefutott akkor a 10. networkban lévő programkód is megcsinálta amit vártam tőle.
Ezután módosítottam a 9.net-ben lévő kódot, hogy egy bemeneti paraméter függvényében mást irjon egy xDB.DBWy címére. Ez a módosítás elsőre nem sikerült de azt vettem észre, hogy a 10.net-ben lévő kód sem hajtódik végre aminek amúgy semmi köze a 9.net-hez.
Az volt a hiba, hogyha a bemeneti paramétere 1-volt akkor jól működött, de amikor 0 akkor nem lett eredmény és nem is irt be semmit. A monitorozás közben láttam meg az RLO állapotát, hogy az 0.
És ezzel a 0-val indult a 10. net ami ez miatt adott a kód végén 0-t.
Amúgy eddig 9 bemeneti paraméterem van és 1 kimeneti. IEC timerek real paraméterekkel,Multiple iDB és egyéb nyalánkságokkal.
:R
Üdv.

[ Szerkesztve ]

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

(#4231) Szirty válasza Mazsika (#4229) üzenetére


Szirty
őstag

Helló!

"Vagy lehet külön NWbe írni!? Ha ENOt irja trueba akkor egy másik híváskor problémát okozhat nem?"

Ha egy FC hívással kapcsolatban tisztában van az ember azzal, hogy mit csinál az ENO, akkor annak megfelelően használja. Így nem érhet ilyen meglepetés.

Két lehetőség gyakori.
1. Az ENO mindig felveszi az EN állapotát. Azaz ha a kérdéses blokk lefut, akkor az ENO mindig TRUE állapotú lesz. Bár nem FC/FB, de pl. a MOVE utasítás ilyen. Szépen fel lehet őket fűzni egymás után, ha az első lefut, akkor mind le fog futni. Ilyen FC/FB blokkot akkor készítek, ha nincs olyan funkciója, ami boolean eredményt ad, vagy azt másképp akarom átadni a "környezetének".

2. Az ENO valamilyen állapotot jelez. Ez a blokk funkciójától függ (mire való). Lehet vele jelezni sikeres/sikertelen (hiba keletkezett) lefutást jelezni, vagy ha a blokk feldolgozási eredménye két állapotú, akkor ezt az eredményt adhatja az ENO-n.

(#4232) rsf


rsf
senior tag

Hogyan lehet iDB területre pointert címezni Step7-nél?
FB blokk iDB területen egy String. Ebből a stringből kellene x hosszan részeket kimásolni. De pointer nélkül nem tudom.
Vagy azt is jó volna,ha létre tudnék hozni x hosszúságú y tartalmú Stringeket aztán azokat másolni oda ahová kell.
Üdv,

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

(#4233) Szirty válasza rsf (#4232) üzenetére


Szirty
őstag

Hali!

Használd az IEC FC26 MID beépített blokkot: FC26 (Libraries/stdlibs/iec/FC26 MID IEC).

Itt a DB1.DSTSTR egy string egy shared DB-ben.
Kivesz az instance DB-ben lévő #EgyString nevű stringből a 4. karaktertől kezdve 2 karaktert és DB1.DSTSTR stringbe teszi.

Bár nem volt világos a kérdésedben, hogy az iDB-ből abból azon FB blokkon belül akarsz string részt kivenni amelyik a stringet tartalmazó iDB a "tulajdonosa", avyg kívülről, teljesen másik FC/FB blokkban fut ez a manipuláció? Nem mindegy.

(#4234) DP_Joci


DP_Joci
tag

Sziasztok,

Eplanos kérdésem lenne.
Beillesztek egy siemenses pl. bemeneti kártyát ( Beillesztés/Készülék … ) , de nem tudom módosítani a bemeneteket. Mi lehet itt a trükk?

köszönöm

(#4235) rsf válasza Szirty (#4233) üzenetére


rsf
senior tag

FB-ben az iDB ben lenne egy string ami fel lenne töltve 0-kkal. Ezt ugye az initial valueban meg lehet adni.
Ezután ebből vennék ki x hosszan darabokat amiket már egy shared DB-be rakosgatnék.
Ez lenne az egyik megoldás ez tűnik a legegyszerűbbnek.
A másik amihez találtam a helpben egy kis példát, hogy nincs sehol forrás DB, hanem a rutin csinál x hosszuságú stringet amit majd én pakolok el. Ebbe jelen ismereteimmel nem vágnék bele.Bár ez a megoldás elegánsabb lenne.
Üdv.

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

(#4236) Szirty válasza rsf (#4235) üzenetére


Szirty
őstag

Helló!

Akkor ott az FC26 amit írtam az előbb. Megadott string megadott helyéről vesz ki megadott hosszú karakterláncot. Amit leírtál annak pont megfelel.

Bár az még mindig nem világos, hogy az az iDB amiből a stringet olvasod ahoz az FB blokkhoz tartozik amiből olvasod, vagy másikhoz?

Meg azt sem értem teljesen, hogy ha feltöltöd a forrás stringet nullákkal (nem tudom nulla alatt mit kell érteni, üres stringet, vagy "0" karaktereket) akkor abból miért kell másolni, hisz pontosan lehet tudni hogy nullákkal van tele. :-)

(#4237) rsf válasza Szirty (#4236) üzenetére


rsf
senior tag

Az iDB ahhoz az FB-hez tartozik amiben fut a progi ami olvas. A 0-t stringként értettem. De legyen inkább A-kal feltöltve egy 64 hosszú string.
A feladat: különböző hosszúságú(paraméterrel megadva) stringeket(amik A-kkal vannak feltöltve) kell különböző shared DB-k különböző címeire másolni. Nem lehet ott üres String!!
Tegnap próbálkoztam a Left-el is, de valamiért nem működött mint ahogy most a MID-sem.
Az iDB-ben van egy string ami fel van töltve A-kkal. meghívom a mid-et és kimenetként megcímzek egy shared DB-t igy: p#DB.DBx0.0 és a VAT-ban nem látok ott semmit, a DB-t meg hiába monitorozom, mert a Stringet érdekesen jeleníti meg ha egyáltalán megjeleníti.
Üdv.

[ Szerkesztve ]

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

(#4238) Szirty válasza rsf (#4237) üzenetére


Szirty
őstag

Üdv!

Azért nem működik, mert az IEC string műveleteknek a kimenete STRING típusú. vagyis nem ANY, nem adhatsz meg ott string karaktereire mutató pointert. A string változó nevét add meg! Ahogy a példában amit küldtem.
Megint megkérdezem, hogy az miért nem jó amit írtam? Átírom ha kell, de ha nem tudom mi bajod vele, akkor nem tudom mit írjak át hogyan.

Mellesleg szerintem egyszerűbb lenne ha olyan FC blokkot írnál, amelyik előállít egy megadott számú "A" betűt tartalmazó stringet ahelyett hogy másolgatod.
Bár a te módszered is eredményes, de én így csinálnám.

(#4239) rsf válasza Szirty (#4238) üzenetére


rsf
senior tag

iDB forrásból nem megy a LEFT, MID.
De másik Shared DB-ből működik, de ez nekem igy nem jó!
Ez miért van?
Üdv.

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

(#4240) Szirty válasza rsf (#4239) üzenetére


Szirty
őstag

Szevasz!

Nem tudom miért van.
Én mindig igyekszem nagyon odafigyelni azokra a program részletekre amikkel másoknak példálózok. Peresze én is félreérthetek dolgokat és követhetek el hibákat.
De azt a programrészt is kipróbáltam amit neked javasoltam. Nekem működött. Kimásolta a megadott részt iDB-ből shared DB-be elsőre.

Nem tudom nálad mi lehet a gond. De ha elküldesz egy olyan programrészletet amivel a probléma egyértelműen reprodukálható, akkor kiderítjük!

(#4241) rsf válasza Szirty (#4240) üzenetére


rsf
senior tag

Hali,
Nem lehet, az a baj, hogy az iDB-ben csak initial Value van és ez miatt nem működik nekem rendesen, vagy mert 314-es a CPU!? Nem leszúrás volt, hogy nem működik amit beraktál, csak közöltem, hogy nálam vmiért nem fut le. Neked, csak köszönettel tartozok. :R
Amúgy csak simán meghívom a LEFT blokkot és az IN bemeneti paraméter az iDB-ben lévő Stringre mutat.
De ha az IN-nél lévő iDB-t kicserélem egy Shared DB-re akkor működik rendesen.
Szóval eddig még semmi mást nem csinálok vele.
Az iDB-ben úgy tűnik benne van a string, mert amikor kimásoltam az első 4 Byte-ot akkor láttam a String elejét. Küldtem róla egy Printscreen-t Privibe.
Üdv.

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

(#4242) Szirty válasza rsf (#4241) üzenetére


Szirty
őstag

Szevasz!

Semmi gond!
De most már elég tanácstalan vagyok hogyan tudnék segíteni a kérdésben.

(#4243) Szirty válasza rsf (#4241) üzenetére


Szirty
őstag

Helló rsf!

Ez a kód a #Num változóba beírt számú 'A' betűt pakolja bele #StringTMP nevű lokális változóba, majd átmásolja egy tetszőleges helyre a BLKMOV hívással.
Ha ez sem jó neked, akkor nem értettem meg a feladat lényegét

(#4244) dodzylla


dodzylla
csendes tag

Hello!

Hozzáértőktől kérnék némi tanácsot, itthonra szeretnék csinálni öntözéshez automatikát, egyszerűt, főként azért ,hogy gyakorolhassak is rajta.

Ilyen mágnesszelepeket néztem, 5-6 k körül ez bőven jó lenne:

http://www.hydrolight.hu/magnesszelep

Azt szeretném tőletek kérdezni milyen PLC t ajánlanátok ilyen célra, és milyen további eszközökre lenne szükség, PLC, táp ilyesmi.

Egyszerű rendszer lenne egyékbént annyi ,hogy reggel 6 kinyit egy mágnesszelep a csapnál, majd 1 hátul két szórófejre és kb 30 percre rá egy másik megint két szórófejre kicsivel arrébb, a kiépítést megcsinálnám simán, csak nem tudom milyen típusú plc kéne ehez, főként gyakorolni szeretnék!

A válaszokat előre is köszönöm!

Dod

(#4245) moseras válasza dodzylla (#4244) üzenetére


moseras
tag

Szia!

Szerintem valamilyen "okos relé" is megfelelhet a célnak. Legyen benne Real Time Clock, annyi relés kimenet, amennyire szükség van, néhány DI ha kell.

Pl. Siemens LOGO!, Mitsubishi Alpha2, Moeller (Eaton) Easy.

Javaslom, hogy ezeket nézd meg.

Imi.

(#4246) KLR válasza dodzylla (#4244) üzenetére


KLR
csendes tag

Szia.

Ilyen feladatra elég egy programozható relé is (Schneider Zelio, Siemens Logo!, Array AFB vagy SR, stb). Ezek olcsóbbak a PLC-nél, de meg lehet tanulni a Ladder és FBD alapjait.

Ha valami komolyabb érdekel, rá lehet futni jutányos áron kezdő csomagra, több gyártó képviselete kinál kiteket (alap PLC + HMI + szoftver + kábel).

Persze, ez attól függ, mit szeretnél megtanulni. Egy adott gyártó rendszerét (Siemens Simatic S7, Omron Sysmac + CX, stb) vagy csak érdekel a PLC programozás. Több helyen használják oktatási célra a Codesys csomagot (ingyenesen letölthető csomag: www.codesys.com ), amit sok gyártó is átvett (Schneider Electric, ABB, Eaton, Beckhoff, meg még sokan mások).

Konkrét PLC-t csak konkrét feladatra lehet ajánlani.

Üdv,

PS

Mindenkinek Kellemes Húsvétot !!!

(#4247) rsf válasza Szirty (#4243) üzenetére


rsf
senior tag

Hali!

Tökéletesen jó lesz.
A fenti (az iDB-s) is jó lett volna, csak nem tudtam rájönni, hogy miért nem működött nekem. Sima Shared DB-ből meg tudtam csinálni, de ezt a megoldásodat nem lehet überelni. :R
Már csak az SFC20 Dest címéhez kell raknom egy pointert, remélem lehet.
Köszi.

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

(#4248) rsf válasza dodzylla (#4244) üzenetére


rsf
senior tag

Ilyen célokra vannak gyári öntöző vezérlők kb. 30eFt-tól.
De ha te mindenáron PLC-t akarsz akkor az jóval többe fog kerülni.
ÜDV.

[ Szerkesztve ]

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

(#4249) dodzylla válasza KLR (#4246) üzenetére


dodzylla
csendes tag

Köszönöm a válaszokat!

Azért akartam PLC mert létrás programozást szeretném gyakorolni, meg kicsit komolyabban tanulmányozni az egészet, van PLC s okj m, meg autómatika technikusi vizsgám ,de ezek csak az alapokra elegek, szirty honlapját is tanulmányozom nagyon jó és hálás köszönet érte! De azért szeretnék kis tapasztalatot gyűjteni, tudom ,hogy ez nem sok meg elég egyszerű, de valahol elkell kezdeni.

Kellemes Húsvéti ünnepeket!

Dod

(#4250) Szirty válasza dodzylla (#4249) üzenetére


Szirty
őstag

Helló dodzylla!

Tényleg fölösleges és drága ilyesmire PLC-t használni, de hát végül is lehetséges :-)
Ha tudsz olcsón szerezni valami használtat akkor nosza.

Bár szerintem olyan feladat mint ez szimulátorban is remekül gyakorolható, az meg sok fejlesztői környezetben van.
Ez a feladat annyira minimális, hogy egy programozható relének is gyerekjáték, mint pl. Omron ZEN, Moeller Easy, Siemens LOGO, stb.

Mi kell hozzá?
Nos a PLC/prgRelé és az annak tápfeszültségét szolgáltató tápegység amennyiben nem 230V-ról üzemel. ha nem 230V-os, akkor 24V DC kell neki. Egy néhány amperes táp elegendő lehet.
Mivel a linkelt szelep 12V AC tekerccsel rendelkezik, olyan PLC-t kell választanod, aminek relés kimenetei vannak. Vagy külön 24V DC-s relék kellenek a szelepek kapcsolásához.
Továbbá kelleni fog egy olyan 12V AC táp (transzformátor) amelyik ellátja a szelepeket feszültséggel. Hogy milyen teljesítményű? Az a szelepek számától és azok áramfelvételétől függ, ám ezt az adatot a linkelt oldal készítői nem találták fontosnak közölni.
Blöffre 1-2 szelephez 10-20VA-es trafó biztosan elég lehet.

Útvonal

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