www.demegabor.wordpress.com SIMATIC STEP 7 v5.3 (Siemens S7300 programozása) Közzétéve: 2011. október 30.
1. Program indítása: SIMATIC STEP 7 v5.3 (Siemens S7300 programozása) 2. Projekt létrehozása: Varázslóval File New projekt Wizard Közönséges létrehozással File New Amit meg kell adni: A projekt nevét (ezt a könyvtárat kapja a projekt neve is: c\progam Files\siemens\Step7\s7prj\Teszt) Típusát (projekt, könyvtár, multi projekt) A projekt könyvtár elérését, ha nem az alapértelmezettet használjuk Projektablak: (fa struktúrájú) Projekt (tervezet) objektum Állomás objektum Programozható készülék objektum S7/M7 Program objektum Forrás mappa objektum Programmodul objektum Az állomás reprezentálja az S7es készüléket, hardvert. Ebbe helyezzük el a kártyákat, programozható egységeket, a PLCt. 2 / 19
3. PLC vagy más hardver hozzáadása az állomáshoz: Insert new object SIMATIC 300 Station Ez a PLC még nem tartalmaz hardverelemeket, mint pl. CPU, I/O modulok. Ezeket nekünk kell kézzel beállítani. 4. PLC hardverkonfigurációja: Ha duplán kattintunk a Hardware elemre, elindul a HW config alkalmazás, amivel összeállítható és módosítható a hardver konfiguráció. Itt az a feladat, hogy elemekből összeállítsuk azt a PLC konfigurációt, amivel dolgozni fogunk majd. A hardver elemeket a "catalog"ból lehet kiválasztani. A katalógust a előhívni, vagy a View menü Catalog pontjával (esetleg CtrlK). ikonnal lehet 3 / 19
4.1. Először egy racket kell leraknunk, mert az alkotó elemeket csak ebbe tudjuk belerakosgatni. S7300 esetén: SIMATIC 300 RACK300 Rail. 4.2. Keletkezik egy táblázat, ami 11 sorból áll. Ide húzgálhatjuk be a PLC konfiguráció elemeit. Szükség lesz az alábbi egységekre: 1. Tápegységre, amit a PS300 (power supply) alatt találunk. 2. Kell egy CPU egység, amelyek a CPU300 könyvtárban vannak. 3. Néhány kimenet és bemenet. A digitális ki és bemeneti modulok az SM300 (Signal Module) szekcióban vannak. 4. Társpanel hozzáadása, mint például érintőképernyő (SIMATIC PC STATION HMI) 5. Mentsük a beállításokat (File Save) 6. Töltsük át a PLCre a hardver beállításokat! FIGYELEM! Csak olyan hardware konfigurációt alkalmazzunk, amely a valóságnak megfelel (vagy nagyon közeli hozzá), különben a HW Config PLCre való áttöltésekor problémákba ütközhetünk! A megfelelő hardverelemek kiválasztásához vegyük figyelembe a rendelési számot (order number)! Ha nincs a felsorolt listában a saját hardverünk, akkor azt le is tölthetjük és telepíthetjük! A hardverek tulajdonságait (pl. címet) módosíthatjuk saját kívánságainknak megfelelően. 4 / 19
Összeköttetés PLC és PC között MPIUSB porton keresztül A Siemens S7 (300/400) PLCk fejlett kommunikációs képességekkel rendelkeznek. Mindegyik rendelkezik beépített MPI csatlakozóval (MultiPort Interface) ami RS485 alapú. A vezeték árnyékolt csavart érpárú. Más CPU típusokon van beépített Profibus illesztő is, vagy azzal egy bővítő segítségével utólag bővíthető. Az MPI porton keresztül programozhatjuk, diagnosztizálhatjuk, különféle megjelenítő eszközöket (OP, PC) kapcsolhatunk rá. Az MPI portra több eszközt is ráköthetünk, maximum 32t. Összeköthetjük pl. egy automatizálási rendszer PLC vezérlőit egymással. Egy ilyen kapcsolat több előnnyel is jár: Lehetővé válik, hogy a busz bármelyik csatlakozópontján a buszra csatlakozva bármelyik PLCt programozzuk, monitorozzuk, karbantartsuk, mentést készítsünk A buszra további eszközként egy HMIt (megjelenítőt) rákötve a HMIn a buszra kapcsolt PLCk bármelyikéről megjeleníthető információ A buszon keresztül a PLCk egymás közötti adatcseréje is lehetséges. Az MPI busz Az MPI és a profibusz kábelezésekor figyelembe kell venni néhány alapszabályt. A busz sorban, eszközről eszközre fut (sín topológia). Minden eszköznek van egy címe, ami azonosítja. Egy buszon természetesen nem lehet két azonos című eszköz. MPI esetén a címtartomány 031, az alapértelmezett adatsebesség pedig 187.5 kbps. Ez a sebesség 1000mes kábelhosszt enged meg leágazás nélkül. A buszt le kell zárni mindkét végén, vagyis az első és az utolsó eszköznél. A Siemens speciális csatlakozói tartalmaznak lezárást, amit egy kapcsolóval lehet aktiválni. 5 / 19
Az összeköttetés megvalósítása: 1. A HW konfigban a CPUra dupla klikk. 2. Az alapbeállításokban a tulajdonságok kiválasztása. 3. A port kiválasztása, annak paramétereinek beállítása. VAGY 1. A HW konfiguráció után lépjünk vissza az összeköttetés beállításhoz (Options Configure Network) 2. A rackban lévő eszközöket ráhúzzuk a portokra (MPI, PROFIBUS, PTP, stb.) 6 / 19
Program írásához instrukciók és javaslatok A PLC programja blokkokból épül fel, amelyek logikailag külön részre oszthatóak. A program strukturális felépítése és áttekinthetősége javul, amennyiben a programkód funkcionálisan elkülönülő részeit külön blokkokba írjuk. FC (Function) A felhasználói programot és függvényeket megvalósító program, rutinokat tartalmaz. FB (Function Block) Általában a felhasználói program részfeladatait ellátó olyan függvényeket tartalmaz, amelyekhez kizárólagos hozzáférésű adatterület is tartozik. OB (Organization Block) "Szervező" program blokk. Speciális program blokkok. melyek funkciója gyárilag szigorúan meghatározott. DB (Data Block) Adatokat tárolhatunk benne. Például beállításokat, mérési eredményeket, stb. Szerkezetük tetszőleges, azokat mi határozzuk meg. Két féle adatblokkot különböztetünk meg a hozzáférést tekintve (általános [shared]: minden programblokk által elérhető, kizárólagos [instance]: a funkció blokkok használják). A blokkokat számokkal és nevekkel (Symbolic name) különbözteti meg egymástól a rendszer. Egy blokkra a számával és a nevével is hivatkozhatunk. Hívási szerkezet a felhasználói programban A felhasználói program futtatásához ezeket a programmodulokat hívni kell. Ezt egy STEP7es művelettel, a modulhívással lehet végrehajtani. A modulhívások sorrendjét és egymásba foglalását hívási szerkezetnek, hívási hierarchiának nevezzük. A megengedett egymásba foglalási mélység CPUfüggő. A következő ábra példát mutat a hívási sorrendre és egymásba foglalási mélységre egy feldolgozási ciklusban. Szabályok a programmodulok elkészítésének sorrendjéhez: A programmodulokat (blokkokat) sorrendben fentről lefele kell elkészíteni. Minden modulnak, amit hívni akarunk, már készen kell lenni, különben hibajelzést kap. Ez azt jelenti, hogy egy a fenti szerkezet szerinti vízszintes sorban először a jobboldalon lévő programmodulnak kell elkészülni, és így tovább balra haladva. Legvégül kell elkészíteni az OB 1et. 7 / 19
Az S7 program a következő kész objektumokat tartalmazza: forrásmappa (forráskódban lévő szöveges vagy grafikus programot tartalmazhatja) program modulok mappa szimbólumtáblázat Organization Block (OB): Az operációs rendszer által meghívott speciális programblokkok, amelyeknek előre meghatározott funkciójuk van. Fontos szerepet kapnak a rendszerközeli teendők elvégzésében, mint például a programhiba kezelés, kommunikációs hibák kezelése, megszakítások, stb). A program blokkok tartalmaznak lokális változókat! Alapesetben ez a terület egyszer sem lehet üres, mivel az OBra jellemző funkciók vannak letárolva, amelyek gyárilag előre definiált változók a TEMP területen (20 bájt indítási információ). Ezeket az operációs rendszer adja át az adott OB indításakor. Ezeket soha ne töröljük, mert a blokk futásképtelen lesz! Saját lokális változóinkat csak utánuk vehetjük fel! Programblokkok fajtái Megszakításfajta Szabad ciklus Időpont megszakítás Késleltetett megszakítás Ciklikus megszakítás Szervező modul OB1 OB10 OB17 OB20 OB23 OB30 OB38 Leírás Fő ciklus. Az OB1et a PLC operációs rendszere minden PLC programciklusban meghívja. Előre meghatározott időpontban egyszer végrehajtódó megszakítás, vagy az adott időpontban minden alkalommal (percenként, óránként, naponta, hetente, stb.) Időre késleltetett megszakítás A program egy részének (blokk(ok)) késleltetett végrehajtását tesz lehetővé. Az OBt a rendszer meghívja az SFC32 rendszerhívással beállított (SRT_DINT) idő elteltével. A HW konfigban, a CPU tulajdonságainál beállítható időközönként rendszeresen végrehajtódó program blokk. Priori tás 1 2 3 6 7 15 8 / 19
Külső megszakítások OB40 OB47 Hardver megszakítások Jelfeldolgozó modulok (SM), kommunikációs modulok (CP) és funkció modulok (FM) állíthatók be hardver megszakítás kérésére egy bizonyos esemény bekövetkezésekor (pl. amikor egy digitális bemenet 0 ból 1re vált). Ilyen megszakítás hatására hívja meg a rendszer ezeket a blokkokat. 16 23 DPV1 megszakítások DB55 DB57 Profibusz DPV1 slave eszközök kérhetnek ilyen megszakításokat. OB55: Működési megszakítás Ilyen megszakítást DPV1 eszközök generálnak a működési állapotuk megváltozásakor. Pl. futás módból STOP módba váltáskor. OB56: Módosítási megszakítás Az eszköz újrakonfigurálásakor keletkező megszakítás. OB57: Gyártó specifikus megszakítás Eszközfüggő. Az adott DPV1 slave leírásából kell kinyerni a megfelelő infókat ezzel kapcsolatban 2 Többprocesszoros megszakítás Szinkronizáció megszakítás OB60 OB61 OB64 Multicomputing Párhuzamos feldolgozással kapcsolatos megszakítás, több CPUt tartalmazó rendszerekben (Synchronous cycle interrupt) Állandó reakció idő biztosítása Profibus DP eszközök számára 25 Redundancia hiba OB70 OB72 OB70: I/O Redundancia hiba OB72: CPU Redundancia hiba!!! Csak H sorozatú dupla rendszereknél!!! 25 28 OB80 Futási hiba (Time Error) A rendszer akkor hívja meg ezt a blokkot, amikor a ciklus idő meghaladja a maximumot, vagy a "time of day" megszakítás kimarad a rendszer óra előre állítása következtében, vagy a késleltetés túl nagy a priority class feldolgozásakor Aszinkron hiba OB81 OB82 Tápellátás hiba (Power Supply Error) A blokkot a rendszer meghívja tápegység hibánál, a memóriát tápláló elem lemerülésénél. A blokk a hiba keletkezésekor és megszűnésekor is meghívásra kerül egyszer. Diagnosztikai megszakítás (Diagnostic Interrupt) A blokk lefut, amikor diagnosztikai megszakítás következik be. A diagnosztikai megszakítást a bővítő modulok kérhetnek, amelyik erre alkalmas (HW configban állítható be) 25 OB83 Kártya kibe (Insert/Remove Module Interrupt) Bővítő modul leválását és visszacsatlakozását jelző megszakítás OB84 CPU készülékhiba (CPU Hardware Fault) Hardver hibát jelző megszakítás 9 / 19
Háttér ciklus Felfutás (Startup) Szinkronhiba OB85 OB86 OB87 OB90 OB100 OB102 OB121 OB122 Programfutási hiba (Program Sequence Error) A rendszer meghívja, ha egy megszakítást bekonfiguráltunk, de nem töltöttük fel a hozzá tartozó OBt és a megszakítás bekövetkezik, vagy rendszerfunkció blokk instance adatblokkjához való hozzáférésnél hiba keletkezik, vagy hiba keletkezik a "process image table" frissítésekor Decentrális hiba (Rack Failure) Hiányzó vagy meghibásodott interfész modul, külső DP periféria tápegység hiba DP slave hiba az L2DP buszon Kommunikációs hiba (Communication Error) Ha kommunikációs funkcióblokkokkal kezdeményezett adatcsere közben hiba keletkezik (Background cycle) Amikor a CPU hardver konfigjában minimum ciklus időt állítunk be, akkor az oprendszer meghívja ezt a blokkot a holt időben Restart Újrainduláskor egyszer lefut 27 Programozási hiba (Programming error) Lefut, ha a megcímzett időzítő nem létezik, vagy a program olyan blokkot hív meg, amelyik nem létezik (nincs betöltve). Periféria hozzáférési hiba (I/O Access Error) Lefut, ha egy utasítás olyan modult próbál írni vagy olvasni amelyik nem létezik Függvények (FC): Általában a PLCs rendszer feladatait ellátó főprogramot, vagy annak funkcionálisan egybe tartozó részét végző programrészeket tartalmaznak, amiket az OBkből vagy másik FC blokkból hívunk meg. Az FC blokkoknak paramétereket is át lehet adni. Ez lehetővé teszi, hogy olyan feladatokat, függvényeket írjunk FCkben, amivel a programunk még strukturáltabbá válik. Az FCt többféle programozási nyelven is elkészíthetjük (STL, LAD, FBD, SCL, stb). Mindig válasszuk azt a programozási nyelvet, amelyikkel az adott feladatot a leghatékonyabban tudjuk leprogramozni. Egy FCn belül az S7ben rendelkezésre álló globális címterületeket tetszőlegesen címezhetjük. I (bemenetek), Q (kimenetek), M (merkerek), T (időtagok), C (számlálók), DB (adatblokkok), PI (periféria bemenetek), PQ (periféria kimenetek). Minden FC blokknak van egy saját, lokális címterülete is (lokális változó terület, L) ahol olyan változókat deklarálhatunk, amelyekhez csak az FC blokkon belül léteznek. Amikor a CPU befejezi a blokk végrehajtását (kilép a blokkból) ezek a változók tartalmukkal együtt megsemmisülnek! A lokális változók közé sorolhatjuk a blokk számára kívülről átadott paramétereket és a blokk által a hívó blokk számára visszaadott eredményeket tároló változókat is. 10 / 19
A lokális változó területet a programszerkesztőben deklarálhatjuk, ahol az FC blokk programját írjuk (LAD/FBD/STL editor). A lokális változók öt csoportra vannak osztva funkciójuk szerint: IN: bemeneti változók OUT : kimeneti változók IN_OUT: be és kimeneti változók TEMP: átmeneti változók részeredmények számára RETURN: a RET_VAL visszatérési érték/hibakód, az IEC11313 szabvány előírása szerint A lokális változókat a blokkon belül ugyanúgy kezelhetjük, és ugyanúgy hivatkozhatunk rájuk, mint a közönséges globális címterületekre. A változóra hivatkozhatunk a nevével, ekkor mindenképpen kettős keresztet kell elé tenni (pl. #BE_kapcsolo). A címmel való hivatkozás viszont bonyolultabbá és nehezebbé teszi a program írását, ezért azt kerüljük! Ugyanis abszolút hivatkozásoknál, ha új változót szúrunk be egy meglévő lokális változó elé, akkor annak a címe is megváltozik, mivel a beszúrás miatt a címek eltolódnak. Ennek következtében a hivatkozott címen már nem az a változó lesz elérhető, amit mi korábban deklaráltunk. A lokális területre vonatkozó abszolút hivatkozás: L x.y x. byte y bitje LB n n. byte LW n n. című word LD n n. című double word Példa: Az elágazási pont logikai állapotának átmeneti eltárolásához a rendszer használ egy lokális változót, amelyet STL nézetben láthatunk. Természetesen nem veszi igénybe az általunk használt változókat, de ha mi szeretnénk használni, hibaüzenetet küld. Erre figyeljünk! Soha ne olvassuk vagy használjuk fel egy lokális változó tartalmát mielőtt annak a blokkon belül értéket adnánk! 11 / 19
DemeGabor.wordpress.com Function Block (FB): Abban térnek el az FC blokkoktól, hogy az FBkhez adattároló is tartozik, egy DB (adat blokk) formájában. Minden FB hívásakor kötelezően meg kell adni a hozzá tartozó adatblokk számát (vagy nevét) is. Az FBhez tartozó blokkot "instance" blokknak nevezi a Siemens. Az FBhez tartozó instance DBben az FB paraméterei és belső, lokális változói tárolódnak el. Ezért az FBben már nem vész el a lokális változók tartalma amikor a blokk végrehajtása befejeződik, ahogy az FCnél. A következő híváskor az FBbeli belső változók őrzik a tartalmukat. A következő ciklusban mindent ugyanúgy találunk, ahogy az előző ciklusban hagytuk. Kivételt képeznek ez alól a TEMP csoporthoz rendelt változók, amik tartalma továbbra is elvész. Az instance DB belső szerkezete (felépítése) a fentiek miatt természetesen kötött és hozzáférése elvileg kizárólagos (bár meg lehet kerülni ha nagyon kell). Ez azt jelenti, hogy egy FBhez rendelt DB (vagyis instance DB) tartalmához csak az a Funkció Blokk férhet hozzá, amelyikhez tartozik, "kívülről" más blokkból a DB tartalma nem érhető el. Létrehozásának 2 féle módja van I. Automatizált: 1. Új funkcióblokk létrehozása (Insert New Object Function Block) 2. A program megírása megfelelő változók használatával 3. Mentés 4. A FB meghívása, beillesztése egy FCba vagy OBba 5. A DB nevének megadása 6. Létrehozása megerősítése a Yes utasítással 4. pont Az FB változói: 5. pont 6. pont A DB változói: 12 / 19
II. Manuális: 1. Új adatblokk létrehozása (Insert New Object Data Block) 2. Adjuk meg a DB nevét, típusát [instance DB], és a Funkció Blokkot is! A változók elérése Ezekre a változókra ugyanúgy a nevükkel lehet hivatkozni, mint egy FCben. Szimbolikus címzésnél mindegy hogy a változó bemeneti, kimeneti, paraméter STAT vagy TEMP csoportba tartozó változó. (Az FB TEMP változóit az FC blokknál megismert módon címezhetjük közvetlenül: L x.y, LB n, LW n, LD n) Ha azonban közvetlenül, abszolút módon akarjuk címezni ezeket a változókat, már más a helyzet mint az FCben. Azok eléréséhez, amelyek lényegében az instance DBben vannak eltárolva (IN, OUT, IN_OUT, STAT) az adatblokk megfelelő címére kell hivatkozni. De nem mint DB, hanem mint DI. Az instance DBre külön címzésmód van: DIX x.y x című byte y. bitje DIB n DIW DID n című byte n című word Példa: Szimbolikus elérésre n című doubleword Abszolút címzés L #Be L DIW 0 T #Ki T DIW 2 L #STAT1 L DIW 4 A #SBool1 A DIX 6.0 13 / 19
Készítés lépései: Network (program, programrészlet) sablon 1. Készítsük el a sablonnak szánt programrészletet (ez lehet több network is). Azokhoz a hivatkozásokhoz, amelyeken változtatni kell majd a beillesztés (későbbi felhasználás) során, adjuk nekik a %01, %02 %99 helyettesítő karaktereket. 2. Jelöljük ki a felhasználni kívánt Networköket! 3. Edit Create Network Template... 4. Írjunk megjegyzést, magyarázatot a sablonhoz. 5. A wildcard változóknak is adjunk megjegyzést, hogy a későbbi felhasználásakor pontosan tudjuk azonosítani a ki, és bemeneteket és markereket, stb. 6. OK. 7. Mentsük a sablont a Sources kategóriában. Ajánlott saját könyvtár készítése! 46. lépés Felhasználás lépései: 8. lépés 1. Az Overviews ablakban keressük ki a megfelelő könyvtárat és sablont, majd húzzuk a programba. 2. Most kell megadni, hogy milyen változók, ki és bemenetek, stb. szerepeljenek a helyettesítő karakterek helyén. 3. OK. Ha adtunk meg hibás váltózót, akkor azt kiemeli pirossal! Javítsuk! 14 / 19
Többnyelvű program készítése Lehetőségünk van egy kész projekt nyelvezetének a lecserélésére. Így a Step 7 segítségével többnyelvű fejlesztők is dolgozhatnak egyegy projekten. Az alábbi szövegfajták esetében lehetséges a fordítás: Blokk megjegyzések, címek Network megjegyzések, címek Line (STL utasításoknál) megjegyzések Interface (lokális változók /var/, adat blokk, saját adattábla /UDT/) megjegyzések Szimbolikus tábla megjegyzések A fordítás menete: 1) Kiviteli (Export) állomány készítése /*.csv = Microsoft Excel kiterjesztés/ (Options Manage Multilingual Texts Export ) 15 / 19
2) A kiviteli állományok megnyitása és a megjegyzések lefordítása 3) A lefordított állományok beimportálása (Import) (Options Manage Multilingual Texts Import ) 4) Nyelv kiválasztása (Options Manage Multilingual Texts Change Language ) 16 / 19
5) A nyelvi beállítások megfelelő módosítása (Options Manage Multilingual Texts Settings for Comment Management ) 6) A nyelvi beállítások újraszervezése (Options Manage Multilingual Texts Reorganize) 17 / 19
Nyelvi változatok Magyar elnevezés Angol Német Fájl File Datei Új New Neu Varázsló Wizard Assistent Megnyitás Oppen Öffnen Bezárás Close Schließen Kilépés Exit Beenden Mentés Save Speichern Mentés másként Save As Speichern unter Szerkesztés Edit Bearbeiten Másolás Copy Kopieren Kivágás Cut Ausschnieden Beillesztés Paste Einfüngen Törlés Delete Löschen Kijelölés Select Markieren Átnevezés Rename Umbenennen Tulajdonságok Properties / Attributes Eingenschaften / Attribute Beszúrás Insert Einfüngen PLC PLC Zielsystem Letöltés Download Laden Feltöltés Upload Laden in Nézet View Ansicht Kapcsolat nélküli Offline Offline Kapcsolattal Online Online Frissítés Update Aktualisieren Opciók Options Extras Beállítások Customize Eingestellungen Képernyő nyelve Display language Sprache für Anzeigegeräte Referencia adat Reference Data Referenzdaten Hálózat konfigurálás Configure Network Nezt konfigurieren Állomás Station Station Általános beállítás General Allgemein Magyarázat Comment Kommentar Nyomon követés Debug Test Képernyő Monitor Beobachten Források Sources Sources Blokkok Blocks Blocks Jelek, szimbólumok Symbols Symbols Telepítés Install Installieren OK / Igen OK / Yes OK / Ja Mégse Cancel Abbrechen Vége Finish Fertigstellen Lásd bővebben Preview Vorschau Vissza Back Zurück Tovább Next Weiter 18 / 19
Bit logika Bit logic Bitverknüpfung Összehasonlító Comparator Vergleicher Konvertáló Converter Umwandler Számláló Counter Zähler DB hívás DB call DBAufruf Ugrás Jumps Sprünge Egész funkció Integer function FestpunktFkt. Lebegőpontos funkció Floatingpoint fct. GleitpunktFkt. Mozgatás Move Verschieben Programvezérlés Program control Proggramsteuerung Áthelyezés/Forgatás Shift/Rotate Schieben/Rotieren Jelzőbit Status bit Statusbits Időzítő Timers Zeiten Szó logika Word logic Wortverknüpfung Blokkok Blocks Bausteine Összetett példák Multiple instances Multiinstanzen Könyvtár Libraries Bibliotheken Típus Type Typ Méret Size Größe Szerző Author Autor Létrehozás ideje Last interface change letzte Schnittstellen Utolsó módosítás Last modified Änderungsdatum Státusz / Állapot Status Status Jel / Szimbólum Symbol Symbol Cím Adress Adresse Adat típus Data type Datentyp Megjegyzés Comment Kommentar 19 / 19