# Simulation mittels PLCSIM



## SPS_NEU (14 September 2010)

Hallo,

gibt es eine Möglichkeit, die Funktionsweise einer CPU zu simulieren. PLCSIM ist mir bekannt. Kann ich die Daten irgendwie weiter verwenden um diese evtl. zu Visualisieren? Ein freies Tool natürlich, kein WinCC oder Visu meine ich.


----------



## Gerhard Bäurle (14 September 2010)

SPS_NEU schrieb:


> gibt es eine Möglichkeit, die Funktionsweise einer CPU zu simulieren. PLCSIM ist mir bekannt. Kann ich die Daten irgendwie weiter verwenden um diese evtl. zu Visualisieren?



Was willst Du jetzt Simulieren? Das SPS-Programm oder die zu 
steuernde Anlage?

Mal als Tipp:

http://www.trysim.de/
http://www.mhj-online.de/de/index.php?cat=c5_SPS-VISU.html



SPS_NEU schrieb:


> Ein freies Tool natürlich



Leider kenne ich nichts, was vom Himmel gefallen ist.


----------



## Thomas_v2.1 (14 September 2010)

Gerhard Bäurle schrieb:


> Leider kenne ich nichts, was vom Himmel gefallen ist.



Ich habe mal mit Blender (freie 3D Grafik-Software) und dessen Game-Engine eine kleine Demo-Maschinensimulation realisiert.
Ein Video von meinen ersten Schritten ist hier zu sehen:

http://www.youtube.com/watch?v=4XULbimzMxM

Die Objekte werden über PLCSIM gesteuert, und an dieses auch Positionsrückmeldungen, Lichtschrankenmeldungen etc. gegeben. Ist aber etwas Einarbeitung notwendig. Mir ging es erstmal nur darum dass es möglich ist - und das ist es. Man könnte die Demo auch an andere (reale) SPS koppeln.


----------



## rostiger Nagel (14 September 2010)

Thomas_v2.1 schrieb:


> Ich habe mal mit Blender (freie 3D Grafik-Software) und dessen Game-Engine eine kleine Demo-Maschinensimulation realisiert.
> Ein Video von meinen ersten Schritten ist hier zu sehen:
> 
> http://www.youtube.com/watch?v=4XULbimzMxM
> ...


 
was hörst du den für Musik.......


----------



## Thomas_v2.1 (14 September 2010)

Helmut_von_der_Reparatur schrieb:


> was hörst du den für Musik.......



Lief bestimmt Radio, NDR 1, WDR 4 oder sowas...


----------



## rostiger Nagel (14 September 2010)

Thomas_v2.1 schrieb:


> Lief bestimmt Radio, NDR 1, WDR 4 oder sowas...


 
WDR 4 war es bestimmt nicht, das läuft den ganzen tag bei mir
so etwas spielen die da nicht


----------



## MeisterLampe81 (15 September 2010)

Helmut_von_der_Reparatur schrieb:


> WDR 4 war es bestimmt nicht, das läuft den ganzen tag bei mir
> so etwas spielen die da nicht



WDR4?? Diese Frequenz ist bei uns in der gesamten Werkstatt nicht zu empfangen...


----------



## rostiger Nagel (15 September 2010)

MeisterLampe81 schrieb:


> WDR4?? Diese Frequenz ist bei uns in der gesamten Werkstatt nicht zu empfangen...


 
ach ihr Armen, aber euch kann geholfen werden mann kann das
auch Online hören http://www.wdr.de/radio/audioplayer...mize&maximizeHandler=maximize&minimized=false


----------



## ErwinLSE (28 Januar 2011)

Hallo Thomas V2.1

ich suche schon seit einiger Zeit nach einer Visualisierungslösung im zusammenspiel mit PLCSIM und bin dabei auf die beiden Videos bei Youtube gestoßen, ist es möglich so ein Blender Projekt von dir zu bekommen? Mit Blender komme ich klar klar, auch mit Scripten aber ich habe keine Ahnung wie ich die Verbindung zu PLCSIM hinbekomme.


