S7 tippek


Utolsó módosítás: 2013.február. 12

Elképzeléseim szerint ezen az oldalon a protool tippekhez és WinCC Flexible tippekhez hasonlóan rövid és remélhetőleg hasznos dolgok fognak végeláthatatlanul sorakozni.
A tippek S7-300, S7-400-as Siemens SIMATIC PLC programozásával és a Step7 fejlesztői környezet használatával kapcsolatosak.

Tartalom:
Hogyan töltsük át a működő PLC-ből a teljes programot, ha nincs meg a forrás project?
Kerekítés (RND és ROUND)
Tippek a VAT tábla használatával kapcsolatban
Simatic manager indítása paraméterezett parancsikonnal
Mit ne csináljunk ha CPU-t kell cserélni egy projectben?
VAT tábla Weben
Interface comment és a blokk hívás
A ciklus idő mérése
A rendszer üzenetek engedélyezése
Milyen rendszerfunkciókat ismer a CPU?
S5TIME
"Idegen nyelvű" Step7 projectek megnyitása
A VAT tábla feltöltése
Network sablonok használata
A PLCSIM és a szimbólum tábla
Telepítési problémák
Telepítési problémák 2 (WinCC Flex 2008, Automation License Manager)
STL és LAD (vagy FBD) egy blokkon belül

Hogyan töltsük át a működő PLC-ből a teljes programot, ha nincs meg a forrás project?
Erre a műveletre akkor van szükség, ha a projecttel nem rendelkezünk, a program csak a PLC-ben van meg és szeretnénk róla mindent lementeni vagy mert módosítani kell vagy mert azt akarjuk hogy legyen róla biztonsági mentés. (Ha van forrás projectünk - még ha elavult is - valószínűleg érdemes inkább azt felfrissíteni).

Indítsuk el a Simatic managertz. ha indulás után korábban megnyitott projectek töltődnek be, zárjuk be mindet, nehogy keveredés legyen!
Hozzunk léltre egy új, üres projectet a File menü New parancsával. Figyelem! NE a varázslóval! Adjunk meg egy helyet és egy nevet ahogy kéri.
Ekkor kapunk egy project ablakot, amiben csak egy tétel szerepel, az általunk megadott névvel.

Most csatlakoztassuk a PLC-t a PC-hez, hogy az áttöltés lehetővé váljon. Mindegy hogy profibuszra, MPI buszra ethernetre csatlakozunk, de a csatlakozásnak megfelelő interfészt be kell állítanunk a Set PG/PC interface funkcióval (Options menü, Set PG/PC interface). Ez fontos, mert most egy üres projectünk van, amiben nincs sem PLC, sem a hozzá tartozó kommunikációs beállítások, így onnan a Simatic manager nem tudja kiolvasni a kapcsolódás módját.

Most válasszuk a PLC menü Upload Station to PG pontját:



Egy Select Node Address ablakot fogunk kapni, amiben meg kell adnunk a kapcsolódás további paramétereit, hiszen a projectből ezt most nem tudja kiolvasni.
Ha olyan buszra csatlakoztunk (pl. Ethernet) amire több CPU is rá van kötve és nem tudjuk biztosan a címét, akkor az ablak alján lévő View gombbal (a képen ott az Update gomb van) lehetőség van felderíteni az elérhető eszközöket, amikről egy listát kapunk.

Figyelem a hálózat felderítése (a lista megszületése) sok időt is igénybe vehet, akár több percet is! Ha tudjuk a CPU címét, beírhatjuk azt kézzel is (A CPU-k default DP és MPI címe 2).



Vigyázat, itt nem csak a PLC-k szerepelnek, hanem egyéb elérhető eszközök is (pl. operátor panelek). Ha csak a mentendő CPU van kapcsolatban a számítógépünkkel, akkor a lista egy elemet fog tartalmazni. A listából választhatunk, minek hatására az Address oszlopba beíródik a CPU címe. ha ethernetre csatlakoztunk, akkor itt a CPU IP címe lesz, ha profibuszra akkor a DP címe, ha MPI buszra, akkor az MPI címe.

Meg kell adnunk a Rack és a Slot számát is. vagyis azt hogy a CPU hol helyezkedik el az állomáson belül. Ezt ugyanis nem fogja nekünk automatikusan kitölteni akkor sem, ha a listából választottuk ki a CPU-t.
S7-300 esetén a leggyakrabban a CPU a 0. rack-en és a 2-es slot-ban van, S7-400 általában 0. rack-en és a 4. slot-ban.
Ha ezután megnyomjuk az Ok gombot, megpróbálja felvenni a kapcsolatot a CPU-val. ha sikerül, akkor elkezdi áttölteni az adatokat.

A vezérelt berendezést a művelet előtt a biztonság kedvéért megállíthatjuk ha akarjuk, hogy a csatlakoztatás alatt felmerülő problémák miatt ne váratlanul álljon le (pl. kimozduló DP csatlakozó, vagy kommunikációs hiba a csatlakoztatott kábel miatt ha profibuszra csatlakozunk). A leállítás nem feltétlenül szükséges, a művelet nem befolyásolja a CPU-ban futó programot.
Áttöltés közben láthatjuk melyik blokkot tölti éppen. Ha vannak jelszóval védett blokkok a PLC-ben (nem a know-how block protection-re gondolok) akkor az áttöltést megtagadhatja.

A művelet végén, ha az sikeresen lezajlott láthatjuk a "kopasz" projectet amit áttöltött.
Ilyenkor áttölti a következőket:

Nem tölti át azonban a következőket:
Ezeket ugyanis a PLC nem tartalmazza, ezekre a program működéséhez a PLC-nek nincs szüksége!

Nem kapjuk meg továbbá a rendszerben lévő egyéb eszközök tartalmát sem. Ezzel csak azt tudjuk kiolvasni, ami a PLC-ben van.
Így hiába van operátor panel vagy szervó hajtás a buszon, azok programját vagy paraméterlistáját a Simatic manager nem olvassa ki (nem feladata, hiszen azok kezeléséhez külön program kell).

