A 11. fejezet („Lineáris és strukturált programfelépítés") gyakorlatainak részletes megoldásai és a tudáspróba megoldókulcsa. Előbb dolgozd ki magad, csak utána ellenőrizz!

Gyakorlatok — megoldások

11.1. feladat — Ismétlődés felismerése

Megoldás

# Feladat Választás Két érv
1 présgép, 6 DI / 3 DO, nincs bővítés lineáris (a) nincs ismétlődő rész, amit ki lehetne emelni; (b) ilyen méretnél a strukturálás több adminisztrációt hozna, mint hasznot
2 4 azonos szivattyú strukturált (a) négyszer ugyanaz a logika — egy funkcióblokk, négy példány; (b) a javítás egy helyen történik, és mind a négyre érvényes
3 3 különböző állomás, közös üzemmód- és riasztáskezeléssel strukturált (a) az ismétlődő rész az üzemmód- és riasztáskezelés — ezt kell blokkba tenni; (b) az állomásspecifikus logika marad külön POU-kban
4 12 kimenet, azonos időzítési logikával strukturált (a) tizenkétszeres ismétlődés; (b) 12 példány paraméterezése rövidebb és áttekinthetőbb, mint 12 másolt kódrészlet

A döntés kulcsa nem az I/O-szám, hanem az ismétlődés. A 3. eset azért tanulságos: ott nem a teljes logika ismétlődik, csak egy rétege — és éppen azt kell kiemelni.

11.2. feladat — Átalakítás

Megoldás

A két szalag logikája azonos, csak a jelek és a késleltetési idő különböznek — tehát a PT a funkcióblokk bemenete kell legyen, nem beépített konstans.

ST
FUNCTION_BLOCK FB_Szalag
VAR_INPUT
    bStart : BOOL;
    bStop  : BOOL;   (* NC-jel: nyugalmi állapotban TRUE *)
    bVesz  : BOOL;
    tKesl  : TIME;   (* szalagonként eltérő *)
END_VAR
VAR_OUTPUT
    bSzalag : BOOL;
END_VAR
VAR
    tmr : TON;
END_VAR

tmr(IN := bStart AND bStop, PT := tKesl);
bSzalag := tmr.Q AND NOT bVesz;

Használat a fő programban:

ST
VAR
    fbSzalag1 : FB_Szalag;
    fbSzalag2 : FB_Szalag;
END_VAR

fbSzalag1(bStart := bStart1, bStop := bStop1, bVesz := bVesz, tKesl := T#2S);
bSzalag1 := fbSzalag1.bSzalag;

fbSzalag2(bStart := bStart2, bStop := bStop2, bVesz := bVesz, tKesl := T#5S);
bSzalag2 := fbSzalag2.bSzalag;

Mit jelent az eltérő idő a felületre nézve? Azt, hogy az idő paraméter, nem tulajdonság: ami példányonként más, az VAR_INPUT legyen. Ez a strukturálás legfontosabb tervezési kérdése — ha ezt elrontod, két majdnem-egyforma funkcióblokkod lesz egy helyett.

⚠ Gyakori hiba: a bStop kezelése. Ha a stop gomb bontó érintkezőjű (a szokásos ipari megoldás), akkor nyugalmi állapotban TRUE, tehát a feltételben nem NOT bStop szerepel, hanem maga bStop (13.7).

11.3. feladat — Fogalomtisztázás

Mintamegoldás

  1. Algoritmuselméletben a strukturált program az, amelyik csak a három alapszerkezetből (szekvencia, elágazás, ciklus) épül fel, és nem használ ugrást (GOTO). A cél a követhetőség: minden programrésznek egy belépési és egy kilépési pontja van.
  2. PLC-programozásban a „strukturált felépítés” mást jelent: a program több POU-ra bontva készül, az ismétlődő részek funkcióblokkba kerülnek, és példányosítva használjuk őket. Ez a modularizálásról szól, nem az ugrások kerüléséről.
  3. Példa mindkét irányban: - egyetlen hosszú PLC_PRG, amely tisztán IF/CASE/WHILE szerkezetekből áll: algoritmuselméletileg strukturált, PLC-értelemben lineáris; - több funkcióblokkból álló program, amelyben egy POU JMP-vel ugrál: PLC-értelemben strukturált, algoritmuselméletileg nem.

Ezért van az, hogy ugyanarra a programra két szakember két különböző dolgot állíthat — és mindkettőnek igaza lehet (11.7).


Tudáspróba — megoldókulcs

# Válasz Indoklás Szakasz
1 a A lineáris programban a teljes logika egyetlen programegységben van. 11.2
2 b A strukturált felépítésnél a logika egyszer íródik meg, több példány használja. 11.3
3 c A rövidebb ciklusidő nem szerepel az idézett gyártói előnyök között — a modularizáció nem gyorsít. 11.4
4 d A Siemens FC ≈ CODESYS FUNCTION (nincs saját adattárolása). 11.6
5 a Az FB példány-adatblokkban tárol, az értékek ciklusok között is megmaradnak. 11.6
6 b Az OB-nak a CODESYS-ben a task felel meg. 11.6
7 c Az algoritmuselméleti értelemben vett strukturált program csak szekvenciát, elágazást és ciklust használ. 11.7
8 d Az átalakítás első lépése az ismétlődés megkeresése. 11.8
9 a Ha tudod, hogy jön a negyedik egység, strukturáltan kezdj — utólag átalakítani drágább. 11.5
10 b fbSzivattyu1 a példány, FB_Szivattyu a típus. 11.3

Mennyire volt hasznos ez a fejezet?

Még nincs értékelés.