----------



## Thomas_v2.1 (28 Januar 2011)

ErwinLSE schrieb:


> Hallo Thomas V2.1
> 
> ich suche schon seit einiger Zeit nach einer Visualisierungslösung im zusammenspiel mit PLCSIM und bin dabei auf die beiden Videos bei Youtube gestoßen, ist es möglich so ein Blender Projekt von dir zu bekommen? Mit Blender komme ich klar klar, auch mit Scripten aber ich habe keine Ahnung wie ich die Verbindung zu PLCSIM hinbekomme.



Hallo Erwin,
da hast du Glück, ich habe Anfang dieses Jahres für jemand anderen hier aus dem Forum ein Blender-Plcsim-Paket zusammengestellt.

Darin enthalten:
- 3 Blender Beispiel-Simulationen (Würfel bewegen, Fördertechnik, Portalroboter)
- Step 7 Projekt mit den Programmen für die Simulationen (nicht aufgeräumt, ist einiges an Tests und Gewusel drin)
- Eine Python Klasse welche den Datenaustausch zu Plcsim kapselt
- Eine kleine Dokumentation wie man das Ganze ans Laufen bekommt

Die Dokumentation hänge ich hier mal im Forum an, dann können sich Interessierte schonmal einen Überblick verschaffen. Den Rest würde ich per Email verschicken (2,5 MB).

Aber nochmal als Anmerkung: Der Umgang mit Blender ist nicht gerade einfach, oder zumindest sehr gewöhnungsbedürftig ;-)


----------



## ErwinLSE (28 Januar 2011)

Die pdf ist ja schon mal sehr interessant, kennst du noch eine andere kostengünstige Variante solche Simulationen in Verbindung mit plcsim zu machen? Habe mich bis jetzt mit "tarakos VRcontro"l und "trysim"
 beschäftigt, sind auch nicht sehr einfach zu handhaben.


----------



## Thomas_v2.1 (28 Januar 2011)

ErwinLSE schrieb:


> Die pdf ist ja schon mal sehr interessant, kennst du noch eine andere kostengünstige Variante solche Simulationen in Verbindung mit plcsim zu machen? Habe mich bis jetzt mit "tarakos VRcontro"l und "trysim"
> beschäftigt, sind auch nicht sehr einfach zu handhaben.



Trysim haben wir in der Firma mal im Einsatz gehabt. Aber das ist doch eher für Fördertechnik ausgelegt. Wenn man entsprechend bezahlt programmiert er dir aber auch wohl alles mögliche an anderen Simulationsobjekten da rein. Ein Physiker sollte wissen wie sowas geht ;-)

Andere Firmen setzen wohl auf kommerzielle Spiele-Engines. Bei der einen Firma wo hier mal Videos verlinkt waren läuft glaube ich die Unreal-Engine.

Auf Blender bin ich eigentlich nur durch einen Artikel in der c't gestoßen. Es war jetzt kein konkreter Anwendungsfall den ich mit den Tests verfolgt habe, ich wollte nur mal sehen was damit so möglich ist.
Wenn du dich mit Blender besser auskennst kannst du dir das ja mal ansehen. Z.B. bei dem Portalroboter konnte ich die Physik-Engine von Blender schon nicht mehr benutzen, weil es Probleme gab wenn ich zu viele Objekte aneinander gekoppelt habe. Da musste ich die Physik (zumindest ganz grob) selber programmieren. Und das wird dann irgendwann doch recht aufwändig.

Der Vorteil an Blender ist aber, dass man eine Simulation angeblich als eigenständige exe kompilieren kann. Ich denke sowas könnte durchaus für Ausbildungszwecke als Simulationsmodell eine Alternative zu realen Objekten sein - zumindest für Hausaufgaben oder etwas in der Richtung.


----------



## ErwinLSE (22 Februar 2011)

Hallo,

habe jetzt auch mal ein Projekt mit Blender erstellt.
Es ist ein Heber der er bei uns in der Firma läuft, zum Einsatz kommt das Originale Step7 Programm und das originale WinCC Projekt

An dieser Stelle nochmal vielen Dank an Thomas, super Sache diese Schnittstelle.

hier der Youtubelink.

http://www.youtube.com/watch?v=4UdeiB0ZiwM


----------



## Thomas_v2.1 (22 Februar 2011)

Hallo Erwin,

das sieht ja mal verdammt gut aus was du da gemacht hast :s12:

Hast du an meiner prinzipiellen Vorgehensweise noch etwas ändern müssen?
Die Initiatoren an den Wagen kann man ja noch erkennen. Sieht aber so aus als ob die bei dir nicht auf Kollision sondern auf Annäherung reagieren, oder das täuscht.

Mich würde interessieren wie du den Heber umgesetzt hast. Bei meinem Portalroboter-Beispiel habe ich es über die Blender-interne Logik nie hinbekommen mehrere Objekte in 3 Achsen aneinander zu koppeln - zumindest nicht wenn dann einer noch bewegt werden sollte.
Dein Heber, die Verriegelungsstifte und die Wagen die auf den Heber fahren, müssen ja auch zu bestimmten Zeitpunkten gekoppelt werden. Per Python-Skript, Blender-Logik, oder wie hast du das gemacht?


----------



## ErwinLSE (22 Februar 2011)

Hallo,

die Beschreibung war sehr gut und vollständig.

Die Auffahrsensoren der Wagen reagieren auf Kollision allerdings nur außerhalb des Heberbereiches, in diesem Bereich stoppt der Wagen über die "Lichtschranken" über der Fahrbahn (Fahrfreigabe).

Der Heber bekommt seine Sollposition von der SPS, die Zwischenschritte werden in einem script berechnet in dem ich auch noch eine Bremsrampe berechne.

cont = G.getCurrentController()
me = cont.owner
SollPosition = (G.plc.read( me["addr"] ))
Vsoll = me["geschwindigkeit"]
rampe = me["bremsrampe"]*10

#Istposition des Hebers in reale Werte der Anlage umrechnen
loc = me.position
Zpos = loc[2]
IstPosition = (Zpos-2.755 ) * 1000000.0

if SollPosition > IstPosition:
___richtung = 1
___diff = abs(IstPosition -SollPosition)
else:
___richtung = -1
___diff = abs(SollPosition - IstPosition)
if diff > 0.1:
___if diff < rampe:
______# "Geschwindigkeit" in Bremsrampe verringern
______Vist = diff / (rampe / Vsoll)
___else:
______# maximale "Geschwindigkeit"
______Vist = Vsoll
if Vist >= 0:
___IstPosition = IstPosition + Vist * richtung

# Istposition für Blender zurückrechnen 
me.position = (-0.925, 0.027, IstPosition/1000000 + 2.755) 
me["HeberIstposition"] = IstPosition
# Istposition an SPS
G.plc.write( me["plcAddrPos"], int(IstPosition))

Alle Elemente die zum Heber gehören sind erstmal (geparented) außer die Laufwagen. Die Verriegelungstifte werden über einen Ausgang der SPS einfach durch ein script hin.- und herbewegt. 

if G.plc.read( me["plcaddrVerriegeln"] ) == 1 and me.posX < me["PosVerriegelt"]:
___me.posX = me.posX + 0.01
if G.plc.read( me["plcaddrEntriegeln"] ) == 1 and me.posX > me["PosEntriegelt"]:
___me.posX = me.posX - 0.01
me.position = (me.posX,me.posY,me.posZ)

Die Wagen bewegen sich erstmal über eine IPO Kurfe wobei ich die Kurfe für die Höhe gelöscht habe. Ich erkenne anhand der Kollision der Wagen mit der Schiene vom Heber welcher Wagen sich auf dem Heber befindet und setze die Position Wagen gleich der Position des Hebers. Wenn sich der Heber jetzt bewegt bewegen sich automatisch auch die auf ihm befindliche Wagen.

