TIA Verknüpfen von Adressen mit der Bausteinschnittstelle

RoentgenMan

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche gerade ein System zu erstellen, bei dem das Besetzen der Ein- und Ausgänge von Bausteinen automatisiert wird. Dies soll in Verbindung mit der Openness-Schnittstelle gemacht werden. Also Bausteine werden in ein Projekt importiert (aus einer Bibliothek oder als XML-Vorlage) und dann sollen automatisch die richtigen Adressen an die Ein- und Ausgänge gelegt werden. Die technischen Details, also der Umgang mit der Openness-Schnittstelle, ist nicht das Problem. Ich suche eher nach einem entsprechenden Konzept für dieses Vorgehen.

Eine Überlegung ist, beim Import von Bausteinen in TIA sogenannte Platzhalter an die E/A zu legen. Diese werden automatisch generiert und stellen eine eindeutige Identifikation eines E/A dar. Eine Idee ist, verschiedene Informationen wie der Name des Bausteins, Name des E/A, Datentyp usw. miteinzubeziehen. Aufbauend auf diesen Platzhaltern soll automatisch auf die entsprechenden Adressen geschlossen werden, sodass diese in einem zweiten Schritt richtig an den Baustein angebracht werden.

Mich interessiert zum einen, ob ihr Ideen habt, wie sich diese Verbindung zwischen Platzhaltern und den richtigen Adressen umsetzen lässt? Und zum anderen, ob es irgendwelche Veröffentlichungen, Studien, Ausarbeitungen, Produktbeschreibungen etc. gibt, welche Lösungsansätze diesbezüglich untersuchen.

Danke im Voraus!
 
Zuletzt bearbeitet:
Wenn ich's richtig verstehe, dann willst du quasi Templates mit Platzhaltern erstellen und diese dann vor dem Übersetzen durch Openess durch die richtigen Operanten ersetzen?
Wenn du entsprechende Schemas für die Namenvergabe definierst (z.B. St@@Gr@@Unit@@@@FktCode@@@) sollte sowas schon lösbar sein.
Steckt halt immens viel Arbeit drin.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich's richtig verstehe, dann willst du quasi Templates mit Platzhaltern erstellen und diese dann vor dem Übersetzen durch Openess durch die richtigen Operanten ersetzen?
Wenn du entsprechende Schemas für die Namenvergabe definierst (z.B. St@@Gr@@Unit@@@@FktCode@@@) sollte sowas schon lösbar sein.
Steckt halt immens viel Arbeit drin.
Prinzipiell ja... bin auf der Suche nach Ideen, mit denen ich das zumindest teilweise automatisiert hinkriege.
 
Ich habe so etwas mal mit Openness gemacht.
Habe ein Template Projekt erstellt, wo die Bausteinnamen, In-, Out- InOut Variablen, UDTs und sogar Copyright und Jahreszahl variabel sein sollen, mit den Platzhalter wie z.B. #Author# , #Bausteinename# usw. erstellt. Dann die Bausteine mit Openness bzw. dem VCI exportiert in XML. Wichtig, das die Platzhalter im Projekt eineindeutig sind.
Wenn jetzt ein Projekt/Baustein generiert werden soll, habe dich die Platzhalter durch den korrekten generierten Namen ersetzt und den xml Baustein in das neue generierte Projekt importiert.

Habe das Projekt gerade nicht zur Hand, hätte sonst ein paar Screenshot beigefügt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe so etwas mal mit Openness gemacht.
Habe ein Template Projekt erstellt, wo die Bausteinnamen, In-, Out- InOut Variablen, UDTs und sogar Copyright und Jahreszahl variabel sein sollen, mit den Platzhalter wie z.B. #Author# , #Bausteinename# usw. erstellt. Dann die Bausteine mit Openness bzw. dem VCI exportiert in XML. Wichtig, das die Platzhalter im Projekt eineindeutig sind.
Wenn jetzt ein Projekt/Baustein generiert werden soll, habe dich die Platzhalter durch den korrekten generierten Namen ersetzt und den xml Baustein in das neue generierte Projekt importiert.

