Hirdetés

2012. május 29., kedd

Útvonal

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

Hozzászólások

(#2601) Szirty válasza Szabest (#2600) üzenetére


Szirty
(fanatikus tag)

Hi Szabest!

Fogalmam sincs mi az amit írtál.
Én törekszem a pontos információ közlésre amennyire lehetséges.
Durva lenne-e ha ugyanezt kérném tőled?

[ Szerkesztve ]

Szirty

(#2602) raceboy


raceboy
(újonc)

Hello
Egy olyan kérdésem lenne, hogy egy függvénytáblázatot, hogy lehetne hozzárendelni egy állapothoz? Mert az a gondom, hogy az egyik bool a másik byte és nem tudom, hogy lehetne megoldani, hogy felismerje és jól is működjön?
Előre is köszi

(#2603) Szirty válasza raceboy (#2602) üzenetére


Szirty
(fanatikus tag)

Helló raceboy!

Egy kicsit konkrétabban lehetne?
Pontosan mit mivel hogyan akarsz megcsinálni min?

Szirty

(#2604) raceboy válasza Szirty (#2603) üzenetére


raceboy
(újonc)

Hello Szirty
Elküldtem privátban

(#2605) Szirty válasza raceboy (#2604) üzenetére


Szirty
(fanatikus tag)

Helló raceboy!

"Elküldtem privátban"

Leírtam privátban neked mi ezzel a baj. Itt nem részletezném.

Amit a problémával kapcsolatban az üzenetedből értettem (és itt nem a szavak önálló jelentésére az értelmezésére gondolok), az az alábbi:

- Világítás vezérlése plc-vel
- Van kézi és automata üzemmód
- Moeller ps4-341 plc

Amit pedig nem értek:
- Mi (mennyi) az az "összes égő" amire hivatkoztál?
- Mit jelent a "gyenge gomb"?
- Mi az, hogy "M5 név"?
- Hol az a táblázat (mi a tartalma), amiben összefoglaltad?
- Mi a bool és mi a byte
- Miféle sorok és oszlopok vannak?

Szirty

(#2606) raceboy válasza Szirty (#2605) üzenetére


raceboy
(újonc)

igen értem
Ez egy konferencia terem és vannak elől, hátul, középen és a vetítő mögött is égők. Az összes azt jelenti, hogy a fent leírt égők mind világítanak. A gyenge gomb azt jelenti, hogy egy vetítő üzemmódban ég vagyis gyengébben. Az M5 a kézi üzemmód neve. Ezek után vannak még gombok. A további állapotokba való lépésbe. Pl az m6 üzemmód azt jelenti, hogy az összes égő ég és az összes gombal kapcsolom be. A kev gombbal pedig kapcsolom át az m8-as állapotba. És ezen állapoton szeretném beállítani, hogy az elől, hátul, középen lévő égőket különböző gombokkal tudjam kapcsolni.
Deklaráláskor meg kell adni, hogy az állapot az bool, és a többi az byte.
A képet ide nem tudom, hogy kell feltölteni de az alábbi linken letölthető
A K1,k2... jelenti a kapcsolót. A felíratok pedig, hogy hol égne az égő.
Jancskárné tanárnő jegyzetében találtam hasonlót. Csak pontosan nem tudom, hogy lehet megvalósítani.
Előre is köszi

http://data.hu/get/5078919/IMG053.jpg

(#2607) Szirty válasza raceboy (#2606) üzenetére


Szirty
(fanatikus tag)

Helló raceboy!

Tehát ha jól értem, akkor azt szeretnéd, hogy abból amit leírtál előbb találjuk ki hogy mi a feladat, majd utána fejtsük meg azt... :]

Amúgy más sem érti, vagy csak én vagyok másik bolygón?
Vannak tehát gombok, nem tudjuk hány darab, de némelyikről tudjuk mit csinálnak ha megnyomják.
Aztán vannak kapcsolók is (K1, K2, K3, K4) amikről pontosan tudjuk, hogy 4 darab van, de azt nem, hogy mi a szerepük.
Meg van a kézi üzemmód, ami M5, bár azt nem tudjuk miért van kézi üzemmód, ha nincs automata (vagy van, csak nem tudjuk, hogy van és ha van azt sem, hogy akkor mit kell csinálnia a "valaminek").
Tudjuk, hogy az m6 már nem üzemmód, hanem állapot, amikor az összes égő ég, amit az összes gombbal kapcsolunk be. Bár az "összes gombbal bekapcsolni" jelentése nem egyértelmű nekem, mert:
- Megnyomjuk egyszerre az összes gombot (bár nem tudni mennyi az az összes)?
- Vagy megnyomjuk az összes gombot egymás után valamilyen sorrendben bármikor?

No meg van az m8 állapot, ami meg már olyan állapot, hogy több állapot, hiszen különböző gombokkal az égőket kapcsolgatni lehet.
Tudjuk, hogy valamit deklarálni kell és hogy ebben az állapot bool a többi byte, bár nem tudom mi lehet az a "többi".

Jancskárné tanárnő jegyzetére való hivatkozás ebben a formában sokat nem segített a feladat megértésében, mert nem közölted melyik kötet melyik oldalára kellene "gondolni".

A táblázatodban egyszerű bináris sorozat van, amit egy számlálóval is lehet produkálni. (A számláló "Kimenet" oszlopban található tartalmának megfelelő bináris minták vannak a 4 bites oszlopokban).
A K1-K4 oszlopok tartalma teljesen azonos az elöl, hátul, középen, vetítő oszlopokban található bináris mintával.

A képet ide felrakni nem bonyolult. Ahova az üzenetet írod alatta 4 cm-re van egy felirat, miszerint: "Új kép feltöltése a szöveghez" mellette egy Browse gomb. na azt kell megnyomni, kiválasztani a képet, majd a generált linket berakni a "Kép" feliratú gomb megnyomása után.

Ui.: Gondolom ez egy iskolai példa feladat, mert a gyakorlatban ilyen világítás vezérlést szerintem sehol nem csinálnak... Az iskolai gyakorlati feladatokra pedig sajnos nagyon jellemző az ilyesmi. :(

Szirty

(#2608) raceboy válasza Szirty (#2607) üzenetére


raceboy
(újonc)

Hello Szirty
Igen ez egy iskolai feladat. Szakdolgozathoz kellene ezt megvalósítani. Autómata üzemmód természetesen van. Az működik is ez egy más ág. Feltöltöm az állapotgráfot hátha úgy egyszerűbb megérteni.

A K1, K2, K3, K4 azok gombok és azok azt csinálják, hogy elől, hátul, középen, vetítő mögött kapcsolják fel az égőket. És ezek variációi.
Ezt csak az m8-as állapotra vonatkozik. Vagyis ezek akkor fognak működni amikor az m8 állapotban kerül.
Valahogy bool to byte vagy esetleg más módszerrel, hogy lehetne?
Így érhető vagy még így se?

(#2609) Watchdog válasza raceboy (#2608) üzenetére


Watchdog
(kvázi-tag)

Szia raceboy!

Valahogy így kell felépíteni a logikát:
LD M8
AND K1
S L1 (* elöl bekapcsol *)

LD M8
ANDN K1
R L1 (* elöl kikapcsol *)

Nyilván csak úgy van értelme, ha biztosított, hogy az M8-on kívül a többi állapot / üzemmód 0.
A bool változók a deklarációs részben szervezhetők bájtba:
(Möllernél valahogy így néz ki, más PLC-n máshogy...)
VAR
Kapcsolok AT %IB0.0.0.0 : BYTE ; (* az első 8 bemenet a PLC-n *)
K1 AT %IB0.0.0.0.0 : BOOL ; (* a Kapcsolok bájt 0. bitje, de már BOOL típus *)
K2 AT %IB0.0.0.0.1 : BOOL ; (* a Kapcsolok bájt 1. bitje *)
stb., ugyanez a kimeneteknél is.
END_VAR

(#2610) Watchdog válasza Watchdog (#2609) üzenetére


Watchdog
(kvázi-tag)

Elszúrtam, a "K1 AT %IB0.0.0.0.0 : BOOL ;" és a "K2 AT %IB0.0.0.0.1 : BOOL ;" nem jó, a B nem kell bele, helyesen:
K1 AT %I0.0.0.0.0 : BOOL ;
K2 AT %I0.0.0.0.1 : BOOL ;

...lényeg, hogy az input bájt címén belülre hivatkozik.

(#2611) raceboy válasza Watchdog (#2610) üzenetére


raceboy
(újonc)

Hello Watchdog!

Köszi szépen így már működik

[ Szerkesztve ]

(#2612) gergesu


gergesu
(újonc)

Sziasztok,

UNITRONICS programozót keresek néhány megbízásra, lehetséges a jövőben több is. Légy szíves küldjetek elérhetőséget!

Kösz!

Ui.: Kösz Gugli!
Kösz RIOS!

(#2613) qwaqay1


qwaqay1
(újonc)

Sziasztok
Segítségre lenne szükségem. Siemens s7 200-as plc-m van (cpu 222), amit hobbi szinten programozok, a digitális be és kimenetekkel nincs is gond. Nemrég sikerült beszereznem analóg bemeneti modult, analóg kimeneti modult és 1db Pid modult. Sajnos az analóg jelről csak annyit tudok,hogy 0-20mA vagy 4-20mA vagy 0-10V között lehet.
Az internetem próbáltam hozzáprogramozási példákat keresni, de nem sikerült. :W

Első lépésként valami,olyan programot szeretnék írni, hogy digitális bemenetekre adott kapcsolásokra különböző analóg kimenetek keletkezzenek.
Például: Q0.0 = 1V vagy 2mA , Q0.1 = 2V vagy 4mA

Ez megoldható?
Megköszönném, ha valaki segítene. :)

(#2614) Szirty válasza qwaqay1 (#2613) üzenetére


Szirty
(fanatikus tag)

Helló qwaqay1!

Az AQ területre kell írni hogy az analóg kimenetre értéket küldj (AQW n).

S7-200 Programozható vezérl rendszer Kézikönyv 44. oldal.

Pl. MOV_W utasítással tudsz bele értéket írni...

Szirty

(#2615) qwaqay1 válasza Szirty (#2614) üzenetére


qwaqay1
(újonc)

Sajnos az Output Tables analóg részébe nem tudok beírni értékeket, ha a cpu tipusa 222
és a verziója 01.11 -re van állítva, ha a verzió szám 02.00 vagy nagyobb akkor lehet.
Ez azt jelenti ,hogy cpu222 01.11 verziójú plc-mel nem lehet analóg kimenetet működtetni?

(#2616) Szirty válasza qwaqay1 (#2615) üzenetére


Szirty
(fanatikus tag)

Hali qwaqay1!

"Ez azt jelenti ,hogy cpu222 01.11 verziójú plc-mel nem lehet analóg kimenetet működtetni?"

Nem hiszem hogy ne lehetne.
Az output tables nem arról szól. Az output tables arra való, hogy meghatározd mi történjen az analóg kimeneten lévő értékkel, amikor a CPU RUN módból STOP módba vált.
A 02.00 verziójú PLC-nél lehetőséged van arra, hogy STOP-ra váltáskor az analóg kimenet befagyassza az értéket ami épp akkor volt, vagy beírhatod hogy ilyenkor mit küldjön ki.
A 01.11-es verziójú CPU meg nem tud ilyen funkciót, az nyilván nulla értéket küld ki ilyenkor. De attól analóg kimenetet még tud kezelni.

Szirty

(#2617) qwaqay1 válasza Szirty (#2616) üzenetére


qwaqay1
(újonc)

Értem, a kézikönyv 44. oldalát néztem nem a tényleges 44. oldalt. :)

Szóval MOV W.
In és az OUT -hoz miket lehet beírni?

Hogy lehetne egy olyan programot írni, hogy I0.0 digitális bemenetre adott jelre az analóg 0.0 kimenetére mondjuk 3V-os jel, I0.1-re adottra 5V-os jel és I0.2-re 10V analóg jelet csináljon az analóg kimenetre.

Sajnos analóg jelekre még sosem programoztam. Segítségedet előre is köszönöm.

(#2618) Szirty válasza qwaqay1 (#2617) üzenetére


Szirty
(fanatikus tag)

Hi qwaqay1!

"Szóval MOV W.
In és az OUT -hoz miket lehet beírni?"

A már említett kézikönyv 177. oldala épp erről szól.
A MOVE adatmozgató utasítás. Az In-hez írt adatot átrakja az out-hoz írt címre.
Az in lehet cím vagy konstans, az out pedig cím.

Az analóg kimenet egy 16 bites regiszter. Az analóg kimeneten mérhető feszültség vagy áram arányos az analóg csatorna címére írt értékkel. 0V-ot 0 beírásával tudsz produkálni 10V-ot az értékmaximum beírásával (ami halvány fogalmam sincs mennyi S7-200 esetében, de S7 300/400-nál ez jellemzően 27648).

"Hogy lehetne egy olyan programot írni, hogy I0.0 digitális bemenetre adott jelre az analóg 0.0 kimenetére mondjuk 3V-os jel, I0.1-re adottra 5V-os jel és I0.2-re 10V analóg jelet csináljon az analóg kimenetre."

Minden lépcsőhöz írsz egy megfelelő MOV_W utasítást a kívánt analóg jelnek megfelelő konstanssal a MOVE IN oldalán és a kívánt analóg kimenet címével a MOVE OUT oldalán.
A MOV_W utasítás elé (EN) pedig berakod a megfelelő feltételt, jelen esetben az I0.1, I0.2 stb bemeneteket.
Úgy kell megvalósítani, hogy mindig csak az egyik MOV_W utasítás előtti feltétel tudjon teljesülni.
Hogy ezt miképpen csinálod az attól függ milyen elsőbbségi sorrendet szeretnél felállítani arra az esetre, ha egyszerre egynél több bemenet is aktív (mivel egyszerre egynél több feszültség vagy áram nem lehet jelen egy kimeneten).

Szirty

(#2619) qwaqay1 válasza Szirty (#2618) üzenetére


qwaqay1
(újonc)

Köszönöm, óriási segítség volt.

Működik :)) :DD

Körülbelül 32000-nél adja ki a 10V-ot, nagyobb számoknál polaritást vált és csökken,szóval -10V +10V-ot is kezel. :C

(#2620) Szirty válasza qwaqay1 (#2619) üzenetére


Szirty
(fanatikus tag)

Helló qwaqay1!

Az a körülbelül 32000 valószínűleg pontosan 32767 lesz.
Ennek az integer típusú számábrázolás az oka. Te egy 16 bites értéket írsz az analóg kimenet regiszterébe.
16 biten 65536 féle bit kombináció lehetséges. Hogy negatív érték is ábrázolható legyen, kitalálták az integer számábrázolást, ami az előbbi tartományt két részre osztja:
Egy pozitív tartományra: 0..+32767
és egy negatívra: 0..-32768
Bizonyos okokból (aminek utána lehet nézni ha részletesen érdekel) a negatív tartomány kettes komplemens alapú, ami kb. annyit tesz, hogy a negatív szám abszolút értékének bináris mintája azonos a hozzá tartozó pozitív érték inverzével.
Ha megpróbálsz 32767-nél nagyobb értéket beleírni, akkor túlcsordul és az érték negatív lesz (pl.: 32777 -32759-nek felel meg).

Szirty

(#2621) gergesu válasza gergesu (#2612) üzenetére


gergesu
(újonc)

Sziasztok,

akkor ez nem állás pályázó portál:)

Ha valakit tudnátok UNITRONICS programozásra mégis, érdekelne...

Kösz:

Surd

[ Szerkesztve ]

(#2622) peterx88


peterx88
(újonc)

Sziasztok, valaki nem tudja, hogy a képen látható nullás utasítás ami a programban majd lentebb folytatódik (a kettő közt még van jó néhány utasítás) az mit jelent? neten nem találtam semmit. Azt hittem valami jump, de nem vagyok benne biztos. Ez egy mitsubishi PLC
Köszi

[ Szerkesztve ]

(#2623) peterx88 válasza peterx88 (#2622) üzenetére


peterx88
(újonc)

Válasz: nem fért ki az utasítás és ez egy sortörés.
:D

(#2624) vopi86


vopi86
(újonc)

Sziasztok! Még új vagyok a fórumon. Üdvözlök mindenkit!
Olyan kérdéssel fordulok hozzátok, hogy lenne-e esetleg itt olyan emberke,
aki vállalna néhány órás "korepetálást" omron cpm1/2 plc programozásból...
Pesti vagyok, légyszi magánba írjatok, megbeszéljük a részleteket... :R
Köszi!

(#2625) Szirty válasza vopi86 (#2624) üzenetére


Szirty
(fanatikus tag)

Helló vopi86!

Én a magam részéről annyit szívesen ígérhetek, hogy itt a fórumon segítek neked ha tudok.

Szirty

(#2626) raceboy válasza Watchdog (#2609) üzenetére


raceboy
(újonc)

Hello
A leírt megoldás nagyszerűen működik, csak egy olyan kiegészítés kellene hozzá, hogy a gomb lenyomás után még egy pár másodpercig még világítson, azt melyik időzítő típussal lehetne megoldani és hogyan?
előre is köszi

(#2627) Watchdog válasza raceboy (#2626) üzenetére


Watchdog
(kvázi-tag)

Helló raceboy!
A megoldás a TON (bekapcsolás késleltetés) típusú időzítők használata lesz. A lámpa bekapcsoló (SET) programrészek rendben vannak, a lámpa kikapcsoló (RESET) programrészekbe kell beilleszteni egy-egy időzítőt. Ha az M8 üzemmódban elengedik a gombot, az időzítő kimenete "t" idő múlva logikai 1-be megy. Az időzítő bemenetére az kerüljön, hogy M8 üzemmódban nem nyomják a gombot, a kimenetével pedig resetelni kell a megfelelő lámpát. A bemenet közvetlenül a logikai feltételek után az "ST Időzítőneve.IN" utasítással érhető el. Az időzítőket deklarálni kell, majd a CAL Időzítőneve(attributumok) formában illeszthetők be. Az időzítő kimeneti bool jelét a reseteléshez úgy tudod kiolvasni, hogy "LD Időzítőneve.Q".
Ezzel a megoldással úgy fog viselkedni a vezérlés, hogy ha bekapcsolt lámpával váltasz üzemmódot, akkor az új üzemmód feltételrendszere szerint marad égve, vagy alszik ki a lámpa (ha pl. égő lámpával kerül M8 üzemmódba, akkor "t" idő múlva kikapcsol).

[ Szerkesztve ]

(#2628) raceboy válasza Watchdog (#2627) üzenetére


raceboy
(újonc)

Hello

ldn me2
and t1.q
r f1
gondolom ez megy a reset ágra. és az időzítőt? hogy írom meg?

ld m8
andn me2
s t1.in
ld t#10s
st t1.pt
cal t1

így próbáltam de így nem volt jó. hogy javítsam át?
előre is köszi

(#2629) Watchdog válasza raceboy (#2628) üzenetére


Watchdog
(kvázi-tag)

Üdv!

LD M8 (* csak ebben az üzemmódban figyeli a gombot *)
ANDN ME2 (* ME2 nevű gomb bemenet *)
ST T1.IN (* nem S - azaz set, hanem ST - azaz store *)
CAL T1 ( IN := , PT := T#10s | := Q , := ET ) (* ezt nem kell fejből begépelni, gyorsmenüből is be lehet szúrni, már nem emlékszem, hogy - tán F2??? a help-ben biztos benne van... én egy kiexportált programrészből másoltam ki, nincs a gépemen a fejlesztő... *)

LD T1.Q (* ha M8 üzemmódban, T1 ideje a gomb elengedve *)
R F1 (* az F1 nevű lámpa kimenet kikapcsol *)

A zárójeles részen belül közvetlenül is hozzá lehet rendelni bool változókat az időzítő be/kimenetekhez, bonyolult program esetén megéri felvenni párat. De S/R, vagy más logikai összefüggés nem lehet a zárójelen belül.

(#2630) raceboy


raceboy
(újonc)

Hello
Moeller plc-nél a rendszer időt (év, hó, nap, +óra és perc) hogyan lehet lekérdezni? mert össze szeretném hasonlítani egy konstansban megadott dátummal, azt tudom, hogy EQ-val kell, csak a lekérdezést nem találtam.

(#2631) vopi86 válasza vopi86 (#2624) üzenetére


vopi86
(újonc)

Szia!

Köszönöm előre is. Most vásároltam egy CPM1-es PLC-t gyakorolni,
esetleg van ötleted, hogy mivel tudom elkezdeni? Tehát bemenetekre kapcsolókon túl miket tudok tenni, illetve a kimenetekre a ledeken kívűl? :)

Köszi,
vopi :B

Útvonal

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