Kerekítés (RND és ROUND)
Az itt tárgyalt dologra egy kolléga a 2012-es RIK-en (Tiszafüred) világított rá.
Mit lehet tenni, ha egy REAL típusú számból INT vagy DINT típusút (vagyis egészet) kívánunk létrehozni. Az egyik lehetőség a csonkítás, (truncate) minek során a törtnek csak az egész részét kapjuk (más szóval elhagyjuk a tizedes jegyeket).
Sokkal érdekesebb a másik lehetőség, a kerekítés. Miért is lenne ez érdekes? Hiszen mindenki tudja, hogy öt tized fölött felfele, alatta meg lefele kell kerekíteni, így 3.4556 -> 3 eredményt ad, a 3.657 pedig 4-et. De mi van a 3.5-el?
Megtudtuk (néhány jelenlévővel együtt) hogy a kerekítés szabályai értelmében ha a tört (REAL) egész része páros, akkor az öt tizeded elhagyjuk (lefele kerekítés), ha azonban páratlan, akkor egyel meg kell növelni (felfele kerekítés).
Így 3.5-ből éppen úgy 4 lesz kerekítés után, ahogy 4.5-ből is:



Ezt természetesen elkönyvelhetjük tényként, az S7 így csinálja. Erről mindenki meggyőződhet.
Jobban utána nézve derült ki, hogy az IT szakmára jellemző káosz ezt a témakört sem kerülte el. Ugyanis más, PC-s programozási nyelvekben, platformokon nem mindig működik így a kerekítés. Pl. a C bizonyos változataiban. Sőt akad amikor különböző kerekítési módszerek között lehet választani. Pl. az Excel (vagy Open Office Calc) mindig lefele kerekíti az öt tizedet...


Tippek a VAT tábla használatával kapcsolatban
A VAT tábla kezelését könnyítő néhány lehetőséget szeretnék bemutatni. Tény, hogy a VAT tábla nagyon hasznos tud lenni egy rendszer beüzemelésénél, tesztelésnél és hibakeresésnél is.

A változók átírására használhatjuk a Ctrl-1 Ctrl-0 gombokat is. ACtrl-0 nullát, a Ctrl-1 1-et ír a változóba. Ha boolean változónál alkalmazzuk, akkor ki/be kapcsolhatjuk vele (Ctrl-1=True, Ctrl-0=FALSE). Lényeges, hogy ez a két kombináció csak azt a változót érinti, amelyik aktív, illetve azokat amelyek ki vannak jelölve. Azok a változók amiknél értéket írtunk a Modify Value oszlopba, és nem aktívak illetve nincsenek kijelölve, nem fognak megváltozni!
Figyeljünk arra, hogy ha a VAT tábla éppen nem monitor módban van, de a kapcsolat fel van építve a PLC-vel, a Ctrl0 és 1 gombok, az F7, F9 gombok ekkor is hatásosak, beírják a PLC-be az értékeket, csak épp az ilyenkor nem látszik!

Mint tudjuk, a Modify value oszlopba írhatunk új értéket, amit a változóba ír, amikor kérjük (F9), méghozzá mindet egyszerre. Átmenetileg hatástalaníthatjuk a beírt értékeket, hogy ne íródjanak be a PLC-be, ha elé // karaktert írunk. Több sor esetén ez kényelmetlen lehet, ekkor jelöljük ki őket és nyomjuk meg a Modify/Force values as comment (on/off) toolbar ikont, (vagy F3). Ez a funkció lényegében "kikommentezi" a kijelölt sorokat amik így hatástalanná válnak.



Amikor a VAT táblát létrehozzuk, nem látszanak a szimbólum megjegyzései. Ezt egyszerűen bekapcsolhatjuk a View menü Symbol comment pontjánál. Megjelenik egy új oszlop, amiben látható lesz az adott szimbólumhoz tartozó megjegyzés. Feltéve hogy írtunk hozzá megjegyzést. A VAT tábla a DB blokkban lévő megjegyzéseket is megjeleníti. De ha nem a definíciónak megfelelő adattípust adjuk meg, akkor a megjegyzés üres lesz. Pl. ha a DB2-ben a 10-es címen egy integer van, és a VAT táblába azt írjuk, hogy DB2.DBB10...



A megjegyzés kezdetét jelző // karakterekkel nem csak értéket hatástalaníthatunk a Modify value oszlopban, hanem az Address oszlopba megjegyzéseket írhatunk (lásd a képet). ha hosszabb, VAT táblánk van, ez segíthet átlátni melyik adat hova tartozik.

Egyszerre több változótáblát is meg lehet nyitni, ezek lehetnek más-más PLC-ben is akár, ez nem okoz problémát. Természetesen ilyenkor a PC-nek amin épp futtatjuk a Simatic managert egyszerre mindkét (vagy több) PLC-vel kapcsolatban kell állnia. Ilyet tehát akkor lehet csinálni ha a gépünk egy hálózathoz kapcsolódik (hogy ez ethernet, MPI vagy profibus hálózat, az mindegy.

Simatic manager indítása paraméterezett parancsikonnal
Ha a "hagyományos" módon indítjuk el a Simatic managert, akkor indulás után betölti azokat a projecteket, amelyekkel legutóbb dolgoztunk.  H anem a legutóbbi projecttel akarunk dolgozni, vagy kilépéskor nem volt megnyitva semmi, akkor az utolsó 4 legutóbb betöltött küzül is lehet választani a File menü alján (recent list). Ha itt nincs a betölteni kívánt munka, keresgélhetjük a többi között. ha sok project van, akkor ez bosszantóan hosszadalmas is lehet. Kényelmesebb lenne, ha a gyakran használt projecteknek saját ikonja lenne.
A kérdés az, hogyan helyezhetünk el a windows asztalon olyan parancsikonokat, amik elindítják a Simatic managert és az be is tölt egy konkrét projectet?

A kérdést Goaulds vetette fel a PLC fórumon. A kérdésre megtaláltam a választ a SIEMENS portálon gondoltam leírom ide, hátha hasznos lesz még valakinek.

  1. Készítsünk másolatot az eredeti Simatic manager ikonról és tegyük az asztalra.
  2. Indítsuk el a Simatic managert
  3. Töltsük be azt a projectet, amelyiket az ikonnal be akarjuk tölteni
  4. Válasszuk ki a project legfelső szintjét az ablak bal oldali részén
  5. Nyomjuk meg a Ctrl-Alt-C (objektum másolása a vágólapra)
  6. Zárjuk be a Simatic managert
  7. Az asztalon a másolat Simatic manager ikonon nyomjuk meg a jobb egérgombot és válasszuk a tulajdonságok pontot
  8. Állítsuk a kurzort a Cél: sor végére és nyomjuk meg a Ctrl-V gombokat. Ezzel a S7tgtopx.exe végződésű sor végére másoljuk az objektum hivatkozását, ami valami ilyesmi:
    /e "D:\Melo\PLC\proba\proba.s7p" /o "1,8:proba" /h T00000000;0;T00000000;0;T00112001;3762
    így azt paraméterként kapja meg a program.
  9. Nyomjuk meg az Ok gombot és próbáljuk ki a parancsikont
Ha minden jól sikerült, elindul a Simatic manager és betölti a kívánt projectet. Ezután hozzuk létre annyi Simatic manager ikont a fent leírt módon paraméterezve, különböző projectekhez rendelve, amennyi szükséges.

Mit ne csináljunk ha CPU-t kell cserélni egy projectben?
Ne essünk pánikba :)

