TIA Tool -> Tia Projekt Exportieren in Text/Xml-files (für Nutzung mit GIT VSC)

Jochen Kühner

Level-3
Beiträge
4.299
Reaktionspunkte
529
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir haben bei uns in der Firma mal ein Tool geschrieben, welches wir verwenden um unser TIA Projekt in GIT zu Pflegen. (den source gibts hier: https://github.com/dotnetprojects/DotNetSiemensPLCToolBoxLibrary)

Vlt. kanns hemand gebrauchen, oder hat Ideen was man noch verbessern könnte (auch was den workflow des nutzens angeht)

Wir arbeiten im Moment in einem Git Repo, in dem im Unterordner unser TIA Projekt liegt (welches in der .gitignore ist).

Geht im Moment nur mit TIA13 und Openness installiert!
 

Anhänge

  • TiaGitHandler.zip
    351,1 KB · Aufrufe: 132
Hallo Jochen,
das ist ein nettes Tool. Mir werden die DBs als .db Datei erstellt.
Ich würde gerne wissen, ob man die Bausteine auch wieder importieren kann?
Ziel ist dabei ein Tool zu schreiben was Bausteine umnummerieren kann.

LG Waldemar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jochen,

interessant. Für V14 gibt es ein OpennessDemo-Projekt. Das exportiert ganze Projektstrukturen als xml-Files. Die enthalten allerdings nur die Header und keinen Programmcode. Mit wenig Aufwand kann man aber umstellen, dass er stattdessen Quellen exportiert. Dann ergibt sich zumindest für awl, scl, db und udt Bausteine ein quellcodeverwaltungsgängiges Format.

Leider sind ja System wie git und SVN bei Siemens unbekannt. Siemens-Vertreter: "Da hat noch keiner nach gefragt"...
 
Noch keiner nach gefragt... das ich nicht lache, als vor 3 oder 4 jahren das große tia event auf der sps drives war hab ich nach versionsverwaltung gefragt, insbesondere git, und da wurde mir gesagt das für die nächste version was geplant ist... und das höre ich seit dem jedes jahr wieder...
 
Hallo Zusammen,
kann man UDTs auch als .udt exportieren oder hast Du Dich schon mal mit beschäftigt eine exportierte XML UDT Datei in eine .udt umzuwandeln?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab mich zumindest schon damit beschäftigt die db's (wahrscheinlich auch udts) zu parsen, damit man über meine toolbox diese wie mit classic projekten verarbeiten kann. Daher sollte man sie auch als awl quelle exportieren können.
Habs aber nicht wirklich probiert.
 
Ich finde es schade das Siemens keine Möglichkeit bietet UDTs als .udt Datei zu exportieren also: GenerateSourceFromBlock sowie man es mit DBs, FBs, FCs und OBs machen kann. Mein Ziel ist es eine SCL Datei wiederherzustellen. Den bei einem Fehler in der externen SCL, werden die neuerungen nicht aktualisiert. Somit biete ich mit meinem Tool die Möglichkeit die SCL ebenfalls nach einer Änderung zu aktualisieren.
Leider ist mir nur jetzt der XML Export bekannt und ich bin gerade auch dabei den XML Code in eine .udt File umzuwandeln.

Kann Du mir als erfahrener User hierbei einen Tipp geben, ob ich das Thema richtig angegangen bin?
Oder hast Du vllt eine andere Idee?
Mir wurde der Tipp gegeben den XML Code zu De-/Serialisierung aber diese Programmierkenntnisse besitze ich noch nicht. :D


Code:
StreamReader inputStreamReader = File.OpenText("C:\\Users\\wbach\\Desktop\\Test\\DBs\\CZI_CalcDec.xml"); //Open exported file
            String content = inputStreamReader.ReadToEnd(); //Read exported file
            inputStreamReader.Close(); //Close created file

            content = content.Replace("<BooleanAttribute Name=\"HmiAccessible\" SystemDefined=\"true\">true</BooleanAttribute>", ""); //Replace the number
            content = content.Replace("<BooleanAttribute Name=\"HmiVisible\" SystemDefined=\"true\">true</BooleanAttribute>", ""); //Replace the number

            int docInfoStart = content.IndexOf("<DocumentInfo>");
            int docInfoEnd = content.IndexOf("</DocumentInfo>");

            if ((docInfoStart != -1) && (docInfoStart != -1))
            {
                content = content.Remove(content.IndexOf("<DocumentInfo>"), content.IndexOf("</DocumentInfo>"));
            }

            content = content.Replace("<Member ", Environment.NewLine + "<Member "); //Replace the number

           //Hier wird noch weitere Logik folgen

            StreamWriter outputStreamWriter = File.CreateText("C:\\Users\\wbach\\Desktop\\Test\\DBs\\CZI_CalcDec.xml"); //Create new replaced text
            outputStreamWriter.Write(content); //write new content in file
            outputStreamWriter.Close(); //Close the file

LG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,

hab es mit VS 2013 Versucht aber leider über 80 Fehler nach dem Öffnen.
Kann es sein das in dem Projekt Einstellungen drin sind die nicht mit gepusht wurden (.gitignore)?

Eine kleine Anleitung oder Hilfe wären Klasse. Versuche es heute Nachmittag noch einmal.

Gruß Thomas
 
Hi,

die aktuelle Version die ich gepullt habe ist nicht Dnet 4.0 kompatibel.
Hab die Syntax Fehler behoben und dann scheint es zu gehen.

Gruß Thomas
 
Was macht ihr euch so viel Arbeit mit dem exportieren von UDTs?
Das Openness von TIA V14 SP1 exportiert die genau so wie awl, scl und db.

Was Openness leider auch hier noch nicht brauchbar exportiert sind die Plc-Variablen. Die lassen sich nur in einem schlecht lesbaren xml Format exportieren. Ein reiner ASCII Export in .sdif oder cvs ist leider nicht möglich und laut Hotline auch nicht für die nähere Zukunft geplant.

Hat sich damit vielleicht schon mal jemand beschäftigt?
 
Natürlich, ich nutze ja openess. Ich wollte nur ein Tool ohne UI.
Und in meiner bibliothek ist das integriert, damit software welche step 7 db‘s importieren konnte, mit dem gleichen code tia db‘s nutzen kann!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir haben jetzt versucht unser komplettes projekt zu exportieren, und wieder zu importieren (über openess scripter), aber das funktioniert nicht wirklich, da nicht übersetzt werden kann ;-(
wir wollen das auf unserem buildserver machen um unsere standartsoftware zu testen und zu versionieren. aber wie gesagt geht nicht wirklich
 
Dieses "openness scripter" Tool habe ich auch gesehen, ist aber ziemlich beschränkt von den Möglichkeiten, wenn mich nicht alles täuscht? Es können keine Variablen verwendet werden und somit muss das ganze Skript mit absoluten Pfaden Namen erstellt werden.

Und Übersetzten geht gar nicht? Kann man denn die Dateien wieder mit der Struktur einlesen, mit der man sie exportiert hat? Oder geht das wie üblich nur, wenn sie schon im Projekt an der richtigen Stelle vorhanden sind?

Ein weiteres Problem ist IMHO die Geschwindigkeit. Wenn ich ein ganzes Projekt über Openness in Quellen exportiere dauert das für ca. 500 Dateien etwa 5 Minuten! Das ist für die kontinuierliche Arbeit mit einem Quellcodeverwaltungssystem eigentlich ziemlich unbrauchbar.
 
Ok, ich teste jetzt mal den Scripter. Verbindung auf und abbauen funktioniert. "sourcegen" funktioniert auch für einen einzeln angegebenen FB. Aber was muss ich für "select ProgramBlocks" angeben, damit er die ganze SPS exportiert?

Laut Doku kann man mit

Code:
select SystemBlocks ["name" ...] [/group/]

auch irgendwie "Gruppen", also Ordner (?), exportieren. Leider wird da bei mir gar nichts exportiert. Egal welchen Ordner ich angebe.


Code:
connect Portal <project>print "connected!"


select Plc <plc>
print "selected!"


select ProgramBlocks "Programmbausteine"
print "selected programblocks!"


sourcegen ProgramBlocks "d:\temp\ScripterExport"
print "sourcegen"


disconnect Portal
print "disconnected!"
 
Zurück
Oben