A 16. fejezet („Utasításlista (IL) és a nyelvek közötti átváltá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

16.1. feladat — Kövesd az akkumulátort

Megoldás

Sor Művelet Az akkumulátor tartalma utána
LD 25 betöltés 25
SUB 7 25 − 7 18
MUL 3 18 × 3 54
ADD 4 54 + 4 58
ST iEredmeny kiírás 58 (az akkumulátor értéke változatlan)

Végeredmény: iEredmeny = 58.

A tanulság: az IL nem ismer műveleti precedenciát. A sorok egymás után, balról jobbra hatnak az akkumulátorra — ezért lesz (25 − 7) × 3 + 4 az eredmény, nem pedig 25 − 7 × 3 + 4 (ami ST-ben 8 lenne).

⚠ Gyakori hiba: a matematikai precedencia ráolvasása az IL-re. Ha zárójelezett sorrend kell, azt az IL-ben explicit zárójelekkel kell kikényszeríteni (16.2).

16.2. feladat — Zárójelezés IL-ben

Megoldás

KÓD
LD    bA
AND(  bB
OR    bC
)
ANDN  bD
ST    bKi

A nyitó zárójel az operátor után áll (AND(), és a zárójelen belüli műveletek külön akkumulátorral dolgoznak; a záró ) egyesíti az eredményt.

A Ctrl+2 nézetben ebből az a létradiagram lesz, amit várunk: bA sorosan, utána bB és bC párhuzamosan, majd bD bontó kontaktusként, végül a tekercs.

16.3. feladat — Oda-vissza átváltás

Értékelési szempontok

A logika változatlanul tér vissza — a formázás viszont jellemzően nem: a hálózat elrendezése, a kontaktusok sorrendje a párhuzamos ágban, és főleg a kommentek és a grafikus elrendezés elveszhetnek.

Ez a 16.7. alfejezet lényege: az átváltás a logikát viszi át, nem a megjelenést. Ezért nem szabad rutinszerűen oda-vissza váltogatni egy éles projektben — a kollégák munkája (elrendezés, jegyzetek) veszik el.

16.4. feladat — A hibás kód csapdája

Értékelési szempontok

A várt tapasztalat: hiányos vagy hibás hálózatot a rendszer nem tud átváltani — hibaüzenetet ad, vagy a hiányos elem elveszik. A gyártói figyelmeztetés éppen erről szól: az átváltás csak fordítható kódon végezhető biztonságosan.

Ezért kezdődik a feladat szövege azzal, hogy mentsd el a projektet. Ez nem óvatoskodás: a nyelvváltás visszavonhatatlanul átalakíthatja a POU-t.

16.5. feladat — Vizsgafeladat-sor

Megoldás

# Feladat Megoldás A megoldás lépése
a bKi := bA AND bB; → LD két soros kontaktus (bA, bB), majd tekercs AND = sorosan
b létra: bA ∥ bB, sorosan bC bontóval → ST bKi := (bA OR bB) AND NOT bC; párhuzamos = OR, bontó = NOT, zárójel kötelező
c LD bX / ORN bY / ST bZ → ST bZ := bX OR NOT bY; az ORN = OR a negált operandussal
d bKi := NOT (bA OR bB); → IL LD bA / OR bB / NOT / ST bKi — vagy De Morgan szerint: LDN bA / ANDN bB / ST bKi a tagadás vagy a végén, vagy szétosztva
e bMotor := (bStart OR bMotor) AND NOT bStop; → LD bStart párhuzamosan bMotor-ral, sorosan bStop bontó kontaktussal, majd ( bMotor ) tekercs ez az önfenntartás (13.7)

⚠ Gyakori hiba: a d) pontban a NOT elhelyezése. Az LD bA / OR bB / NOT sorrend a teljes eredményt tagadja; ha a NOT-ot előbb írod, csak az első operandusra vonatkozik.


Tudáspróba — megoldókulcs

# Válasz Indoklás Szakasz
1 a A címkét kettőspont követi. 16.1
2 b Az LD betölti az operandus értékét az akkumulátorba (az ST tárol). 16.2
3 c A C módosítónál az utasítás csak akkor hajtódik végre, ha az előző eredmény TRUE. 16.2
4 d Az ANDN bStop ST-ben AND NOT bStop. 16.2
5 a A záró zárójel kiértékeli a késleltetett műveletet. 16.2
6 b Funkcióblokkot IL-ben a CAL operátorral hívunk. 16.3
7 c Az IL a negyedik kiadás nyelvcsomagjában nem szerepel. 16.4
8 d A CODESYS-ben az IL-t az opciókban kell engedélyezni. 16.5
9 a A Ctrl+3 utasításlistára vált. 16.6
10 b Az automatikus nézetváltás az ST-re nem vonatkozik. 16.6

Mennyire volt hasznos ez a fejezet?

Még nincs értékelés.