Előfordul a gyakorlatban, hogy egy berendezésben ki kell cserélni a CPU-t valami miatt és a cseredarab nem ugyanolyan. Nyilvánvaló, hogy ilyenkor az új CPU-ba át kell rakni valahogy a régiből a programot. Megpróbálhatjuk egyszerűen rátölteni Step7-ből. Az eltérő CPU típus miatt szólni fog hogy eltérés van. Ezt megpróbálhatjuk figyelmen kívül hagyni. Vagy végrehajtja, vagy nem. Ez attól függ milyen a régi és milyen az új CPU. Sokkal korrektebb ha projectben lecseréljük a CPU-t olyanra, amilyen valóban beépítésre kerül.
Ha a meglévő Step7 projectből a HW config segítségével töröljük a CPU-t, akkor töröljük a Step7 project fa struktúrájából a CPU-t és minden felette álló szintet is, ezért törlődnek a program és adat blokkok, UDT-k, VAT táblák és a szimbólum tábla is!



Hogy ezt elkerüljük két lehetőségünk van.
Törlés helyett megpróbálhatjuk közvetlenül lecserélni a CPU-t a HW configban. nyissuk meg a katalógust (Ctrl-K). Abban keressük meg az új CPU-t. Jelöljük ki a katalógusban. Ha a projectben lévő CPU-t le lehet cserélni arra amit kiválasztottunk, akkor a projectben a CPU háttere zöld lesz. Ebben az esetben nincs más dolgunk, csak egérrel kivontatni a katalógusból az új CPU-t és rádobni a régire:



Ekkor feltesz egy biztonsági kérdést:



Megkérdezi valóban szeretnénk-e lecserélni. Yes válasz esetén lecseréli. Érdemes átnézni hogy a csere után hogyan alakultak a címek.
Ebben az esetben a blokkok és a szimbólum tábla nem vész el.
Nem biztos hogy a cserét engedi. ha az adott régi CPU nem kompatibilis valamilyen szinten azzal amit a helyére akarunk tenni, akkor a fenti módszer csődöt mond, nem engedi a cserét. Pl. egy CPU315-2 DP-t nem enged lecserélni egy CPU315-2 PN/DP-re.

