Két S7-300 CPU Master /Slave módban profibus-on


Két vagy több S7 PLC-t összekapcsolhatunk profibus hálózaton keresztül. Különböző rendszerhívásokkal adatokat cserélhetünk, de van egy egyszerű módszer az adatcserére programozás nélkül is.

Egy master és egy slave CPU-t kell kinevezni a buszon. A Master fog "diktálni" a slave-nek. A dolog lényege az, hogy az egyik CPU-ban kimenetként kezelhető adatok a másik CPU-ban bemenetként jelennek meg.
Pl. ha az egyikben a program bekapcsolja a Q8.1-es kimenetet, a másikban aktív lesz az I8.1-es bemenet, miközben fizikailag nincs I8.1 a konfigurációban,
A kapcsolat tehát úgy viselkedik, mint ha a két CPU-t fizikai ki és bemeneteken keresztül, bitenként, vezetékkel kapcsoltuk volna össze.



A két CPU között az információt a profibus közvetíti. Így nincs szükség ki és bemeneti modulokra és sok eres kábelekre. Szoftveres szempontból mégis annak megfelelően működik.
Et a módszert persze csak bizonyos feltételek mellett használhatjuk, így pontosan mérlegelni kell hogy adott körülmények között alkalmazható-e. A Slave-két működő CPU pl nem kezelhet profibus DP slave eszközöket, hisz maga is DP slave. Legalábbis azon a buszon nem, amelyiken a master-nek kijelölt másik CPU-val kommunikál.

Technikai feltételek
A fent vázolt működés eléréséhez össze kell kapcsolnunk a két CPU-t profibus kábellel.


A kép a két teszt CPU-t ábrázolja, valós felhasználás esetén a két CPU rendszerint távol van egymástól :)

Project létrehozása és beállítása

Minden további teendőnk csak beállítás.
Simatic managerrel készítsünk egy projectet, amiben mindkét CPU benne van:


Fontos hogy a két CPU ugyanabban a projectben legyen, mert csak így tudjuk a HW configban beállítani a kapcsolatot. A dolog tehát csak "configured" CPU-val működik.
Jöhet tehát a Hardware config!
Ezúttal nem írom le a konfiguráció beállítását, egy videóból azt hiszem minden egyértelmű lesz:


A videón látható, hogy a két CPU IP címet is kap. jelen írás szempontjából ez nem fontos, de a teszt példányokhoz etherneten keresztül kapcsolódott a PC.

Ha a konfig készen van és rátöltjük mindkét PLC-re, azt tapasztaljuk, hogy egyik PLC-t sem lehet RUN módba kapcsolni.
Ez azért van, mert a slave nem kapcsolható RUN-ba a master miatt, amelyikkel nem tud kommunikálni, mivel nincs RUN módban. A master viszont azért van STOP módban, mert a slave nincs RUN módban, vagyis nem tudják egymást elérni.
A megoldás az, hogy mindkét PLC-re feltöltünk egy OB86-ot. A stop módot egy olyan hiba okozza, amelyiket az OB86 hivatott kezelni, amelyik viszont nem létezik, így STOP a vége.
Egyelőre mindkét PLC-re elegendő egy üres OB86. Mivel ezután már meg tudja hívni, nem kerül STOP módba. A valós felhasználás során (attól függően hogy a feladat mennyire kritikus) az OB86-ba egy olyan hibakezelő programot illik írni, amelyik lehetővé teszi hogy a kapcsolat megszakadásáról a PLC-ken futó program értesüljön és így megfelelő intézkedéseket tegyen.

Ha van OB86 és minden rendben van, akkor mindkét PLC-n megszűnik a hibajelzés (piros LED) és az adatcsere is zajlik közöttük.
Erről pl. egy VAT tábla segítségével győződhetünk meg.

Mindkét CPU-nál készítünk egy VAT táblát, amelyikbe beleírjuk a saját (local) IO címeit amelynek köze van a másik CPU-hoz. Mindkét táblát megnyitjuk és az ablakokat úgy helyezzük el, hogy mindkettő látható legyen:



Természetesen mindkét PLC-nek egyszerre kapcsolatban kell lennie a számítógéppel hogy egyszerre monitorozhassuk őket. Ez lehet ethernet, MPI busz vagy maga a profibus is, hisz profibuszon amúgy is összekötöttük őket...

Video file (VAT2.AVI): kb 5.5MB


Kapcsolódó írások:
Adatcsere S7 PLC-k között MPI buszon keresztül
Hibakezelés: az OB86 (Rack Failure)
S7 tippek



Szirty