Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  TM - Plant Simulation
  Simulation eines Antriebs in eM-Plant, Ansteuerung mit Siemens S7

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Simulation eines Antriebs in eM-Plant, Ansteuerung mit Siemens S7 (1792 mal gelesen)
ManRo
Mitglied
Student

Sehen Sie sich das Profil von ManRo an!   Senden Sie eine Private Message an ManRo  Schreiben Sie einen Gästebucheintrag für ManRo

Beiträge: 4
Registriert: 06.12.2006

erstellt am: 06. Dez. 2006 11:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen,
Ich habe die Tecnomatix Plant Simulation 7.6 Software im Einsatz.
Ich steuere mit der Siemens S7 Software einen in eM-Plant dargestellten Motor an. Die Ansteuerung des Motors besteht im Moment nur darin, das ich den Motor vorwärts bzw. rückwärts fahren lasse.
Der Datenaustausch zwischen der S7 Steuerung und eM-Plant erfolgt über eine in C# programmierte Schnittstelle.
Die für die Simulation benötigten Daten werden in eM-Plant in eine Tabelle geschrieben, auf die eM-Plant dann zugreift.
Mein Problem besteht darin, dass die Telegramme von der S7 Steuerung alle 100 Millisekunden gesendet werden sollen. Die Anwendung funktioniert nur solange, solange der Antrieb in eM-Plant mit einer Zykluszeit von 600 Millisekunden von der S7 Steuerung angesteuert wird. Wenn eine Zykluszeit von 100 ms eingestellt ist, ist eM-Plant zu langsam um die Telegramme von der S7 Steuerung auszuwerten. Die Telegramme kommen verzögert an und werden Zeitverzögert ausgewertet.
Wäre dankbar für jegliche Unterstützung.

------------------
MfG
Manuel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 06. Dez. 2006 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ManRo 10 Unities + Antwort hilfreich

Mir ist nicht klar, wie die Schnittstelle auf eM-Plant zugreift. Via Socket, DDE, COM-Schnittstelle, C-Schnittstelle oder auf andere Weise? Was ist ein "Telegramm" in diesem Zusammenhang?

(Eigentlich sollten 100ms aber in jeden Fall mehr als genug Zeit sein.)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ManRo
Mitglied
Student

Sehen Sie sich das Profil von ManRo an!   Senden Sie eine Private Message an ManRo  Schreiben Sie einen Gästebucheintrag für ManRo

Beiträge: 4
Registriert: 06.12.2006

erstellt am: 06. Dez. 2006 13:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Das Telegramm wird alle 100 ms gesendet. Das Telegramm beinhaltet Daten fürs Vorwärts- bzw. Rückwärtsfahren, Geschwindigkeits- und Beschleunigungswert und verschiedene Bits für die Antriebsfreigabe.
Die Telegrammwerte kommen von der S7 Steuerung und werden in C# ausgewertet und konvertiert. Anschließend in jedem Zyklus in ein vorher geöffnetes eM-Plant Projekt in eine Tabelle geschrieben. Auf diese Tabelle wird dann in eM-Plant über eine Methode zugegriffen, mit dieser Methode wird der Antrieb gesteuert. Der Datentransfer zwischen C# und eM-Plant erfolgt dabei Rechnerintern. Die Kommunikation zwischen der S7 Steuerung und C# über eine UDP-Verbindung Rechnerextern. Ich habe in eM-Plant keinen Socket oder ähnliches verwendet.

------------------
MfG
Manuel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 06. Dez. 2006 14:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ManRo 10 Unities + Antwort hilfreich

> ... in ein vorher geöffnetes eM-Plant Projekt in eine Tabelle geschrieben.
> Der Datentransfer zwischen C# und eM-Plant erfolgt dabei rechnerintern.

Wie kommen die Werte von C# in die eM-Plant-Tabelle?

> Auf diese Tabelle wird dann in eM-Plant über eine Methode zugegriffen.

Wie wird diese Methode aufgerufen? Oder wird in eM-Plant etwa ständig die Tabelle ausgelesen, bis sich etwas ändert (polling)?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ManRo
Mitglied
Student

Sehen Sie sich das Profil von ManRo an!   Senden Sie eine Private Message an ManRo  Schreiben Sie einen Gästebucheintrag für ManRo

Beiträge: 4
Registriert: 06.12.2006

erstellt am: 06. Dez. 2006 15:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vom C# Programm schick ich die Daten über eine COM Schnittstelle an die eM-Plant-Tabelle.
Die Methode in eM-Plant wird über den Ereignisverwalter initialisiert und wird dann immer wieder durch sich selbst mit Hilfe des Befehls
> ref(MethName).methaufr(takt);
aufgerufen.
Die Methode liest dann aus der gleichen Tabelle die Werte aus in die C# die Werte schreibt. Die Tabellendaten von C# werden aber nur geschickt, wenn das Telegramm ungleich dem vorhergehenden Telegramm ist.

------------------
MfG
Manuel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 06. Dez. 2006 16:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ManRo 10 Unities + Antwort hilfreich

Ich vermute, die Werte werden mittels der COM-Funktion "SetValue" in die Tabelle geschrieben. Die COM-Schnittstelle von eM-Plant besitzt auch eine Funktion namens "ExecuteSimTalk", mit der man beliebigen Methodentext ausführen kann. Damit kann man z.B. auch eine Methode aufrufen. Somit kann man die Methode, die die Werte aus der Tabelle ausliest, genau dann aufrufen, wenn es nötig ist. Die Methode muss sich dann nicht ständig selbst aufgerufen. Vielleicht bringt das eine Verbesserung.

Ansonsten würde ich versuchen herauszufinden, wie lange die Methode läuft (oder wo die Zeit sonst bleibt). Um die Zeit zu messen, kann man z.B. mittels der print-Anweisung am Anfang und Ende einer Methode den Wert "processTime" oder "sysDate" auf die Console ausgeben. (processTime ist die CPU-Zeit, die der eM-Plant-Prozess verbraucht hat, sysDate ist die Systemzeit.)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Homer Simpson
Mitglied



Sehen Sie sich das Profil von Homer Simpson an!   Senden Sie eine Private Message an Homer Simpson  Schreiben Sie einen Gästebucheintrag für Homer Simpson

Beiträge: 345
Registriert: 14.09.2005

erstellt am: 06. Dez. 2006 17:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ManRo 10 Unities + Antwort hilfreich

Noch eine Anmerkung: Wenn man eine Methode mittels "ExecuteSimTalk" über die COM-Schnittstelle aufruft, braucht die Simulation nicht zu laufen. Wenn die Simulation nicht laufen würde, würde eM-Plant nicht ständig CPU-Zeit verbraten und den C#-Prozess ausbremsen.

Alternativ kann man mittels der Anweisung sleep(0.001); eM-Plant für eine tausendstel Sekunde schlafen legen, wenn gerade nichts zu tun ist. Das bewirkt ebenfalls, dass der eM-Plant-Prozess nicht 100% CPU-Zeit verbrät.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz