TIA Standard Software Verwaltung (DevOps, Git, Versionen, ...)

Jochen Kühner

Level-3
Beiträge
4.323
Reaktionspunkte
551
Zuviel Werbung?
-> Hier kostenlos registrieren
Wollte nur mal die Frage in die Runde stellen, wie Ihr eure Standardprojekte so verwaltet.

Wir machen das mit TIA mittlerweile so:

  • Entwicklung des Stabndardprojektes in TIA
  • Export alle Bausteine über ein Export Tool (gibts auf meinen github)
  • Entfernen von unnötigen Daten (ReadOnly, Datumswerte, etc..) aus den exporten, damit nur die wirklich geänderten bausteine unterschiedlich sind (dazu gibts auch ein tool in meinem repo)
  • Einchecken in git
  • Push auf Azzure
  • Pullrequest erstellen
  • Teamcity zieht das Repo ab, und importiert alle Bausteine wieder in ein TIA Projekt (mit einem tool von meinem repo)
  • Teamcity spielt das ganze auf eine Virtuelle SPS und startet Tests auf dieser
  • Wenn alle tests laufen kann der Pull req. gemerged werden
  • Ein offizielles Release kann auf Teamcity gestartet werden
  • Teamcity legt dann eine ZIP Datei mit der funktionierenden, getesteten version auf einem Server ab (und trägt die Versionsnummer auch in das programm ein)
  • zusätzlich:
  • gibts einen generator der Touch Bilder (für winCC advanced und wincc UA) und große Teile des Programmes (meist KOP & FUP Bausteine) generiert und automatisch in das TIA Projekt importiert
 
Puh… jetzt komm ich mir ziemlich altbacken vor.

Bei uns (Sondermaschinenbau) gibts keine Standardprojekte, nur Standardbausteine.

Die werden in einer globalen Bibliothek auf einem Netzlaufwerk verwaltet. Am Anfang eines Projekts beginnt ja meistens mit irgendwas ähnlichem und aktualisiert mal die Bibliothek.

Am Ende des Projekts wird verglichen (manuell) was im Projekt neuer ist als in der Bibliothek und entschieden ob die Änderungen im Projekt sinnvoll sind und in die Bibliothek übertragen werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Machen wir auch, nur bisschen automatisierter....

Bei uns sind die Standard Bausteine im projekt im Ordner "Standard" (natürlich noch viele Unterordner), die Projektspezifischen im Ordner Projekt. Die aus dem Ordner Standard, kann man dann auch einfach wieder über das export Tool exportieren und ein Pull request erstellen (falls sich an denen etwas geändert haben sollte)
 
Zur Step7 Zeit war ich bei einer Firma die vcs und svn im Einsatz hatte(Software war rein Quell - basierend ), sind inzwischen auch auf Git umgestiegen und nutzen viele Tools für den Import/Export.

Ich lass mich gerne eines besseren belehren, finde aber das Git für diesen Bereich "überdimensioniert" ist( wegen der zusätzlichen lokalen Repositority)...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich lass mich gerne eines besseren belehren, finde aber das Git für diesen Bereich "überdimensioniert" ist( wegen der zusätzlichen lokalen Repositority)...
Verstehe nicht was überdimensioniert sein soll? Man kann ja damit auch arbeiten wie mit SVN/CVS, aber man kann eben auch noch mehr.

Und gerade im SPS, wenn man mal auf IBN ist, schlechtes Internet hat und trotzdem was einchecken möchte.
 
Bei uns ist es ein bisschen übersichtlicher.

Wir nutzen die Addins fürs Tia Portal um unsere Projekte ins lokale Gitea zu pushen.
Da wir keine Standards aktuell haben, aber dafür sämtliche Hersteller irgendwo mal zum Einsatz kommen, ist Gitea die simpelste Lösung um Projekte zentral für alle aktuell zu halten. Davor hatten wir Tfs von Microsoft
 
Bei uns ist es ein bisschen übersichtlicher.

Wir nutzen die Addins fürs Tia Portal um unsere Projekte ins lokale Gitea zu pushen.
Da wir keine Standards aktuell haben, aber dafür sämtliche Hersteller irgendwo mal zum Einsatz kommen, ist Gitea die simpelste Lösung um Projekte zentral für alle aktuell zu halten. Davor hatten wir Tfs von Microsoft
Wie ist es wenn du die TIA Addons nimmst um Bausteine ins GIT zu exportieren. Sind die gleich wenn du nichts änderst, oder exportiert Siemens über die extensions auch Datumswerte etc. die sich jedes mal ändern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ich ja nur ganze Projekte nach Änderungen mit einer neuen Version pushe, kann ich das gerade gar nicht so sagen.. aber ich glaube die Addins schauen auf die Checksumme des Codevergleichs und nicht nur auf eine Änderung vom Zeitstempel.. also sollten eigentlich keine Leichen dabei sein.