Habe das Projekt gerade nicht zur Hand, hätte sonst ein paar Screenshot beigefügt.
Wie hast du dann definiert, welche Platzhalter mit dem richtigen Variablennamen ersetzt werden? Bis zu diesem Schritt kann ich es nachvollziehen. Aber sobald du die XML-Datei als Vorlage nutzt, um einen Baustein zu importieren, nach welchem Vorgehen ersetzt du dann die Platzhalternamen mit den richtigen Variablen? Hast du das irgendwo für standardisierte Bausteine fest hinterlegt, welche Variable auf welche Ein-/Ausgang muss?
 
Wie hast du dann definiert, welche Platzhalter mit dem richtigen Variablennamen ersetzt werden? Bis zu diesem Schritt kann ich es nachvollziehen. Aber sobald du die XML-Datei als Vorlage nutzt, um einen Baustein zu importieren, nach welchem Vorgehen ersetzt du dann die Platzhalternamen mit den richtigen Variablen? Hast du das irgendwo für standardisierte Bausteine fest hinterlegt, welche Variable auf welche Ein-/Ausgang muss?

Du hast ja erstmal als Kriterium in TIA nur Operantenname und Operantenkommentar der Variable für den Baustein.
Wenn du ohne irgendwelche Umsetztabellen auskommen willst, dann müssen alle notwendigen Angaben eben da zu finden sein.
Beispiel Betriebsart:
Taster "St5_AutoStart-T" kommt eben an den Betriebsartenbaustein für Station 5.
Beispiel Fördertechnik:
"St4_G43_RB3_Sollwert-AW" kommt an einen Baustein für eine Rollenbahn in St4 Gruppe43 Rollenbahn 3.

Je größer die Anlagen, je mehr verschiedene Varianten von Bausteinen, umso unübersichtlicher wird das Ganze.
Irgendwann steigt dann keiner mehr durch.

Also braucht man einen weitere "Datenquelle" um die Anlagenstruktur festzulegen.
Das kann eine Exceltabelle sein oder Daten aus EPlan oder CAD.

Ich hab mal mit Microsoft Visio "gespielt". Da kannst du zu den Shapes Datenbankfelder hinterlegen.
Auf der Basis kannst du eine Art grafischen Editor zusammenstellen.
 
Wie hast du dann definiert, welche Platzhalter mit dem richtigen Variablennamen ersetzt werden? Bis zu diesem Schritt kann ich es nachvollziehen. Aber sobald du die XML-Datei als Vorlage nutzt, um einen Baustein zu importieren, nach welchem Vorgehen ersetzt du dann die Platzhalternamen mit den richtigen Variablen? Hast du das irgendwo für standardisierte Bausteine fest hinterlegt, welche Variable auf welche Ein-/Ausgang muss?
Wenn ich eine Openness Vorlage (z.B. bestehend aus FB, I-DB und diversen innerhalb des FBs verwendeten FCs) in einem Projekt nutzen möchte (z.B. Call des FBs in einem OB), dann exportiere ich den OB (aktueller konsistenter Stand), in dem der FB aufgerufen werden soll und ergänze dort den FB Call im XML inklusiver der Verschaltung der ein und Ausgänge und danach importiere ich den OB wieder und alle zum FB benötigten I-DB FC UDTs usw..
1660954658939.png
Habe hier mal ein stark vereinfachtes Beispiel für ein Template Projekt abgebildet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich eine Openness Vorlage (z.B. bestehend aus FB, I-DB und diversen innerhalb des FBs verwendeten FCs) in einem Projekt nutzen möchte (z.B. Call des FBs in einem OB), dann exportiere ich den OB (aktueller konsistenter Stand), in dem der FB aufgerufen werden soll und ergänze dort den FB Call im XML inklusiver der Verschaltung der ein und Ausgänge und danach importiere ich den OB wieder und alle zum FB benötigten I-DB FC UDTs usw..