Ilyen esetben válasszuk a következő módszert:

  1. Töltsük be a Simatic managerbe a régi projectet. A fizikai CPU csere előtt kapcsolódjunk a CPU-hoz és mentsük le a DB blokkok aktuális állapotát ha az lehetséges
  2. Hozzunk létre egy másik, teljesen új projectet a Simatic managerben.
  3. Helyezzünk el benne egy Simatic 300 (vagy 400) station-t
  4. Indítsuk el a HW configot, abban helyezzük el az új CPU-t, ha van profibus vagy profinet hálózat, azokat hozzuk létre, a CPU-ban állítsunk be mindent ugyanúgy, ahogy a régiben is volt (retentiv memory, clock memory, meszakítások, DP cím, MPI cím, IP cím, esetleg beépített HW elemek címei ha compact CPU volt, stb.
  5. Váltsunk ás a régi CPU projectjére, abban nyissuk meg a HW configot és a különböző I/O modulokat, HW elemeket másoljuk át az új projectbe (copy/paste módszerrel) A lényeg, hogy létrejöjjön ugyanaz a konfiguráció, mint a régiben. Ha kész, mentsük el.
  6. Lépjünk vissza a Simatic managerbe és mindkét projectben álljunk rá a blokkok listájára. A régi projectben jelöljük ki az összes blokkot a system data, az SFC és SFB blokkok kivételével és Ctrl-C - Ctrl-V-vel másoljuk át ezeket az új projectbe
  7. Lépjünk vissza a project fában az S7 program szintjére mindkét nyitott projectben és a régiből a fenti módszerrel másoljuk az újba a Symbols objektumot is
  8. Ha a projectbe volt integrálva ProTool, vagy WinCC Flexible project, akkor azokat is másoljuk át az újba a fenti módon
Ha WinCC Flexible is van a Step7 projectben, akkor miután átmásoltuk az újba, néhány lépést el kell végezni azon is.
Főleg akkor, ha WinCC Flexben használtuk a szimbólum táblát. vagyis olyan TAG-eket használtunk, amiket a szimbólum táblából/DB blokkből választottunk ki és nem mi adtuk meg a TAG címét.
  1. Nyissuk meg a Flexible projectet a Connections-nél
  2. Ellenőrüzzük, hogy a kapcsolat beállításai megfelelnek-e az új PLC-nek

  3. Nyissuk meg a TAG-el listáját. Itt rengeteg hibás TAG-et fog jelezni a Flexible. Gyakorlatilag minden nem internal TAG hibás lesz

    Betöltéskor egyébként figyelmeztet is erre, a képen az Output ablakban látható kék üzenettel (Az Output ablak a Shift-Ctrl-O gombokkal jeleníthető meg és rejthető el). Sőt azt is leírja mit kell tenni.
  4. Jelöljük ki a hibás TAG-eket (vagy akár az összeset). Figyelem, a teljes sorokat jelöljünk ki, ne csak bizonyos oszlopokat! nyomjuk meg a kijelölt terület fölött az egér jobb gombját és az előbukkanó menüből válasszuk a Reconnect... menüpontot.

  5. A megjelenő Options for Reconnecting Symbols ablakban válasszuk ki a symbol name, address and data type match opciót.

VAT tábla Weben

A VAT táblák hasznosak. (Ezen az oldalon volt már szó róluk itt.)
Ha ethernet csatlakozással rendelkező CPU-t használunk (PN-es típus) és aktiváljuk a CPU beépített WEB szerverét, akkor azon keresztül VAT tábla tartalmát is meg tudjuk jeleníteni.
Lássuk hogyan:

A dolog feltétele, mint fentebb említettem egy ethernetes CPU, mivel csak ezeken van WEB szolgáltatás. Továbbá az, hogy a WEB szolgáltatás aktiválva legyen a HW configban.



A másik teendőnk létrehozni a szükséges VAT táblákat, illetve ezek közül azokat kiválasztani amelyiket a weben keresztül is el akarunk érni. Ehhez a Simatic managerben a VAT tábla beállításai hívjuk segítségül



A megfelelő VAT tábla properties ablakának General - Part 2 fülén kapcsoljuk be a Web server kapcsolót:



Miután ezt minden weben látni kívánt VAT tábla properties ablakánál külön-külön megtettük, töltsük rá a CPU-ra a HW configot, és már meg is jelenik weben a kívánt tábla:



Ha több VAT táblát is beállítottunk webes elérésre, akkor ezek között az oldal tetején a Variable tables alatt választhatunk.
A Step7 VAT táblájával ellentétben a változókat csak megfigyleni lehet, azok változtatása nem lehetséges weben.
Továbbá az értékek változása is csak akkor látható, ha az oldalt frissítjük (újra letöltjük).

A VAT webes tartalmát a HW config rögzíti. Ezért függetlenné válik a Simatic managerben lévő másolatától, ami azt jelenti, hogy ha módosítani szeretnénk a változók listáján a táblázaton belül, akkor újra fel kell tölteni a HW configurációt ami a CPU ideiglenes leállításával jár.
Tehát a Simatic manager-ben ha megváltoztatjuk az illető VAT táblát, a változást a weben látható VAT tábla nem fogja követni csak HW config újratöltésekor.
Emiatt fejlesztéshez nem használható a webes VAT tábla, de nem is arra való, hiszen a fejlesztést Step7-el végezzük. Egy kész, jól működő gép hibakeresésében egy fix, jól összeállított VAT tábla azonban sok segítséget nyújthat ha éppen nem jutunk Step7 közelébe...

STL és LAD (vagy FBD) egy blokkon belül

A változók
Mint tudjuk, az STL/LAD/FBD programozási nyelvek között (vagy megjelenítési módok között ha úgy tetszik) bármikor átválthatunk a LAD/STL/FBD editorban a Ctrl-1, Ctrl-2, Ctrl-3 gombokkal vagy a view menüvel). Hogy mikor mekkora sikerrel jeleníti meg különböző nézetekben a programot, annak sok feltétele van és egy másik ténához tartozik.
Ara is van lehetőség, hogy a nyelveket keverjük egy blokkon belül. Egy LAD vagy FBD blokkba írhatunk STL forrást tartalmazó network-öket.
Van olyan részfeladat, amit egyszerűbb STL-ben megírni, mint létrában vagy funkció blokkban. Ha ez csak pár sor, akkor nem biztos hogy érdemes azért egy külön blokkot nyitni neki, hogy ne legyen STL kód egy egyébként létrában írt blokkban.

Van egy fontos dolog, mit nem árt tudni, ha használunk lokális változókat a kevert blokkban.
Az, hogy a létra és az FBD is bizonyos esetekben használ lokális változókat, amelyeket közvetlen címzéssel ér el.
Lássunk erre egy példát létrában:



Ha megnézzük a fenti részletet STL nézetben, ezt látjuk:



Létrában (és FBD-ben is) az elágazásokban keletkező részeredményeket közvetlenül címzett lokális változókban tárolja el.



A fordító tehát egyszerűbb részekre bontja a bonyolultabb LAD/FBD network-öket.
Ha a fenti példa szerinti STL-be visszaforgatott kódot létrában akarnánk ábrázolni, akkor valami ilyesmi lenne:

 

Természetesen ha visszaváltunk LAD nézetbe, nem ezt fogjuk látni, hanem az eredeti létradiagramot.
Bizonyos körülmények között a fordító által használt változók és az általunk használt változók átfedésbe kerülhetnek egymással.
Ilyesmi akkor történhet, amikor már van olyan LAD/FBD programrész ami használ lokális változót, és STL kódot be akarjuk írni egy network-be, vagy amikor  létrehozunk egy új lokális változót az interfész TEMP részében.
Amikor ez történik, kapunk egy figyelmeztető üzenetet:



Ha ez az üzenet megjelenik, mindig nézzük át a változókat!
Ha LAD/FBD-be olyan STL kódot illesztünk, ami lokális változót használ, akkor az a következőképpen járjunk el:
A változót mindig LAD vagy FBD nézetben hozzuk létre.
Ilyenkor a fordító ugyanis gondoskodik arról, hogy az általa használt, közvetlenül címzett lokális változók címét átírja úgy, hogy ne arra a változóra mutasson, amelyiket éppen létrehoztuk.
A fordító a saját változóit mindig a felhasználó változói mögött (a magasabb címeken) tárolja.

A címkék
Kevésbé kritikus, de említésre méltó az a tény is, hogy a fent leírt kevert nyelvű blokkok LAD/FBD részeit a fordító bizonyos esetekben úgy fordítja le, hogy ugró utasításokat tesz bele. Az ugró utasítások címkékre hivatkoznak, így címkéket is tesz bele.
Ez teljesen természetes dolog. Íme egy példa:


STL-ben:

