TIA leeren FB mit Openness erstellen,

Balu_der_Bär

Level-2
Beiträge
115
Reaktionspunkte
44
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich versuche zur Zeit herauszufinden in wie fern TIA Openness interessant für meine Firma ist. Das Ziel meines ersten in C# (Visual studio) geschriebenen Programms ist es, für ein neues Projekt Bausteinordner und Bausteine nach unserem Programmierstandard zu erstellen. Ich kann für die ersten schritte jedem nur die neue Youtube Videoreihe von luis.SPS.standard empfehlen.
Ich hab bisher jedoch noch nicht herausgefunden wie man einen leeren FB erstellt. Da ich mehrere FBs erzeugen will die Projektabhängig anders heißen hilft mir die Möglichkeit einen leeren FB in der Bib abzulegen nicht wirklich, es sei denn ihr wisst wie man einen eingefügten FB umbenennen kann. In der Anleitung habe ich nichts gefunden nur durch stöbern in den tooltips ist mir der befehl CreateFB aufgefallen. da weiß ich jedoch nicht wie ich die ProgrammingLanguage definiere/übergebe.
1665827163935.png
Hat da schon jemand mit gearbeitet ?

Liebe grüße

Balu
 
ich hätte ahnen können, dass es nicht funktioniert wenn es nicht in der Anleitung steht ....
"The action "Create block" only supports the programming language 'ProDiag'."
auch wenn es bei der programmingLanguage alles mögliche zur Auswahl gibt.

Dies ist übrigens der befehl falls mal jemand einen ProDiag Baustein erstellen will ;)
softwarePLC.BlockGroup.Blocks.CreateFB("MeinLustigerBaustein", true, 1, ProgrammingLanguage.ProDiag);

grüße

Balu
 
Hab ne Lösung gefunden. es ist ziemlich einfach sogar. legt euch von jedem Typ einen Baustein in die Bib, fügt ihn ins Projekt und ändert dann den Namen:

C#:
           var lib =_instTIA.GlobalLibraries.Open(fileinfo, OpenMode.ReadWrite); // Öffnet die Bib
           var libMastercopyfolder = lib.MasterCopyFolder; // navigiert zu den Kopiervorlagen
           var libmastercopies = libMastercopyfolder.MasterCopies; // Wählt die Liste aller Vorlagen aus
           var masterCopy = libmastercopies.Find("Bausteinvorlage"); // Sucht nach dem gewünschte Baustein
           PlcBlock Baustein = _softwarePLC.BlockGroup.Blocks.CreateFrom(masterCopy); // Fügt den Baustein ins Hauptverzeichnes der SPS
           Baustein.Name = "NeuerName";//nennt den Baustein um in "NeuerName"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich den Code von dir ausprobiert und bei mir funktioniert es nur soweit, dass ich die Bibliothek in mein Programm geladen bekomme. Wenn ich aber den FB in das Hauptverzeichnis der SPS einfügen möchte, bekomme ich immer die Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Und zwar immer bei dieser Zeile: PlcBlock Baustein = softwarePLC.BlockGroup.Blocks.CreateFrom(masterCopy); Dabei möchte ihn nur einen simplen FB einfügen. Kannst du mir da weiterhelfen?
 
Hallo,
inzwischen mache ich das anders. Das Hinzufügen von Bausteinen und vorallem mit Inhalt ist wohl das komplexeste was ich bisher bei Openness gesehen habe. Eingelesen werden Bausteine als XML File.
in dieser Datei sind alle infos hinterlegt die es für einen Block brauch. Von Block Typ z.B. FB über Block nummer, Schreibschutz, Eingänge/Ausgänge, Netzwerke und deren Inhalt bis zur einzelnen Negation an einem Oderglied.

Am besten nutzt du den TIA Openess Explorer um durch dein Projekt zu navigieren und exportierst mal einen vorhandenen Block aus einem Projekt und schaust dir das an. Du wirst die XML datei lesen und verstehen müssen weil du in dem Style Bausteine erstellen musst .
ich mache das so, dass ich anfangs immer den OB1 exportiere als XML und damit das Grundgrüst habe. Gerade die installierten TIA Features die in jedem Baustein enthalten sind ( ja da steht sau viel drin .. bei großen Blöcken sind das mehr als 10000 zeilen.) können sich ja schnell mal ändern und ich will net ständig das anpassen müssen.
Dann passt du an den entsprechenden stellen den Baustein an (klingt einfacher als es ist) und hast deinen leeren FB, FC, DB, OB31 etc .
Das befüllen des Bausteins wird dann erst richtig komplex wenn du es dir nicht so wie ich "einfacher" machst und lediglich pro Netzwerk 1 Baustein aus der Bib hinzufügst und beschaltest.