Wagen = LWE

import GameLogic as G
cont = G.getCurrentController()
sens = cont.sensors["sensor"]
# Kollisionserkennung auf Schiene
LweAufAbschnitt = sens.hitObjectList 
Szene = G.getCurrentScene()
me = cont.owner
# nur ausführen wenn LWE auf Abschnitt
if len(LweAufAbschnitt) <> 0:

___# erkennen welche LWE sich im jeweiligen Abschitt befindet (LWE1, LWE2...)
___LWE = Szene.objects["OBLWE" + (str(LweAufAbschnitt[0])[5:])]
___locLWE = LWE.position
___locEHB = me.position
___# Hier wird die Position des Hebers auf die jeweilige LWE kopiert
___locLWE[2] = locEHB[2] 
___LWE.position = locLWE
___# Fahrfreigabe für LWE auf diesem Abschnitt
___if GameLogic.plc.read( me["plcaddrFahrfreigabe"] ) == 0:
______G.FahrFrg[int(str(LweAufAbschnitt[0])[5:])] = 0
___else:
______G.FahrFrg[int(str(LweAufAbschnitt[0])[5:])] = 1 

in diesem script wird auch ein Bit für die Fahrfreigabe der jeweiligen LWE in diesem Abschitt anhand eines SPS Ausgangs gesetzt welches im Script für die LWE abgefragt wird und die LWE stoppt oder fahren lässt.

Ich hoffe ich konnte ein paar Fragen kären

habe gerade gesehen das hir keine Leerzeichen oder Tabs am Anfang der Zeile Möglich ist, deshelb die Unterstriche


----------



## Thomas_v2.1 (22 Februar 2011)

ErwinLSE schrieb:


> Die Auffahrsensoren der Wagen reagieren auf Kollision allerdings nur außerhalb des Heberbereiches, in diesem Bereich stoppt der Wagen über die "Lichtschranken" über der Fahrbahn (Fahrfreigabe).
> 
> Der Heber bekommt seine Sollposition von der SPS, die Zwischenschritte werden in einem script berechnet in dem ich auch noch eine Bremsrampe berechne.



Also scheint es ganz ohne Skripte (zumindest bisher) nicht zu gehen.

Meine Idee war ja, dass so eine Simulation möglichst einfach auch von einem nicht-Blender-Spezialisten erstellt werden kann.
Dazu bräuchte man dann eine Bauteile-Bibliothek, aus der man die benötigen Objekte einfach in seine Szene einfügt, und dann nur die SPS-Adresse unter den Properties anpassen muss. Darum habe ich auch versucht möglichst viel in die Properties zu legen.

Bei meiner Simulation mit den Förderbändern funktioniert das sogar. Dort kann ich hingehen und meine Förderbänder und die Lichtschranken duplizieren und passend positionieren, SPS-Adresse anpassen und die Maschine ist gebaut.

Wie es aussieht funktioniert das aber nur bis zu eine gewissen Komplexität der Anlage. Eigentlich hat Blender eine eigene Physik-Engine, leider lässt sich die wohl nicht immer nutzen.
Der Nachteil bei der Programmierung der eigenen Physik über Skripte ist zusätzlich dass man z.B. eine Maschinen- oder Programmstörung nicht mehr als "Crash" in der Simulation sehen kann. Oder würden bei dir die Wagen real zu Boden fallen, wenn du sie über die Schiene fährst wenn der Heber nicht an der richtigen Position ist?



ErwinLSE schrieb:


> habe gerade gesehen das hir keine Leerzeichen oder Tabs am Anfang der Zeile Möglich ist, deshelb die Unterstriche



Dafür gibt es im Editor unter # die 
	
	



```
Code Tags
```
.


----------



## ErwinLSE (22 Februar 2011)