Az ugrással megkerüli a hívást, ha a hívás elé tett feltétel nem teljesül.
Az ugrás miatt létrehozott egy címkét: _001
A fordító minden címkét "_" (aláhúzás) jellel kezd és számozza őket.
Ha STL kódot írunk olyan blokkba, ami LAD vagy FBD network-öket is tartalmaz, és címkéket kell használnunk, akkor ne használjunk aláhúzás karakterrel kezdődő nevű címkét. Így nem fogunk konfliktusba kerülni a fordító által használt címkékkel.


Interface comment és a blokk hívás
Amikor egy funkciót helyezünk külön blokkba, a blokk ki és bemeneteihez is lehet megjegyzéseket írni. Ez természetes, és hasznos is. De azon kívül, hogy a blokk megnyitása után az interfész részben látjuk ezeket a megjegyzéseket, van egy másik hasznos tulajdonsága is.
Amikor a blokkot nem nyitjuk meg, hanem "kívülről" nézzük, ahol a blokkot a program felhasználja (hívja) akkor is kaphatunk infókat a következőképpen:
Vigyük az egérkurzort a blokk paraméter neve vagy kivezetése fölé és tartsuk ott néhány másodpercig. Egy "buborékban" megjelenik a blokk interfész részében az adott paraméterhez beírt megjegyzés.





Ha a kurzort a blokknak adott paraméter fölött tartjuk (és nem a blokk paraméterének neve fölött), akkor ugyanígy megjelenik az adott címhez a szimbólum táblában beírt szöveg (vagy a DB bejegyzéshez írt, ha a cím egy DB-re hivatkozik).

A ciklus idő mérése
Tulajdonképpen nem is kell mérnünk, a rendszer méri helyettünk.
Az OB1 ben előre deklarált változókból juthatunk hozzá ehhez az információhoz. Az OB-k tartalmaznak ilyen gyári változó definíciókat, amelyeket magunk is kiegészíthetünk. Az OB1-ben a következőket találjuk:



Ezeket a változókat a rendszer írja, az OB1-ben kiolvashatjuk a tartalmukat ha szükséges.
OB1_PREV_CYCLE
Tartalmazza az OB1 előző hívása óta eltelt időt ezred másodpercben. Mivel az OB1-et a rendszer minden PLC ciklusban meghívja, ez az idő azonos az előző PLC ciklus idejével

OB1_MIN_CYCLE
A legrövidebb idő ami két OB1 hívás között eltelt (ms)

OB1_MAX_CYCLE
A leghosszabb idő ami két OB1 hívás között eltelt (ms)

OB1_MIN_CYCLE és az OB1_MAX_CYCLE létjogosultsága akkor lesz érthető, ha tudjuk, hogy a PLC ciklusok ideje nem konstans (kivéve ha mesterségesen azzá tesszük, amire az S7-400 pl képes, de az egy másik történet lenne).
Ha a programunkban csak tisztán logikai utasításokat használunk, vagyis LAD/FBD-ben egyszerű feltételsorok végeláthatatlan sorát, néhány időtagot és számlálót, akkor a ciklus idő közel azonos lesz, alig fog változni. De ha a programban más programblokkokat hívunk meg feltételesen (vagyis nem minden ciklusban, csak amikor a hívás feltétele teljesül), esetleg nagyobb mennyiségő adatot másolunk bizonyos feltételek bekövetkezésekor, akkor a ciklus idő jobban fog változni, azok a ciklusok, amelyekben az extra funkciók is lefutnak, érthető módon hosszabbak lesznek. Ilyenkor ebből a két változóból kaphatunk információt mennyire kell aggódni a ciklus idő miatt. Az OB1_MIN_CYCLE és az OB1_MAX_CYCLE az utolsó restart-tól kezdve mér (akkor nullázódnak).
Az OB1_DATE_TIME egy dátum típusú változó és azt a rendszer időt tartalmazza, amikor az OB1 lefut. Mivel az minden ciklusban lefut, ez a változó gyakorlatilag mindig a rendszer időt mutatja. Enneka  változónak a kiolvasásával kb ugyanazt érjük el, mint ha kiolvasnánk a rendszer időt az SFC1 rendszerhívással (Reading the Time with SFC 1 "READ_CLK" ).

Ezek a változók lokális változók, amik csak az OB1-en belül léteznek ezért ha valamelyik tartalmára szükségünk van és azt nem az OB1-ben dolgozzuk fel, akkor át kell másolni őket egy maradandóbb helyre (pl. egy DB-be).

A rendszer üzenetek engedélyezése
Ezt a tippet egy általam elkövetett ostoba hiba és a PLC levelező lista hatékony segítsége ihlette.
Gondolom mindenki ismeri az olyan üzenet ablakot, amiben egy eldöntendő kérdést tesz fel a rendszer és van benne egy opció, amivel letilthatjuk ennek az ablaknak a későbbiekben történő megjelenését.

 

Ha ezt megtesszük (bepipáljuk: Do not display this message again, vagyis ne jelenítse meg ezt az üzenetet újra), akkor úgy veszi, mintha az ilyen kérdésre ezek után mindig igennel válaszolnánk.
Hasznos ez az opció, mert a túl sok fölösleges kérdés bosszantó tud lenni és hátráltatja az embert.
Néha azonban jobb ha kérdez. Én pl. azt akarom, hogy minden esetben kérdezzen, ha a PLC-re akarok tölteni egy blokkot és az már ott létezik.
Ha bejelöljük, hogy nem kérjük többet, akkor egyúttal kizárjuk magunkat a visszakapcsolás lehetőségéből is, mivel visszakapcsolni is ebben az ablakban lehetne. Én is így jártam, de Batyay Balázs a segítségemre sietett, leírta hogyan lehet aktiválni a letiltott üzeneteket:
Option/General fül/Activate gomb
A súgó ezt írja róla:
-----------------------------------
"Deactivated system messages

By clicking the "Activate" button, you can reactivate all the messages
that you deactivated in the corresponding message window on selecting
the option "Do not display this message."
-----------------------------------


Köszönet a segítségért. Szolgáljon ez mindenki számára tanulságképpen :)

