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
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 |