A Siemens PLC-k világa elsőre bonyolultnak tűnhet: rengeteg blokk, adat, beállítás és funkció között kell eligazodni. De ha megérted az alapstruktúrát, a logika átláthatóvá válik – és a programozás kifejezetten élvezetes lesz.
Ebben a bejegyzésben bemutatjuk, hogyan épül fel egy Siemens PLC program, milyen fő elemekből áll, és milyen bevált gyakorlati irányelvek segítenek abban, hogy a kódod ne csak működjön, hanem hosszú távon is karbantartható legyen.
Minden Siemens PLC projekt (például S7-1200 vagy S7-1500) a TIA Portal környezetben épül fel. A Siemens hivatalos dokumentációja szerint (Programming Guideline S7-1200/S7-1500, Siemens Industry Support Portal) az alapvető projektstruktúra a következő fő részekből áll:
Hardver konfiguráció (Device & Networks): itt állítod be a CPU-t, a modulokat, a hálózatokat (Profinet, Profibus stb.).
Programblokkok (Program Blocks): ide kerülnek a programod logikai egységei (OB, FC, FB, DB).
Adatblokkok (Data Blocks): itt tárolod a program változóit, állapotait, beállításait.
Technológiai objektumok: például PID szabályozók, mozgásvezérlések, időzítők.
Kommunikáció: ha más PLC-vel, HMI-vel vagy SCADA-val kapcsolódsz.
💡 Tipp: A projektstruktúrát mindig logikusan építsd fel: különítsd el a vezérlési logikát, adatkezelést, diagnosztikát és kommunikációt.
Az OB-k (Organization Blocks) a program „belépési pontjai”. A PLC ezeken keresztül hajtja végre a kódot.
OB1 – a fő ciklusblokk, amit a PLC folyamatosan ismétel, amíg fut.
OB100 – egyszer fut a rendszer indulásakor (pl. inicializálásra).
OB82, OB121, OB122 – diagnosztikai, hibakezelő blokkok.
💡 Gondolj az OB1-re úgy, mint egy „főprogramra”, ami meghívja a további modulokat (FC-ket, FB-ket).
Az FC egy stateless (állapotmentes) logikai egység.
Minden hívásnál a bemeneti és kimeneti paraméterek határozzák meg, mit csinál.
📘 Példa: egy egyszerű hőmérséklet-átváltó funkció, amely Celsiusból Fahrenheitet számít.
Az FC ilyenkor számol, de nem tárol semmit a következő ciklusra.
Az FB állapotmegőrző blokk – tehát emlékszik arra, mi történt az előző ciklusban.
Ezt az információt az Instance Data Block (DB) tárolja.
📘 Példa: motorvezérlő logika – a motor „fut”, „hiba”, „indítás alatt” állapotait egy FB-hez tartozó DB őrzi.
💡 Tipp: minden olyan logikát, ami több cikluson keresztül állapotot kezel (pl. motor, szelepek, hibakezelés), FB-ként érdemes megvalósítani.
A DB-k tárolják a program adatait.
Lehetnek:
Globális DB-k: minden blokk elérheti őket (pl. beállítások, rendszerállapotok).
Lokális / Instance DB-k: csak egy adott FB-hez tartoznak (annak „memóriája”).
A Siemens stílusajánlás (Programming Styleguide, Siemens Industry Support) szerint:
Adj egyértelmű neveket (pl. DB_MotorControl ne „DB1”).
Strukturáld őket logikai csoportokba (pl. szenzoradatok, hibajelzések).
Kommenteld a mezőket, hogy könnyen átlátható legyen, mi mire való.
A Siemens PLC-k az IEC 61131-3 szabvány szerinti nyelveket támogatják.
A három leggyakoribb:
| Nyelv | Leírás | Mikor használd? |
|---|---|---|
| 🪜 LAD (Ladder Diagram) | Kontaktábra, relés logikához hasonló | Egyszerű, logikai vezérlésekhez |
| 🔳 FBD (Function Block Diagram) | Grafikus blokkséma | Jel- és folyamatvezérléshez |
| ✏️ SCL (Structured Control Language) | Szöveges, magas szintű | Számításokhoz, ciklusokhoz, feltételekhez |
💡 Tipp: kezdőknek a LAD és FBD nyelvek intuitívabbak.
Ahogy haladsz előre, érdemes áttérni SCL-re, mert olvashatóbb és jobban kezelhető komplex logikánál.
Képzeld el, hogy egy egyszerű motorvezérlő logikát készítesz.
A program felépítése lehet például így:
OB1 – a főciklusban meghívod a modulokat:
MotorControl_FB
AlarmHandling_FC
Com_Modbus_FC
FB: MotorControl_FB
Bemenetek: Start, Stop, Hiba
Kimenetek: MotorRun, FaultLamp
Belső változók: állapot, időzítés
FC: AlarmHandling_FC
Különböző hibajelzéseket gyűjt, logikai feltételekkel dönt.
DB-k:
DB_MotorControl – az FB állapotait tárolja.
DB_Global – közös változók (pl. hibaszámláló, debug értékek).
OB100 – induláskor lefut, és inicializálja a változókat (pl. nullázza a hibákat).
✅ 1. Ne zsúfold tele az OB1-et!
A főciklusban csak hívásokat használj – a logikát külön blokkokba szervezd.
✅ 2. Adj beszédes neveket a változóknak.
Például ixMotorStartButton sokkal átláthatóbb, mint I0.0.
✅ 3. Kommentelj!
Minden blokk elején és minden bonyolultabb feltételnél írj rövid magyarázatot.
✅ 4. Strukturáld a DB-ket.
Használj logikus adatcsoportokat (pl. SystemData, MotorData).
✅ 5. Használj konzisztens elnevezéseket.
A Siemens style guide szerint minden programozó ugyanazt a konvenciót kövesse a csapatban.
🚫 Minden logika az OB1-be kerül → nehezen átlátható
🚫 DB-k rendszertelenül nevezve → zavaros adatkezelés
🚫 Kommentek hiánya → hibakeresés rémálom lesz
🚫 Hibás adatcsere vagy ciklusidő-kezelés → nem determinisztikus működés
Ezek elkerülésére a Siemens fórumok is azt javasolják: „gondolkodj modulárisan, mint egy géptervező.”
Egy Siemens PLC program nem csupán utasítások gyűjteménye – struktúra, logika és jó gyakorlat együttese.
Ha a kezdetektől modulárisan, átgondoltan építed fel a programodat, az:
átláthatóbb,
gyorsabban fejleszthető,
és sokkal könnyebben karbantartható lesz.
💬 Tipp a gyakorlatból: mielőtt megírod az első sort, rajzold fel a logikai felépítést – így pontosan tudni fogod, melyik blokk mit csinál.
© 2024 Prognex Automation Kft.