Telepítési problémák 2 (WinCC Flex 2008, Automation License Manager)
Az előzőekben leírt telepítési problémákhoz továbbiak is csatlakoznak.
Amennyiben magyar Windows XP Pro rendszerre szeretnénk telepíteni a WinCC Flexible 2008-at vagy a WinCC Flexible 2008 Runtime szoftvert, ugyanabba a problémába futhatunk bele, amit a Step7 V5.4 SP4 telepítésénél is leírtam.
A megoldás is ugyanaz.
  1. Másoljuk át a telepítő DVD tartalmát egy könyvtárba
  2. Nyissuk meg a CD_1 könyvtárban található setups.ini nevű file-t egy szövegszerkesztővel (ne, ne a Worddel!! :)
  3. Módosítsuk a "WinXPExclude=" sort úgy, hogy az = jel utánról töröljünk mindent abban a sorban
Van itt azonban egy másik dolog is, ami ennél súlyosabb. Szerencsére nem minden esetben jelentkezik a probléma.
A Step7 V5.4 SP4 és a WinCC Flexible 2008 is telepíti az Automation License manager V4.0-t (a továbbiakban ALM 4.0).
Ez nem is volna baj, sajnos a tapasztalatok azonban azt mutatják hogy az ALM 4.0 bizonyos esetekben nem működik megfelelően (vagy sehogy sem működik). Sajnos ez a hiba lehetetlenné teszi az összes Simatic szoftver használatát.
Az okokat és megoldásokat a Siemens technical fórumon is taglalják.
A problémát inkompatibilitás okozza. A javított ALM megjelenéséig azt javasolják, hogy távolítsuk el az ALM 4.0-át (uninstall) és telepítsük az ALM 3.0 SP1-et.
Az általam tapasztalt esetben ez meg is oldottta a problémát.

Telepítési problémák

A PLC levelezőlistán többen is belefutottak egy olyan problémába, hogy egyes Siemens szoftverek nem hajlandóak települni olyan rendszerre amit elvileg támogatnak.
"Fel szeretném telepíteni a step7 et., ami azt mondja hogy ő csak xp sp2 
alatt hajlandó működni, de őszerinte az én gépemen nem az van hanem xp
szervizcsomag2."
Bizonyos hírek szerint a WinCC Flexible 2008 ugyanilyen probléma miatt nem telepíthető.

Moczó Vilmos tippje erre a problémára:
"Meg lehet tenni, hogy a setup.ini-t módosítjuk, viszont akkor a DVD tartalmát át kell másolnunk a HDD-re.
Ha ez nem szeretnénk, akkor a következőt tehetjük:

1. Ha engedélyezve van az autorun, akkor miután elindult a telepítő, állítsuk le!
2. Start menü, Futtatás -> cmd, majd a DVD-n lévő setup.exe kitallózása.
3. Begépelni: setup.exe /nooscheck

Ezzel már menni fog!

Üdv.: Vilmos"
Mivel magam is belefutottam a problémába, gondoltam leírom azt a megoldást, ami nekem segített:
Én a Step7 V5.4 SP4-es szervizcsomagját akartam telepíteni, ami szabadon letölthető a Siemens oldaláról.
A setup indítása után meglepődve tapasztaltam magam is az üzenetet:



Ezt és a fentebb leírt problémákat valószínűleg az okozza, hogy a telepítőt nem megfelelően készítették fel a különböző (így a magyar) nyelvi verziójú XP-re, hiszen a Siemens szerint az XP pro támogatott operációs rendszer.
Megpróbáltam a setup.exe-t a /nooscheck paraméterrel indítani parancssorból, de ezen a problémán sajnos ez nem segített (a step7 és WinCC flex telepítésnél valószínűleg beválik).
A megoldással Vári László szolgált, aki a Vilmos által is említett setups.ini módosítását javasolta:

A szervizcsomag CD_1 alkönyvtárában van egy setups.ini file, ami szöveges formátumú.
Abban van egy ilyen sor:
WinXPExclude=0,Home,1
Ezt módosítsuk így:
WinXPExclude=
Ezután nekem sikerült telepíteni.
Ha jobban megnézzük ezt a file-t kiderül, hogy úgy is módosítható, hogy gyakorlatilag bármilyen windows-ra telepíthető legyen. Ez azonban egyáltalán nem garantálja hogy működni is fog, ha az adott rendszer nincs támogatva (pl. Vista 64 bit).

A PLCSIM és a szimbólum tábla

A PLC szimulátor hasznos eszköz. Bár komplett berendezések szimulációját gyakorlatilag képtelenség megoldani vele, de azt hiszem nem is erre való. Kisebb programrészek, funkció blokkok tesztelésében azonban jó szolgálatot tehet. Kirakhatjuk akár bitenként a bemeneteket, kimeneteket, merkereket, kapcsolgathatjuk őket a tesztelés során.



Ha tesztelt programrésznek sok I/O változóját kell a szimulátorban figyelemmel kísérni, akkor könnyen áttekinthetetlenné és nehézkessé válhat a próba. Ezen segít valamennyire az, hogy a PLCSIM képes a szimbólum tábla kezelésére.
Válasszuk a Tools > Options > Attach Symbols.. menüpontot és keressük meg a projecthez tartozó szimbólum táblát.



Látszólag semmi nem változik, de most már ha valamelyik változó fölött tartjuk az egérkurzort, akkor Tooltipben megjelenik a változó neve és a hozzá tartozó megjegyzés is:



Ha bekapcsoljuk a Tools > Options > Show Symbols opciót is, akkor a változók abszulút címe helyett a szimbólumtáblában szereplő szimbolikus neve fog megjelenni. (ha az adott cím nem szerepel a táblában, akkor továbbra is a címe jelenik meg).


Network sablonok használata

Gondolom ismert dolog, hogy a Step7-ben vannak ún. library-k (könyvtárak). Ezek kezdetben gyári blokkokat tartalmaznak, melyeket a programunkban felhasználhatunk olymódon, hogy megnyitjuk az Overviews ablakot a LAD/STL/FBD editorban (View/Overviews menü, vagy Ctrl-K). Ebben az ablakban bebarangolhatjuk a könyvtárat és elemeket húzhatunk be a programunkba.
Saját könyvtár készítésére is van mód, ahova saját, jól bevált blokkjainkat elrakva később más projectben felhasználhatjuk azokat.
A library-ba nem csak blokkokat, VAT táblákat, forráskódot és szimbólum listákat tehetünk, hanem ún. network template-eket, vagyis program sablonokat.
Ezek kódrészletek (program részletek) amelyekben wildcard, vagyis behelyettesítő karaktereket helyezhetünk el, hogy azokat beillesztéskor egyszerűen a tényleges címre, vagy hivatkozásra módosíthassuk. A Step7 5.1-es változatától használhatunk sablonokat.