Verstehe ich das richtig?
Der SPSler bekommt ein Template-Projekt.
Dort definiert er die Anlagenstruktur in dem er Aufruf-FBs mit den notwendigen Bausteinen erstellt.
Danach wird das Projekt exportiert und mit Hilfe von Openness werden dann die abhängigen Aufgaben (Beschaltung, HMI-Bilder, Daten, ...) angelegt?

Gruß
Blockmove
 
Verstehe ich das richtig?
Der SPSler bekommt ein Template-Projekt.
Dort definiert er die Anlagenstruktur in dem er Aufruf-FBs mit den notwendigen Bausteinen erstellt.
Danach wird das Projekt exportiert und mit Hilfe von Openness werden dann die abhängigen Aufgaben (Beschaltung, HMI-Bilder, Daten, ...) angelegt?

Gruß
Blockmove
Hi Blockmove,

Also ein externe SPSler bekommt es nicht, aber Kollegen (sind nur ein limitierter Kreis), die Funktionen erstellen, schon. Damit sie ihre Funktionen in die Template Projekte einarbeiten können und nicht alles neu machen müssen.

Der SPSler, der die Maschine dann aus programmiert, bekommt das generierte SPS Projekt passend für die Zielmaschine und muss dann noch gewisse Adaptionen und Tests machen. Er gibt uns dann auch Feedback, was gut gelaufen ist und was nicht, so dass wir das beim Generieren berücksichtigen können.

Man muss bedenken, dass bei der Verwendung von Openness mit Visual Studio ein gewisses Maß an Hochsprachenerfahrung in C# benötigt wird und es nicht für jeden SPS Programmierer taugt. Zumindest muss man sich damit eine gute Zeit lang einarbeiten, bevor man den einigermaßen Durchblick bekommt.
Interessant wird Openness, wenn man fast ausschließlich mit Siemens TIA macht und vor allem viele Maschinen mit sich ähnelnden und wiederholenden Funktionen erstellt. Aber ein Allheilmittel ist es auch nicht.

VG
Michi
 
Man muss bedenken, dass bei der Verwendung von Openness mit Visual Studio ein gewisses Maß an Hochsprachenerfahrung in C# benötigt wird und es nicht für jeden SPS Programmierer taugt. Zumindest muss man sich damit eine gute Zeit lang einarbeiten, bevor man den einigermaßen Durchblick bekommt.
Das ist jetzt schon eine Untertreibung.
Wenn man eine Art Codegenerator umsetzten will, dann braucht es schon einiges an Hochsprachen-Erfahrung.
Vorallem wenn man sich dann mit KOP / FUP - XML rumschlagen muss.
Da wünscht man sich Classic mit den Quellen zurück.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist jetzt schon eine Untertreibung.
Wenn man eine Art Codegenerator umsetzten will, dann braucht es schon einiges an Hochsprachen-Erfahrung.
Vorallem wenn man sich dann mit KOP / FUP - XML rumschlagen muss.
Da wünscht man sich Classic mit den Quellen zurück.
Darum gehe ich ja über Template Projekte. Damit ich Bausteine in XML nicht komplett von Grund auf erstellen muss, sondern nur noch den Austausch von Symbolen und kleine Ergänzungen. Muss mir ja nicht mehr Arbeit machen als nötig.

Für mich ist C# nicht so das Problem gewesen, da ich es bereits seit 2002 in der Techniker Schule als Programmiersprache erlernt habe. Würde mich aber nicht als Hochsprachenspezialist bezeichnen.

Die Quellen in Classic hatten auch Ihre Tücken. Man kann natürlich auch aktuell noch in SCL geschrieben Bausteine, DBs und UDTs mit den "externe Quellen Import" importieren. Dies kann auch über Openness bedient werden.
 
Zurück
Oben