TIA TIA Openness: Bausteine erstellen

wbach

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

ich entwickle gerade ein Tool was Bausteine umsortieren soll. Aber leider habe ich in TIA Openness noch nirgendwo eine Funktion gefunden die Bausteine erstellen kann.
BTW: Löschen muss es, weil ich keine möglichkeit habe eine Bausteinnummer umzunummerieren. Deshalb hole ich mir Information über den gesamten Baustein und lege ihn dann neu an.

Bsp.:

Code:
foreach (NumericUpDown currentTb in NoList)
            {
                BlockListNumber.Add(currentTb.Text);
                int iList = BlockListNumber.Count();

                try
                {
                    foreach (Device device in MyProject.Devices)
                    {
                        IDeviceItemAggregation deviceItemAggregation = device.DeviceItems;
                        foreach (IDeviceItem deviceItem in deviceItemAggregation)
                        {
                            if (deviceItem.Name == tb_BlkDevName.Text || device.Name == tb_BlkDevName.Text)
                            {
                                ControllerTarget controllerTarget = deviceItem as ControllerTarget;
                                if (controllerTarget != null)
                                {
                                    for (int i = 0; i < iList; i++)
                                    {
                                        IBlock block = controllerTarget.ProgramblockFolder.Blocks.Find(BlockListName[i]);

                                        DateTime codeModifiedDate = block.CodeModifiedDate;
                                        DateTime compileDate = block.CompileDate;
                                        DateTime creationDate = block.CreationDate;
                                        string blockAuthor = block.HeaderAuthor;
                                        string blockFamilie = block.HeaderFamily;
                                        string blockTitle = block.HeaderName;
                                        string blockVersion = block.HeaderVersion;
                                        DateTime interfaceModifiedDate = block.InterfaceModifiedDate;
                                        bool isConsistent = block.IsConsistent;
                                        bool isKnowHowProtected = block.IsKnowHowProtected;
                                        DateTime modifiedDate = block.ModifiedDate;
                                        string blockName = block.Name;
                                        int blockNumber = block.Number;
                                        DateTime parameterModified = block.ParameterModified;
                                        ProgrammingLanguage programmingLanguage = block.ProgrammingLanguage;
                                        DateTime structureModified = block.StructureModified;
                                        BlockType blockType = block.Type;

                                        //Hier kommt löschen und dann erstellen eines Bausteines
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    WriteTxtStatusError("Error while compiling the software.", ex);
                }
            }

Kann mir hierbei jemand Helfen?
Vllt. gibt es ja schon ein Befehl einen existierenden Baustein umzusortieren.

LG
 
Falls es jemanden interessiert.
Hierfür muss ich meine Bausteine exportieren, verändern und dann wieder importieren alles XML.

Danke wbach :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo wbach,

deine Frage ist ja nun schon einige Zeit her - ich sitze gerade an einem ähnlichen Problem mit derselben Fragestellung.
Hier ein paar Infos vorweg:
Ich benutze für meine Openness-Anwendung TIA Portal V16.3 und Visual Studio V16.8.2 mit .NET Framework V.8.+. Auch wenn das recht aktuelle Versionsstände sind, bin ich auch an vermeintlich alten Lösungen interessiert, da ich der Meinung bin, dass sich das bestimmt irgendwie übertragen lässt. Nun zu meinem Anliegen:

Ich möchte in ein TIA-Projekt über Openness einen neuen Funktionsbaustein unter den Programmbausteinen oder in einer Gruppe (ist ersteinmal irrelevant) in der Programmiersprache FUP erstellen. Name und Nummer sind auch erst einmal egal. Es geht mir nur um die Erzeugung.
Aus dem Systemhandbuch "Openness: Projekterstellung automatisieren" aus 11/2019 Abschnitt 7.19.22.12 "Einen ProDiag-FB anlegen", ab Seite 526 von Siemens benutze ich aktuell dafür (fälschlicherweise) die Funktion CreateFB. Diese erstellt allerdings einen ProDiag-FB. Diesen möchte ich nicht, ich wusste nur nicht mir besser zu helfen, da der Name der Funktion und dessen Übergabeparameter für mein Anliegen passen würden.

Wenn ich nun die Programmiersprache von ProgrammingLanguage.ProDiag zu ProgrammingLanguage.FBD für FUP ändere, so wird mir beim Starten der Applikation eine Ausnahme zurückgegeben, dass die Funktion nur für die Programmiersprache ProDiag ausgelegt sei. Merkwürdigerweise steht dazu in der Definition der Funktion in der Engineering.dll nichts weiter. Meine vermeintlich schöne Lösung wird also nicht von Siemens unterstützt, obwohl die Handhabung im TIA Portal beim manuellen Anlegen eines FBs mit einer gewünschten Programmiersprache über das Dropdown-Menü ähnlich ist.

Hast du oder hat jemand anderes mittlerweile eine schöne Lösung zum erstellen eines Funktionsbausteins über Openness gefunden? Ich möchte ungern einen Beispiel-FB manuell in FUP erstellen, diesen als XML exportieren, in Visual Studio C# an meine Vorstellung anpassen und wieder importieren. Das erscheint mir zu kompliziert, da ich in geraumer Zeit mindestens 50 FBs automatisiert anlegen möchte.

Für Eure Antworten bedanke ich mich schon einmal herzlich im Voraus. Gerne reiche ich auch Codeschnippsel meiner angepassten Siemens Funktion CreateFB nach (Screenshots oder wie auch immer).

Lieben Gruß
Lauge
 
Zu meiner Frage - habe gestern den Support von Siemens dazu kontaktiert.
Die Rückmeldung ist, dass es zur Zeit (mit V16) nicht möglich sei, die Programmiersprache als Übergabeparameter bei der Methode "CreateFB" von ProDiag auf z.B. FUP oder andere zu ändern.
Mir wurde eine Alternative genannt und zwar einen Dummy-FB in einer Bibliothek abzulegen (als Kopiervorlage), wie ich den haben möchte (z.B. mit Prog.sprache FUP/FBD), diesen dann unter Programmbausteinen oder wo auch immer zu instanziieren (siehe Systemhandbuch "Openness: Projekterstellung automatisieren", 11/2019, 7.12.14 Auf Kopiervorlagen zugreifen, S. 169) und dessen Attribute wie Name, Nummer usw. zu manipulieren. Das klappt.
 
Zurück
Oben