Network template létrehozása:
Először 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, írjunk %01 %02 %03 stb. jeleket. A számozást 99-ig lehet folytatni:



A %01, %02 wildcard karakterek ellen pirossal tiltakozni fog, de most ne törődjünk vele. Arra azonban figyelni kell, hogy két számjeggyel számozzuk a behelyettesítendő hivatkozásokat, mert pl. a %5-öt nem fogadja el!
Ha a sablonnak szánt programrészlet készen van, jelöljük ki a hozzá tartozó newtork-öket, majd az Edit menüből válasszuk ki a Create Network Template... menüpontot. Megnyílik a Create network template dialógus ablak:



Itt magyarázatot írhatunk a sablonhoz, és minden wildcard-hoz is, hogy amikor majd beillesztjük, könnyebben lehessen azonosítani hogy mi micsoda a sablonban.
A magyarázkodás után nyomjuk meg az OK gombot.
Egy New ablak következik, ahol meg kell mutatni hova tegye a sablont. Lehetőleg ne a gyári libek közé tegyük, jobb készíteni egy saját könyvtárat és abba rakni.



A template-et a Sources kategóriába tudjuk elhelyezni nevet adva neki.
Mostantól ezt az elmentett sablont felhasználhatjuk a programjainkban:

Network template használata:
Amikor a programot írása közben valahova be akarunk illeszteni sablont, nyissuk meg az Overview ablakot (View/Overviews menü, vagy Ctrl-K). Keressük meg a megfelelő könyvtárat, azt nyissuk ki egészen a sources részig:



Onnan egyszerűen kihúzhatjuk a sablont, egyenesen bele a programba.
Amikor ledobjuk, a sablon megjelenik a ledobás helyén és megnyílik egy "Set replacement text for wildcard of the network template" ablak:



Nem nehéz kitalálni mit kell ide beírni. A replacement text oszlopba beírt hivatkozásokkal helyettesíti be a "wildcard" oszlopban látható behelyettesítő karaktereket.
Itt fogjuk tapasztalni, hogy mennyire hasznos volt a sablon készítésekor kommentezni a behelyettesítő karaktereket!

Ez a funkció egyszerű szöveges keres/cserél művelettel végzi a behelyettesítést. Ezért ha hibás vagy értelmetlen szöveget adunk meg a táblázatban, akkor azt fogja behelyettesíteni. Nem végez típus vizsgálatot sem, ezért arra is nekünk kell figyelni, hogy ahol integer típusú adatra van szükség, ott integert adjunk meg.
Ha pl. az időtagot (a példában %05) egy kimeneti bittel helyettesítünk be (pl. Q5.5) akkor az időtagnak ezt a paramétert fogja megadni, ami természetesen nem helyes, ez látszani is fog, mivel piros lesz.
Ilyen sablonokat STL-ben és FBD-ben is készíthetünk

A VAT tábla feltöltése

Hát ez nem lesz éppen hardcore tipp, de talán hasznos olyan valakinek aki most kezdett ismerkedni a Step7-tel (haladók lapozzanak!).
A VAT tábla (változó tábla) egy olyan táblázat, amibe tetszőlegesen felvehetünk PLC változókat. Legyen az merker, időtag, számláló periféria szó, adatblokk elem, bármi, kivéve a lokális változókat.
A táblázat minden sora egy változó, a VAT tábla segítségével monitor módban láthatjuk, hogy a program futása közben mit tartalmaznak a változók. Módosíthatjuk is a tartalmukat, és a megjelenítés fajtáját is beállíthatjuk (hexa, decimális, bináris, time, stb).



A VAT táblát ugyanúgy lehet készíteni mint más blokkokat. A Simatic manager blokk listájában jobb gomb, menüből Insert new objet/Variable Table.
Létrejön egy VAT nevű elem. Ha duplán rákattintunk, megnyílik a Monitor and Modifies Variables ablak, ami kezdetben üres. Itt az address vagy a Symbol oszlopba írhatunk be változó címeket vagy neveket. A View menüben beállítható, hogy a változóról milyen információ legyen látható.

A VAT táblát leggyakrabban hibakereséskor és a berendezés ellenőrzésekor használjuk. Jellemző, hogy a VAT táblába a gép egy bizonyos részéhez tartozó változókat teszünk. A VAT táblát feltölthetjük a szimbólum tábla alapján is, ami sokkal hatékonyabb mint egyenként beírogatni a címeket.
Nyissuk meg a szimbólum szerkesztőt, abban keressük meg azokat a változókat amelyeket monitorozni akarunk, és az address oszlopban jelöljük ki a kívánt részt, majd másoljuk a vágólapra ezeket (Ctrl-C):



Hozzunk létre egy új VAT táblát, nyissuk meg és illesszük bele amit a szimbólumokat (Ctrl-V).



Ha a szimbólum táblában a kívánt változók nem egymás után vannak, akkor több részletben tudjuk áthozni őket a VAT táblába.

Milyen rendszerfunkciókat ismer a CPU?

A SIMATIC S7-300 és S7-400 PLC családnak számtalan tagja van, amelyek eltérő tulajdonságúak. Ezeket a PLC központi egységeket a CPU száma azonosítja. CPU314, CP414, CPU315-2 DP, CPU317T, stb.
Az eltérés sok kisebb részletben nyilvánul meg, mint pl. a memória mérete, kezelhető I/O-k száma, interfészek, feldolgozási sebesség, beépített I/O-k megléte, funkciókészlet, stb. Ezen tulajdonságokat a CPU leírása természetesen tartalmazza, de ahhoz nem mindig egyszerű hozzájutni.

A különböző CPU-k eltérő beépített funkciókészlettel rendelkeznek (SFC és SFB blokkok). Programozáskor fut bele az ember, hogy hoppá, ebben a CPU-ban nincs is 32 bites üzemóra számláló, vagy pozícionáló funkció. Amennyiben a PLC hozzáférhető, egyszerűen megnézhetjük  a főbb tulajdonságait, beleértve a beépített funkciókészletet is.
A művelethez online kapcsolat szükséges, és természetesen egy programozó eszköz (PC, PG).

