Simulation mittels PLCSIM

SPS_NEU

Level-2
Beiträge
567
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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

Ein freies Tool natürlich

Leider kenne ich nichts, was vom Himmel gefallen ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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.

was hörst du den für Musik....:confused:...:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 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 ;-)
 

Anhänge

  • Blender-SPS-Simulation-v1.pdf
    805,2 KB · Aufrufe: 322
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
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?

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:
Code Tags
.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
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.
 
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
 
Zurück
Oben