TIA Verbindung eines FBs zu einem anderen FB - Anfängerfrage

mone_284

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen :)
Ich bin recht neu auf dem Gebiet der SPS-Programmierung (und entschuldige mich jetzt schon für etwaige schwachsinnige Fragen), muss das aber im Zuge eines Praktikums jetzt lernen.
Allerdings habe ich eine Frage, was den Aufruf eines FBs angeht. Also mal das Grundsätzliche:
Ich habe eine Schnittstelle zwischen einem übergeordneten Modul und einem Roboter in TIA als FB in SCL. Dieser bekommt als IO die Daten des Moduls und als Static über Profinet die Infos vom Roboter. Die Infos, die in diesen FB kommen, werden quasi nur übermittelt. Also nach dem Motto:

Code:
[FONT=arial]InOut_Modul.RequestArmleistungAn := Static_Roboter.ReleaseArmleistungAn;
[/FONT]
Jetzt ist es meine Aufgabe, in TIA diesen Roboter quasi zu simulieren. Also als eigener FB (später wird das dann als komplett eigenes Projekt auf einer SPS laufen), der die Daten aus obiger Schnittstelle bekommt, und nach dem Ablauf eines Timers den requests entspricht, also zB nach 2 Sekunden die Armleistung einschaltet. Und dann soll die Schnittstelle wirklich auch diesen ‚Armleistung ist an‘ ans Modul weiterleiten.
Jetzt habe ich einen FB erzeugt, der als IO die Daten aus der Schnittstelle erhält und sie dann halt dementsprechend setzt. Allerdings weiß ich nicht, ob ich erst bzw überhaupt den FB der Schnittstelle aufrufen muss. Irgendwie muss da ja eine Verbindung entstehen zwischen der Simu des Roboters und der Schnittstelle, nur durch Verwendung irgendwelcher in den InOut gesetzten Variablen wird das ja wohl kaum funktionieren? Den FB der Schnittstelle aber aufzurufen ist nicht so einfach, da die Schnittstelle Daten aus dem übergeordneten Modul und von der Hardware als IO bekommt, und das müsste ich ja dann bei einem Aufruf aus der Simu des Roboters auch irgendwie ‚füllen‘.
Versteht jemand mein (wahrscheinlich sehr triviales…) Problem und kann mir helfen? Tut mir echt leid wenn es eine dumme Frage ist… Google hat mich bisher auch nicht weitergebracht.
Ich arbeite mit TIA V14 und einer CPU S7-1500, beide FBs sind in SCL programmiert.
 
Hallo mone_284!
Ich verstehe noch nicht so recht. Habe versucht, Deine Beschreibung als Bildchen darzustellen:

RoboSim.jpg

Kommt das ungefähr hin?
Du sprichst von 1 Schnittstelle, nämlich dem Durchreiche-FB. Ich verstehe diesen Durchreiche-FB eher als SchnittstellenUmsetzer, der die IO-Schnittstelle an die "static"-Schnittstelle anpasst und umgekehrt.
Wer steuert überhaupt den Roboter? Das übergeordnete Modul? Tut der Durchreiche-FB wirklich nichts anderes als durchzureichen?
Was macht der Roboter während die Simulation aktiv ist? Was macht die Simulation während der Roboter aktiv ist?
Das kann doch eigentlich nur ein Fall von "ent oder weder" sein?
Bin etwas überrascht, dass Du zuerst den Simu-FB fertig machst und dann überlegst, wie und wo Du ihn einbinden willst.
Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Heinileini,
danke für deine Antwort :)
So wie du es in dem Bildchen dargestellt hast, stimmt es. Das übergeordnete Modul steuert den Roboter. Nur dass der Simulations-FB den Roboter ersetzt. Ziel ist es, dass Schnittstellen in anderen Projekten, die auch Roboter ansteuern müssen, getestet werden können ohne dass Hardware vorhanden ist.
Nein der Simu-FB ist noch nicht fertig, ich frage mich nur wie das geht dass zwei FBs miteinander kommunizieren, eben um auch zu wissen ob ich irgendwas beachten muss bei der Implementierung. Woher hat die Schnittstelle Zugriff auf die Antworten des Simu-FBs und wie bekommt der Simu-FB seine Befehle? Geht das über DBs? Später soll das ja über Profinet realisiert werden...
 
Hallo mone-284,

vielleicht hilft dir das Buch „SPS-Programmierung mit SCL im TIA-Portal“ vom Vogelbuchverlag weiter. In dem werden auch kleine Anlagen mit einem FB und einer Visualisierung simuliert.
 
Hallo mone_284!
Könnte mir vorstellen, dass Du entweder den Durchreiche-FB oder den Simu-FB aufrufst. Der Simu-FB würde in diesem Fall direkt und ausschliesslich die IO-Schnittstelle bedienen. Die "static"-Schnittstelle zum nicht vorhandenen Roboter dürfte wohl irrelevant sein.
Wenn der Durchreiche-FB unbedingt aktiv bleiben muss, dann bleibt Dir eigentlich nur die "static"-Snittstelle zum Ankoppeln des Simu-FBs - aber das stelle ich mir ungemein viel komplexer vor.
Häwenaissuiikend!
Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich Habe immer einen FC in dem ich die I/O daten auf einen DB lege.
Zu Simulationszwecken verhindere ich den Aufruf und aktiviere den Simulations FC/FB der in die gleichen DB Daten schreibt.
So muss ich im Programmablauf nichts ändern.

Gruß

Jens
 
Vielen Dank für eure Antworten :) Das Buch werde ich mir ansehen.

Ein Kollege meinte jetzt ich solle das irgendwie über blkmov machen. Allerdings werden dadurch doch bloß Bereiche kopiert. "Baue" ich durch diese Anweisung eine Verbindung zwischen dem Simu-FB und dem Schnittstellen-FB auf?
Könnte ich damit den Bereich der Simulation (die die Daten der Schnittstelle als IO bekommt) in die Schnittstelle kopieren (die die Simulation über static-Variablen mit Befehlen versorgt (@Heinileini: ist das kompliziert so wie du gemeint hast?) )?
Brauche ich dann immer noch einen DB?

Gruss, Mone
 
Moin Mone!
(@Heinileini: ist das kompliziert so wie du gemeint hast?)
Kommt drauf an, wen Du fragst. Mein Gruppenleiter von annodazumal hätte gewohnheitsmässig gesagt "Viel zu kompliziert!". ;o)
RoboSim2.jpg
Was ich gemeint habe ist:
Den Simu-FB so schreiben, dass er dieselbe IO-Schnittstelle hat, wie der Durchreiche-FB (aber nicht die static-SST).
Den Durchreiche-FB bedingt aufrufen, wenn die Simu nicht aktiv ist.
Den Simu-FB bedingt aufrufen, wenn die Simu aktiv ist.
Der Simu-FB wird dann abhängig von der Bedingung nur durchlaufen, wenn der Durchreiche-FB abhängig von derselben Bedingung nicht durchlaufen wird und umgekehrt. So können beide FBs friedlich nebeneinander existieren, ohne sich gegenseitig ins Gehege zu geraten.
Ich persönlich finde das nicht so wahnsinnig kompliziert.

Gruss, Heinileini
 
Zurück
Oben