A lista tartalmazza a beépített SFC és SFB blokkokat is, ebből megállapíthatjuk hogy az adott CPU ismer-e olyan rendszerfunkciót, amit használni akarunk.
A fenti példában látszik, hogy a CPU nem tartalmazza az SFC101-es rendszerhívást, vagyis a 32 bites üzemóra számláló funkciót.
Ha a buszon, amire a PC-vel csatlakozunk (MPI, DP, ethernet) több PLC is van, akkor az Accessible Nodes lista azokat is tartalmazza.

Ha azt is tudni akarjuk hogy a PLC-ben mennyi I/O pont lehetséges, hány timer van benne, vagy mennyi a memóriája, akkor válasszuk a PLC menüből Diagnostic/Setting almenüt, abból pedig a Module information pontot, amikor az Accessible Nodes ablakban a PLC blokkok listája látható. Ha nem az van megjelenítve váltsunk át rá, ha ugyanis több PLC van a buszon, ezzel egyúttal eldöntjük azt is melyikről akarunk információt kérni. (ez a funkció a Ctrl-D gyorsbillentyűkkel közvetlenül is hozzáférhető).
Kapunk egy Module Information ablakot. Kapcsoljuk át a Performance Data fülre:



Kapunk egy átfogó információhalmazt a CPU képességeiről. Látható milyen OB-kat kezel, itt is megnézhetjük a beépített rendszerfunkciókat, leolvashatjuk hány időtag van benne, stb.

S5TIME

Amikor egy időtag időzítési értékét (TV) megadjuk a programban, azt többféleképpen is megtehetjük.
Pl. percet, órát, másodpercet megadhatunk törtszámokkal:


Vagy másodpercekkel is beírhatunk perces vagy órás időket:



A Step7 átalakítja amint elhagytuk a beviteli mezőt.
Természetesen a beírt időnek az S5TIME típus ábrázolási tarztományába kell esnie.
Figyelembe kell venni azt is, hogy a megadott értékből számolja ki a szükséges időalapot, ami a beírt időtartamtól függ. Ezért ha pl. S5T#1256.234s-et adunk meg, azt 20M50S-re javítja ki, mivel a 20 perces időzítéshez 10 másodperces időalap (felbontás) tartozik, így a maradék 6.234 másodperc elvész.

"Idegen nyelvű" Step7 projectek megnyitása

Aki a prog.hu-n üzemelő PLC levelező lista (offline fórum) aktív olvasója, annak ismerős lesz a történet...
...ami úgy kezdődött, hogy a Danfoss gyári web oldaláról a VLT frekvenciaváltók profibuszos paraméter írását és olvasását végző példaprogramot letöltöttem és megpróbáltam megnyitni.
A manőver egy hibaüzenetet szült:



Az üzenetben azt magyarázza, hogy a PCA blocks nevű projectet csak akkor lehet megnyitni, ha a Windows területi bellításnál a nyelvet dánra állítom.
Valamelyik Step7 verziótól kezdve ugyanis elkezdték megkülönböztetni a nyelvet, amivel a project készült. A dolog okait ne firtassuk, de feltételezem, hogy barátságtalanul nézne ki magyar windows alatt megnyitott cirill betűs vagy kínai project. Talán innen fúj a szél, más kérdés, hogy ennél mennyivel jobb az, ha egyáltalán nem lehet megnyitni...
Ha ugyanis a windows területi beállításait dánra állítom, akkor is ezt az üzenetet kapom, és a project továbbra sem nyílik meg. Valószínúleg egy dán nyelvű Windows változat telepítése is megoldás lett volna, de nyilvánvaló okokból ettől eltekintettem.

A probléma megoldásához a már említett levelező listán kértem segítséget. Ebből az derült ki, hogy bizonyos Step7 verzióval megnyitható.
A fenti problémába nem nehéz belefutni, a Siemens web oldalairól letölthető example projectek némelyike is produkál ilyet. Itt van pl. a Time_rec.zip ami angol területi beállítást követel.

Mit is lehet ilyenkor tenni?
Bihari Zsolt szolgált egy megoldással:

  1. A problémás projectben keressük meg a területi beállításokkal kapcsolatos file-t (pl. egy file kezelővel). Valahol itt találjuk meg:
  2. {Projekt directory}\Global\Language
  3. Erről a file-ról készítsünk egy másolatot (biztos ami biztos). A file szöveges, egy szövegszerkesztővel bele lehet nézni, kb így néz ki:
    0
    1030
    0
    1252
    850
    Danish
  4. Ezt a Language file-t írjuk felül egy magyar nyelvű projectből vett Language file-lal
Egy másik megoldás, hogy egész egyszerűen töröljük ezt a file-t.



Ezután a project már megnyitható. A beavatkozás következménye az lehet hogy egyes karakterek esetleg nem megfelelően jelennek meg!
Ilyen Language file csak olyan Step7 projectben van, amelyik olyan verzióval jött létre ami kezeli a nyelvi sajátosságokat (talán 5.3 vagy 5.4).
Példaként egy magyar Language file: Language

Ha nem akarjuk, hogy az általunk készített projectekkel így járjon valaki, akkor a következőt javaslom:
Simatic managerben jobb egérgombbal kattintsunk a project nevére és a menüből válasszuk az Object Properties... pontot:



Ha nincs bekapcsolva a Set project language to 'Magyar' akkor semmi gond. De ha be van kapcsolva, akkor kapcsoljuk be a Can be opened under any Windows language settings (language neutral) opciót is!
Ez utóbbi lehetővé teszi, hogy bármilyen nyelvi beállítás mellett meg lehessen nyitni. Bekapcsolásakor dob egy figyelmeztető üzenetet, amiben közli, hogy ha ez az opció aktív, akkor csak az ASCII betűkészletet használhatjuk a projectben. Ettől még írhatjuk magyarul a szövegeket, pontosan nem tudom ez milyen gyakorlati korlátozással jár, talán nem engedi azokat a speciális karaktereket, amikhez unicode kell.



Szirty