Die Wagen fallen nicht zu Boden (leider), habe es am Anfang über die Physiksimulation der Game Engine versucht, habe es aber nicht hinbekommen das der Wagen auf der Schiene bleibt, vielleicht fällt dir da ja was ein, würde es auch gerne mit der Pysiksimulation machen, dann könnte man auch die Schienen frei anordnen und Weichen einfacher einfügen. bei mir fahren die Wagen ja nur auf einem vordefinierten Pfad.

Das mit dem duplizieren klappt bei mir mit den Wagen übrigens auch, duplizieren, Ausgang für Fahrantrieb unf Eingang Auffahrsensor anpassen und eine Startposition eingeben fertig schon habe ich einen wagen mehr.

Ganz ohne programmieren per Script wird es wohl nicht gehen, aber selbst bei Komerziellen Produkten muss mit VRML programmiert werden.

Hast du schon mal Versucht ein Projekt als EXE zu speichern, klappt bei mir nicht, währe aber super wenn man jemand anderen eine fertige Anlage zum Software erstellen geben könnte ohne das er sich mit Blender beschäftigen muss.


----------



## Thomas_v2.1 (22 Februar 2011)

ErwinLSE schrieb:


> Ganz ohne programmieren per Script wird es wohl nicht gehen, aber selbst bei Komerziellen Produkten muss mit VRML programmiert werden.


Ich hätte da an sowas wie Trysim gedacht. Aber da ist man sehr auf die Bauteilebibliothek beschränkt. Was nicht geht, das geht dann auch nicht. In Blender kann man mit entsprechendem Aufwand denke ich mal schon sehr viel machen.

Mit anderer 3D-Software kenne ich mich eigentlich garnicht aus, außer mit Povray das aber eher für statische Bilder ist.


ErwinLSE schrieb:


> Hast du schon mal Versucht ein Projekt als EXE zu speichern, klappt bei mir nicht, währe aber super wenn man jemand anderen eine fertige Anlage zum Software erstellen geben könnte ohne das er sich mit Blender beschäftigen muss.



Als exe speichern (Game als Runtime speichern) funktioniert auf jeden Fall.
Man muss dann aber noch einige Dateien händisch in das Verzeichnis packen:
- 2 dlls aus dem Blender Verzeichnis (wrap_oal.dll und vcomp90.dll)
- die Datei plcsim.py für die PLCsim Anbindung

Allerdings komplett startet das Programm dann auch noch nicht, weil ihm wohl das win32com.client Modul fehlt. Mal gucken ob man ihm das auch noch irgendwie unterjubeln kann ;-)

Ob für das Ganze der Python Interpreter installiert sein muss habe ich noch nicht getestet. Mittlerweile ist das bei mir überall installiert.


----------



## extec (25 Februar 2011)

Guten Abend,

Hoffe bin hier richtig. Und zwar bin ich auf der suche nach einem grafischen Simulationsprogramm zur Simulation eines S7 Programms.

Rödel gerade an meiner Technikerarbeit herum die ich theoretisch für eine Firma durchführe. Hierbei geht es um die Entwicklung und Konstruktion einer kleinen Maschine.

Da ich die Maschine aber vorerst nicht baue tue ich mich bei der Präsentation ziemlich schwer, denn wer will schon nur ein SPS programm in PLCSIM präsentiert bekommen?

Hab hier von Blender gelesen scheint mir aber für anfänger ziemlich komplex.
Giebt es kein grafiktool das für Anfäger besser geeigent ist, beispielweise mit vorgefertigten Grafiken? 
Es würde eine zweidimensionale Ansicht von oben ausreichen!

Bin über jede Hilfe froh und dank schonmal im vorraus.


Gruß Extec


----------



## IBFS (25 Februar 2011)

extec schrieb:


> Und zwar bin ich auf der suche nach einem grafischen Simulationsprogramm zur Simulation eines S7 Programms.




www.trysim.de


wurde im POST #1 schon kurz genannt.

Gruß

Frank


----------



## extec (28 Februar 2011)

Danke für die antwort 

