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.
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:
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
- 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. - 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.
- Példa mindkét irányban:
- egyetlen hosszú
PLC_PRG, amely tisztánIF/CASE/WHILEszerkezetekből áll: algoritmuselméletileg strukturált, PLC-értelemben lineáris; - több funkcióblokkból álló program, amelyben egy POUJMP-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 |