Opennes ist komplex und nicht "mal eben" einsetzbar. ich arbeite seit über einem Jahr nebenbei an meiner Anwendung.
Aber mach definitiv weiter man lernt sau viel auch über die funktionsweise vom TIA Portal wenn man damit arbeitet.
Schneller gehts wenn man nicht wie ich c# neu lernen muss ...

grüße

Balu
 
Hallo,
danke für deine schnelle Antwort!

Ich hole mir den FB, den ich benötige aus einer fertigen Bibliothek. Ich muss auch immer den selben FB verwenden. Ich habe also nicht die Möglichkeit diesen FB selber anzupassen. Müsste dieser FB dann in diesem Style erstellt sein, ich wie ich es rausbekommen würde, wenn ich einen Block mit dem TIA Opennes Explorer raus exportiere? Wäre es möglich, dass du mir dieses Skript der XML Datei zeigst?

Ich muss das für ein Projekt machen und habe deshalb eigentlich kein Spielraum mit dem Baustein, aber möglicherweise kann ich ihn ja so abändern, dass es funktioniert aber die Funktion trotzdem 1:1 erhalten bleibt.

Viele Grüße
Nasenbaer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
also wenn du nur den Baustein aus eine Bib holen willst geht das genau wie mit dem Code schnippsel oben beschrieben.
du wirst den aber sicher noch aufrufen müssen oder nicht ? und da kommt XML ins spiel.
hast du den openness explorer schon mal ausprobiert?
die XML Files zu selbst zu kreieren sind zig stunden Arbeit gewesen und hunderte zeilen Code. die kann ich hier jetzt nicht einfach posten.

Wenn du den "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" Fehler bekommst bedeutet das, dass du auf etwas zugreifen willst was es nicht gibt. in dem Falle hast du sicher das TIA portal nicht richtig verknüpft und der Softwarecontainer ist leer.
Schau dir dieses Video an wenn du nur da probleme hast ansonsten am besten die ganze Reihe.
Um diese Inhalte anzuzeigen, benötigen wir die Zustimmung zum Setzen von Drittanbieter-Cookies.
Für weitere Informationen siehe die Seite Verwendung von Cookies.

grüße

Balu
 
Hallo,
ich habe mir das Video angeschaut und den Code auf mein Projekt angepasst. Es funktioniert! Ich habe nun den Baustein in das Hauptverzeichnis der SPS eingefügt bekommen. Und du meinst, dass wenn ich diesen auch noch direkt aufrufen möchte, muss ich ihn mithilfe der XML Datei anpassen? Also ist das weitere vorgehen eher eine Anpassung des FBs anstatt einer weiter Code Anpassung, wenn ich das jetzt richtig verstanden habe?

Viele Grüße
Nasenbaer
 
Hallo,
wenn du einen Baustein aufrufen willst oder irgendetwas anderes machen willst innerhalb eines Bausteins musst fu diesen Baustein entweder direkt in visual Studio in Form einer XML Struktur erstellen oder bei Änderungen diesen erst exportieren und die exportierte XML Datei anpassen.
Das ist komplex und nicht mal eben gemacht.
erstelle dir einen Baustein in tia und exportiere ihn mittels openess Explorer.
Dann siehst du die Struktur und kannst dich da rein fuchsen.
Einen einfacheren Weg hab ich leider auch nicht gefunden.

Grüße
 
Hallo,
da du dich ja doch wirklich gut damit auskennst, hätte ich noch eine Frage: Beim Online gehen mit dem Projekt bekomme ich die selber Fehlermeldung wie davor mit: Der Objektverweis wurde nicht auf eine Objektinstanz fest gelegt.

public void GoOnline()
{

// Überprüfe, ob der Online-Provider verfügbar ist
OnlineProvider onlineProvider = plcDevice.GetService<OnlineProvider>();
if (onlineProvider == null)
{
Console.WriteLine("Der onlineProvider ist gleich null: " + onlineProvider + "\r\n");
return; // Beende die Methode, da der Online-Provider nicht verfügbar ist
}

// Überprüfe, ob die Konfiguration des Online-Providers festgelegt ist
if (onlineProvider.Configuration.IsConfigured)
{
onlineProvider.GoOnline();
Console.WriteLine("Erfolgreich online gegangen.\r\n");
}
else
{
Console.WriteLine("Online-Provider ist nicht korrekt konfiguriert.\r\n");
}

}

So hätte ich es gelöst mit dem Online gehen. Könntest du mir eventuell sagen, ob es am Code liegt oder ob ich dort vorher, wie in dem Video, welches du mir geschickt hast, auch nochmals das TIA Portal richtig verknüpfen muss?
 
Zurück
Oben