Ich pushe aber meine Commits händisch über das Programm Git Extentions
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wir legen ein leeres projekt, also ohne bausteine ab.
darin ist die std hardware config, ein TP700 und ein winccua projekt.

mit dem hw export haben wir uns noch nicht befasst, wird aber eh selten angepasst, und tooch genauso. Die meisten bilder generieren wir dort
 
Und wie macht ihr die Tests? Mit der Siemens Test Suite oder habt ihr da auch etwas eigenes? Das Siemens Tool finde ich recht beschränkt von seinen Möglichkeiten…
 
Wir verbinden eine PLCSim instanz mit einem Demo3D modell über eine eigens in Demo3D implementierte Schnittstelle.
Und dann setzen wir signale in der SPS, bspw um eine palette zu fahren, und erwarten nach Zeit x z.B. das die Palette irgendnwo ankommt.
Die schnistelle in Demo3D ist per HTTP erreichbar, und dann definieren wir einzelne tests i batch files.

Bspw:

@echo off
setlocal EnableDelayedExpansion
echo Start Unit-Test - Daten Aufgabeplatz erzeugen....
echo Betriebsart Automatik Gruppe A pruefen
for /F %%I in ('curl http://Simulationen-ED:8088/plc/get/bool/GroupSignals.A.AllPlacesInAutomaticMode') do set res1=%%I
if %res1%==1 (
echo [92mBetriebsart Gruppe A in Automatik[0m
ping Simulationen-ED -n 2 > nul
goto :1
) else (
ping Simulationen-ED -n 10 > nul
echo [91mBetriebsart Gruppe A nicht in Automatik[0m
goto :error
)
:1
echo Palette in Demo3D aufsetzen
for /F %%I in ('curl http://Simulationen-ED:8088/demo3d/add/load/ad11') do set res2=%%I
if %res2%==Successfull (
echo [92mPalette in Demo3D erfolgreich aufgesetzt[0m
ping Simulationen-ED -n 15 > nul
goto :2
) else (
ping Simulationen-ED -n 10 > nul
echo [91mPalette in Demo3D aufsetzen fehlgeschlagen[0m
goto :error
)
:2
echo Daten vorhanden am Aufgaplatz pruefen
for /F %%I in ('curl http://Simulationen-ED:8088/plc/get/bool/AD11Data.MOrder.DataPresent') do set res3=%%I
if %res3%==1 (
echo [92mDaten am Aufgabeplatz wurden erfolgreich erzeugt[0m
goto :eof
) else (
echo [91mDaten am Aufgabeplatz erzeugen fehlgeschlagen[0m
goto :error
)
)
:error
echo [91mUnit-Test - Daten am Aufgabeplatz erzeugen fehlgeschlagen[0m
exit /b 1
:eof
echo [92mUnit-Test - Daten am Aufgabeplatz erzeugen erfolgreich abgeschlossen.[0m
exit /b 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, hört sich wirklich interessant an! In das System habt ihr aber vermutlich auch ein bisschen Entwicklungszeit reingesteckt...
Das 3D Modell ist dann aber vermutlich schon früher von jemand erstellt worden, ggf. auch zur Abstimmung mit dem Kunden? Die Schnittstelle zu Demo3D sind dann für euch quasi die "Automatikbefehle", also die größeren Abläufe. Die SPS wird vermutlich nicht auf der Feldbus-EA-Ebene simuliert? Könnte Demo3D das auch und auch für Siemens?
 
Das Demo3D Modell machen wir nicht für jeden Kunden, sondern entspricht einer Anlage in die wir möglichs viel eingebaut haben was in unserem Standard vorkommt. Wir simulieren damit die E/A Ebene, die wir im Programm aber in DB's gemappt haben. Und diese signale werden direkt aus dem Demo3D Projekt gesetzt (wenn z.b: eine palette in die Bounding Box eine Lichtschranke kommt). Di Ausgänge des SPS Programmes lesen wir, und damit setzten wir dann in Demo3D ob ein Antrieb dreht oder nicht. Demo3D kann das auch schon von Haus aus (mit Emulate3D), konnte als wir das angefangen haben aber nicht Symbolischen zugriff auf 1500er. (Ob es das mitlerweile kann, keine Ahnung). (Wir brauchen dadurch auch keine Emulate3D lizenz sondern nur demo3D).
Demo3D ist speziell für Förderanlagen, kann aber auch roboter und freie Kinematiken (soweit ich weiß, wir nutzen das nicht)
 
Zurück
Oben