hab mich nun jetz bisel mit trysim beschäftigt aber glaub nicht das das so das richtige ist.
Meine Konstruktion besteht aus sieben linearachsen die über doppelwirkende pneumatikzylinder bewegt werden, sowie über zwei sägemotoren bei denen die rotationsbewegung simuliert werden soll.
Die linearbewegung geht ja noch einigermaßen mit trysim wobei die Rotationsbewegung nicht möglich ist!

Giebt es  da noch eine andere möglichkeit bzw. programm wie ich sowas simulieren kann ?

gruß extec


----------



## marlob (28 Februar 2011)

Wieviel Geld willst du, bzw. die Firma für die du arbeitest, ausgeben?
Ansonsten
[Werbung]
winmod
[\Werbung]


----------



## Gerhard Bäurle (28 Februar 2011)

extec schrieb:


> Giebt es  da noch eine andere möglichkeit bzw. programm wie ich sowas simulieren kann ?



Hallo,

ich kenne das *hier* zwar nicht genauer, aber laut Beschreibung 
wird damit die SPS und die Anlage simuliert.


----------



## ErwinLSE (1 März 2011)

Hallo "extec",

ich kann nur empfehlen sich mal mit Blender, und duzgehörend Python,zu beschäftigen und das Projekt damit umzusetzen. 
Lineare Bewegungen sind ja gar kein Problem, die Rotation der Sägeblätter kann man über eine drehende Textur darstellen. Die Anbindung an die SPS funktioniert dann über die Schnittstelle von "Thomas" was weiter oben sehr gut beschrieben ist.

Der Vorteil von dieser Lösung, sie ist kostenlos.

Glaube nicht das es mit kommerziellen Programmen viel einfacher ist, auch da muss man sich einarbeiten um zu guten Ergebnissen zu kommen.


----------



## EliteGurke (1 März 2011)

Mit der Visu von MHJ, wie bereits von Gerhard Bäurle verlinkt kann
man nette kleine Anlagen visuell darstellen ohne großen Aufwand.
Und laut Beschreibung arbeitet es mit dem Simatic Manager zusammen. 



> *Bestandteile von SPS-VISU V4 Standard*:
> 
> 
> Editor für virtuelle Anlagen (Baukasten mit Schalter, Lampen, Bänder, usw.)
> ...



Während meiner Zeit in der Technikerschule haben wir damit ne 
Menge virtueller Anlagen simuliert =) Die Demo lässt sich kostenfrei
runterladen, wie groß der Funktionsumfang ist musst du selbst 
austesten.

Nochmal der Link zur Homepage: http://www.mhj-online.de

Wobei Blender doch weitaus edler erscheint!


----------



## xxsanco (14 März 2014)

*Blender PLCSIM*



Thomas_v2.1 schrieb:


> Hallo Erwin,
> da hast du Glück, ich habe Anfang dieses Jahres für jemand anderen hier aus dem Forum ein Blender-Plcsim-Paket zusammengestellt.
> 
> Darin enthalten:
> ...




Hi Thomas

Im really interesting in this simulation, Could you send me please the other files to know how to do this simulation?


----------



## Thomas_v2.1 (15 März 2014)

Die Python-Klasse für die Plcsim-Anbindung und ein Blender-Beispiel habe ich an diesen Thread angehängt:
http://www.sps-forum.de/programmierstrategien/51169-3d-anlagensimulation.html


----------



## DricaCH (20 September 2015)

Thomas_v2.1 schrieb:


> Hallo Erwin,
> da hast du Glück, ich habe Anfang dieses Jahres für jemand anderen hier aus dem Forum ein Blender-Plcsim-Paket zusammengestellt.
> 
> Darin enthalten:
> ...




Hallo Thomas

Ich habe deine Simulationen auf YouTube gesehen - finde das sehr sehr interessant.
Wäre es möglich, dass du mir die Dokumentation ebenfalls per email zusendest?
Das wäre ganz toll.

DrcaCH


----------

